re PR tree-optimization/83609 (ICE in read_complex_part at gcc/expr.c:3202)
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
2
3         PR middle-end/83609
4         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
5         last argument when extracting from CONCAT.  If either from_real or
6         from_imag is NULL, use expansion through memory.  If result is not
7         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
8         the parts directly to inner mode, if even that fails, use expansion
9         through memory.
10
11         PR middle-end/83623
12         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
13         check for bswap in mode rather than HImode and use that in expand_unop
14         too.
15
16 2017-12-31  Jakub Jelinek  <jakub@redhat.com>
17
18         PR target/83536
19         * config/i386/i386.c (ix86_attribute_table): Remove excess
20         initializer for "shared" attribute.
21
22 2017-12-30  Tom de Vries  <tom@codesourcery.com>
23
24         PR libgomp/83046
25         * omp-expand.c (expand_omp_target): If in_lto_p, mark offload_funcs with
26         DECL_PRESERVE_P.
27         * lto-streamer-out.c (prune_offload_funcs): New function.  Remove
28         offload_funcs entries that no longer have a corresponding cgraph_node.
29         Mark the remaining ones as DECL_PRESERVE_P.
30         (output_lto): Call prune_offload_funcs.
31
32 2017-12-30  Jakub Jelinek  <jakub@redhat.com>
33
34         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
35         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>,
36         vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
37         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
38         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
39         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1, vpdpbusd_<mode>,
40         vpdpbusd_<mode>_mask, vpdpbusd_<mode>_maskz, vpdpbusd_<mode>_maskz_1,
41         vpdpbusds_<mode>, vpdpbusds_<mode>_mask, vpdpbusds_<mode>_maskz,
42         vpdpbusds_<mode>_maskz_1, vpdpwssd_<mode>, vpdpwssd_<mode>_mask,
43         vpdpwssd_<mode>_maskz, vpdpwssd_<mode>_maskz_1, vpdpwssds_<mode>,
44         vpdpwssds_<mode>_mask, vpdpwssds_<mode>_maskz,
45         vpdpwssds_<mode>_maskz_1, vaesdec_<mode>, vaesdeclast_<mode>,
46         vaesenc_<mode>, vpclmulqdq_<mode>,
47         avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): Formatting fixes.
48
49 2017-12-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
50
51         * builtins.def: (_Float<N> and _Float<N>X BUILT_IN_CEIL): Add
52         _Float<N> and _Float<N>X variants for rounding built-in
53         functions.
54         (_Float<N> and _Float<N>X BUILT_IN_FLOOR): Likewise.
55         (_Float<N> and _Float<N>X BUILT_IN_NEARBYINT): Likewise.
56         (_Float<N> and _Float<N>X BUILT_IN_RINT): Likewise.
57         (_Float<N> and _Float<N>X BUILT_IN_ROUND): Likewise.
58         (_Float<N> and _Float<N>X BUILT_IN_TRUNC): Likewise.
59         * builtins.c (mathfn_built_in_2): Likewise.
60         * internal-fn.def (CEIL): Likewise.
61         (FLOOR): Likewise.
62         (NEARBYINT): Likewise.
63         (RINT): Likewise.
64         (ROUND): Likewise.
65         (TRUNC): Likewise.
66         * convert.c (convert_to_integer_1): Likewise.
67         * fold-const.c (tree_call_nonnegative_warnv_p): Likewise.
68         (integer_valued_real_call_p): Likewise.
69         * fold-const-call.c (fold_const_call_ss): Likewise.
70         * gencfn-macros.c (print_case_cfn): Change CFN and operator
71         printers to take a const char * suffix instead of a bool.
72         (print_define_operator_list): Likewise.
73         (fltall_suffixes): New list of suffixes, that include the
74         traditional suffixes as well as all of the _Float<N> and
75         _Float<N>X suffixes.
76         (main): For _Float<N> and _Float<N>X functions, emit both
77         <name>_FN and <name>_ALL variants.  The <macro>_FN variant only
78         has the _Float<N> and _Float<N>X case names or operators.  The
79         <name>_ALL variant has both the traditional and the
80         _Float<N>/_Float<N>X case names or operators.
81         * match.pd (COPYSIGN optimizations): Provide optimizations for
82         _Float<N> and _Float<N>X types where possible.
83         (MIN/MAX optimizations): Likewise.
84         (sqrt optimizations): Likewise.
85         (rounding optimizations): Likewise.
86
87 2017-12-28  Richard Sandiford  <richard.sandiford@linaro.org>
88
89         * config/powerpcspe/powerpcspe.md (ieee_128bit_negative_zero): Use
90         gen_int_mode rather than GEN_INT.
91         * config/rs6000/rs6000.md (ieee_128bit_negative_zero): Likewise.
92
93 2017-12-28  Richard Sandiford  <richard.sandiford@linaro.org>
94
95         * emit-rtl.c (gen_const_vec_series): Use valid_for_const_vector_p
96         instead of CONSTANT_P.
97         (gen_vec_series): Likewise.
98         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
99
100 2017-12-28  Andreas Schwab  <schwab@linux-m68k.org>
101
102         * config/m68k/m68k.md (ashrdi3_const1, lshrdi3_const1): Add
103         CC_STATUS_INIT.
104
105 2017-12-27  Kugan Vivekanandarajah  <kuganv@linaro.org>
106
107         * config/aarch64/aarch64-simd.md (aarch64_ld1x2<VQ:mode>): New.
108         (aarch64_ld1x2<VDC:mode>): Likewise.
109         (aarch64_simd_ld1<mode>_x2): Likewise.
110         (aarch64_simd_ld1<mode>_x2): Likewise.
111         * config/aarch64/arm_neon.h (vld1_u8_x2): New.
112         (vld1_s8_x2): Likewise.
113         (vld1_u16_x2): Likewise.
114         (vld1_s16_x2): Likewise.
115         (vld1_u32_x2): Likewise.
116         (vld1_s32_x2): Likewise.
117         (vld1_u64_x2): Likewise.
118         (vld1_s64_x2): Likewise.
119         (vld1_f16_x2): Likewise.
120         (vld1_f32_x2): Likewise.
121         (vld1_f64_x2): Likewise.
122         (vld1_p8_x2): Likewise.
123         (vld1_p16_x2): Likewise.
124         (vld1_p64_x2): Likewise.
125         (vld1q_u8_x2): Likewise.
126         (vld1q_s8_x2): Likewise.
127         (vld1q_u16_x2): Likewise.
128         (vld1q_s16_x2): Likewise.
129         (vld1q_u32_x2): Likewise.
130         (vld1q_s32_x2): Likewise.
131         (vld1q_u64_x2): Likewise.
132         (vld1q_s64_x2): Likewise.
133         (vld1q_f16_x2): Likewise.
134         (vld1q_f32_x2): Likewise.
135         (vld1q_f64_x2): Likewise.
136         (vld1q_p8_x2): Likewise.
137         (vld1q_p16_x2): Likewise.
138         (vld1q_p64_x2): Likewise.
139
140 2017-12-27  Martin Liska  <mliska@suse.cz>
141
142         PR tree-optimization/83552
143         * tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result
144         of get_string_lenth to a SSA_NAME if not a GIMPLE value.
145
146 2017-12-27  Tom de Vries  <tom@codesourcery.com>
147
148         * config/nvptx/nvptx.c (nvptx_option_override): Disable
149         -gstatement-frontiers.
150
151 2017-12-26  Alexander Monakov  <amonakov@ispras.ru>
152
153         PR rtl-optimization/83513
154         * sel-sched.c (sel_rank_for_schedule): Order by non-zero usefulness
155         before priority comparison.
156
157 2017-12-25  Jakub Jelinek  <jakub@redhat.com>
158
159         PR target/83488
160         * config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move from
161         ix86_isa_flags2 to ix86_isa_flags.
162         * config/i386/i386-c.c (ix86_target_macros_internal): Test
163         OPTION_MASK_ISA_AVX512BITALG and OPTION_MASK_ISA_AVX512VPOPCNTDQ in
164         isa_flags rather than isa_flags2.
165         * config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq
166         and -mavx512bitalg from isa2_opts to isa_opts.
167         (ix86_option_override_internal): Test OPTION_MASK_ISA_AVX512VPOPCNTDQ
168         in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit
169         and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2.
170         Formatting fixes.
171         (def_builtin): Treat OPTION_MASK_ISA_AVX512BW or
172         OPTION_MASK_ISA_AVX512F ored with another option similarly to
173         OPTION_MASK_ISA_AVX512VL.  Even for OPTION_MASK_ISA_AVX512VL don't
174         clear it if mask is just OPTION_MASK_ISA_AVX512VL itself.
175         (ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and
176         OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle
177         OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that way.
178         * config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and AVX512BITALG
179         builtins from bdesc_args2 to bdesc_args section.
180         (__builtin_ia32_compressstoreuqi512_mask,
181         __builtin_ia32_compressstoreuhi512_mask,
182         __builtin_ia32_compressstoreuqi256_mask,
183         __builtin_ia32_expandloadqi512_mask,
184         __builtin_ia32_expandloadqi512_maskz,
185         __builtin_ia32_expandloadhi512_mask,
186         __builtin_ia32_expandloadhi512_maskz,
187         __builtin_ia32_compressqi512_mask, __builtin_ia32_compresshi512_mask,
188         __builtin_ia32_compressqi256_mask, __builtin_ia32_expandqi512_mask,
189         __builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask,
190         __builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask,
191         __builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask,
192         __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshrdv_v32hi_mask,
193         __builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshldv_v32hi_mask,
194         __builtin_ia32_vpshldv_v32hi_maskz,
195         __builtin_ia32_vpopcountb_v64qi_mask,
196         __builtin_ia32_vpopcountw_v32hi_mask,
197         __builtin_ia32_vpshufbitqmb512_mask,
198         __builtin_ia32_vpshufbitqmb256_mask): Add
199         " | OPTION_MASK_ISA_AVX512BW".
200         (__builtin_ia32_expandloadqi256_mask,
201         __builtin_ia32_expandloadqi256_maskz,
202         __builtin_ia32_vpopcountb_v32qi_mask): Add
203         " | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW".
204         (__builtin_ia32_expandloadhi256_mask,
205         __builtin_ia32_expandloadhi256_maskz,
206         __builtin_ia32_expandloadqi128_mask,
207         __builtin_ia32_expandloadqi128_maskz,
208         __builtin_ia32_expandloadhi128_mask,
209         __builtin_ia32_expandloadhi128_maskz,
210         __builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask,
211         __builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask,
212         __builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask,
213         __builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask,
214         __builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask,
215         __builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask,
216         __builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask,
217         __builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask,
218         __builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask,
219         __builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask,
220         __builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask,
221         __builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask,
222         __builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask,
223         __builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi,
224         __builtin_ia32_vpshrdv_v8hi_mask, __builtin_ia32_vpshrdv_v8hi_maskz,
225         __builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask,
226         __builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si,
227         __builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz,
228         __builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask,
229         __builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di,
230         __builtin_ia32_vpshrdv_v2di_mask, __builtin_ia32_vpshrdv_v2di_maskz,
231         __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
232         __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
233         __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
234         __builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask,
235         __builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si,
236         __builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz,
237         __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
238         __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
239         __builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz,
240         __builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi,
241         __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v16hi,
242         __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
243         __builtin_ia32_vpopcountw_v8hi_mask): Add
244         " | OPTION_MASK_ISA_AVX512VL".
245         * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
246         _mm512_shrdi_epi32, _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
247         _mm512_shrdi_epi64, _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64,
248         _mm512_shldi_epi16, _mm512_shldi_epi32, _mm512_mask_shldi_epi32,
249         _mm512_maskz_shldi_epi32, _mm512_shldi_epi64, _mm512_mask_shldi_epi64,
250         _mm512_maskz_shldi_epi64, _mm512_shrdv_epi16, _mm512_shrdv_epi32,
251         _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
252         _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64, _mm512_shldv_epi16,
253         _mm512_shldv_epi32, _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32,
254         _mm512_shldv_epi64, _mm512_mask_shldv_epi64,
255         _mm512_maskz_shldv_epi64): Don't require avx512bw for these intrinsics.
256         * config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask,
257         _mm_mask_bitshuffle_epi64_mask): Likewise.
258         * common/config/i386/i386-common.c
259         (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
260         OPTION_MASK_ISA_AVX512BITALG_SET): Or in OPTION_MASK_ISA_AVX512F_SET.
261         (OPTION_MASK_ISA_AVX512F_UNSET): Or in
262         OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and
263         OPTION_MASK_ISA_AVX512BITALG_UNSET.
264         (OPTION_MASK_ISA2_AVX512F_UNSET,
265         OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define.
266         (ix86_handle_option): For -mno-general-regs-only, clear from
267         ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET rather than
268         just OPTION_MASK_ISA_MPX.  For -mno-sse{,2,3,4,4.1,4.2,avx,avx2} and
269         -mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from
270         ix86_isa_flags2.  For -mno-avx512f likewise, instead of masking
271         individually listed ISAs.  For -m{,no-}avx512{vpopcntdq,bitalg} adjust
272         for moving from ix86_isa_flags2 to ix86_isa_flags.
273
274 2017-12-23  Jakub Jelinek  <jakub@redhat.com>
275
276         PR c++/83553
277         * fold-const.c (struct contains_label_data): New type.
278         (contains_label_1): Return non-NULL even for CASE_LABEL_EXPR, unless
279         inside of a SWITCH_BODY seen during the walk.
280         (contains_label_p): Use walk_tree instead of
281         walk_tree_without_duplicates, prepare data for contains_label_1 and
282         provide own pset.
283
284 2017-12-22  Jakub Jelinek  <jakub@redhat.com>
285
286         PR debug/83547
287         * tree-iterator.c (alloc_stmt_list): Start with cleared
288         TREE_SIDE_EFFECTS regardless whether a new STATEMENT_LIST is allocated
289         or old one reused.
290
291         PR target/83488
292         * config/i386/avx512vnniintrin.h: Don't check for __AVX512F__ nor
293         enable avx512f explicitly in #pragma GCC target.
294         * config/i386/i386-builtin.def (__builtin_ia32_vpdpbusd_v8si,
295         __builtin_ia32_vpdpbusd_v8si_mask, __builtin_ia32_vpdpbusd_v8si_maskz,
296         __builtin_ia32_vpdpbusd_v4si, __builtin_ia32_vpdpbusd_v4si_mask,
297         __builtin_ia32_vpdpbusd_v4si_maskz, __builtin_ia32_vpdpbusds_v8si,
298         __builtin_ia32_vpdpbusds_v8si_mask,
299         __builtin_ia32_vpdpbusds_v8si_maskz, __builtin_ia32_vpdpbusds_v4si,
300         __builtin_ia32_vpdpbusds_v4si_mask,
301         __builtin_ia32_vpdpbusds_v4si_maskz, __builtin_ia32_vpdpwssd_v8si,
302         __builtin_ia32_vpdpwssd_v8si_mask, __builtin_ia32_vpdpwssd_v8si_maskz,
303         __builtin_ia32_vpdpwssd_v4si, __builtin_ia32_vpdpwssd_v4si_mask,
304         __builtin_ia32_vpdpwssd_v4si_maskz, __builtin_ia32_vpdpwssds_v8si,
305         __builtin_ia32_vpdpwssds_v8si_mask,
306         __builtin_ia32_vpdpwssds_v8si_maskz, __builtin_ia32_vpdpwssds_v4si,
307         __builtin_ia32_vpdpwssds_v4si_mask,
308         __builtin_ia32_vpdpwssds_v4si_maskz): Use
309         OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL instead of
310         just OPTION_MASK_ISA_AVX512VNNI.
311
312 2017-12-22  Martin Jambor  <mjambor@suse.cz>
313
314         PR lto/82027
315         * lto-cgraph.c (output_cgraph_opt_summary_p): Also check former
316         clones.
317
318 2017-12-22  Julia Koval  <julia.koval@intel.com>
319             Sebastian Peryt  <sebastian.peryt@intel.com>
320
321         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BITALG_SET,
322         OPTION_MASK_ISA_AVX512BITALG_UNSET): New.
323         (ix86_handle_option): Handle -mavx512bitalg, fix 4VNNIW formatting.
324         * config.gcc: Add avx512vpopcntdqvlintrin.h and avx512bitalgintrin.h.
325         * config/i386/avx512bitalgintrin.h (_mm512_popcnt_epi8, _mm512_popcnt_epi16,
326         _mm512_mask_popcnt_epi8, _mm512_maskz_popcnt_epi8, _mm512_mask_popcnt_epi16,
327         _mm512_maskz_popcnt_epi16, _mm512_bitshuffle_epi64_mask, _mm256_popcnt_epi8,
328         _mm512_mask_bitshuffle_epi64_mask, _mm256_mask_popcnt_epi8, _mm_popcnt_epi8,
329         _mm256_maskz_popcnt_epi8, _mm_bitshuffle_epi64_mask, _mm256_popcnt_epi16,
330         _mm_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
331         _mm256_mask_bitshuffle_epi64_mask, _mm_popcnt_epi16, _mm_maskz_popcnt_epi8,
332         _mm256_mask_popcnt_epi16, _mm256_maskz_popcnt_epi16, _mm_mask_popcnt_epi8,
333         _mm_mask_popcnt_epi16, _mm_maskz_popcnt_epi16): New intrinsics.
334         * config/i386/avx512vpopcntdqvlintrin.h (_mm_popcnt_epi32, _mm_popcnt_epi64,
335         _mm_mask_popcnt_epi32, _mm_maskz_popcnt_epi32, _mm256_popcnt_epi32,
336         _mm256_mask_popcnt_epi32, _mm256_maskz_popcnt_epi32, _mm_mask_popcnt_epi64,
337         _mm_maskz_popcnt_epi64, _mm256_popcnt_epi64, _mm256_mask_popcnt_epi64,
338         _mm256_maskz_popcnt_epi64): New intrinsics.
339         * config/i386/cpuid.h (bit_AVX512BITALG): New bit.
340         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mavx512bitalg.
341         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI, V64QI_FTYPE_V64QI,
342         V4DI_FTYPE_V4DI, UHI_FTYPE_V2DI_V2DI_UHI, USI_FTYPE_V4DI_V4DI_USI,
343         V4SI_FTYPE_V4SI_V4SI_UHI, V8SI_FTYPE_V8SI_V8SI_UHI): New types.
344         * config/i386/i386-builtin.def (__builtin_ia32_vpopcountq_v4di,
345         __builtin_ia32_vpopcountq_v4di_mask, __builtin_ia32_vpopcountq_v2di,
346         __builtin_ia32_vpopcountq_v2di_mask, __builtin_ia32_vpopcountd_v4si,
347         __builtin_ia32_vpopcountd_v4si_mask, __builtin_ia32_vpopcountd_v8si,
348         __builtin_ia32_vpopcountd_v8si_mask, __builtin_ia32_vpopcountb_v64qi,
349         __builtin_ia32_vpopcountb_v64qi_mask, __builtin_ia32_vpopcountb_v32qi,
350         __builtin_ia32_vpopcountb_v32qi_mask, __builtin_ia32_vpopcountb_v16qi,
351         __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v32hi,
352         __builtin_ia32_vpopcountw_v32hi_mask, __builtin_ia32_vpopcountw_v16hi,
353         __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
354         __builtin_ia32_vpopcountw_v8hi_mask, __builtin_ia32_vpshufbitqmb128_mask,
355         __builtin_ia32_vpshufbitqmb256_mask,
356         __builtin_ia32_vpshufbitqmb512_mask): New builtins.
357         * config/i386/i386-c.c (__AVX512BITALG__): New.
358         * config/i386/i386.c (isa2_opts): Add -mavx512bitalg.
359         (ix86_valid_target_attribute_inner_p): Ditto.
360         (ix86_expand_args_builtin): Handle new types.
361         * config/i386/i386.h (TARGET_AVX512BITALG, TARGET_AVX512BITALG_P): New.
362         * config/i386/i386.opt: Add -mavx512bitalg.
363         * config/i386/immintrin.h: Add avx512vpopcntdqvlintrin.h and
364         avx512bitalgintrin.h.
365         * config/i386/sse.md (VI48_AVX512VLBW): New iterator.
366         (vpopcount<mode><mask_name>): Add more types.
367         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): New.
368         * doc/invoke.texi: Add -mavx512bitalg and -mavx512vpopcntdq.
369
370 2017-12-22  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
371
372         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET):
373         Or in OPTION_MASK_ISA_AVX512F_SET.
374         (OPTION_MASK_ISA_AVX512F_UNSET): Or in
375         OPTION_MASK_ISA_AVX512VNNI_UNSET.
376         (ix86_handle_option): Adjust for
377         OPTION_MASK_ISA_AVX512VNNI_*SET being in ix86_isa_flags.
378         * config/i386/i386-builtin.def: Move VNNI builtins from ARGS2
379         section to ARGS.
380         * config/i386/i386-c.c: Check for OPTION_MASK_ISA_AVX512VNNI in
381         isa_flag instead of isa_flag2.
382         * config/i386/i386.c (ix86_target_string): Move -mavx512vnni from
383         isa_opts2 to isa_opts.
384         * config/i386/i386.opt (mavx512vnni): Move from ix86_isa_flags2
385         to ix86_isa_flags.
386
387 2017-12-22  Mike Stump  <mikestump@comcast.net>
388             Eric Botcazou  <ebotcazou@adacore.com>
389
390         * doc/extend.texi (Loop-Specific Pragmas): Document pragma GCC unroll.
391
392 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
393
394         PR middle-end/83487
395         * config/i386/i386.c (ix86_function_arg_boundary): Return
396         PARM_BOUNDARY for TYPE_EMPTY_P types.
397
398         PR c/83448
399         * gimple-ssa-sprintf.c (maybe_warn): Don't call set_caret_index
400         if navail is >= dir.len.
401
402 2017-12-21  Steve Ellcey  <sellcey@cavium.com>
403
404         * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Fix
405         triplet for ilp32.
406
407 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
408
409         PR rtl-optimization/80747
410         PR rtl-optimization/83512
411         * cfgrtl.c (force_nonfallthru_and_redirect): When splitting
412         succ edge from ENTRY, copy partition from e->dest to the newly
413         created bb.
414         * bb-reorder.c (reorder_basic_blocks_simple): If last_tail is
415         ENTRY, use BB_PARTITION of its successor block as current_partition.
416         Don't copy partition when splitting succ edge from ENTRY.
417
418         PR tree-optimization/83523
419         * tree-ssa-math-opts.c (is_widening_mult_p): Return false if
420         for INTEGER_TYPE TYPE_OVERFLOW_TRAPS.
421         (convert_mult_to_fma): Likewise.
422
423         PR tree-optimization/83521
424         * tree-ssa-phiopt.c (factor_out_conditional_conversion): Use
425         gimple_build_assign without code on result of
426         fold_build1 (VIEW_CONVERT_EXPR, ...), as it might not create
427         a VIEW_CONVERT_EXPR.
428
429 2017-12-21  Andrew Pinski  <apinski@cavium.com>
430             Steve Ellcey  <sellcey@cavium.com>
431
432         * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle
433         multi-arch for ilp32.
434
435 2017-12-21  Uros Bizjak  <ubizjak@gmail.com>
436
437         PR target/83467
438         * config/i386/i386.md (*ashl<mode>3_mask): Add operand
439         constraints to operand 2.
440         (*ashl<mode>3_mask_1): Ditto.
441         (*<shift_insn><mode>3_mask): Ditto.
442         (*<shift_insn><mode>3_mask_1): Ditto.
443         (*<rotate_insn><mode>3_mask): Ditto.
444         (*<rotate_insn><mode>3_mask_1): Ditto.
445
446 2017-12-21  Alexandre Oliva  <aoliva@redhat.com>
447
448         * reorg.c (make_return_insns): Reemit each insn with its own location.
449
450 2017-12-21  James Greenhalgh  <james.greenhalgh@arm.com>
451
452         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
453         generation for cases where splatting a value is not useful.
454         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
455         across a vec_duplicate and a paradoxical subreg forming a vector
456         mode to a vec_concat.
457
458 2017-12-21  James Greenhalgh  <james.greenhalgh@arm.com>
459
460         * combine.c (simplify_set): Do not transform subregs to zero_extends
461         if the destination is not a scalar int mode.
462
463 2017-12-21  Eric Botcazou  <ebotcazou@adacore.com>
464
465         PR c++/82872
466         * convert.c (convert_to_integer_1) <POINTER_TYPE>: Do not return the
467         shared zero if the input has overflowed.
468
469 2017-12-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
470
471         * config/arm/driver-arm.c (arm_cpu_table): Specify dotprod
472         support for Cortex-A55 and Cortex-A75.
473
474 2017-12-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
475
476         * common/config/arm/arm-common.c (compare_opt_names): Add function
477         comment.  Use strcmp instead of manual loop.
478
479 2017-12-21  Martin Liska  <mliska@suse.cz>
480
481         PR gcov-profile/83509
482         * gcov-dump.c (dump_gcov_file): Do not read info about
483         support_unexecuted_blocks for gcda files.
484
485 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
486
487         PR rtl-optimization/82973
488         * emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ...
489         (valid_for_const_vector_p): ... this.
490         * emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ...
491         (valid_for_const_vector_p): ... this.  Adjust function comment.
492         (gen_vec_duplicate): Adjust caller.
493         * optabs.c (expand_vector_broadcast): Likewise.
494         * simplify-rtx.c (simplify_const_unary_operation): Don't optimize into
495         CONST_VECTOR if some element isn't simplified valid_for_const_vector_p
496         constant.
497         (simplify_const_binary_operation): Likewise.  Use CONST_FIXED_P macro
498         instead of GET_CODE == CONST_FIXED.
499         (simplify_subreg): Use CONST_FIXED_P macro instead of
500         GET_CODE == CONST_FIXED.
501
502         PR target/83488
503         * config/i386/i386.c (ix86_target_string): Move -mavx512vbmi2 and
504         -mshstk entries from isa_opts2 to isa_opts and -mhle, -mmovbe,
505         -mclzero and -mmwaitx entries from isa_opts to isa_opts2.
506         (ix86_option_override_internal): Adjust for
507         OPTION_MASK_ISA_{HLE,MOVBE,CLZERO,MWAITX} moving to ix86_isa_flags2
508         and OPTION_MASK_ISA_SHSTK moving to ix86_isa_flags.
509         (BDESC_VERIFYS): Remove SPECIAL_ARGS2 related checks.
510         (ix86_init_mmx_sse_builtins): Remove bdesc_special_args2 handling.
511         Use def_builtin2 instead of def_builtin for OPTION_MASK_ISA_MWAITX
512         and OPTION_MASK_ISA_CLZERO builtins.  Use def_builtin instead of
513         def_builtin2 for CET builtins.
514         (ix86_expand_builtin): Remove bdesc_special_args2 handling.  Fix
515         up formatting in IX86_BUILTIN_RDPID code.
516         * config/i386/i386-builtin.def: Move VBMI2 builtins from SPECIAL_ARGS2
517         section to SPECIAL_ARGS and from ARGS2 section to ARGS.
518         * config/i386/i386.opt (mavx512vbmi2, mshstk): Move from
519         ix86_isa_flags2 to ix86_isa_flags.
520         (mhle, mmovbe, mclzero, mmwaitx): Move from ix86_isa_flags to
521         ix86_isa_flags2.
522         * config/i386/i386-c.c (ix86_target_macros_internal): Check for
523         OPTION_MASK_ISA_{CLZERO,MWAITX} in isa_flag2 instead of isa_flag.
524         Check for OPTION_MASK_ISA_{SHSTK,AVX512VBMI2} in isa_flag instead
525         of isa_flag2.
526         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET):
527         Or in OPTION_MASK_ISA_AVX512F_SET.
528         (OPTION_MASK_ISA_AVX512F_UNSET): Or in
529         OPTION_MASK_ISA_AVX512VBMI2_UNSET.
530         (ix86_handle_option): Adjust for
531         OPTION_MASK_ISA_{SHSTK,AVX512VBMI2}_*SET being in ix86_isa_flags
532         and OPTION_MASK_ISA_{MOVBE,MWAITX,CLZERO}_*SET in ix86_isa_flags2.
533
534 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
535             Alan Hayward  <alan.hayward@arm.com>
536             David Sherwood  <david.sherwood@arm.com>
537
538         * tree-data-ref.h (prune_runtime_alias_test_list): Take the
539         factor as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
540         * tree-data-ref.c (prune_runtime_alias_test_list): Likewise.
541         Track polynomial offsets.
542
543 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
544             Alan Hayward  <alan.hayward@arm.com>
545             David Sherwood  <david.sherwood@arm.com>
546
547         * tree-vect-data-refs.c (vect_compute_data_ref_alignment):
548         Treat drb->init as a poly_int.  Fail if its misalignment wrt
549         vector_alignment isn't known.
550
551 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
552             Alan Hayward  <alan.hayward@arm.com>
553             David Sherwood  <david.sherwood@arm.com>
554
555         * tree-vectorizer.h (_loop_vec_info): Add a versioning_threshold
556         field.
557         (LOOP_VINFO_VERSIONING_THRESHOLD): New macro
558         (vect_loop_versioning): Take the loop versioning threshold as a
559         separate parameter.
560         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
561         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
562         versioning_threshold.
563         (vect_analyze_loop_2): Compute the loop versioning threshold
564         whenever loop versioning is needed, and store it in the new
565         field rather than combining it with the cost model threshold.
566         (vect_transform_loop): Update call to vect_loop_versioning.
567         Try to combine the loop versioning and cost thresholds here.
568
569 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
570             Alan Hayward  <alan.hayward@arm.com>
571             David Sherwood  <david.sherwood@arm.com>
572
573         * tree-ssa-loop-ivopts.h (strip_offset): Return the offset as
574         poly_uint64_pod rather than an unsigned HOST_WIDE_INT.
575         * tree-loop-distribution.c (classify_builtin_st): Update accordingly.
576         * tree-ssa-loop-ivopts.c (iv_use::addr_offset): Change from
577         an unsigned HOST_WIDE_INT to a poly_uint64_pod.
578         (group_compare_offset): Update accordingly.
579         (split_small_address_groups_p): Likewise.
580         (record_use): Take addr_offset as a poly_uint64 rather than
581         an unsigned HOST_WIDE_INT.
582         (strip_offset): Return the offset as a poly_uint64 rather than
583         an unsigned HOST_WIDE_INT.
584         (record_group_use, split_address_groups): Track polynomial offsets.
585         (add_iv_candidate_for_use): Likewise.
586         (addr_offset_valid_p): Take the offset as a poly_int64 rather
587         than a HOST_WIDE_INT.
588         (strip_offset_1): Return the offset as a poly_int64 rather than
589         a HOST_WIDE_INT.
590
591 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
592             Alan Hayward  <alan.hayward@arm.com>
593             David Sherwood  <david.sherwood@arm.com>
594
595         * tree.h (get_binfo_at_offset): Take the offset as a poly_int64
596         rather than a HOST_WIDE_INT.
597         * tree.c (get_binfo_at_offset): Likewise.
598
599 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
600             Alan Hayward  <alan.hayward@arm.com>
601             David Sherwood  <david.sherwood@arm.com>
602
603         * ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64
604         rather than a HOST_WIDE_INT.
605         * tree-sra.c (build_ref_for_offset): Likewise.
606
607 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
608             Alan Hayward  <alan.hayward@arm.com>
609             David Sherwood  <david.sherwood@arm.com>
610
611         * fold-const.h (mem_ref_offset): Return a poly_offset_int rather
612         than an offset_int.
613         * tree.c (mem_ref_offset): Likewise.
614         (build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints.
615         * builtins.c (get_object_alignment_2): Likewise.
616         * expr.c (get_inner_reference, expand_expr_real_1): Likewise.
617         * gimple-fold.c (get_base_constructor): Likewise.
618         * gimple-ssa-strength-reduction.c (restructure_reference): Likewise.
619         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
620         Likewise.
621         * ipa-polymorphic-call.c
622         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
623         * ipa-prop.c (compute_complex_assign_jump_func): Likewise.
624         (get_ancestor_addr_info): Likewise.
625         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise.
626         * match.pd: Likewise.
627         * tree-data-ref.c (dr_analyze_innermost): Likewise.
628         * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
629         * tree-eh.c (tree_could_trap_p): Likewise.
630         * tree-object-size.c (addr_object_size): Likewise.
631         * tree-ssa-address.c (copy_ref_info): Likewise.
632         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
633         (indirect_refs_may_alias_p): Likewise.
634         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
635         * tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise.
636         (non_rewritable_mem_ref_base): Likewise.
637         * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
638         * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
639         * varasm.c (decode_addr_const): Likewise.
640
641 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
642             Alan Hayward  <alan.hayward@arm.com>
643             David Sherwood  <david.sherwood@arm.com>
644
645         * gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial
646         offsets for MEM_REFs.
647
648 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
649             Alan Hayward  <alan.hayward@arm.com>
650             David Sherwood  <david.sherwood@arm.com>
651
652         * tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment
653         as a poly_uint64 rather than an unsigned int.
654         * tree-ssanames.c (adjust_ptr_info_misalignment): Likewise.
655
656 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
657             Alan Hayward  <alan.hayward@arm.com>
658             David Sherwood  <david.sherwood@arm.com>
659
660         * varasm.c (addr_const::offset): Change from HOST_WIDE_INT
661         to poly_int64.
662         (decode_addr_const): Update accordingly.
663
664 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
665             Alan Hayward  <alan.hayward@arm.com>
666             David Sherwood  <david.sherwood@arm.com>
667
668         * tree.h (bit_field_size, bit_field_offset): New functions.
669         * hsa-gen.c (gen_hsa_addr): Use them.
670         * tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise.
671         (simplify_vector_constructor): Likewise.
672         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
673         * tree-cfg.c (verify_expr): Require the sizes and offsets of a
674         BIT_FIELD_REF to be poly_uint64s rather than uhwis.
675         * fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with
676         tree_fits_uhwi_p.
677
678 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
679             Alan Hayward  <alan.hayward@arm.com>
680             David Sherwood  <david.sherwood@arm.com>
681
682         * expr.h (emit_group_load, emit_group_load_into_temps)
683         (emit_group_store): Take the size as a poly_int64 rather than an int.
684         * expr.c (emit_group_load_1, emit_group_load): Likewise.
685         (emit_group_load_into_temp, emit_group_store): Likewise.
686
687 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
688             Alan Hayward  <alan.hayward@arm.com>
689             David Sherwood  <david.sherwood@arm.com>
690
691         * ira-int.h (ira_spilled_reg_stack_slot::width): Change from
692         an unsigned int to a poly_uint64.
693         * ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the
694         sizes as poly_uint64s rather than unsigned ints.
695         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot):
696         Likewise.
697
698 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
699             Alan Hayward  <alan.hayward@arm.com>
700             David Sherwood  <david.sherwood@arm.com>
701
702         * lra-constraints.c (emit_inc): Change inc_amount from an int
703         to a poly_int64.
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         * cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT
710         to a poly_uint64.
711         (add_stack_var, stack_var_cmp, partition_stack_vars)
712         (dump_stack_var_partition): Update accordingly.
713         (alloc_stack_frame_space): Take the size as a poly_int64 rather
714         than a HOST_WIDE_INT.
715         (expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes.
716         (defer_stack_allocation, estimated_stack_frame_size): Likewise.
717         (account_stack_vars, expand_one_var): Likewise.  Return a poly_uint64
718         rather than a HOST_WIDE_INT.
719
720 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
721             Alan Hayward  <alan.hayward@arm.com>
722             David Sherwood  <david.sherwood@arm.com>
723
724         * target.def (return_pops_args): Treat both the input and output
725         sizes as poly_int64s rather than HOST_WIDE_INTS.
726         * targhooks.h (default_return_pops_args): Update accordingly.
727         * targhooks.c (default_return_pops_args): Likewise.
728         * doc/tm.texi: Regenerate.
729         * emit-rtl.h (incoming_args): Change pops_args, size and
730         outgoing_args_size from int to poly_int64_pod.
731         * function.h (expr_status): Change x_pending_stack_adjust and
732         x_stack_pointer_delta from int to poly_int64.
733         (args_size::constant): Change from HOST_WIDE_INT to poly_int64.
734         (ARGS_SIZE_RTX): Update accordingly.
735         * calls.c (highest_outgoing_arg_in_use): Change from int to
736         unsigned int.
737         (stack_usage_watermark, stored_args_watermark): New variables.
738         (stack_region_maybe_used_p, mark_stack_region_used): New functions.
739         (emit_call_1): Change the stack_size and rounded_stack_size
740         parameters from HOST_WIDE_INT to poly_int64.  Track n_popped
741         as a poly_int64.
742         (save_fixed_argument_area): Check stack_usage_watermark.
743         (initialize_argument_information): Change old_pending_adj from
744         a HOST_WIDE_INT * to a poly_int64_pod *.
745         (compute_argument_block_size): Return the size as a poly_int64
746         rather than an int.
747         (finalize_must_preallocate): Track polynomial argument sizes.
748         (compute_argument_addresses): Likewise.
749         (internal_arg_pointer_based_exp): Track polynomial offsets.
750         (mem_overlaps_already_clobbered_arg_p): Rename to...
751         (mem_might_overlap_already_clobbered_arg_p): ...this and take the
752         size as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
753         Check stored_args_used_watermark.
754         (load_register_parameters): Update accordingly.
755         (check_sibcall_argument_overlap_1): Likewise.
756         (combine_pending_stack_adjustment_and_call): Take the unadjusted
757         args size as a poly_int64 rather than an int.  Return a bool
758         indicating whether the optimization was possible and return
759         the new adjustment by reference.
760         (check_sibcall_argument_overlap): Track polynomail argument sizes.
761         Update stored_args_watermark.
762         (can_implement_as_sibling_call_p): Handle polynomial argument sizes.
763         (expand_call): Likewise.  Maintain stack_usage_watermark and
764         stored_args_watermark.  Update calls to
765         combine_pending_stack_adjustment_and_call.
766         (emit_library_call_value_1): Handle polynomial argument sizes.
767         Call stack_region_maybe_used_p and mark_stack_region_used.
768         Maintain stack_usage_watermark.
769         (store_one_arg): Likewise.  Update call to
770         mem_overlaps_already_clobbered_arg_p.
771         * config/arm/arm.c (arm_output_function_prologue): Add a cast to
772         HOST_WIDE_INT.
773         * config/avr/avr.c (avr_outgoing_args_size): Likewise.
774         * config/microblaze/microblaze.c (microblaze_function_prologue):
775         Likewise.
776         * config/cr16/cr16.c (cr16_return_pops_args): Update for new
777         TARGET_RETURN_POPS_ARGS interface.
778         (cr16_compute_frame, cr16_initial_elimination_offset): Add casts
779         to HOST_WIDE_INT.
780         * config/ft32/ft32.c (ft32_compute_frame): Likewise.
781         * config/i386/i386.c (ix86_return_pops_args): Update for new
782         TARGET_RETURN_POPS_ARGS interface.
783         (ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT.
784         * config/moxie/moxie.c (moxie_compute_frame): Likewise.
785         * config/m68k/m68k.c (m68k_return_pops_args): Update for new
786         TARGET_RETURN_POPS_ARGS interface.
787         * config/vax/vax.c (vax_return_pops_args): Likewise.
788         * config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64.
789         (EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size.
790         * config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise.
791         * config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
792         * config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
793         * config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise.
794         * config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
795         * config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
796         * config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise.
797         * dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust
798         and x_stack_pointer_delta from int to poly_int64.
799         * dojump.c (do_pending_stack_adjust): Update accordingly.
800         * explow.c (allocate_dynamic_stack_space): Handle polynomial
801         stack_pointer_deltas.
802         * function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64.
803         (pad_to_arg_alignment): Track polynomial offsets.
804         (assign_parm_find_stack_rtl): Likewise.
805         (assign_parms, locate_and_pad_parm): Handle polynomial argument sizes.
806         * toplev.c (output_stack_usage): Update reference to
807         current_function_pushed_stack_size.
808
809 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
810             Alan Hayward  <alan.hayward@arm.com>
811             David Sherwood  <david.sherwood@arm.com>
812
813         * function.c (in_arg_offset, var_offset, dynamic_offset)
814         (out_arg_offset, cfa_offset): Change from int to poly_int64.
815         (instantiate_new_reg): Return the new offset as a poly_int64_pod
816         rather than a HOST_WIDE_INT.
817         (instantiate_virtual_regs_in_rtx): Track polynomial offsets.
818         (instantiate_virtual_regs_in_insn): Likewise.
819
820 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
821             Alan Hayward  <alan.hayward@arm.com>
822             David Sherwood  <david.sherwood@arm.com>
823
824         * rtl.h (get_args_size, add_args_size_note): New functions.
825         (find_args_size_adjust): Return a poly_int64 rather than a
826         HOST_WIDE_INT.
827         (fixup_args_size_notes): Likewise.  Make the same change to the
828         end_args_size parameter.
829         * rtlanal.c (get_args_size, add_args_size_note): New functions.
830         * builtins.c (expand_builtin_trap): Use add_args_size_note.
831         * calls.c (emit_call_1): Likewise.
832         * explow.c (adjust_stack_1): Likewise.
833         * cfgcleanup.c (old_insns_match_p): Update use of
834         find_args_size_adjust.
835         * combine.c (distribute_notes): Track polynomial arg sizes.
836         * dwarf2cfi.c (dw_trace_info): Change beg_true_args_size,
837         end_true_args_size, beg_delay_args_size and end_delay_args_size
838         from HOST_WIDE_INT to poly_int64.
839         (add_cfi_args_size): Take the args_size as a poly_int64 rather
840         than a HOST_WIDE_INT.
841         (notice_args_size, notice_eh_throw, maybe_record_trace_start)
842         (maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track
843         polynomial arg sizes.
844         * emit-rtl.c (try_split): Use get_args_size.
845         * recog.c (peep2_attempt): Likewise.
846         * reload1.c (reload_as_needed): Likewise.
847         * expr.c (find_args_size_adjust): Return the adjustment as a
848         poly_int64 rather than a HOST_WIDE_INT.
849         (fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT
850         to a poly_int64 and change the return type in the same way.
851         (emit_single_push_insn): Track polynomial arg sizes.
852
853 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
854             Alan Hayward  <alan.hayward@arm.com>
855             David Sherwood  <david.sherwood@arm.com>
856
857         * expr.h (push_block, emit_push_insn): Change the "extra" parameter
858         from HOST_WIDE_INT to poly_int64.
859         * expr.c (push_block, emit_push_insn): Likewise.
860
861 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
862             Alan Hayward  <alan.hayward@arm.com>
863             David Sherwood  <david.sherwood@arm.com>
864
865         * function.h (frame_space): Change start and length from HOST_WIDE_INT
866         to poly_int64.
867         (get_frame_size): Return the size as a poly_int64 rather than a
868         HOST_WIDE_INT.
869         (frame_offset_overflow): Take the offset as a poly_int64 rather
870         than a HOST_WIDE_INT.
871         (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
872         (assign_stack_temp): Likewise for the size.
873         * function.c (get_frame_size): Return a poly_int64 rather than
874         a HOST_WIDE_INT.
875         (frame_offset_overflow): Take the offset as a poly_int64 rather
876         than a HOST_WIDE_INT.
877         (try_fit_stack_local): Take the start, length and size as poly_int64s
878         rather than HOST_WIDE_INTs.  Return the offset as a poly_int64_pod
879         rather than a HOST_WIDE_INT.
880         (add_frame_space): Take the start and end as poly_int64s rather than
881         HOST_WIDE_INTs.
882         (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
883         (assign_stack_temp): Likewise for the size.
884         (temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT
885         to poly_int64.
886         (find_temp_slot_from_address): Handle polynomial offsets.
887         (combine_temp_slots): Likewise.
888         * emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT
889         to poly_int64.
890         * cfgexpand.c (alloc_stack_frame_space): Return the offset as a
891         poly_int64 rather than a HOST_WIDE_INT.
892         (expand_one_stack_var_at): Take the offset as a poly_int64 rather
893         than a HOST_WIDE_INT.
894         (expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle
895         polynomial frame offsets.
896         * config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size
897         as a poly_int64 rather than an int.
898         * config/m32r/m32r.c (m32r_compute_frame_size): Likewise.
899         * config/v850/v850-protos.h (compute_frame_size): Likewise.
900         * config/v850/v850.c (compute_frame_size): Likewise.
901         * config/xtensa/xtensa-protos.h (compute_frame_size): Likewise.
902         * config/xtensa/xtensa.c (compute_frame_size): Likewise.
903         * config/pa/pa-protos.h (pa_compute_frame_size): Likewise.
904         * config/pa/pa.c (pa_compute_frame_size): Likewise.
905         * explow.h (get_dynamic_stack_base): Take the offset as a poly_int64
906         rather than a HOST_WIDE_INT.
907         * explow.c (get_dynamic_stack_base): Likewise.
908         * final.c (final_start_function): Use the constant lower bound
909         of the frame size for -Wframe-larger-than.
910         * ira.c (do_reload): Adjust for new get_frame_size return type.
911         * lra.c (lra): Likewise.
912         * reload1.c (reload): Likewise.
913         * config/avr/avr.c (avr_asm_function_end_prologue): Likewise.
914         * config/pa/pa.h (EXIT_IGNORE_STACK): Likewise.
915         * rtlanal.c (get_initial_register_offset): Return the offset as
916         a poly_int64 rather than a HOST_WIDE_INT.
917
918 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
919             Alan Hayward  <alan.hayward@arm.com>
920             David Sherwood  <david.sherwood@arm.com>
921
922         * reload1.c (elim_table): Change initial_offset, offset and
923         previous_offset from HOST_WIDE_INT to poly_int64_pod.
924         (offsets_at): Change the target array's element type from
925         HOST_WIDE_INT to poly_int64_pod.
926         (set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn)
927         (elimination_costs_in_insn, update_eliminable_offsets)
928         (verify_initial_elim_offsets, set_offsets_for_label)
929         (init_eliminable_invariants): Update after above changes.
930
931 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
932             Alan Hayward  <alan.hayward@arm.com>
933             David Sherwood  <david.sherwood@arm.com>
934
935         * reload.h (reload::inc): Change from an int to a poly_int64_pod.
936         * reload.c (combine_reloads, debug_reload_to_stream): Likewise.
937         (decomposition): Change start and end from HOST_WIDE_INT
938         to poly_int64_pod.
939         (decompose, immune_p): Update accordingly.
940         (find_inc_amount): Return a poly_int64 rather than an int.
941         * reload1.c (inc_for_reload): Take the inc_amount as a poly_int64
942         rather than an int.
943
944 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
945             Alan Hayward  <alan.hayward@arm.com>
946             David Sherwood  <david.sherwood@arm.com>
947
948         * tree.h (get_inner_reference): Return the bitsize and bitpos
949         as poly_int64_pods rather than HOST_WIDE_INT.
950         * fold-const.h (ptr_difference_const): Return the pointer difference
951         as a poly_int64_pod rather than a HOST_WIDE_INT.
952         * expr.c (get_inner_reference): Return the bitsize and bitpos
953         as poly_int64_pods rather than HOST_WIDE_INT.
954         (expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial
955         offsets and sizes.
956         * fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64
957         rather than a HOST_WIDE_INT.  Update call to get_inner_reference.
958         (optimize_bit_field_compare): Update call to get_inner_reference.
959         (decode_field_reference): Likewise.
960         (fold_unary_loc): Track polynomial offsets and sizes.
961         (split_address_to_core_and_offset): Return the bitpos as a
962         poly_int64_pod rather than a HOST_WIDE_INT.
963         (ptr_difference_const): Likewise for the pointer difference.
964         * asan.c (instrument_derefs): Track polynomial offsets and sizes.
965         * config/mips/mips.c (r10k_safe_mem_expr_p): Likewise.
966         * dbxout.c (dbxout_expand_expr): Likewise.
967         * dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref)
968         (loc_list_from_tree_1, fortran_common): Likewise.
969         * gimple-laddress.c (pass_laddress::execute): Likewise.
970         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise.
971         * gimplify.c (gimplify_scan_omp_clauses): Likewise.
972         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
973         * tree-affine.c (tree_to_aff_combination): Likewise.
974         (get_inner_reference_aff): Likewise.
975         * tree-data-ref.c (split_constant_offset_1): Likewise.
976         (dr_analyze_innermost): Likewise.
977         * tree-scalar-evolution.c (interpret_rhs_expr): Likewise.
978         * tree-sra.c (ipa_sra_check_caller): Likewise.
979         * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
980         * ubsan.c (maybe_instrument_pointer_overflow): Likewise.
981         (instrument_bool_enum_load, instrument_object_size): Likewise.
982         * gimple-ssa-strength-reduction.c (slsr_process_ref): Update call
983         to get_inner_reference.
984         * hsa-gen.c (gen_hsa_addr): Likewise.
985         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.
986         * tsan.c (instrument_expr): Likewise.
987         * match.pd: Update call to ptr_difference_const.
988
989 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
990             Alan Hayward  <alan.hayward@arm.com>
991             David Sherwood  <david.sherwood@arm.com>
992
993         * fold-const.c (fold_comparison): Track sizes and offsets as
994         poly_int64s rather than HOST_WIDE_INTs when folding address
995         comparisons.
996
997 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
998             Alan Hayward  <alan.hayward@arm.com>
999             David Sherwood  <david.sherwood@arm.com>
1000
1001         * expr.h (get_bit_range): Return the bitstart and bitend as
1002         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Return the bitpos
1003         as a poly_int64 rather than a HOST_WIDE_INT.
1004         * expr.c (get_bit_range): Likewise.
1005         (expand_assignment): Update call accordingly.
1006         * fold-const.c (optimize_bit_field_compare): Likewise.
1007
1008 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
1009             Alan Hayward  <alan.hayward@arm.com>
1010             David Sherwood  <david.sherwood@arm.com>
1011
1012         * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): New enum.
1013         (aarch64_legitimate_address_p): Use it instead of an rtx code,
1014         as an optional final parameter.
1015         * config/aarch64/aarch64.c (aarch64_classify_address): Likewise.
1016         (aarch64_legitimate_address_p): Likewise.
1017         (aarch64_print_address_internal): Take an aarch64_addr_query_type
1018         instead of an rtx code.
1019         (aarch64_address_valid_for_prefetch_p): Update calls accordingly.
1020         (aarch64_legitimate_address_hook_p): Likewise.
1021         (aarch64_print_ldpstp_address): Likewise.
1022         (aarch64_print_operand_address): Likewise.
1023         (aarch64_address_cost): Likewise.
1024         * config/aarch64/constraints.md (Uml, Umq, Ump, Utq): Likewise.
1025         * config/aarch64/predicates.md (aarch64_mem_pair_operand): Likewise.
1026         (aarch64_mem_pair_lanes_operand): Likewise.
1027
1028 2017-12-20  Richard Biener  <rguenther@suse.de>
1029
1030         * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call
1031         update_stmt_if_modified.
1032
1033 2017-12-20  Wilco Dijkstra  <wdijkstr@arm.com>
1034
1035         PR tree-optimization/83491
1036         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Check for SSA_NAME
1037         before walking uses.  Improve coding style and comments.
1038
1039 2017-12-20  Tom de Vries  <tom@codesourcery.com>
1040
1041         * gimple-fold.c (fold_internal_goacc_dim): Simplify.
1042
1043 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
1044
1045         PR ipa/83506
1046         * ipa-fnsummary.c (pass_data_ipa_free_fn_summary): Use 0 for
1047         todo_flags_finish.
1048         (pass_ipa_free_fn_summary): Add small_p private data member,
1049         initialize to false in the ctor.
1050         (pass_ipa_free_fn_summary::clone,
1051         pass_ipa_free_fn_summary::set_pass_param,
1052         pass_ipa_free_fn_summary::gate): New methods.
1053         (pass_ipa_free_fn_summary::execute): Return TODO_remove_functions
1054         | TODO_dump_symtab if small_p.
1055         * passes.def: Add true parm for the existing pass_ipa_free_fn_summary
1056         entry and add another instance of the pass with false parm after
1057         ipa-pure-const.
1058         * ipa-pure-const.c (pass_ipa_pure_const): Don't call
1059         ipa_free_fn_summary here.
1060
1061 2017-12-20  Paolo Carlini  <paolo.carlini@oracle.com>
1062
1063         * gimplify.c (gimplify_return_expr): Remove dead error_mark_node check.
1064
1065 2017-12-20  Martin Sebor  <msebor@redhat.com>
1066
1067         PR testsuite/83131
1068         * builtins.c (expand_builtin_strlen): Use get_callee_fndecl.
1069         (expand_builtin_strcmp): Call maybe_warn_nonstring_arg.
1070         (expand_builtin_strncmp): Same.
1071
1072 2017-12-20  Alexandre Oliva  <aoliva@redhat.com>
1073
1074         PR bootstrap/83396
1075         * cfgexpand.c (label_rtx_for_bb): Revert SFN changes that
1076         allowed debug stmts before labels.
1077         (expand_gimple_basic_block): Likewise.
1078         * gimple-iterator.c (gimple_find_edge_insert_loc): Likewise.
1079         * gimple-iterator.h (gsi_after_labels): Likewise.
1080         * tree-cfgcleanup (remove_forwarder_block): Likewise, but
1081         rename reused variable, and simplify using gsi_move_before.
1082         * tree-ssa-tail-merge.c (find_duplicate): Likewise.
1083         * tree-cfg.c (make_edges, cleanup_dead_labels): Likewise.
1084         (gimple_can_merge_blocks_p, verify_gimple_in_cfg): Likewise.
1085         (gimple_verify_flow_info, gimple_block_label): Likewise.
1086         (make_blocks): Move debug markers after adjacent labels.
1087         * cfgrtl.c (skip_insns_after_block): Revert SFN changes that
1088         allowed debug insns outside blocks.
1089         * df-scan.c (df_insn_delete): Likewise.
1090         * lra-constraints.c (update_ebb_live_info): Likewise.
1091         * var-tracking.c (get_first_insn, vt_emit_notes): Likewise.
1092         (vt_initialize, delete_vta_debug_insns): Likewise.
1093         (reemit_marker_as_note): Drop BB parm.  Adjust callers.
1094
1095 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1096             Alan Hayward  <alan.hayward@arm.com>
1097             David Sherwood  <david.sherwood@arm.com>
1098
1099         * poly-int-types.h (round_down_to_byte_boundary): New macro.
1100         (round_up_to_byte_boundary): Likewise.
1101         * expr.h (get_bit_range): Add temporary shim.
1102         * gimple-ssa-store-merging.c (store_operand_info): Change the
1103         bitsize, bitpos, bitregion_start and bitregion_end fields from
1104         unsigned HOST_WIDE_INT to poly_uint64.
1105         (merged_store_group): Likewise load_align_base.
1106         (compatible_load_p, compatible_load_p): Update accordingly.
1107         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
1108         (split_group, imm_store_chain_info::output_merged_store): Likewise.
1109         (mem_valid_for_store_merging): Return the bitsize, bitpos,
1110         bitregion_start and bitregion_end as poly_uint64s rather than
1111         unsigned HOST_WIDE_INTs.  Track polynomial offsets internally.
1112         (handled_load): Take the bitsize, bitpos,
1113         bitregion_start and bitregion_end as poly_uint64s rather than
1114         unsigned HOST_WIDE_INTs.
1115         (pass_store_merging::process_store): Update call to
1116         mem_valid_for_store_merging.
1117
1118 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1119             Alan Hayward  <alan.hayward@arm.com>
1120             David Sherwood  <david.sherwood@arm.com>
1121
1122         * builtins.c (get_object_alignment_2): Track polynomial offsets
1123         and sizes.  Update the alignment handling.
1124
1125 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1126             Alan Hayward  <alan.hayward@arm.com>
1127             David Sherwood  <david.sherwood@arm.com>
1128
1129         * tree.h (get_inner_reference): Add a version that returns the
1130         offset and size as poly_int64_pods rather than HOST_WIDE_INTs.
1131         * cfgexpand.c (expand_debug_expr): Track polynomial offsets.  Simply
1132         the case in which bitpos is not associated with the first byte.
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-affine.h (get_inner_reference_aff): Return the size as a
1139         poly_widest_int.
1140         * tree-affine.c (get_inner_reference_aff): Likewise.
1141         * tree-data-ref.c (dr_may_alias_p): Update accordingly.
1142         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise.
1143
1144 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1145             Alan Hayward  <alan.hayward@arm.com>
1146             David Sherwood  <david.sherwood@arm.com>
1147
1148         * fold-const.c (pointer_may_wrap_p): Take the offset as a
1149         HOST_WIDE_INT rather than a poly_int64.
1150
1151 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1152             Alan Hayward  <alan.hayward@arm.com>
1153             David Sherwood  <david.sherwood@arm.com>
1154
1155         * gimple-ssa-store-merging.c (symbolic_number::bytepos): Change from
1156         HOST_WIDE_INT to poly_int64_pod.
1157         (perform_symbolic_merge): Update accordingly.
1158         (bswap_replace): Likewise.
1159
1160 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1161             Alan Hayward  <alan.hayward@arm.com>
1162             David Sherwood  <david.sherwood@arm.com>
1163
1164         * tree-affine.h (aff_tree::offset): Change from widest_int
1165         to poly_widest_int.
1166         (wide_int_ext_for_comb): Delete.
1167         (aff_combination_const, aff_comb_cannot_overlap_p): Take the
1168         constants as poly_widest_int rather than widest_int.
1169         (aff_combination_constant_multiple_p): Return the multiplier
1170         as a poly_widest_int.
1171         (aff_combination_zero_p, aff_combination_singleton_var_p): Handle
1172         polynomial offsets.
1173         * tree-affine.c (wide_int_ext_for_comb): Make original widest_int
1174         version static and add an overload for poly_widest_int.
1175         (aff_combination_const, aff_combination_add_cst)
1176         (wide_int_constant_multiple_p, aff_comb_cannot_overlap_p): Take
1177         the constants as poly_widest_int rather than widest_int.
1178         (tree_to_aff_combination): Generalize INTEGER_CST case to
1179         poly_int_tree_p.
1180         (aff_combination_to_tree): Track offsets as poly_widest_ints.
1181         (aff_combination_add_product, aff_combination_mult): Handle
1182         polynomial offsets.
1183         (aff_combination_constant_multiple_p): Return the multiplier
1184         as a poly_widest_int.
1185         * tree-predcom.c (determine_offset): Return the offset as a
1186         poly_widest_int.
1187         (split_data_refs_to_components, suitable_component_p): Update
1188         accordingly.
1189         (valid_initializer_p): Update call to
1190         aff_combination_constant_multiple_p.
1191         * tree-ssa-address.c (addr_to_parts): Handle polynomial offsets.
1192         * tree-ssa-loop-ivopts.c (get_address_cost_ainc): Take the step
1193         as a poly_int64 rather than a HOST_WIDE_INT.
1194         (get_address_cost): Handle polynomial offsets.
1195         (iv_elimination_compare_lt): Likewise.
1196         (rewrite_use_nonlinear_expr): Likewise.
1197
1198 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1199             Alan Hayward  <alan.hayward@arm.com>
1200             David Sherwood  <david.sherwood@arm.com>
1201
1202         * tree-dfa.h (get_addr_base_and_unit_offset_1): Return the offset
1203         as a poly_int64_pod rather than a HOST_WIDE_INT.
1204         (get_addr_base_and_unit_offset): Likewise.
1205         * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
1206         (get_addr_base_and_unit_offset): Likewise.
1207         * doc/match-and-simplify.texi: Change off from HOST_WIDE_INT
1208         to poly_int64 in example.
1209         * fold-const.c (fold_binary_loc): Update call to
1210         get_addr_base_and_unit_offset.
1211         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
1212         (maybe_canonicalize_mem_ref_addr): Likewise.
1213         (gimple_fold_stmt_to_constant_1): Likewise.
1214         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
1215         Likewise.
1216         * ipa-param-manipulation.c (ipa_modify_call_arguments): Likewise.
1217         * match.pd: Likewise.
1218         * omp-low.c (lower_omp_target): Likewise.
1219         * tree-sra.c (build_ref_for_offset): Likewise.
1220         (build_debug_ref_for_model): Likewise.
1221         * tree-ssa-address.c (maybe_fold_tmr): Likewise.
1222         * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise.
1223         * tree-ssa-ccp.c (optimize_memcpy): Likewise.
1224         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1225         (constant_pointer_difference): Likewise.
1226         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
1227         * tree-ssa-phiopt.c (jump_function_from_stmt): Likewise.
1228         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.
1229         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
1230         (vn_reference_maybe_forwprop_address, vn_reference_lookup_3): Likewise.
1231         (set_ssa_val_to): Likewise.
1232         * tree-ssa-strlen.c (get_addr_stridx, addr_stridxptr)
1233         (maybe_diag_stxncpy_trunc): Likewise.
1234         * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
1235         * tree.c (build_simple_mem_ref_loc): Likewise.
1236         (array_at_struct_end_p): Likewise.
1237
1238 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1239             Alan Hayward  <alan.hayward@arm.com>
1240             David Sherwood  <david.sherwood@arm.com>
1241
1242         * tree-dfa.h (get_ref_base_and_extent): Return the base, size and
1243         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
1244         (get_ref_base_and_extent_hwi): Declare.
1245         * tree-dfa.c (get_ref_base_and_extent): Return the base, size and
1246         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
1247         (get_ref_base_and_extent_hwi): New function.
1248         * cfgexpand.c (expand_debug_expr): Update call to
1249         get_ref_base_and_extent.
1250         * dwarf2out.c (add_var_loc_to_decl): Likewise.
1251         * gimple-fold.c (get_base_constructor): Return the offset as a
1252         poly_int64_pod rather than a HOST_WIDE_INT.
1253         (fold_const_aggregate_ref_1): Track polynomial sizes and offsets.
1254         * ipa-polymorphic-call.c
1255         (ipa_polymorphic_call_context::set_by_invariant)
1256         (extr_type_from_vtbl_ptr_store): Track polynomial offsets.
1257         (ipa_polymorphic_call_context::ipa_polymorphic_call_context)
1258         (check_stmt_for_type_change): Use get_ref_base_and_extent_hwi
1259         rather than get_ref_base_and_extent.
1260         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
1261         * ipa-prop.c (ipa_load_from_parm_agg, compute_complex_assign_jump_func)
1262         (get_ancestor_addr_info, determine_locally_known_aggregate_parts):
1263         Likewise.
1264         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Update
1265         call to get_ref_base_and_extent.
1266         * tree-sra.c (create_access, get_access_for_expr): Likewise.
1267         * tree-ssa-alias.c (ao_ref_base, aliasing_component_refs_p)
1268         (stmt_kills_ref_p): Likewise.
1269         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
1270         * tree-ssa-scopedtables.c (avail_expr_hash, equal_mem_array_ref_p):
1271         Likewise.
1272         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
1273         Use get_ref_base_and_extent_hwi rather than get_ref_base_and_extent
1274         when calling native_encode_expr.
1275         * tree-ssa-structalias.c (get_constraint_for_component_ref): Update
1276         call to get_ref_base_and_extent.
1277         (do_structure_copy): Use get_ref_base_and_extent_hwi rather than
1278         get_ref_base_and_extent.
1279         * var-tracking.c (track_expr_p): Likewise.
1280
1281 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1282             Alan Hayward  <alan.hayward@arm.com>
1283             David Sherwood  <david.sherwood@arm.com>
1284
1285         * ipa-param-manipulation.h (ipa_parm_adjustment::offset): Change from
1286         HOST_WIDE_INT to poly_int64_pod.
1287         * ipa-param-manipulation.c (ipa_modify_call_arguments): Track
1288         polynomail parameter offsets.
1289
1290 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1291             Alan Hayward  <alan.hayward@arm.com>
1292             David Sherwood  <david.sherwood@arm.com>
1293
1294         * gengtype.c (main): Handle poly_int64_pod.
1295         * dwarf2out.h (dw_cfi_oprnd_cfa_loc): New dw_cfi_oprnd_type.
1296         (dw_cfi_oprnd::dw_cfi_cfa_loc): New field.
1297         (dw_cfa_location::offset, dw_cfa_location::base_offset): Change
1298         from HOST_WIDE_INT to poly_int64_pod.
1299         * dwarf2cfi.c (queued_reg_save::cfa_offset): Likewise.
1300         (copy_cfa): New function.
1301         (lookup_cfa_1): Use the cached dw_cfi_cfa_loc, if it exists.
1302         (cfi_oprnd_equal_p): Handle dw_cfi_oprnd_cfa_loc.
1303         (cfa_equal_p, dwarf2out_frame_debug_adjust_cfa)
1304         (dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_expr)
1305         (initial_return_save): Treat offsets as poly_ints.
1306         (def_cfa_0): Likewise.  Cache the CFA in dw_cfi_cfa_loc if either
1307         offset is nonconstant.
1308         (reg_save): Take the offset as a poly_int64.  Fall back to
1309         DW_CFA_expression for nonconstant offsets.
1310         (queue_reg_save): Take the offset as a poly_int64.
1311         * dwarf2out.c (dw_cfi_oprnd2_desc): Handle DW_CFA_def_cfa_expression.
1312
1313 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1314             Alan Hayward  <alan.hayward@arm.com>
1315             David Sherwood  <david.sherwood@arm.com>
1316
1317         * rtl.h (operand_subword, operand_subword_force): Take the offset
1318         as a poly_uint64 an unsigned int.
1319         * emit-rtl.c (operand_subword, operand_subword_force): Likewise.
1320
1321 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1322             Alan Hayward  <alan.hayward@arm.com>
1323             David Sherwood  <david.sherwood@arm.com>
1324
1325         * doc/rtl.texi: Update documentation of SUBREG_BYTE.  Document the
1326         'p' format code.  Use INT_LIST rather than SUBREG as the example of
1327         a code with an XINT and an XEXP.  Remove the implication that
1328         accessing an rtx field using XINT is expected to work.
1329         * rtl.def (SUBREG): Change format from "ei" to "ep".
1330         * rtl.h (rtunion::rt_subreg): New field.
1331         (XCSUBREG): New macro.
1332         (SUBREG_BYTE): Use it.
1333         (subreg_shape): Change offset from an unsigned int to a poly_uint16.
1334         Update constructor accordingly.
1335         (subreg_shape::operator ==): Update accordingly.
1336         (subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather
1337         than an unsigned int.
1338         (subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return
1339         a poly_uint64 rather than an unsigned int.
1340         (subreg_lsb_1): Likewise.  Take the offset as a poly_uint64 rather
1341         than an unsigned int.
1342         (subreg_size_offset_from_lsb, subreg_size_lowpart_offset)
1343         (subreg_size_highpart_offset): Return a poly_uint64 rather than
1344         an unsigned int.  Take the sizes as poly_uint64s.
1345         (subreg_offset_from_lsb): Return a poly_uint64 rather than
1346         an unsigned int.  Take the shift as a poly_uint64 rather than
1347         an unsigned int.
1348         (subreg_regno_offset, subreg_offset_representable_p): Take the offset
1349         as a poly_uint64 rather than an unsigned int.
1350         (simplify_subreg_regno): Likewise.
1351         (byte_lowpart_offset): Return the memory offset as a poly_int64
1352         rather than an int.
1353         (subreg_memory_offset): Likewise.  Take the subreg offset as a
1354         poly_uint64 rather than an unsigned int.
1355         (simplify_subreg, simplify_gen_subreg, subreg_get_info)
1356         (gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a
1357         poly_uint64 rather than an unsigned int.
1358         * rtl.c (rtx_format): Describe 'p' in comment.
1359         (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'.
1360         * emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg
1361         offset as a poly_uint64 rather than an unsigned int.
1362         (byte_lowpart_offset): Return the memory offset as a poly_int64
1363         rather than an int.
1364         (subreg_memory_offset): Likewise.  Take the subreg offset as a
1365         poly_uint64 rather than an unsigned int.
1366         (subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the
1367         mode sizes as poly_uint64s rather than unsigned ints.  Return a
1368         poly_uint64 rather than an unsigned int.
1369         (subreg_lowpart_p): Treat subreg offsets as poly_ints.
1370         (copy_insn_1): Handle 'p'.
1371         * rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s.
1372         (subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than
1373         an unsigned int.  Return the shift in the same way.
1374         (subreg_lsb): Return the shift as a poly_uint64 rather than an
1375         unsigned int.
1376         (subreg_size_offset_from_lsb): Take the sizes and shift as
1377         poly_uint64s rather than unsigned ints.  Return the offset as
1378         a poly_uint64.
1379         (subreg_get_info, subreg_regno_offset, subreg_offset_representable_p)
1380         (simplify_subreg_regno): Take the offset as a poly_uint64 rather than
1381         an unsigned int.
1382         * rtlhash.c (add_rtx): Handle 'p'.
1383         * genemit.c (gen_exp): Likewise.
1384         * gengenrtl.c (type_from_format, gendef): Likewise.
1385         * gensupport.c (subst_pattern_match, get_alternatives_number)
1386         (collect_insn_data, alter_predicate_for_insn, alter_constraints)
1387         (subst_dup): Likewise.
1388         * gengtype.c (adjust_field_rtx_def): Likewise.
1389         * genrecog.c (find_operand, find_matching_operand, validate_pattern)
1390         (match_pattern_2): Likewise.
1391         (rtx_test::SUBREG_FIELD): New rtx_test::kind_enum.
1392         (rtx_test::subreg_field): New function.
1393         (operator ==, safe_to_hoist_p, transition_parameter_type)
1394         (print_nonbool_test, print_test): Handle SUBREG_FIELD.
1395         * genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled.
1396         * genpeep.c (match_rtx): Likewise.
1397         * print-rtl.c (print_poly_int): Include if GENERATOR_FILE too.
1398         (rtx_writer::print_rtx_operand): Handle 'p'.
1399         (print_value): Handle SUBREG.
1400         * read-rtl.c (apply_int_iterator): Likewise.
1401         (rtx_reader::read_rtx_operand): Handle 'p'.
1402         * alias.c (rtx_equal_for_memref_p): Likewise.
1403         * cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise.
1404         * caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets
1405         as poly_ints.
1406         * calls.c (expand_call): Likewise.
1407         * combine.c (combine_simplify_rtx, expand_field_assignment): Likewise.
1408         (make_extraction, gen_lowpart_for_combine): Likewise.
1409         * loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p):
1410         Likewise.
1411         * cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64
1412         rather than an unsigned int.  Treat subreg offsets as poly_ints.
1413         (exp_equiv_p): Handle 'p'.
1414         (hash_rtx_cb): Likewise.  Treat subreg offsets as poly_ints.
1415         (equiv_constant, cse_insn): Treat subreg offsets as poly_ints.
1416         * dse.c (find_shift_sequence): Likewise.
1417         * dwarf2out.c (rtl_for_decl_location): Likewise.
1418         * expmed.c (extract_low_bits): Likewise.
1419         * expr.c (emit_group_store, undefined_operand_subword_p): Likewise.
1420         (expand_expr_real_2): Likewise.
1421         * final.c (alter_subreg): Likewise.
1422         (leaf_renumber_regs_insn): Handle 'p'.
1423         * function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack):
1424         Treat subreg offsets as poly_ints.
1425         * fwprop.c (forward_propagate_and_simplify): Likewise.
1426         * ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise.
1427         * ira.c (get_subreg_tracking_sizes): Likewise.
1428         * ira-conflicts.c (go_through_subreg): Likewise.
1429         * ira-lives.c (process_single_reg_class_operands): Likewise.
1430         * jump.c (rtx_renumbered_equal_p): Likewise.  Handle 'p'.
1431         * lower-subreg.c (simplify_subreg_concatn): Take the subreg offset
1432         as a poly_uint64 rather than an unsigned int.
1433         (simplify_gen_subreg_concatn, resolve_simple_move): Treat
1434         subreg offsets as poly_ints.
1435         * lra-constraints.c (operands_match_p): Handle 'p'.
1436         (match_reload, curr_insn_transform): Treat subreg offsets as poly_ints.
1437         * lra-spills.c (assign_mem_slot): Likewise.
1438         * postreload.c (move2add_valid_value_p): Likewise.
1439         * recog.c (general_operand, indirect_operand): Likewise.
1440         * regcprop.c (copy_value, maybe_mode_change): Likewise.
1441         (copyprop_hardreg_forward_1): Likewise.
1442         * reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs)
1443         (record_subregs_of_mode): Likewise.
1444         * rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise.
1445         * reload.c (operands_match_p): Handle 'p'.
1446         (find_reloads_subreg_address): Treat subreg offsets as poly_ints.
1447         * reload1.c (alter_reg, choose_reload_regs): Likewise.
1448         (compute_reload_subreg_offset): Likewise, and return an poly_int64.
1449         * simplify-rtx.c (simplify_truncation, simplify_binary_operation_1):
1450         (test_vector_ops_duplicate): Treat subreg offsets as poly_ints.
1451         (simplify_const_poly_int_tests<N>::run): Likewise.
1452         (simplify_subreg, simplify_gen_subreg): Take the subreg offset as
1453         a poly_uint64 rather than an unsigned int.
1454         * valtrack.c (debug_lowpart_subreg): Likewise.
1455         * var-tracking.c (var_lowpart): Likewise.
1456         (loc_cmp): Handle 'p'.
1457
1458 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1459             Alan Hayward  <alan.hayward@arm.com>
1460             David Sherwood  <david.sherwood@arm.com>
1461
1462         * ira.c (get_subreg_tracking_sizes): New function.
1463         (init_live_subregs): Take an integer size rather than a register.
1464         (build_insn_chain): Use get_subreg_tracking_sizes.  Update calls
1465         to init_live_subregs.
1466
1467 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1468             Alan Hayward  <alan.hayward@arm.com>
1469             David Sherwood  <david.sherwood@arm.com>
1470
1471         * expr.c (store_constructor_field): Change bitsize from a
1472         unsigned HOST_WIDE_INT to a poly_uint64 and bitpos from a
1473         HOST_WIDE_INT to a poly_int64.
1474         (store_constructor): Change size from a HOST_WIDE_INT to
1475         a poly_int64.
1476         (store_field): Likewise bitsize and bitpos.
1477
1478 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1479             Alan Hayward  <alan.hayward@arm.com>
1480             David Sherwood  <david.sherwood@arm.com>
1481
1482         * expmed.h (store_bit_field): Change bitregion_start and
1483         bitregion_end from unsigned HOST_WIDE_INT to poly_uint64.
1484         * expmed.c (adjust_bit_field_mem_for_reg, strict_volatile_bitfield_p)
1485         (store_bit_field_1, store_integral_bit_field, store_bit_field)
1486         (store_fixed_bit_field, store_split_bit_field): Likewise.
1487         * expr.c (store_constructor_field, store_field): Likewise.
1488         (optimize_bitfield_assignment_op): Likewise.  Make the same change
1489         to bitsize and bitpos.
1490         * machmode.h (bit_field_mode_iterator): Change m_bitregion_start
1491         and m_bitregion_end from HOST_WIDE_INT to poly_int64.  Make the
1492         same change in the constructor arguments.
1493         (get_best_mode): Change bitregion_start and bitregion_end from
1494         unsigned HOST_WIDE_INT to poly_uint64.
1495         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
1496         Change bitregion_start and bitregion_end from HOST_WIDE_INT to
1497         poly_int64.
1498         (bit_field_mode_iterator::next_mode): Update for new types
1499         of m_bitregion_start and m_bitregion_end.
1500         (get_best_mode): Change bitregion_start and bitregion_end from
1501         unsigned HOST_WIDE_INT to poly_uint64.
1502
1503 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1504             Alan Hayward  <alan.hayward@arm.com>
1505             David Sherwood  <david.sherwood@arm.com>
1506
1507         * rtl.h (simplify_gen_subreg): Add a temporary overload that
1508         accepts poly_uint64 offsets.
1509         * expmed.h (extract_bit_field): Take bitsize and bitnum as
1510         poly_uint64s rather than unsigned HOST_WIDE_INTs.
1511         * expmed.c (lowpart_bit_field_p): Likewise.
1512         (extract_bit_field_as_subreg): New function, split out from...
1513         (extract_bit_field_1): ...here.  Take bitsize and bitnum as
1514         poly_uint64s rather than unsigned HOST_WIDE_INTs.  For vector
1515         extractions, check that BITSIZE matches the size of the extracted
1516         value and that BITNUM is an exact multiple of that size.
1517         If all else fails, try forcing the value into memory if
1518         BITNUM is variable, and adjusting the address so that the
1519         offset is constant.  Split the part that can only handle constant
1520         bitsize and bitnum out into...
1521         (extract_integral_bit_field): ...this new function.
1522         (extract_bit_field): Take bitsize and bitnum as poly_uint64s
1523         rather than unsigned HOST_WIDE_INTs.
1524
1525 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1526             Alan Hayward  <alan.hayward@arm.com>
1527             David Sherwood  <david.sherwood@arm.com>
1528
1529         * expmed.h (store_bit_field): Take bitsize and bitnum as
1530         poly_uint64s rather than unsigned HOST_WIDE_INTs.
1531         * expmed.c (simple_mem_bitfield_p): Likewise.  Add a parameter
1532         that returns the byte size.
1533         (store_bit_field_1): Take bitsize and bitnum as
1534         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Update call
1535         to simple_mem_bitfield_p.  Split the part that can only handle
1536         constant bitsize and bitnum out into...
1537         (store_integral_bit_field): ...this new function.
1538         (store_bit_field): Take bitsize and bitnum as poly_uint64s rather
1539         than unsigned HOST_WIDE_INTs.
1540         (extract_bit_field_1): Update call to simple_mem_bitfield_p.
1541
1542 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1543             Alan Hayward  <alan.hayward@arm.com>
1544             David Sherwood  <david.sherwood@arm.com>
1545
1546         * lra-int.h (lra_reg): Change offset from int to poly_int64.
1547         (lra_insn_recog_data): Change sp_offset from HOST_WIDE_INT
1548         to poly_int64.
1549         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
1550         update_sp_offset from a HOST_WIDE_INT to a poly_int64.
1551         (lra_update_reg_val_offset, lra_reg_val_equal_p): Take the
1552         offset as a poly_int64 rather than an int.
1553         * lra-assigns.c (find_hard_regno_for_1): Handle poly_int64 offsets.
1554         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
1555         * lra-constraints.c (equiv_address_substitution): Track offsets
1556         as poly_int64s.
1557         (emit_inc): Check poly_int_rtx_p instead of CONST_INT_P.
1558         (curr_insn_transform): Handle the new form of sp_offset.
1559         * lra-eliminations.c (lra_elim_table): Change previous_offset
1560         and offset from HOST_WIDE_INT to poly_int64.
1561         (print_elim_table, update_reg_eliminate): Update accordingly.
1562         (self_elim_offsets): Change from HOST_WIDE_INT to poly_int64_pod.
1563         (get_elimination): Update accordingly.
1564         (form_sum): Check poly_int_rtx_p instead of CONST_INT_P.
1565         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
1566         update_sp_offset from a HOST_WIDE_INT to a poly_int64.  Handle
1567         poly_int64 offsets generally.
1568         (curr_sp_change): Change from HOST_WIDE_INT to poly_int64.
1569         (mark_not_eliminable, init_elimination): Update accordingly.
1570         (remove_reg_equal_offset_note): Return a bool and pass the new
1571         offset back by pointer as a poly_int64.
1572         * lra-remat.c (change_sp_offset): Take sp_offset as a poly_int64
1573         rather than a HOST_WIDE_INT.
1574         (do_remat): Track offsets poly_int64s.
1575         * lra.c (lra_update_insn_recog_data, setup_sp_offset): Likewise.
1576
1577 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1578             Alan Hayward  <alan.hayward@arm.com>
1579             David Sherwood  <david.sherwood@arm.com>
1580
1581         * rtl.h (mem_attrs): Add a default constructor.  Change size and
1582         offset from HOST_WIDE_INT to poly_int64.
1583         * emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1)
1584         (adjust_automodify_address_1, set_mem_attributes_minus_bitpos)
1585         (widen_memory_access): Take the sizes and offsets as poly_int64s
1586         rather than HOST_WIDE_INTs.
1587         * alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET.
1588         (offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs
1589         and ints.
1590         (adjust_offset_for_component_ref): Change the offset from a
1591         HOST_WIDE_INT to a poly_int64.
1592         (nonoverlapping_memrefs_p): Track polynomial offsets and sizes.
1593         * cfgcleanup.c (merge_memattrs): Update after mem_attrs changes.
1594         * dce.c (find_call_stack_args): Likewise.
1595         * dse.c (record_store): Likewise.
1596         * dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise.
1597         * print-rtl.c (rtx_writer::print_rtx): Likewise.
1598         * read-rtl-function.c (test_loading_mem): Likewise.
1599         * rtlanal.c (may_trap_p_1): Likewise.
1600         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
1601         * var-tracking.c (int_mem_offset, track_expr_p): Likewise.
1602         * emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise.
1603         (mem_attrs::mem_attrs): New function.
1604         (set_mem_attributes_minus_bitpos): Change bitpos from a
1605         HOST_WIDE_INT to poly_int64.
1606         (set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr)
1607         (clear_mem_offset, clear_mem_size, change_address)
1608         (get_spill_slot_decl, set_mem_attrs_for_spill): Directly
1609         initialize mem_attrs.
1610         (set_mem_offset, set_mem_size, adjust_address_1)
1611         (adjust_automodify_address_1, offset_address, widen_memory_access):
1612         Likewise.  Take poly_int64s rather than HOST_WIDE_INT.
1613
1614 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1615             Alan Hayward  <alan.hayward@arm.com>
1616             David Sherwood  <david.sherwood@arm.com>
1617
1618         * rtlanal.c (rtx_addr_can_trap_p_1): Take the offset and size
1619         as poly_int64s rather than HOST_WIDE_INTs.  Use a size of -1
1620         rather than 0 to represent an unknown size.  Assert that the size
1621         is known when the mode isn't BLKmode.
1622         (may_trap_p_1): Use -1 for unknown sizes.
1623         (rtx_addr_can_trap_p): Likewise.  Pass BLKmode rather than VOIDmode.
1624
1625 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1626             Alan Hayward  <alan.hayward@arm.com>
1627             David Sherwood  <david.sherwood@arm.com>
1628
1629         * dse.c (store_info): Change offset and width from HOST_WIDE_INT
1630         to poly_int64.  Update commentary for positions_needed.large.
1631         (read_info_type): Change offset and width from HOST_WIDE_INT
1632         to poly_int64.
1633         (set_usage_bits): Likewise.
1634         (canon_address): Return the offset as a poly_int64 rather than
1635         a HOST_WIDE_INT.  Use strip_offset_and_add.
1636         (set_all_positions_unneeded, any_positions_needed_p): Use
1637         positions_needed.large to track stores with non-constant widths.
1638         (all_positions_needed_p): Likewise.  Take the offset and width
1639         as poly_int64s rather than ints.  Assert that rhs is nonnull.
1640         (record_store): Cope with non-constant offsets and widths.
1641         Nullify the rhs of an earlier store if we can't tell which bytes
1642         of it are needed.
1643         (find_shift_sequence): Take the access_size and shift as poly_int64s
1644         rather than ints.
1645         (get_stored_val): Take the read_offset and read_width as poly_int64s
1646         rather than HOST_WIDE_INTs.
1647         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Handle
1648         non-constant offsets and widths.
1649
1650 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1651             Alan Hayward  <alan.hayward@arm.com>
1652             David Sherwood  <david.sherwood@arm.com>
1653
1654         * inchash.h (inchash::hash::add_poly_int): New function.
1655         * tree-ssa-alias.h (ao_ref::offset, ao_ref::size, ao_ref::max_size):
1656         Use poly_int64 rather than HOST_WIDE_INT.
1657         (ao_ref::max_size_known_p): New function.
1658         * tree-ssa-sccvn.h (vn_reference_op_struct::off): Use poly_int64_pod
1659         rather than HOST_WIDE_INT.
1660         * tree-ssa-alias.c (ao_ref_base): Apply get_ref_base_and_extent
1661         to temporaries until its interface is adjusted to match.
1662         (ao_ref_init_from_ptr_and_size): Handle polynomial offsets and sizes.
1663         (aliasing_component_refs_p, decl_refs_may_alias_p)
1664         (indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p): Take
1665         the offsets and max_sizes as poly_int64s instead of HOST_WIDE_INTs.
1666         (refs_may_alias_p_1, stmt_kills_ref_p): Adjust for changes to
1667         ao_ref fields.
1668         * alias.c (ao_ref_from_mem): Likewise.
1669         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
1670         * tree-ssa-dse.c (valid_ao_ref_for_dse, normalize_ref)
1671         (clear_bytes_written_by, setup_live_bytes_from_ref, compute_trims)
1672         (maybe_trim_complex_store, maybe_trim_constructor_store)
1673         (live_bytes_read, dse_classify_store): Likewise.
1674         * tree-ssa-sccvn.c (vn_reference_compute_hash, vn_reference_eq):
1675         (copy_reference_ops_from_ref, ao_ref_init_from_vn_reference)
1676         (fully_constant_vn_reference_p, valueize_refs_1): Likewise.
1677         (vn_reference_lookup_3): Likewise.
1678         * tree-ssa-uninit.c (warn_uninitialized_vars): Likewise.
1679
1680 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1681             Alan Hayward  <alan.hayward@arm.com>
1682             David Sherwood  <david.sherwood@arm.com>
1683
1684         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p)
1685         (indirect_refs_may_alias_p): Use ranges_may_overlap_p
1686         instead of ranges_overlap_p.
1687
1688 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1689             Alan Hayward  <alan.hayward@arm.com>
1690             David Sherwood  <david.sherwood@arm.com>
1691
1692         * tree-ssa-alias.c (same_addr_size_stores_p): Take the offsets and
1693         sizes as poly_int64s rather than HOST_WIDE_INTs.
1694
1695 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1696             Alan Hayward  <alan.hayward@arm.com>
1697             David Sherwood  <david.sherwood@arm.com>
1698
1699         * gimple-fold.h (fold_ctor_reference): Take the offset and size
1700         as poly_uint64 rather than unsigned HOST_WIDE_INT.
1701         * gimple-fold.c (fold_ctor_reference): Likewise.
1702
1703 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1704             Alan Hayward  <alan.hayward@arm.com>
1705             David Sherwood  <david.sherwood@arm.com>
1706
1707         * target.def (dwarf_poly_indeterminate_value): New hook.
1708         * targhooks.h (default_dwarf_poly_indeterminate_value): Declare.
1709         * targhooks.c (default_dwarf_poly_indeterminate_value): New function.
1710         * doc/tm.texi.in (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Document.
1711         * doc/tm.texi: Regenerate.
1712         * dwarf2out.h (build_cfa_loc, build_cfa_aligned_loc): Take the
1713         offset as a poly_int64.
1714         * dwarf2out.c (new_reg_loc_descr): Move later in file.  Take the
1715         offset as a poly_int64.
1716         (loc_descr_plus_const, loc_list_plus_const, build_cfa_aligned_loc):
1717         Take the offset as a poly_int64.
1718         (build_cfa_loc): Likewise.  Use loc_descr_plus_const.
1719         (frame_pointer_fb_offset): Change to a poly_int64.
1720         (int_loc_descriptor): Take the offset as a poly_int64.  Use
1721         targetm.dwarf_poly_indeterminate_value for polynomial offsets.
1722         (based_loc_descr): Take the offset as a poly_int64.
1723         Use strip_offset_and_add to handle (plus X (const)).
1724         Use new_reg_loc_descr instead of an open-coded version of the
1725         previous implementation.
1726         (mem_loc_descriptor): Handle CONST_POLY_INT.
1727         (compute_frame_pointer_to_fb_displacement): Take the offset as a
1728         poly_int64.  Use strip_offset_and_add to handle (plus X (const)).
1729
1730 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1731             Alan Hayward  <alan.hayward@arm.com>
1732             David Sherwood  <david.sherwood@arm.com>
1733
1734         * rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
1735         (gen_rtx_REG_offset): Take the offset as a poly_int64.
1736         * inchash.h (inchash::hash::add_poly_hwi): New function.
1737         * gengtype.c (main): Register poly_int64.
1738         * emit-rtl.c (reg_attr_hasher::hash): Use inchash.  Treat the
1739         offset as a poly_int.
1740         (reg_attr_hasher::equal): Use must_eq to compare offsets.
1741         (get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the
1742         offset as a poly_int64.
1743         (set_reg_attrs_from_value): Treat the offset as a poly_int64.
1744         * print-rtl.c (print_poly_int): New function.
1745         (rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as
1746         a poly_int.
1747         * var-tracking.c (track_offset_p, get_tracked_reg_offset): New
1748         functions.
1749         (var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them.
1750         (same_variable_part_p, track_loc_p): Take the offset as a poly_int64.
1751         (vt_get_decl_and_offset): Return the offset as a poly_int64.
1752         Enforce track_offset_p for parts of a PARALLEL.
1753         (vt_add_function_parameter): Use const_offset for the final
1754         offset to track.  Use get_tracked_reg_offset for the parts
1755         of a PARALLEL.
1756
1757 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1758             Alan Hayward  <alan.hayward@arm.com>
1759             David Sherwood  <david.sherwood@arm.com>
1760
1761         * target.def (truly_noop_truncation): Take poly_uint64s instead of
1762         unsigned ints.  Change default to hook_bool_puint64_puint64_true.
1763         * doc/tm.texi: Regenerate.
1764         * hooks.h (hook_bool_uint_uint_true): Delete.
1765         (hook_bool_puint64_puint64_true): Declare.
1766         * hooks.c (hook_bool_uint_uint_true): Delete.
1767         (hook_bool_puint64_puint64_true): New function.
1768         * config/mips/mips.c (mips_truly_noop_truncation): Take poly_uint64s
1769         instead of unsigned ints.
1770         * config/spu/spu.c (spu_truly_noop_truncation): Likewise.
1771         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): Likewise.
1772
1773 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1774             Alan Hayward  <alan.hayward@arm.com>
1775             David Sherwood  <david.sherwood@arm.com>
1776
1777         * optabs.h (expand_operand): Add an int_value field.
1778         (create_expand_operand): Add an int_value parameter and use it
1779         to initialize the new expand_operand field.
1780         (create_integer_operand): Replace with a declaration of a function
1781         that accepts poly_int64s.  Move the implementation to...
1782         * optabs.c (create_integer_operand): ...here.
1783         (maybe_legitimize_operand): For EXPAND_INTEGER, check whether
1784         the mode preserves the value of int_value, instead of calling
1785         const_int_operand on the rtx.  Use gen_int_mode to generate
1786         the new rtx.
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         * dumpfile.h (dump_dec): Declare.
1793         * dumpfile.c (dump_dec): New function.
1794         * pretty-print.h (pp_wide_integer): Turn into a function and
1795         declare a poly_int version.
1796         * pretty-print.c (pp_wide_integer): New function for poly_ints.
1797
1798 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1799             Alan Hayward  <alan.hayward@arm.com>
1800             David Sherwood  <david.sherwood@arm.com>
1801
1802         * doc/generic.texi (POLY_INT_CST): Document.
1803         * tree.def (POLY_INT_CST): New tree code.
1804         * treestruct.def (TS_POLY_INT_CST): New tree layout.
1805         * tree-core.h (tree_poly_int_cst): New struct.
1806         (tree_node): Add a poly_int_cst field.
1807         * tree.h (POLY_INT_CST_P, POLY_INT_CST_COEFF): New macros.
1808         (wide_int_to_tree, force_fit_type): Take a poly_wide_int_ref
1809         instead of a wide_int_ref.
1810         (build_int_cst, build_int_cst_type): Take a poly_int64 instead
1811         of a HOST_WIDE_INT.
1812         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
1813         instead of an unsigned HOST_WIDE_INT.
1814         (build_poly_int_cst, tree_fits_poly_int64_p, tree_fits_poly_uint64_p)
1815         (ptrdiff_tree_p): Declare.
1816         (tree_to_poly_int64, tree_to_poly_uint64): Likewise.  Provide
1817         extern inline implementations if the target doesn't use POLY_INT_CST.
1818         (poly_int_tree_p): New function.
1819         (wi::unextended_tree): New class.
1820         (wi::int_traits <unextended_tree>): New override.
1821         (wi::extended_tree): Add a default constructor.
1822         (wi::extended_tree::get_tree): New function.
1823         (wi::widest_extended_tree, wi::offset_extended_tree): New typedefs.
1824         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): Use them.
1825         (wi::tree_to_poly_widest_ref, wi::tree_to_poly_offset_ref)
1826         (wi::tree_to_poly_wide_ref): New typedefs.
1827         (wi::ints_for): Provide overloads for extended_tree and
1828         unextended_tree.
1829         (poly_int_cst_value, wi::to_poly_widest, wi::to_poly_offset)
1830         (wi::to_wide): New functions.
1831         (wi::fits_to_boolean_p, wi::fits_to_tree_p): Handle poly_ints.
1832         * tree.c (poly_int_cst_hasher): New struct.
1833         (poly_int_cst_hash_table): New variable.
1834         (tree_node_structure_for_code, tree_code_size, simple_cst_equal)
1835         (valid_constant_size_p, add_expr, drop_tree_overflow): Handle
1836         POLY_INT_CST.
1837         (initialize_tree_contains_struct): Handle TS_POLY_INT_CST.
1838         (init_ttree): Initialize poly_int_cst_hash_table.
1839         (build_int_cst, build_int_cst_type, build_invariant_address): Take
1840         a poly_int64 instead of a HOST_WIDE_INT.
1841         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
1842         instead of an unsigned HOST_WIDE_INT.
1843         (wide_int_to_tree): Rename to...
1844         (wide_int_to_tree_1): ...this.
1845         (build_new_poly_int_cst, build_poly_int_cst): New functions.
1846         (force_fit_type): Take a poly_wide_int_ref instead of a wide_int_ref.
1847         (wide_int_to_tree): New function that takes a poly_wide_int_ref.
1848         (ptrdiff_tree_p, tree_to_poly_int64, tree_to_poly_uint64)
1849         (tree_fits_poly_int64_p, tree_fits_poly_uint64_p): New functions.
1850         * lto-streamer-out.c (DFS::DFS_write_tree_body, hash_tree): Handle
1851         TS_POLY_INT_CST.
1852         * tree-streamer-in.c (lto_input_ts_poly_tree_pointers): Likewise.
1853         (streamer_read_tree_body): Likewise.
1854         * tree-streamer-out.c (write_ts_poly_tree_pointers): Likewise.
1855         (streamer_write_tree_body): Likewise.
1856         * tree-streamer.c (streamer_check_handled_ts_structures): Likewise.
1857         * asan.c (asan_protect_global): Require the size to be an INTEGER_CST.
1858         * cfgexpand.c (expand_debug_expr): Handle POLY_INT_CST.
1859         * expr.c (expand_expr_real_1, const_vector_from_tree): Likewise.
1860         * gimple-expr.h (is_gimple_constant): Likewise.
1861         * gimplify.c (maybe_with_size_expr): Likewise.
1862         * print-tree.c (print_node): Likewise.
1863         * tree-data-ref.c (data_ref_compare_tree): Likewise.
1864         * tree-pretty-print.c (dump_generic_node): Likewise.
1865         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
1866         * tree-vect-data-refs.c (dr_group_sort_cmp): Likewise.
1867         * tree-vrp.c (compare_values_warnv): Likewise.
1868         * tree-ssa-loop-ivopts.c (determine_base_object, constant_multiple_of)
1869         (get_loop_invariant_expr, add_candidate_1, get_computation_aff_1)
1870         (force_expr_to_var_cost): Likewise.
1871         * tree-ssa-loop.c (for_each_index): Likewise.
1872         * fold-const.h (build_invariant_address, size_int_kind): Take a
1873         poly_int64 instead of a HOST_WIDE_INT.
1874         * fold-const.c (fold_negate_expr_1, const_binop, const_unop)
1875         (fold_convert_const, multiple_of_p, fold_negate_const): Handle
1876         POLY_INT_CST.
1877         (size_binop_loc): Likewise.  Allow int_const_binop_1 to fail.
1878         (int_const_binop_2): New function, split out from...
1879         (int_const_binop_1): ...here.  Handle POLY_INT_CST.
1880         (size_int_kind): Take a poly_int64 instead of a HOST_WIDE_INT.
1881         * expmed.c (make_tree): Handle CONST_POLY_INT_P.
1882         * gimple-ssa-strength-reduction.c (slsr_process_add)
1883         (slsr_process_mul): Check for INTEGER_CSTs before using them
1884         as candidates.
1885         * stor-layout.c (bits_from_bytes): New function.
1886         (bit_from_pos): Use it.
1887         (layout_type): Likewise.  For vectors, multiply the TYPE_SIZE_UNIT
1888         by BITS_PER_UNIT to get the TYPE_SIZE.
1889         * tree-cfg.c (verify_expr, verify_types_in_gimple_reference): Allow
1890         MEM_REF and TARGET_MEM_REF offsets to be a POLY_INT_CST.
1891
1892 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1893             Alan Hayward  <alan.hayward@arm.com>
1894             David Sherwood  <david.sherwood@arm.com>
1895
1896         * doc/rtl.texi (const_poly_int): Document.  Also document the
1897         rtl sharing behavior.
1898         * gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT.
1899         * rtl.h (const_poly_int_def): New struct.
1900         (rtx_def::u): Add a cpi field.
1901         (CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT.
1902         (CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros.
1903         (wi::rtx_to_poly_wide_ref): New typedef
1904         (const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64)
1905         (poly_int_rtx_p): New functions.
1906         (trunc_int_for_mode): Declare a poly_int64 version.
1907         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
1908         (immed_wide_int_const): Take a poly_wide_int_ref rather than
1909         a wide_int_ref.
1910         (strip_offset): Declare.
1911         (strip_offset_and_add): New function.
1912         * rtl.def (CONST_POLY_INT): New rtx code.
1913         * rtl.c (rtx_size): Handle CONST_POLY_INT.
1914         (shared_const_p): Use poly_int_rtx_p.
1915         * emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a
1916         HOST_WIDE_INT.
1917         (gen_int_shift_amount): Likewise.
1918         * emit-rtl.c (const_poly_int_hasher): New class.
1919         (const_poly_int_htab): New variable.
1920         (init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1.
1921         (const_poly_int_hasher::hash): New function.
1922         (const_poly_int_hasher::equal): Likewise.
1923         (gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT.
1924         (immed_wide_int_const): Rename to...
1925         (immed_wide_int_const_1): ...this and make static.
1926         (immed_wide_int_const): New function, taking a poly_wide_int_ref
1927         instead of a wide_int_ref.
1928         (gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT.
1929         (gen_lowpart_common): Handle CONST_POLY_INT.
1930         * cse.c (hash_rtx_cb, equiv_constant): Likewise.
1931         * cselib.c (cselib_hash_rtx): Likewise.
1932         * dwarf2out.c (const_ok_for_output_1): Likewise.
1933         * expr.c (convert_modes): Likewise.
1934         * print-rtl.c (rtx_writer::print_rtx, print_value): Likewise.
1935         * rtlhash.c (add_rtx): Likewise.
1936         * explow.c (trunc_int_for_mode): Add a poly_int64 version.
1937         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
1938         Handle existing CONST_POLY_INT rtxes.
1939         * expmed.h (expand_shift): Take a poly_int64 instead of a
1940         HOST_WIDE_INT.
1941         * expmed.c (expand_shift): Likewise.
1942         * rtlanal.c (strip_offset): New function.
1943         (commutative_operand_precedence): Give CONST_POLY_INT the same
1944         precedence as CONST_DOUBLE and put CONST_WIDE_INT between that
1945         and CONST_INT.
1946         * rtl-tests.c (const_poly_int_tests): New struct.
1947         (rtl_tests_c_tests): Use it.
1948         * simplify-rtx.c (simplify_const_unary_operation): Handle
1949         CONST_POLY_INT.
1950         (simplify_const_binary_operation): Likewise.
1951         (simplify_binary_operation_1): Fold additions of symbolic constants
1952         and CONST_POLY_INTs.
1953         (simplify_subreg): Handle extensions and truncations of
1954         CONST_POLY_INTs.
1955         (simplify_const_poly_int_tests): New struct.
1956         (simplify_rtx_c_tests): Use it.
1957         * wide-int.h (storage_ref): Add default constructor.
1958         (wide_int_ref_storage): Likewise.
1959         (trailing_wide_ints): Use GTY((user)).
1960         (trailing_wide_ints::operator[]): Add a const version.
1961         (trailing_wide_ints::get_precision): New function.
1962         (trailing_wide_ints::extra_size): Likewise.
1963
1964 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1965             Alan Hayward  <alan.hayward@arm.com>
1966             David Sherwood  <david.sherwood@arm.com>
1967
1968         * emit-rtl.h (gen_int_shift_amount): Declare.
1969         * emit-rtl.c (gen_int_shift_amount): New function.
1970         * asan.c (asan_emit_stack_protection): Use gen_int_shift_amount
1971         instead of GEN_INT.
1972         * calls.c (shift_return_value): Likewise.
1973         * cse.c (fold_rtx): Likewise.
1974         * dse.c (find_shift_sequence): Likewise.
1975         * expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1)
1976         (expand_shift, expand_smod_pow2): Likewise.
1977         * lower-subreg.c (shift_cost): Likewise.
1978         * optabs.c (expand_superword_shift, expand_doubleword_mult)
1979         (expand_unop, expand_binop, shift_amt_for_vec_perm_mask)
1980         (expand_vec_perm_var): Likewise.
1981         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
1982         (simplify_binary_operation_1): Likewise.
1983         * combine.c (try_combine, find_split_point, force_int_to_mode)
1984         (simplify_shift_const_1, simplify_shift_const): Likewise.
1985         (change_zero_ext): Likewise.  Use simplify_gen_binary.
1986
1987 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1988
1989         * poly-int.h (multiple_p): Fix handling of two non-poly_ints.
1990
1991 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1992
1993         * doc/invoke.texi (ARM Options): Document accepted extension options
1994         for -march=armv8.3-a.
1995
1996 2017-12-20  Richard Earnshaw  <rearnsha@arm.com>
1997
1998         PR target/83105
1999         * config.gcc (arm*-*-linux*): When configured with --with-float=hard
2000         or --with-float=softfp, set the default CPU to arm10e.
2001
2002 2017-12-20  Eric Botcazou  <ebotcazou@adacore.com>
2003
2004         * config/visium/constraints.md (J, K, L): Use IN_RANGE macro.
2005         * config/visium/predicates.md (const_shift_operand): Likewise.
2006         * config/visium/visium.c (visium_legitimize_address): Fix oversight.
2007         (visium_legitimize_reload_address): Likewise.
2008
2009 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2010
2011         PR target/82975
2012         * config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830.
2013
2014 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
2015
2016         PR c++/83490
2017         * calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments.
2018
2019 2017-12-20  Julia Koval  <julia.koval@intel.com>
2020
2021         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VPCLMULQDQ_SET,
2022         OPTION_MASK_ISA_VPCLMULQDQ_UNSET): New.
2023         (ix86_handle_option): Handle -mvpclmulqdq, move cx6 to flags2.
2024         * config.gcc: Include vpclmulqdqintrin.h.
2025         * config/i386/cpuid.h: Handle bit_VPCLMULQDQ.
2026         * config/i386/driver-i386.c (host_detect_local_cpu): Handle
2027         -mvpclmulqdq.
2028         * config/i386/i386-builtin.def (__builtin_ia32_vpclmulqdq_v2di,
2029         __builtin_ia32_vpclmulqdq_v4di, __builtin_ia32_vpclmulqdq_v8di): New.
2030         * config/i386/i386-c.c (__VPCLMULQDQ__): New.
2031         * config/i386/i386.c (isa2_opts): Add -mcx16.
2032         (isa_opts): Add -mpclmulqdq, remove -mcx16.
2033         (ix86_option_override_internal): Move mcx16 to flags2.
2034         (ix86_valid_target_attribute_inner_p): Add vpclmulqdq.
2035         (ix86_expand_builtin): Handle OPTION_MASK_ISA_VPCLMULQDQ.
2036         * config/i386/i386.h (TARGET_VPCLMULQDQ, TARGET_VPCLMULQDQ_P): New.
2037         * config/i386/i386.opt: Add mvpclmulqdq, move mcx16 to flags2.
2038         * config/i386/immintrin.h: Include vpclmulqdqintrin.h.
2039         * config/i386/sse.md (vpclmulqdq_<mode>): New pattern.
2040         * config/i386/vpclmulqdqintrin.h (_mm512_clmulepi64_epi128,
2041         _mm_clmulepi64_epi128, _mm256_clmulepi64_epi128): New intrinsics.
2042         * doc/invoke.texi: Add -mvpclmulqdq.
2043
2044 2017-12-20  Tom de Vries  <tom@codesourcery.com>
2045
2046         PR middle-end/83423
2047         * config/i386/i386.c (ix86_static_chain): Move
2048         DECL_STATIC_CHAIN test ...
2049         * calls.c (rtx_for_static_chain): ... here.  New function.
2050         * calls.h (rtx_for_static_chain): Declare.
2051         * builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain
2052         instead of targetm.calls.static_chain.
2053         * df-scan.c (df_get_entry_block_def_set): Same.
2054
2055 2017-12-19  Tom de Vries  <tom@codesourcery.com>
2056
2057         PR tree-optimization/83493
2058         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): Unshare ub
2059         and lb.
2060
2061 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
2062
2063         * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
2064         inform with hardcoded english plural handling.
2065
2066 2017-12-18  Jeff Law  <law@redhat.com>
2067
2068         PR tree-optimization/83477
2069         * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For
2070         a non-virtual PHI, always push a new range.
2071
2072 2017-12-19  Martin Sebor  <msebor@redhat.com>
2073
2074         PR middle-end/77608
2075         * builtins.c (compute_objsize): Handle non-constant offsets.
2076
2077 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
2078
2079         PR tree-optimization/83444
2080         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the
2081         character load case, if get_stridx on MEM_REF's operand doesn't
2082         look usable, retry with get_addr_stridx.
2083
2084 2017-12-19  Alexandre Oliva  <aoliva@redhat.com>
2085
2086         PR debug/83422
2087         * var-tracking.c (vt_debug_insns_local): Do not drop markers.
2088         (variable_tracking_main_1): Keep markers even when VTA fails.
2089
2090         PR bootstrap/83396
2091         * cfgexpand.c (expand_gimple_basic_block): Expand label first,
2092         even if there are markers before it.
2093         * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.
2094
2095 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
2096
2097         * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with
2098         typical order conditions.
2099         * sel-sched.c (extract_new_fences_from): Likewise.
2100         * config/visium/constraints.md (J, K, L): Likewise.
2101         * config/visium/predicates.md (const_shift_operand): Likewise.
2102         * config/visium/visium.c (visium_legitimize_address,
2103         visium_legitimize_reload_address): Likewise.
2104         * config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise.
2105         * config/arm/arm.c (arm_block_move_unaligned_straight): Likewise.
2106         * config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise.
2107         * config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log,
2108         SET_DUMP_DETAIL): Likewise.
2109         * config/avr/predicates.md (const_8_16_24_operand): Likewise.
2110         * config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte,
2111         avr_is_casesi_sequence, avr_casei_sequence_check_operands,
2112         avr_set_core_architecture, avr_set_current_function,
2113         avr_legitimize_reload_address, avr_asm_len, avr_print_operand,
2114         output_movqi, output_movsisf, avr_out_plus, avr_out_bitop,
2115         avr_out_fract, avr_adjust_insn_length, avr_encode_section_info,
2116         avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf,
2117         avr_map_decompose, avr_fold_builtin): Likewise.
2118         * config/avr/driver-avr.c (avr_devicespecs_file): Likewise.
2119         * config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise.
2120         * config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise.
2121         * config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise.
2122         * config/m32c/m32c.c (m32c_conditional_register_usage,
2123         m32c_address_cost): Likewise.
2124         * config/m32c/predicates.md (shiftcount_operand,
2125         longshiftcount_operand): Likewise.
2126         * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise.
2127         * config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option,
2128         can_use_cdx_ldstw): Likewise.
2129         * config/nios2/nios2.h (CDX_REG_P): Likewise.
2130         * config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P):
2131         Likewise.
2132         * config/cr16/cr16.md (*mov<mode>_double): Likewise.
2133         * config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise.
2134         * config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise.
2135         * config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise.
2136         * config/vax/vax.c (adjacent_operands_p): Likewise.
2137         * config/ft32/constraints.md (L, b, KA): Likewise.
2138         * config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue):
2139         Likewise.
2140         * cfgexpand.c (expand_stack_alignment): Likewise.
2141         * gcse.c (insert_expr_in_table): Likewise.
2142         * print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise.
2143         * cgraphunit.c (cgraph_node::expand): Likewise.
2144         * ira-build.c (setup_min_max_allocno_live_range_point): Likewise.
2145         * emit-rtl.c (add_insn): Likewise.
2146         * input.c (dump_location_info): Likewise.
2147         * passes.c (NEXT_PASS): Likewise.
2148         * read-rtl-function.c (parse_note_insn_name,
2149         function_reader::read_rtx_operand_r, function_reader::parse_mem_expr):
2150         Likewise.
2151         * sched-rgn.c (sched_rgn_init): Likewise.
2152         * diagnostic-show-locus.c (layout::show_ruler): Likewise.
2153         * combine.c (find_split_point, simplify_if_then_else, force_to_mode,
2154         if_then_else_cond, simplify_shift_const_1, simplify_comparison):
2155         Likewise.
2156         * explow.c (eliminate_constant_term): Likewise.
2157         * final.c (leaf_renumber_regs_insn): Likewise.
2158         * cfgrtl.c (print_rtl_with_bb): Likewise.
2159         * genhooks.c (emit_init_macros): Likewise.
2160         * poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise.
2161         * tree-data-ref.c (conflict_fn): Likewise.
2162         * selftest.c (assert_streq): Likewise.
2163         * expr.c (store_constructor_field, expand_expr_real_1): Likewise.
2164         * fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor,
2165         fold_binary_loc, multiple_of_p): Likewise.
2166         * reload.c (push_reload, find_equiv_reg): Likewise.
2167         * et-forest.c (et_nca, et_below): Likewise.
2168         * dbxout.c (dbxout_symbol_location): Likewise.
2169         * reorg.c (relax_delay_slots): Likewise.
2170         * dojump.c (do_compare_rtx_and_jump): Likewise.
2171         * gengtype-parse.c (type): Likewise.
2172         * simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational,
2173         simplify_const_relational_operation): Likewise.
2174         * reload1.c (do_output_reload): Likewise.
2175         * dumpfile.c (get_dump_file_info_by_switch): Likewise.
2176         * gengtype.c (type_for_name): Likewise.
2177         * gimple-ssa-sprintf.c (format_directive): Likewise.
2178
2179 2017-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2180
2181         PR target/82975
2182         * config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before
2183         accessing it.  Adjust comment.
2184
2185 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
2186
2187         PR middle-end/81914
2188         * predict.c (zero_one_minusone): New function.
2189         (apply_return_prediction): Avoid return prediction for functions
2190         returning only -1, 0 and 1 values, unless they only return -1 and 0
2191         or 0 and 1.
2192
2193 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
2194
2195         * config/arc/arc.c (legitimate_scaled_address_p): Clean
2196         fall-through warning.
2197         (arc_compute_frame_size): Remove unused variables.
2198         (arc_print_operand): Fix fprintif format.
2199         (arc_can_follow_jump): Clean fall-through warning.
2200
2201 2017-12-19  Marek Polacek  <polacek@redhat.com>
2202
2203         PR c++/83489
2204         * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P
2205         on an error node.
2206
2207 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
2208
2209         * config/arc/arc.c (overriderregs): New variable.
2210         (arc_override_options): Track fixed/call saved/call options.
2211         (arc_conditional_register_usage): Check against overrideregs
2212         variable whenever we change register properties.
2213
2214 2017-12-19  Nathan Sidwell  <nathan@acm.org>
2215
2216         * opts.c (finish_options): Don't prefix dump_base_name if it
2217         already contains directories.
2218
2219 2017-12-19  Martin Liska  <mliska@suse.cz>
2220
2221         PR rtl-optimization/82675
2222         * loop-unroll.c (unroll_loop_constant_iterations): Allocate one
2223         more element in sbitmap.
2224
2225 2017-12-19  Paolo Carlini  <paolo.carlini@oracle.com>
2226
2227         * gimplify.c (gimplify_expr): Use error_operand_p.
2228
2229 2017-12-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2230
2231         PR target/83387
2232         * config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float
2233         multilib.
2234
2235 2017-12-19  Daniel Cederman  <cederman@gaisler.com>
2236
2237         * config/sparc/sparc.c (sparc_do_work_around_errata): Make sure
2238         the jump is to a label.
2239
2240 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
2241
2242         PR tree-optimization/83444
2243         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize
2244         character loads.
2245
2246         PR ipa/82801
2247         PR ipa/83346
2248         * ipa-inline.c (flatten_remove_node_hook): New function.
2249         (ipa_inline): Keep only nodes with flatten attribute at the end of
2250         the array in the order from ipa_reverse_postorder, only walk that
2251         portion of array for flattening, if there is more than one such
2252         node, temporarily register a removal hook and ignore removed nodes.
2253
2254         PR tree-optimization/80631
2255         * tree-vect-loop.c (vect_create_epilog_for_reduction): Compare
2256         induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against
2257         IFN_REDUC_MAX or IFN_REDUC_MIN.
2258
2259 2017-12-18  Jeff Law  <law@redhat.com>
2260
2261         * tree-ssa-dom.c (record_equivalences_from_phis): Do not
2262         record symbolic equivalences from backedges in the CFG.
2263
2264         Revert
2265         2017-11-19  Jeff Law  <law@redhat.com>
2266
2267         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
2268         of degenerates resulting from ignoring an edge.
2269
2270 2017-12-18  Martin Sebor  <msebor@redhat.com>
2271
2272         PR middle-end/83373
2273         PR tree-optimization/78450
2274         * tree-ssa-strlen.c (maybe_set_strlen_range): New function.
2275         (handle_builtin_strlen): Call it.
2276
2277 2017-12-18  Segher Boessenkool  <segher@kernel.crashing.org>
2278
2279         PR rtl-optimization/83424
2280         * rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET.
2281
2282 2017-12-18  Marek Polacek  <polacek@redhat.com>
2283
2284         PR middle-end/83463
2285         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
2286         Check if TYPE is INTEGRAL_TYPE_P before accessing its min/max
2287         values.
2288
2289 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
2290
2291         * config/arc/arc.md (maddsidi4, maddsidi4_split): Update pattern.
2292         (umaddsidi4, umaddsidi_split): Likewise.
2293
2294 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
2295
2296         * config/arc/arc.c (arc_legitimate_constant_p): Always check all
2297         constants.
2298
2299 2017-12-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
2300
2301         PR target/83420
2302         * config/s390/s390.c (s390_option_override): Avoid strncpy.
2303
2304 2017-12-18  Richard Biener  <rguenther@suse.de>
2305
2306         PR tree-optimization/81877
2307         * tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters.
2308         (outermost_indep_loop): Adjust.
2309         (ref_indep_loop_p_1): Likewise.  Remove safelen handling again.
2310         (can_sm_ref_p): Adjust.
2311
2312 2017-12-18  Richard Biener  <rguenther@suse.de>
2313
2314         PR middle-end/77291
2315         * tree.c (array_at_struct_end_p): Return true if the underlying
2316         object has space for at least one element in excess of what
2317         the array domain specifies.
2318
2319 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
2320
2321         * doc/extend.texi (x86 Function Attributes): Reformat nocf_check
2322         example to avoid overfull hbox.
2323         * doc/invoke.texi (Option Summary): Add missing @gol.
2324         (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid
2325         overfull hbox.
2326
2327 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
2328             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2329
2330         * doc/invoke.texi (Option Summary): Add -mverbose-cost-dump
2331         to AArch64 and ARM lists, plus missing -mflip-thumb for ARM.
2332         (AArch64 Options): Document -mverbose-cost-dump.
2333         (ARM Options): Likewise, plus -mflip-thumb.
2334
2335 2017-12-17  Martin Sebor  <msebor@redhat.com>
2336
2337         PR bootstrap/83446
2338         * gimple-ssa-warn-restrict.c
2339         (builtin_memref::offset_out_of_bounds): Correct the handling of
2340         anti-ranges.
2341
2342 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
2343
2344         * doc/invoke.texi (ARC Options): Add missing -mlra entry.
2345
2346 2017-12-17  John David Anglin  <danglin@gcc.gnu.org>
2347
2348         * config/pa/pa.c (pa_som_asm_init_sections): Fix comment.
2349
2350 2017-12-17  Markus Trippelsdorf  <markus@trippelsdorf.de>
2351
2352         * x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply
2353         latencies.
2354
2355 2017-12-16  Sandra Loosemore  <sandra@codesourcery.com>
2356
2357         * doc/invoke.texi: Fix some typos.
2358
2359 2017-12-16  Martin Sebor  <msebor@redhat.com>
2360
2361         PR tree-optimization/78918
2362         * Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o.
2363         * builtins.c (check_sizes): Rename...
2364         (check_access): ...to this.  Rename function arguments for clarity.
2365         (check_memop_sizes): Adjust names.
2366         (expand_builtin_memchr, expand_builtin_memcpy): Same.
2367         (expand_builtin_memmove, expand_builtin_mempcpy): Same.
2368         (expand_builtin_strcat, expand_builtin_stpncpy): Same.
2369         (check_strncat_sizes, expand_builtin_strncat): Same.
2370         (expand_builtin_strncpy, expand_builtin_memset): Same.
2371         (expand_builtin_bzero, expand_builtin_memcmp): Same.
2372         (expand_builtin_memory_chk, maybe_emit_chk_warning): Same.
2373         (maybe_emit_sprintf_chk_warning): Same.
2374         (expand_builtin_strcpy): Adjust.
2375         (expand_builtin_stpcpy): Same.
2376         (expand_builtin_with_bounds): Detect out-of-bounds accesses
2377         in pointer-checking forms of memcpy, memmove, and mempcpy.
2378         (gcall_to_tree_minimal, max_object_size): Define new functions.
2379         * builtins.h (max_object_size): Declare.
2380         * calls.c (alloc_max_size): Call max_object_size instead of
2381         hardcoding ssizetype limit.
2382         (get_size_range): Handle new argument.
2383         * calls.h (get_size_range): Add a new argument.
2384         * cfgexpand.c (expand_call_stmt): Propagate no-warning bit.
2385         * doc/invoke.texi (-Wrestrict): Adjust, add example.
2386         * gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping
2387         operations.
2388         (gimple_fold_builtin_memory_chk): Same.
2389         (gimple_fold_builtin_stxcpy_chk): New function.
2390         * gimple-ssa-warn-restrict.c: New source.
2391         * gimple-ssa-warn-restrict.h: New header.
2392         * gimple.c (gimple_build_call_from_tree): Propagate location.
2393         * passes.def (pass_warn_restrict): Add new pass.
2394         * tree-pass.h (make_pass_warn_restrict): Declare.
2395         * tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping
2396         operations.
2397         (handle_builtin_strcat): Same.
2398         (strlen_optimize_stmt): Rename...
2399         (strlen_check_and_optimize_stmt): ...to this.  Handle strncat,
2400         stpncpy, strncpy, and their checking forms.
2401
2402 2017-12-16  Jan Hubicka  <hubicka@ucw.cz>
2403
2404         PR rtl-optimization/82849
2405         * modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
2406         and get_max_loop_iterations_int.
2407
2408 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2409             Alan Hayward  <alan.hayward@arm.com>
2410             David Sherwood  <david.sherwood@arm.com>
2411
2412         * machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size)
2413         (smallest_mode_for_size, smallest_int_mode_for_size): Take the mode
2414         size as a poly_uint64.
2415         (mode_for_vector, mode_for_int_vector): Take the number of vector
2416         elements as a poly_uint64.
2417         * stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode
2418         size as a poly_uint64.
2419         (mode_for_vector, mode_for_int_vector): Take the number of vector
2420         elements as a poly_uint64.
2421
2422 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2423             Alan Hayward  <alan.hayward@arm.com>
2424             David Sherwood  <david.sherwood@arm.com>
2425
2426         * machmode.h (MACRO_MODE): New macro.
2427         * addresses.h (base_reg_class, ok_for_base_p_1): Use it.
2428         * targhooks.c (default_libcall_value, default_secondary_reload)
2429         (default_memory_move_cost, default_register_move_cost)
2430         (default_class_max_nregs): Likewise.
2431
2432 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2433             Alan Hayward  <alan.hayward@arm.com>
2434             David Sherwood  <david.sherwood@arm.com>
2435
2436         * doc/sourcebuild.texi: Document IN_TARGET_CODE.
2437         * genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
2438         target C file.
2439         * genautomata.c (main): Likewise.
2440         * genconditions.c (write_header): Likewise.
2441         * genemit.c (main): Likewise.
2442         * genextract.c (print_header): Likewise.
2443         * genopinit.c (main): Likewise.
2444         * genoutput.c (output_prologue): Likewise.
2445         * genpeep.c (main): Likewise.
2446         * genpreds.c (write_insn_preds_c): Likewise.
2447         * genrecog.c (writer_header): Likewise.
2448         * config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
2449         * config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
2450         * config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
2451         * config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
2452         * config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
2453         * config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
2454         * config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
2455         * config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
2456         * config/arc/arc.c (IN_TARGET_CODE): Likewise.
2457         * config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
2458         * config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
2459         * config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
2460         * config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
2461         * config/arm/arm.c (IN_TARGET_CODE): Likewise.
2462         * config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
2463         * config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
2464         * config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
2465         * config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
2466         * config/avr/avr.c (IN_TARGET_CODE): Likewise.
2467         * config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
2468         * config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
2469         * config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
2470         * config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
2471         * config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
2472         * config/cris/cris.c (IN_TARGET_CODE): Likewise.
2473         * config/darwin.c (IN_TARGET_CODE): Likewise.
2474         * config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
2475         * config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
2476         * config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
2477         * config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
2478         * config/frv/frv.c (IN_TARGET_CODE): Likewise.
2479         * config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
2480         * config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
2481         * config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
2482         * config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
2483         * config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
2484         * config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
2485         * config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
2486         * config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
2487         * config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
2488         * config/i386/i386.c (IN_TARGET_CODE): Likewise.
2489         * config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
2490         * config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
2491         * config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
2492         * config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
2493         * config/i386/winnt.c (IN_TARGET_CODE): Likewise.
2494         * config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
2495         * config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
2496         * config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
2497         * config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
2498         * config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
2499         * config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
2500         * config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
2501         * config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
2502         * config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
2503         * config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
2504         * config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
2505         * config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
2506         * config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
2507         * config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
2508         * config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
2509         * config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
2510         * config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
2511         * config/mips/mips.c (IN_TARGET_CODE): Likewise.
2512         * config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
2513         * config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
2514         * config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
2515         * config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
2516         * config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
2517         * config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
2518         * config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
2519         * config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
2520         * config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
2521         * config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
2522         * config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
2523         * config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
2524         * config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
2525         * config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
2526         * config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
2527         * config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
2528         * config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
2529         * config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
2530         * config/pa/pa.c (IN_TARGET_CODE): Likewise.
2531         * config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
2532         * config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
2533         * config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
2534         * config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
2535         * config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
2536         * config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
2537         * config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
2538         * config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
2539         * config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
2540         * config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
2541         * config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
2542         * config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
2543         * config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
2544         * config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
2545         * config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
2546         * config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
2547         * config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
2548         * config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
2549         * config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
2550         * config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
2551         * config/rx/rx.c (IN_TARGET_CODE): Likewise.
2552         * config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
2553         * config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
2554         * config/s390/s390.c (IN_TARGET_CODE): Likewise.
2555         * config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
2556         * config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
2557         * config/sh/sh.c (IN_TARGET_CODE): Likewise.
2558         * config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
2559         * config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
2560         * config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
2561         * config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
2562         * config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
2563         * config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
2564         * config/spu/spu.c (IN_TARGET_CODE): Likewise.
2565         * config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
2566         * config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
2567         * config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
2568         * config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
2569         * config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
2570         * config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
2571         * config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
2572         * config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
2573         * config/v850/v850.c (IN_TARGET_CODE): Likewise.
2574         * config/vax/vax.c (IN_TARGET_CODE): Likewise.
2575         * config/visium/visium.c (IN_TARGET_CODE): Likewise.
2576         * config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
2577         * config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
2578         * config/vms/vms.c (IN_TARGET_CODE): Likewise.
2579         * config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise.
2580
2581 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2582             Alan Hayward  <alan.hayward@arm.com>
2583             David Sherwood  <david.sherwood@arm.com>
2584
2585         * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated
2586         checks for MEM_REF.
2587
2588 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2589             Alan Hayward  <alan.hayward@arm.com>
2590             David Sherwood  <david.sherwood@arm.com>
2591
2592         * doc/generic.texi (VEC_SERIES_EXPR): Document.
2593         * doc/md.texi (vec_series@var{m}): Document.
2594         * tree.def (VEC_SERIES_EXPR): New tree code.
2595         * tree.h (build_vec_series): Declare.
2596         * tree.c (build_vec_series): New function.
2597         * cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR.
2598         * tree-pretty-print.c (dump_generic_node): Likewise.
2599         * gimple-pretty-print.c (dump_binary_rhs): Likewise.
2600         * tree-inline.c (estimate_operator_cost): Likewise.
2601         * expr.c (expand_expr_real_2): Likewise.
2602         * optabs-tree.c (optab_for_tree_code): Likewise.
2603         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
2604         * fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants.
2605         * expmed.c (make_tree): Handle VEC_SERIES.
2606         * optabs.def (vec_series_optab): New optab.
2607         * optabs.h (expand_vec_series_expr): Declare.
2608         * optabs.c (expand_vec_series_expr): New function.
2609         * tree-vect-generic.c (expand_vector_operations_1): Check that
2610         the operands also have vector type.
2611
2612 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2613             Alan Hayward  <alan.hawyard@arm.com>
2614             David Sherwood  <david.sherwood@arm.com>
2615
2616         * doc/generic.texi (VEC_DUPLICATE_EXPR): Document.
2617         (VEC_COND_EXPR): Add missing @tindex.
2618         * doc/md.texi (vec_duplicate@var{m}): Document.
2619         * tree.def (VEC_DUPLICATE_EXPR): New tree codes.
2620         * tree.c (build_vector_from_val): Add stubbed-out handling of
2621         variable-length vectors, using VEC_DUPLICATE_EXPR.
2622         (uniform_vector_p): Handle VEC_DUPLICATE_EXPR.
2623         * cfgexpand.c (expand_debug_expr): Likewise.
2624         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2625         * tree-inline.c (estimate_operator_cost): Likewise.
2626         * tree-pretty-print.c (dump_generic_node): Likewise.
2627         * tree-vect-generic.c (ssa_uniform_vector_p): Likewise.
2628         * fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant.
2629         (test_vec_duplicate_folding): New function.
2630         (fold_const_c_tests): Call it.
2631         * optabs.def (vec_duplicate_optab): New optab.
2632         * optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR.
2633         * optabs.h (expand_vector_broadcast): Declare.
2634         * optabs.c (expand_vector_broadcast): Make non-static.  Try using
2635         vec_duplicate_optab.
2636         * expr.c (store_constructor): Try using vec_duplicate_optab for
2637         uniform vectors.
2638         (expand_expr_real_2): Handle VEC_DUPLICATE_EXPR.
2639
2640 2017-12-15  Markus Trippelsdorf  <markus@trippelsdorf.de>
2641
2642         PR target/83358
2643         * config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase
2644         div/mod latencies a bit.
2645
2646 2017-12-15  Jeff Law  <law@redhat.com>
2647
2648         PR tree-optimization/36550
2649         * tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New.
2650         (mark_threaded_blocks): Rewrite code to avoid block copying when
2651         optimizing for size.  Don't pessimize blocks which will be
2652         copied, but all the statements will be dead.
2653
2654 2017-12-15  Alexandre Oliva  <aoliva@redhat.com>
2655
2656         PR tree-optimization/81165
2657         * tree-ssa-threadupdate.c (uses_in_bb): New.
2658         (estimate_threading_killed_stmts): New.
2659         * tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
2660         * tree-ssa-threadedge.c
2661         (record_temporary_equivalences_from_stmts_at_dest): Expand limit
2662         when its hit.
2663
2664 2017-12-15  Jeff Law  <law@redhat.com>
2665
2666         PR tree-optimization/83410
2667         * tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump
2668         threads when parallelizing loops.
2669
2670 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
2671
2672         * tree-core.h (struct attribute_spec): Swap affects_type_identity and
2673         handler fields.
2674         * config/alpha/alpha.c (vms_attribute_table): Swap
2675         affects_type_identity and handler fields, adjust comments.
2676         * config/mips/mips.c (mips_attribute_table): Likewise.
2677         * config/visium/visium.c (visium_attribute_table): Likewise.
2678         * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
2679         * config/microblaze/microblaze.c (microblaze_attribute_table):
2680         Likewise.
2681         * config/spu/spu.c (spu_attribute_table): Likewise.
2682         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
2683         * config/arc/arc.c (arc_attribute_table): Likewise.
2684         * config/m68k/m68k.c (m68k_attribute_table): Likewise.
2685         * config/v850/v850.c (v850_handle_interrupt_attribute,
2686         v850_handle_data_area_attribute): Formatting fixes.
2687         (v850_attribute_table): Swap affects_type_identity and handler
2688         fields, adjust comments.
2689         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
2690         * config/arm/arm.c (arm_attribute_table): Likewise.
2691         * config/avr/avr.c (avr_attribute_table): Likewise.
2692         * config/s390/s390.c (s390_attribute_table): Likewise.
2693         * config/sh/sh.c (sh_attribute_table): Likewise.
2694         * config/i386/i386.c (ix86_handle_cconv_attribute,
2695         ix86_handle_callee_pop_aggregate_return): Formatting fixes.
2696         (ix86_attribute_table): Swap affects_type_identity and handler
2697         fields, adjust comments.
2698         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2699         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
2700         * config/m32c/m32c.c (m32c_attribute_table): Likewise.
2701         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
2702         * config/ia64/ia64.c (ia64_attribute_table): Likewise.
2703         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
2704         * config/rx/rx.c (rx_attribute_table): Likewise.
2705         * config/cr16/cr16.c (cr16_attribute_table): Likewise.
2706         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
2707         * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
2708         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
2709         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2710         * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
2711         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
2712         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
2713         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
2714         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
2715         * doc/plugins.texi (user_attr): Likewise.  Add NULL for
2716         exclude.
2717         * attribs.c (empty_attribute_table): Swap affects_type_identity and
2718         handler fields.
2719         (register_scoped_attributes, decl_attributes): Formatting fixes.
2720
2721         PR tree-optimization/83269
2722         * fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
2723         subtraction in arg0's type if type is signed and arg0 is unsigned.
2724         Formatting fix.
2725
2726         PR sanitizer/81281
2727         * match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and
2728         convert? on @0 instead of convert.  Check type of @1, not @0.
2729         ((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and
2730         convert? on @0 instead of convert.  Check type of @1, not @0.
2731         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0,
2732         only optimize if either both @1 and @2 types are narrower
2733         precision, or both are wider or equal precision, and in the former
2734         case only if both have undefined overflow.
2735
2736 2017-12-15  Richard Biener  <rguenther@suse.de>
2737
2738         PR lto/83388
2739         * internal-fn.def (IFN_NOP): Add.
2740         * internal-fn.c (expand_NOP): Do nothing.
2741         * lto-streamer-in.c (input_function): Instead of removing
2742         sanitizer calls replace them with IFN_NOP calls.
2743
2744 2017-12-15  Richard Sandiford  <richard.sandiford@linaro.org>
2745             Alan Hayward  <alan.hayward@arm.com>
2746             David Sherwood  <david.sherwood@arm.com>
2747
2748         * dse.c (store_info, read_info_type): Replace begin and end with
2749         offset and width.
2750         (print_range): New function.
2751         (set_all_positions_unneeded, any_positions_needed_p)
2752         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update
2753         accordingly.
2754         (record_store): Likewise.  Optimize the case in which all positions
2755         are unneeded.
2756         (get_stored_val): Replace read_begin and read_end with read_offset
2757         and read_width.
2758         (replace_read): Update call accordingly.
2759
2760 2017-12-15  Bin Cheng  <bin.cheng@arm.com>
2761
2762         * gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
2763         (loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members.
2764         (loop_cand::loop_cand): Initialize above members.
2765         (loop_cand::supported_operations): Delete.
2766         (loop_cand::can_interchange_p): Inline above function.
2767         (loop_cand::classify_simple_reduction): Record number of constant
2768         initialized simple reductions.
2769         (should_interchange_loops): New parameters.  Check stmt cost of loops
2770         to be interchange.
2771         (tree_loop_interchange::interchange): Prepare stmt cost of outer loop.
2772         Update call to should_interchange_loops.
2773         (should_interchange_loop_nest): Update call to
2774         should_interchange_loops.
2775
2776 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
2777
2778         PR target/66488
2779         * ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
2780         * hwint.h (HOST_BITS_PER_PTR): ...but here instead.
2781         * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.
2782
2783 2017-12-15  Julia Koval  <julia.koval@intel.com>
2784
2785         * config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
2786         __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi):
2787         New.
2788         * config/i386/sse.md (vaesenclast_<mode>): New pattern.
2789         * config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
2790         _mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.
2791
2792 2017-12-15  Julia Koval  <julia.koval@intel.com>
2793
2794         * config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi,
2795         __builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New.
2796         * config/i386/sse.md (vaesenc_<mode>): New pattern.
2797         * config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128,
2798         _mm_aesenc_epi128): New intrinsics.
2799
2800 2017-12-15  Julia Koval  <julia.koval@intel.com>
2801
2802         * config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
2803         __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi):
2804         New.
2805         * config/i386/sse.md (vaesdeclast_<mode>): New pattern.
2806         * config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
2807         _mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.
2808
2809 2017-12-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2810
2811         * gimple-ssa-strength-reduction.c (analyze_increments):
2812         Distinguish replacement costs for constant strides from those for
2813         unknown strides.
2814
2815 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
2816
2817         * var-tracking.c (variable_tracking_main_1): Formatting fix.
2818
2819 2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2820
2821         * doc/invoke.texi: Document -Wcast-function-type.
2822         * recog.h (stored_funcptr): Change signature.
2823         * tree-dump.c (dump_node): Avoid warning.
2824         * typed-splay-tree.h (typed_splay_tree): Avoid warning.
2825
2826 2017-12-14  Qing Zhao  <qing.zhao@oracle.com>
2827
2828         PR middle_end/79538
2829         * gimple-fold.c (get_range_strlen): Add the handling of non-member 
2830         array.
2831
2832 2017-12-14  David Malcolm  <dmalcolm@redhat.com>
2833
2834         PR tree-optimization/83312
2835         * domwalk.h (dom_walker::dom_walker): Fix typo in comment.
2836         * tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
2837         "val" param, and to cope with arbitrary basic blocks.
2838         (find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
2839         handle NULL_TREE for "val", dropping "bb" param.
2840         (find_taken_edge_switch_expr): Make "switch_stmt" param const and
2841         drop "bb" param.  Handle NULL_TREE for "val".
2842         (find_case_label_for_value): Make "switch_stmt" param const.
2843         * tree-vrp.c (class check_array_bounds_dom_walker): New subclass
2844         of dom_walker.
2845         (vrp_prop::check_all_array_refs): Reimplement as...
2846         (check_array_bounds_dom_walker::before_dom_children): ...this new
2847         vfunc.  Replace linear search through BB block list, excluding
2848         those with non-executable in-edges via dominator walk.
2849
2850 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2851
2852         * config/arm/arm.opt (mverbose-cost-dump): New option.
2853         * config/arm/arm.c (arm_rtx_costs): Use it.
2854
2855 2017-12-14  Andreas Schwab  <schwab@linux-m68k.org>
2856
2857         PR bootstrap/83396
2858         * reload1.c (emit_input_reload_insns): Skip debug markers.
2859
2860 2017-12-14  Alexandre Oliva  <aoliva@redhat.com>
2861
2862         * config/i386/i386.c (rest_of_insert_endbranch): Use call loc
2863         for its nop_endbr.
2864
2865         PR bootstrap/83396
2866         * config/arc/arc.c (hwloop_optimize): Skip debug insns.
2867         * config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
2868         * config/sh/sh.c: Skip debug insns besides notes.
2869         * config/sh/sh.md: Likewise.
2870         * config/sh/sh_treg_combine.cc: Likewise.
2871         * config/sh/sync.md: Likewise.
2872
2873 2017-12-14  Tom de Vries  <tom@codesourcery.com>
2874
2875         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
2876         Add item for weak_undefined.
2877
2878 2017-12-14  Richard Biener  <rguenther@suse.de>
2879
2880         PR tree-optimization/67842
2881         * sese.h (bb_in_region): Remove #if 0'ed code.
2882
2883 2017-12-14  Richard Biener  <rguenther@suse.de>
2884
2885         PR tree-optimization/83326
2886         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
2887         may_be_zero parameter and handle it by not marking the first
2888         peeled copy as not exiting the loop.
2889         (try_peel_loop): Likewise.
2890         (canonicalize_loop_induction_variables): Use number_of_iterations_exit
2891         to handle the case of constant or zero iterations and perform
2892         loop header copying on-the-fly.
2893
2894 2017-12-14  Richard Biener  <rguenther@suse.de>
2895
2896         PR tree-optimization/83418
2897         * vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
2898         Instead of asserting we don't get unfolded comparisons deal with them.
2899
2900 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
2901
2902         PR bootstrap/83396
2903         * var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of
2904         basic blocks.  Assert debug bind insns don't appear outside of bbs,
2905         don't reset them.  Assert insns without BLOCK_FOR_INSN are outside of
2906         bb.  Simplify.
2907
2908         PR tree-optimization/83198
2909         * gimple-ssa-sprintf.c (format_floating): Set type solely based on
2910         dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
2911         value if arg is a REAL_CST with incompatible type.
2912
2913 2017-12-14  Sudakshina Das  <sudi.das@arm.com>
2914             Bin Cheng  <bin.cheng@arm.com>
2915
2916         PR target/81228
2917         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT
2918         to CCFPEmode.
2919         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Add
2920         LTGT.
2921
2922 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2923
2924         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75,
2925         cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features.
2926
2927 2017-12-14  Richard Sandiford  <richard.sandiford@linaro.org>
2928             Alan Hayward  <alan.hayward@arm.com>
2929             David Sherwood  <david.sherwood@arm.com>
2930
2931         * poly-int.h: New file.
2932         * poly-int-types.h: Likewise.
2933         * coretypes.h: Include them.
2934         (POLY_INT_CONVERSION): Define.
2935         * target.def (estimated_poly_value): New hook.
2936         * doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook.
2937         * doc/tm.texi: Regenerate.
2938         * doc/poly-int.texi: New file.
2939         * doc/gccint.texi: Include it.
2940         * doc/rtl.texi: Describe restrictions on subreg modes.
2941         * Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi.
2942         * genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition.
2943         (emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS.
2944         * targhooks.h (default_estimated_poly_value): Declare.
2945         * targhooks.c (default_estimated_poly_value): New function.
2946         * target.h (estimated_poly_value): Likewise.
2947         * wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits.
2948         (wi::unary_traits): Delete.
2949         (wi::binary_traits::signed_shift_result_type): Define for
2950         offset_int << HOST_WIDE_INT, etc.
2951         (generic_wide_int::operator <<=): Define for all types and use
2952         wi::lshift instead of <<.
2953         (wi::hwi_with_prec): Add a default constructor.
2954         (wi::ints_for): New class.
2955         (operator <<): Define for all wide-int types.
2956         (operator /): New function.
2957         (operator %): Likewise.
2958         * selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE)
2959         (ASSERT_MAYBE_NE_AT): New macros.
2960
2961 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
2962             Dominik Vogt  <vogt@linux.vnet.ibm.com>
2963
2964         PR middle-end/78468
2965         * emit-rtl.c (init_emit): Remove ??? comment.
2966         * explow.c (get_dynamic_stack_size): Take known alignment of stack
2967         pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY.
2968         * config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the
2969         alignment of 3 virtual registers to BITS_PER_WORD.
2970
2971         * config/sparc/sparc.c (sparc_compute_frame_size): Simplify.
2972
2973 2017-12-13  Peter Bergner  <bergner@vnet.ibm.com>
2974
2975         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
2976         * config/rs6000/rs6000.c (cpu_supports_info): Use it.
2977
2978 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
2979
2980         PR bootstrap/83396
2981         * reload1.c (eliminate_regs_in_insn): Skip debug markers.
2982
2983 2017-12-13  Jakub Jelinek  <jakub@redhat.com>
2984
2985         * tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts
2986         with the exception of debug begin stmt markers appear before
2987         labels.
2988
2989         PR bootstrap/83396
2990         * final.c (rest_of_handle_final): Call variable_tracking_main only
2991         if !flag_var_tracking.
2992
2993 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
2994             Jakub Jelinek  <jakub@redhat.com>
2995
2996         PR bootstrap/83396
2997         PR debug/83391
2998         * tree-cfgcleanup.c (remove_forwarder_block): Keep after
2999         labels debug stmts that can only appear after labels.
3000
3001 2017-12-13  Alexander Monakov  <amonakov@ispras.ru>
3002
3003         PR rtl-optimization/82398
3004         * sel-sched.c (sel_rank_for_schedule): Fix check for zero
3005         EXPR_USEFULNESS in priority comparison.
3006
3007 2017-12-13  Segher Boessenkool  <segher@kernel.crashing.org>
3008
3009         PR rtl-optimization/83393
3010         * combine.c (move_deaths): If reg_stat points to a too new insn in
3011         last_death, do not use it: find the proper insn instead.
3012
3013 2017-12-12  Jeff Law  <law@redhat.com>
3014
3015         PR tree-optimization/83298
3016         PR tree-optimization/83362
3017         PR tree-optimization/83383
3018         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make
3019         push_value_range a public interface.  Add new argument to
3020         record_ranges_from_stmt.
3021         * gimple-ssa-evrp-analyze.c
3022         (evrp_range_analyzer::record_ranges_from_stmt): Add new argument.
3023         Update comments.  Handle recording temporary equivalences.
3024         * tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add
3025         new argument to call to evrp_range_analyzer::record_ranges_from_stmt.
3026         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise.
3027         * tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and
3028         gimple-ssa-evrp-analyze.h.
3029         (record_temporary_equivalences_from_phis): Add new argument.  When
3030         the PHI arg is an SSA_NAME, set the result's range to the range
3031         of the PHI arg.
3032         (record_temporary_equivalences_from_stmts_at_dest): Record ranges
3033         from statements too.
3034         (thread_through_normal_block): Accept new argument, evrp_range_analyzer.
3035         Pass it down to children as needed.
3036         (thread_outgoing_edges): Likewise.
3037         (thread_across_edge): Likewise.   Push/pop range state as needed.
3038         * tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype.
3039
3040 2017-12-12  Julia Koval  <julia.koval@intel.com>
3041
3042         * config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.
3043         (PTA_CANNONLAKE): Remove PTA_CLWB.
3044
3045 2017-12-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
3046
3047         PR target/83332
3048         * config/rs6000/vector.md (vcondv2dfv2di): New define_expand.
3049         (vcondv2div2df): Likewise.
3050         (vconduv2dfv2di): Likewise.
3051
3052 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
3053
3054         * builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF,
3055         BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF,
3056         BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of
3057         ATTR_MATHFN_FPROUNDING_ERRNO.
3058
3059 2017-12-12  Richard Biener  <rguenther@suse.de>
3060
3061         PR tree-optimization/83385
3062         * graphite-scop-detection.c (get_order, order): Remove.
3063         (bb_to_rpo): New global.
3064         (cmp_pbbs): Adjust.
3065         (build_scops): Sort pbbs in RPO order.
3066
3067 2017-12-12  James Greenhalgh  <james.greenhalgh@arm.com>
3068
3069         * combine.c (simplify_set): Do not transform subregs to zero_extends
3070         if the destination mode is a vector mode.
3071
3072 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
3073
3074         PR tree-optimization/83359
3075         * tree-cfg.h (fold_loop_internal_call): Declare.
3076         * tree-vectorizer.c (fold_loop_internal_call): Moved to ...
3077         * tree-cfg.c (fold_loop_internal_call): ... here.  No longer static.
3078         (find_loop_dist_alias): New function.
3079         (move_sese_region_to_fn): If any dloop->orig_loop_num value is
3080         updated, also adjust any corresponding LOOP_DIST_ALIAS internal
3081         calls.
3082
3083         PR tree-optimization/80631
3084         * tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo.
3085         (vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE
3086         arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of
3087         hardcoding zero as the value if COND_EXPR is never true.  For
3088         INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if
3089         INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of
3090         hardcoding MAX_EXPR as the reduction operation.
3091         (is_nonwrapping_integer_induction): Allow negative step.
3092         (vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for
3093         vect_create_epilog_for_reduction, if no value is suitable, don't
3094         use INTEGER_INDUC_COND_REDUCTION for now.  Formatting fixes.
3095
3096 2017-12-12  Richard Biener  <rguenther@suse.de>
3097
3098         PR tree-optimization/81889
3099         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use
3100         range info from the non-wrapping IV instead of just the range
3101         of the type.
3102
3103 2017-12-12  Julia Koval  <julia.koval@intel.com>
3104
3105         * config.gcc: Add vaesintrin.h.
3106         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
3107         New type.
3108         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
3109         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
3110         New builtins.
3111         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
3112         * config/i386/immintrin.h: Include vaesintrin.h.
3113         * config/i386/sse.md (vaesdec_<mode>): New pattern.
3114         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
3115         _mm_aesdec_epi128): New intrinsics.
3116
3117 2017-12-12  Julia Koval  <julia.koval@intel.com>
3118
3119         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET,
3120         OPTION_MASK_ISA_VAES_UNSET): New.
3121         (ix86_handle_option): Handle -mvaes.
3122         * config/i386/cpuid.h: Define bit_VAES.
3123         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes.
3124         * config/i386/i386-c.c (__VAES__): New.
3125         * config/i386/i386.c (ix86_target_string): Add -mvaes.
3126         (ix86_valid_target_attribute_inner_p): Ditto.
3127         * config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New.
3128         * config/i386/i386.opt: Add -mvaes.
3129         * doc/invoke.texi: Ditto.
3130
3131 2017-12-12  Alexandre Oliva  <aoliva@redhat.com>
3132
3133         * debug.h (gcc_debug_hooks): Add inline_entry.
3134         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
3135         * debug.c (do_nothing_debug_hooks): Likewise.
3136         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3137         * dwarf2out.c (dwarf2_debug_hooks): Likewise.
3138         (dwarf2_lineno_debug_hooks): Likewise.
3139
3140         * common.opt (gstatement-frontiers): New, setting
3141         debug_nonbind_markers_p.
3142         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
3143         * toplev.c (process_options): Autodetect value for debug statement
3144         frontiers option.
3145         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
3146         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
3147
3148         * cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
3149         markers.  Integrate source bind into debug stmt expand loop.
3150         (pass_expand::execute): Check debug marker limit.  Avoid deep
3151         TER and expand debug locations for debug bind insns only.
3152         * cse.c (insn_live_p): Keep nonbind markers and debug bindings
3153         followed by them.
3154         * df-scan.c (df_insn_delete): Accept out-of-block debug insn.
3155         * final.c (reemit_insn_block_notes): Take current block from
3156         nonbind markers.  Declare note where it's first set.
3157         (final_scan_insn): Handle begin stmt notes.  Emit is_stmt according to
3158         begin stmt markers if enabled.
3159         (notice_source_line): Handle nonbind markers.  Fail if their
3160         location is unknown or that of builtins.
3161         (rest_of_handle_final): Convert begin stmt markers to notes if
3162         var-tracking didn't run.
3163         (rest_of_clean_state): Skip begin stmt markers.
3164         * gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt
3165         markers.
3166         * function.c (allocate_struct_function): Set begin_stmt_markers.
3167         * function.h (struct function): Add debug_marker_count counter
3168         and debug_nonbind_markers flag.
3169         * gimple-iterator.c (gsi_remove): Adjust debug_marker_count.
3170         * gimple-low.c (lower_function_body): Adjust
3171         debug_nonbind_markers.
3172         (lower_stmt): Drop or skip gimple debug stmts.
3173         (lower_try_catch): Skip debug stmts.
3174         * gimple.c (gimple_build_debug_begin_stmt): New.
3175         (gimple_copy): Increment debug_marker_count if copying one.
3176         * gimple.h (gimple_build_debug_begin_stmt): Declare.
3177         * gimplify.c (rexpr_location): New.
3178         (rexpr_has_location): New.
3179         (warn_switch_unreachable_r): Handle gimple debug stmts.
3180         (shortcut_cond_r): Call expr_location.
3181         (find_goto): New.
3182         (find_goto_label): New.
3183         (shortcut_cond_expr): Call expr_has_location, expr_location, and
3184         find_goto_label.
3185         (gimplify_cond_expr): Call find_goto_label, expr_has_location, and
3186         expr_location.
3187         (gimplify_expr): Handle begin stmt markers.  Reject debug expr decls.
3188         * langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New.  Add to...
3189         (LANG_HOOKS_INITIALIZER): ... this.
3190         * langhooks.h (struct lang_hooks): Add emits_begin_stmt.
3191         * lra-contraints.c (inherit_reload_reg): Tolerate between-blocks
3192         debug insns.
3193         (update_ebb_live_info): Skip debug insn markers.
3194         * lra.c (debug_insn_static_data): Rename to...
3195         (debug_bind_static_data): ... this.
3196         (debug_marker_static_data): New.
3197         (lra_set_insn_recog_data): Select one of the above depending
3198         on debug insn kind.
3199         (lra_update_isn_regno_info): Don't assume debug insns have
3200         freqs.
3201         (push_insns): Skip debug insns.
3202         * lto-streamer-in.c (input_function): Drop debug stmts
3203         depending on active options.  Adjust debug_nonbind_markers.
3204         * params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New.
3205         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
3206         begin stmt marker notes.
3207         (print_insn): Likewise.
3208         * recog.c (extract_insn): Recognize rtl for debug markers.
3209         * rtl.def (DEBUG_MARKER): New.
3210         * tree-inline.c: Include params.h.
3211         (remap_gimple_stmt): Handle nonbind markers.
3212         (maybe_move_debug_stmts_to_successors): Likewise.
3213         (copy_debug_stmt): Likewise.
3214         * tree-iterator.c (append_to_statement_list_1): Append begin stmt
3215         markers regardless of no side effects.
3216         (tsi_link_before): Don't update container's side effects when adding
3217         a begin stmt marker.
3218         (tsi_link_after): Likewise.
3219         (expr_first): Skip begin stmt markers.
3220         (expr_last): Likewise.
3221         * tree-pretty-print (dump_generic_node): Handle begin stmt markers.
3222         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
3223         Disregard nonbind markers.
3224         * tree.c (make_node_stat): Don't set side effects for begin stmt
3225         markers.
3226         (build1_stat): Likewise.
3227         * tree.def (DEBUG_BEGIN_STMT): New.
3228         * tree.h (GOTO_DESTINATION): Require a GOTO_EXPR.
3229         * var-tracking.c (delete_debug_insns): Renamed to...
3230         (delete_vta_debug_insns): ... this.
3231         (reemit_marker_as_note): New.
3232         (vt_initialize): Reemit markers.
3233         (delete_vta_debug_insns): Likewise.
3234         (vt_debug_insns_local): Reemit or delete markers.
3235         (variable_tracking_main_1): Likewise.
3236         * doc/generic.texi (DEBUG_BEGIN_STMT): Document.
3237         * doc/gimple.texi (gimple_debug_begin_stmt_p): New.
3238         (gimple_debug_nonbind_marker_p): New.
3239         (gimple_build_debug_bind): Adjust.
3240         (gimple_build_debug_begin_stmt): New.
3241         * doc/invoke.texi (max-debug-marker-count): New param.
3242         * doc/rtl.texi (debug_implicit_ptr, entry_value): New.
3243         (debug_parameter_ref, debug_marker): New.
3244         (NOTE_INSN_BEGIN_STMT): New.
3245         (DEBUG_INSN): Describe begin stmt markers.
3246
3247         * cfgbuild.c (find_bb_boundaries): Don't purge dead edges if,
3248         without debug insns, we wouldn't, but clean up debug insns
3249         after a control flow insn nevertheless.
3250
3251         * cfgcleanup.c (delete_unreachable_blocks): Use alternate
3252         block removal order if MAY_HAVE_DEBUG_BIND_INSNS.
3253         * cfgexpand.c (label_rtx_for_bb): Skip debug insns.
3254         * cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns.
3255         (rtl_tidy_fallthru_edge): Likewise.
3256         (rtl_verify_fallthru): Likewise.
3257         (rtl_verify_bb_layout): Likewise.
3258         (skip_insns_after_block): Likewise.
3259         (duplicate_insn_chain): Use DEBUG_BIND_INSN_P.
3260         * dwarf2out.c: Include print-rtl.h.
3261         (dwarf2out_next_real_insn): New.
3262         (dwarf2out_var_location): Call it.  Disregard begin stmt markers.
3263         Dump debug binds in asm comments.
3264         * gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts.
3265         * gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust
3266         callers to use gsi_start_nondebug_bb instead.
3267         (gsi_after_labels): Skip gimple debug stmts.
3268         (gsi_start_nondebug): New.
3269         * gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust.
3270         (proper_loop_form_for_interchange): Adjust.
3271         * gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt.
3272         * gimple.h (gimple_seq_last_nondebug_stmt): New.
3273         * gimplify.c (last_stmt_in_scope): Skip debug stmts.
3274         (collect_fallthrough_labels): Likewise.
3275         (should_warn_for_implicit_fallthrough): Likewise.
3276         (warn_implicit_fallthrough_r): Likewise.
3277         (expand_FALLTHROUGH_r): Likewise.
3278         * graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust.
3279         (graphite_copy_stmts_from_block): Skip nonbind markers.
3280         * haifa-sched.c (sched_extend_bb): Skip debug insns.
3281         * ipa-icf-gimple.c (func_checker::compare_bb): Adjust.
3282         * jump.c (clean_barriers): Skip debug insns.
3283         * omp-expand.c (expand_parallel_call): Skip debug insns.
3284         (expand_task_call): Likewise.
3285         (remove_exit_barrier): Likewise.
3286         (expand_omp_taskreg): Likewise.
3287         (expand_omp_for_init_counts): Likewise.
3288         (expand_omp_for_generic): Likewise.
3289         (expand_omp_for_static_nochunk): Likewise.
3290         (expand_omp_for_static_chunk): Likewise.
3291         (expand_omp_simd): Likewise.
3292         (expand_omp_taskloop_for_outer): Likewise.
3293         (expand_omp_taskloop_for_inner): Likewise.
3294         (expand_oacc_for): Likewise.
3295         (expand_omp_sections): Likewise.
3296         (expand_omp_single): Likewise.
3297         (expand_omp_synch): Likewise.
3298         (expand_omp_atomic_load): Likewise.
3299         (expand_omp_atomic_store): Likewise.
3300         (expand_omp_atomic_fetch_op): Likewise.
3301         (expand_omp_atomic_pipeline): Likewise.
3302         (expand_omp_atomic_mutex): Likewise.
3303         (expand_omp_target): Likewise.
3304         (grid_expand_omp_for_loop): Likewise.
3305         (grid_expand_target_grid_body): Likewise.
3306         (build_omp_regions_1): Likewise.
3307         * omp-low.c (check_combined_parallel): Skip debug stmts.
3308         * postreload.c (fixup_debug_insns): Skip nonbind debug insns.
3309         * regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo.
3310         * sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in
3311         test.
3312         * tree-cfg.c (make_blobs_1): Skip debug stmts.
3313         (make_edges): Likewise.
3314         (cleanup_dead_labels): Likewise.
3315         (gimple_can_merge_blocks_p): Likewise.
3316         (stmt_starts_bb_p): Likewise.
3317         (gimple_block_label): Likewise.
3318         (gimple_redirect_edge_and_branch): Likewise.
3319         * tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping
3320         of debug stmts.
3321         (execute_cleanup_cfg_post_optimizing): Dump enumerated decls with
3322         TDF_SLIM.
3323         * tree-pretty-print (print_declaration): Omit initializer in slim
3324         dumps.
3325         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt
3326         markers.
3327         (eliminate_unnecessary_stmts): Stabilize block removal order.
3328         * tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts.
3329         * var-tracking.c (get_first_insn): New.
3330         (vt_emit_notes): Call it.
3331         (vt_initialize): Walk any insns before the first BB.
3332         (delete_debug_insns): Likewise.
3333
3334         * gimple.h (enum gimple_debug_subcode): Add
3335         GIMPLE_DEBUG_BEGIN_STMT.
3336         (gimple_debug_begin_stmt_p): New.
3337         (gimple_debug_nonbind_marker_p): New.
3338         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
3339         (MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
3340         (MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
3341         * insn-notes.def (BEGIN_STMT): New.
3342         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
3343         (MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
3344         (MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
3345         (NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
3346         (DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
3347         (INSN_DEBUG_MARKER_KIND): New.
3348         (GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
3349         (INSN_VAR_LOCATION): Check for VAR_LOCATION.
3350         (INSN_VAR_LOCATION_PTR): New.
3351         * cfgexpand.c (expand_debug_locations): Handle debug bind insns
3352         only.
3353         (expand_gimple_basic_block): Likewise.  Emit debug temps for TER
3354         deps only if debug bind insns are enabled.
3355         (pass_expand::execute): Avoid deep TER and expand
3356         debug locations for debug bind insns only.
3357         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
3358         debug stmts special handling down to debug bind stmts.
3359         * combine.c (try_combine): Narrow debug insns special handling
3360         down to debug bind insns.
3361         * cse.c (delete_trivially_dead_insns): Handle debug bindings.
3362         Narrow debug insns preexisting special handling down to debug
3363         bind insns.
3364         * dce.c (rest_of_handle_ud_dce): Narrow debug insns special
3365         handling down to debug bind insns.
3366         * function.c (instantiate_virtual_regs): Skip debug markers,
3367         adjust handling of debug binds.
3368         * gimple-ssa-backprop.c (backprop::prepare_change): Try debug
3369         temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
3370         * haifa-sched.c (schedule_insn): Narrow special handling of debug
3371         insns to debug bind insns.
3372         * ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
3373         special handling of debug stmts to debug bind stmts.
3374         * ipa-split.c (split_function): Likewise.
3375         * ira.c (combine_and_move_insns): Adjust debug bind insns only.
3376         * loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
3377         debug insns.
3378         * reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
3379         * regrename.c (build_def_use): Likewise.
3380         * regcprop.c (copyprop_hardreg_forward_1): Likewise.
3381         (pass_cprop_hardreg): Narrow special casing of debug insns to
3382         debug bind insns.
3383         * regstat.c (regstat_init_n_sets_and_refs): Likewise.
3384         * reload1.c (reload): Likewise.
3385         * sese.c (sese_insert_phis_for_liveouts): Narrow special
3386         casing of debug stmts to debug bind stmts.
3387         * shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
3388         * ssa-iterators.h (num_imm_uses): Likewise.
3389         * tree-cfg.c (gimple_merge_blocks): Narrow special casing of
3390         debug stmts to debug bind stmts.
3391         * tree-inline.c (tree_function_versioning): Narrow special casing
3392         of debug stmts to debug bind stmts.
3393         * tree-loop-distribution.c (generate_loops_for_partition):
3394         Narrow special casing of debug stmts to debug bind stmts.
3395         * tree-sra.c (analyze_access_subtree): Narrow special casing
3396         of debug stmts to debug bind stmts.
3397         * tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
3398         stmts to debug bind stmts.
3399         * tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
3400         casing of debug stmts to debug bind stmts.
3401         * tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
3402         * tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
3403         casing of debug stmts to debug bind stmts.
3404         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
3405         Likewise.
3406         * tree-ssa.c (flush_pending_stmts): Narrow special casing of
3407         debug stmts to debug bind stmts.
3408         (gimple_replace_ssa_lhs): Likewise.
3409         (insert_debug_temp_for_var_def): Likewise.
3410         (insert_debug_temps_for_defs): Likewise.
3411         (reset_debug_uses): Likewise.
3412         * tree-ssanames.c (release_ssa_name_fn): Likewise.
3413         * tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
3414         (adjust_debug_stmts): Likewise.
3415         (adjust_phi_and_debug_stmts): Likewise.
3416         (vect_do_peeling): Likewise.
3417         * tree-vect-loop.c (vect_transform_loop): Likewise.
3418         * valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
3419         * var-tracking.c (adjust_mems): Narrow special casing of debug
3420         insns to debug bind insns.
3421         (dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
3422         (compute_bb_dataflow, vt_find_locations): Likewise.
3423         (vt_expand_loc, emit_notes_for_changes): Likewise.
3424         (vt_init_cfa_base): Likewise.
3425         (vt_emit_notes): Likewise.
3426         (vt_initialize): Likewise.
3427         (vt_finalize): Likewise.
3428
3429         * emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
3430         (next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
3431         (next_nonnote_nondebug_insn_bb): New.
3432         (prev_nonnote_nondebug_insn_bb): New.
3433         (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
3434         * rtl.h (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
3435         (prev_nonnote_nondebug_insn_bb): Declare.
3436         (next_nonnote_nondebug_insn_bb): Declare.
3437         * cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
3438         * cfgrtl.c (get_last_bb_insn): Likewise.
3439         * lra.c (push_insns): Likewise.
3440
3441 2017-12-11  David Malcolm  <dmalcolm@redhat.com>
3442
3443         PR c/82050
3444         * selftest-run-tests.c (selftest::run_tests): Move start/finish code
3445         to...
3446         * selftest.c (selftest::test_runner::test_runner): New ctor.
3447         (selftest::test_runner::~test_runner): New dtor.
3448         * selftest.h (class selftest::test_runner): New class.
3449
3450 2017-12-11  Carl Love  <cel@us.ibm.com>
3451
3452         * config/rs6000/altivec.h (vec_extract_fp32_from_shorth,
3453         vec_extract_fp32_from_shortl]): Add #defines.
3454         * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion.
3455         * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH,
3456         ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND,
3457         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL,
3458         ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD,
3459         ALTIVEC_BUILTIN_VEC_SLL): Add expansions.
3460         * doc/extend.texi: Add documentation for the added builtins.
3461
3462 2017-12-11  Alexandre Oliva  <aoliva@redhat.com>
3463
3464         PR rtl-optimization/80693
3465         PR rtl-optimization/81019
3466         PR rtl-optimization/81020
3467         * combine.c (distribute_notes): Reset any REG_UNUSED REGs that
3468         are not mentioned in i3.  Place the REG_UNUSED note on i2,
3469         possibly modified to REG_DEAD, if it did not originate in i3.
3470
3471 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
3472
3473         * recog.c (store_data_bypass_p_1): New function.
3474         (store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER.  Use
3475         store_data_bypass_p_1 to avoid code duplication.  Formatting fixes.
3476
3477 2017-12-11  Segher Boessenkool  <segher@kernel.crashing.org>
3478
3479         PR rtl-optimization/83361
3480         * ifcvt.c (if_convert): Call fixup_partitions.
3481
3482 2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>
3483
3484         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
3485         early folding of splat_u{8,16,32}.
3486
3487 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
3488
3489         * config/aarch64/aarch64.c (aarch64_print_operand): Don't start
3490         output_operand_lossage first argument with capital letter.
3491         (aarch64_override_options): Don't start error and sorry first argument
3492         with capital letter.
3493
3494 2017-12-11  Andi Kleen  <ak@linux.intel.com>
3495
3496         PR gcov-profile/83355
3497         * auto-profile.c (string_table::get_index_by_decl): Don't
3498         recurse when abstract origin points to itself.
3499
3500 2017-12-11  Bin Cheng  <bin.cheng@arm.com>
3501
3502         PR tree-optimization/83320
3503         * gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete.
3504         (prune_datarefs_not_in_loop): Ditto.
3505
3506 2017-12-10  Gerald Pfeifer  <gerald@pfeifer.com>
3507
3508         * doc/install.texi (Specific): Tweak link to mkssoftware.com.
3509
3510 2017-12-10  Jakub Jelinek  <jakub@redhat.com>
3511
3512         PR tree-optimization/83337
3513         * gimple-loop-interchange.cc (compute_access_stride): Handle
3514         bitfield DRs properly.
3515
3516 2017-12-09  Jakub Jelinek  <jakub@redhat.com>
3517
3518         PR tree-optimization/83338
3519         * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR
3520         vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from
3521         vector of unsigned integers to vector of signed integers.
3522
3523 2017-12-08  Vladimir Makarov  <vmakarov@redhat.com>
3524
3525         PR rtl-optimization/83317
3526         * lra-constraints.c (process_address_1): Add insn code check.
3527
3528 2017-12-08  Michael Matz  <matz@suse.de>
3529
3530         Fix PR tree-optimization/83323
3531         * gimple-loop-jam (unroll_jam_possible_p): Correct test for
3532         head-controlled loops and loop BBs.
3533         * common.opt (funroll-and-jam): Remove, instead ...
3534         (floop-unroll-and-jam): ... reuse this option.
3535         * opts.c (default_options_table): Use OPT_floop_unroll_and_jam.
3536         * doc/invoke.texi (-funroll-and-jam): Move docu to ...
3537         (-floop-unroll-and-jam): ... this option.
3538
3539 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
3540
3541         * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix
3542         a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent.
3543         * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise.
3544
3545 2017-12-08  Richard Biener  <rguenther@suse.de>
3546
3547         PR middle-end/81782
3548         * tree-ssa-uninit.c (warn_uninitialized_vars): Properly
3549         handle accesses outside of zero-sized vars.
3550
3551 2017-12-08  Martin Jambor  <mjambor@suse.cz>
3552
3553         PR tree-optimization/83141
3554         * tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also
3555         test for MEM_REFs implicitely changing types with padding.  Remove
3556         inline keyword.
3557         (build_accesses_from_assign): Added contains_vce_or_bfcref_p checks.
3558
3559 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
3560
3561         * config/arc/arc.c (arc_attribute_table): Add exclusions to
3562         the comment.
3563         * config/avr/avr.c (avr_attribute_table): Likewise.
3564         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
3565         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
3566         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
3567         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member
3568         of struct attribute_spec.
3569         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
3570
3571 2017-12-08  Ulrich Weigand  <uweigand@de.ibm.com>
3572
3573         PR target/82960
3574         * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true.
3575
3576 2017-12-08  Jan Hubicka  <hubicka@ucw.cz>
3577
3578         PR middle-end/83609
3579         * profile-count.c (profile_count::from_gcov_type): Move from
3580         profile-count.h; handle overflow.
3581         * profile-count.h (profile_count::from_gcov_type): Move offline.
3582
3583 2017-12-08  Segher Boessenkool  <segher@kernel.crashing.org>
3584
3585         PR rtl-optimization/83304
3586         * combine.c (move_deaths): If we do not know where a register died,
3587         search for it.
3588
3589 2017-12-08  Richard Biener  <rguenther@suse.de>
3590
3591         * gimple-loop-interchange.cc (tree_loop_interchange::interchange):
3592         Provide -fopt-info-loop feedback when we interchange in a nest.
3593
3594 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3595
3596         * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
3597         for armv6 ARM CPU IDs.
3598
3599 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3600
3601         * common/config/arm/arm-common.c: Include <algorithm>.
3602         (INCLUDE_VECTOR): Define.
3603         (compare_opt_names): New function.
3604         (arm_rewrite_selected_arch): Only strip out extensions that can be
3605         expressed through -mfpu.  Sort the remaining extensions
3606         alphabetically.
3607
3608 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3609
3610         * config/arm/arm.h (arm_asm_auto_mfpu): Declare.
3611         (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu.
3612         (ASM_CPU_SPEC): Use it if -mfpu is set to auto.
3613         * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function.
3614
3615 2017-06-08  Tristan Gingold  <gindold@adacore.com>
3616
3617         PR ada/81470
3618         * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit
3619         .cfi_personality or .cfi_lsda if the eh data format is dwarf2.
3620
3621 2017-12-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3622
3623         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member
3624         of struct attribute_spec.
3625
3626 2017-12-08  Julia Koval  <julia.koval@intel.com>
3627
3628         * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32,
3629         _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics.
3630         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32,
3631         _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32,
3632         _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32,
3633         _mm_maskz_dpwssds_epi32): Ditto.
3634
3635 2017-12-08  Richard Biener  <rguenther@suse.de>
3636
3637         PR tree-optimization/81303
3638         * tree-vect-stmts.c (vect_is_simple_cond): For invariant
3639         conditions try to create a comparison vector type matching
3640         the data vector type.
3641         (vectorizable_condition): Adjust.
3642         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
3643         Leave invariant conditions alone in case we can vectorize those.
3644
3645 2017-12-08  Julia Koval  <julia.koval@intel.com>
3646
3647         * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32,
3648         _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics.
3649         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32,
3650         _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32,
3651         _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto.
3652
3653 2017-12-08  Julia Koval  <julia.koval@intel.com>
3654
3655         * config/i386/avx512vnniintrin.h (_mm512_dpbusds_epi32,
3656         _mm512_mask_dpbusds_epi32, _mm512_maskz_dpbusds_epi32): New.
3657         * config/i386/avx512vnnivlintrin.h (_mm256_dpbusds_epi32,
3658         _mm256_mask_dpbusds_epi32, _mm256_maskz_dpbusds_epi32,
3659         _mm_dpbusds_epi32, _mm_mask_dpbusds_epi32,
3660         _mm_maskz_dpbusds_epi32): New intrinsics.
3661
3662 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
3663
3664         * config/nios2/nios2.md (ld<bhw_uns>io): Add splitter for memory
3665         operand.
3666         (ld<bh>io_signed): Likewise.
3667         (st<bhw>io): Likewise.
3668         * config/nios2/predicates.md (ldstio_memory_operand): Allow
3669         SMALL_INT12 constant integer operand.
3670
3671 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
3672
3673         * config/nios2/nios2.c (nios2_symbolic_constant_allowed):
3674         Rename to...
3675         (nios2_large_constant_allowed): ...this.  Adjust uses.
3676         (nios2_plus_symbolic_constant_p): Rename to...
3677         (nios2_plus_large_constant_p): ...this.  Adjust uses.
3678         (nios2_legitimate_address_p): Correct CONST_INT handling.
3679         (nios2_symbolic_memory_operand_p): Rename to...
3680         (nios2_large_constant_memory_operand_p): ...this.  Adjust uses.
3681         (nios2_large_constant_p): Check for large constant integers too.
3682         (nios2_split_large_constant): Handle constant integers.
3683         (nios2_split_symbolic_memory_operand): Rename to...
3684         (nios2_split_large_constant_memory_operand): ...this.  Adjust uses.
3685         (nios2_legitimize_constant_address): Handle constant integers.
3686         (r0rel_constant_p): Handle small constant integers.
3687         (nios2_print_operand_address): Handle r0-relative integer addresses.
3688         * config/nios2/nios2-protos.h: Adjust for renamed functions.
3689         * config/nios2/nios2.md: Adjust for renamed functions.
3690
3691 2017-12-07  Andrew Waterman  <andrew@sifive.com>
3692
3693         * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define.
3694         (TARGET_HAVE_SRODATA_SECTION): New define.
3695         (riscv_select_section): New function.
3696
3697 2017-12-08  Joseph Myers  <joseph@codesourcery.com>
3698             Alexander Monakov  <amonakov@ispras.ru>
3699             Jakub Jelinek  <jakub@redhat.com>
3700
3701         PR target/81906
3702         * config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math.
3703
3704 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3705
3706         * config/aarch64/aarch64.c (aarch64_print_address_internal): Return
3707         a bool success value.  Don't call output_operand_lossage here.
3708         (aarch64_print_ldpstp_address): Return a bool success value.
3709         (aarch64_print_operand_address): Call output_addr_const if
3710         aarch64_print_address_internal fails.
3711         (aarch64_print_operand): Don't assert that the mode is 16 bytes for
3712         'y'; call output_operand_lossage instead.  Call output_operand_lossage
3713         if aarch64_print_ldpstp_address fails.
3714
3715 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3716
3717         * tree-vector-builder.h
3718         (tree_vector_builder::binary_encoded_nelts): Declare.
3719         * tree-vector-builder.c
3720         (tree_vector_builder::binary_encoded_nelts): New function.
3721         * fold-const.c (negate_expr_p): Likewise.
3722         (operand_equal_p, fold_checksum_tree): Likewise.
3723         * tree-loop-distribution.c (const_with_all_bytes_same): Likewise.
3724         * tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop)
3725         (real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise.
3726         (uniform_vector_p): Likewise.
3727         * varasm.c (const_hash_1, compare_constant): Likewise.
3728         * tree-ssa-ccp.c: Include tree-vector-builder.h.
3729         (valid_lattice_transition): Operate directly on the VECTOR_CST
3730         encoding.
3731         * ipa-icf.c: Include tree-vector-builder.h.
3732         (sem_variable::equals): Operate directly on the VECTOR_CST encoding.
3733         * print-tree.c (print_node): Print encoding of VECTOR_CSTs.
3734
3735 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3736
3737         * tree.c (build_vector): Delete.
3738         * tree.h (build_vector): Make static and move into the self-testing
3739         block.
3740
3741 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3742
3743         * vector-builder.h (vector_builder::derived): New const overload.
3744         (vector_builder::elt): New function.
3745         * tree-vector-builder.h (tree_vector_builder::type): New function.
3746         (tree_vector_builder::apply_step): Declare.
3747         * tree-vector-builder.c (tree_vector_builder::apply_step): New
3748         function.
3749         * gimple-fold.h (tree_vector_builder): Declare.
3750         (gimple_build_vector): Take a tree_vector_builder instead of a
3751         type and vector of elements.
3752         * gimple-fold.c (gimple_build_vector): Likewise.
3753         * tree-vect-loop.c (get_initial_def_for_reduction): Update call
3754         accordingly.
3755         (get_initial_defs_for_reduction): Likewise.
3756         (vectorizable_induction): Likewise.
3757
3758 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3759
3760         * tree-vector-builder.h
3761         (tree_vector_builder::new_binary_operation): Declare.
3762         * tree-vector-builder.c
3763         (tree_vector_builder::new_binary_operation): New function.
3764         * fold-const.c (fold_relational_const): Use it.
3765         (const_binop): Likewise.  Check that both input vectors have
3766         the same number of elements, thus excluding things like WIDEN_SUM.
3767         Check whether it is possible to operate directly on the encodings
3768         of stepped inputs.
3769
3770 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3771
3772         * fold-const.c (fold_negate_expr_1): Use tree_vector_builder and
3773         new_unary_operation, operating only on the encoded elements.
3774         (const_unop): Likewise.
3775         (exact_inverse): Likewise.
3776         (distributes_over_addition_p): New function.
3777         (const_binop): Use tree_vector_builder and new_unary_operation
3778         for combinations of VECTOR_CST and INTEGER_CST.  Operate only
3779         on the encoded elements unless the encoding is strided and the
3780         operation does not distribute over addition.
3781         (fold_convert_const):  Use tree_vector_builder and
3782         new_unary_operation.  Operate only on the encoded elements
3783         for truncating integer conversions, or for non-stepped encodings.
3784
3785 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3786
3787         * config/sparc/sparc.c: Include tree-vector-builder.h.
3788         (sparc_fold_builtin): Use tree_vector_builder instead of build_vector.
3789         * expmed.c: Include tree-vector-builder.h.
3790         (make_tree): Use tree_vector_builder instead of build_vector.
3791         * fold-const.c: Include tree-vector-builder.h.
3792         (const_binop): Use tree_vector_builder instead of build_vector.
3793         (const_unop): Likewise.
3794         (native_interpret_vector): Likewise.
3795         (fold_vec_perm): Likewise.
3796         (fold_ternary_loc): Likewise.
3797         * gimple-fold.c: Include tree-vector-builder.h.
3798         (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead
3799         of build_vector.
3800         * tree-ssa-forwprop.c: Include tree-vector-builder.h.
3801         (simplify_vector_constructor): Use tree_vector_builder instead
3802         of build_vector.
3803         * tree-vect-generic.c: Include tree-vector-builder.h.
3804         (add_rshift): Use tree_vector_builder instead of build_vector.
3805         (expand_vector_divmod): Likewise.
3806         (optimize_vector_constructor): Likewise.
3807         * tree-vect-loop.c: Include tree-vector-builder.h.
3808         (vect_create_epilog_for_reduction): Use tree_vector_builder instead
3809         of build_vector.  Explicitly use a stepped encoding for
3810         { 1, 2, 3, ... }.
3811         * tree-vect-slp.c: Include tree-vector-builder.h.
3812         (vect_get_constant_vectors): Use tree_vector_builder instead
3813         of build_vector.
3814         (vect_transform_slp_perm_load): Likewise.
3815         (vect_schedule_slp_instance): Likewise.
3816         * tree-vect-stmts.c: Include tree-vector-builder.h.
3817         (vectorizable_bswap): Use tree_vector_builder instead of build_vector.
3818         (vect_gen_perm_mask_any): Likewise.
3819         (vectorizable_call): Likewise.  Explicitly use a stepped encoding.
3820         * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead
3821         of build_vector.
3822         (build_vector_from_val): Likewise.  Explicitly use a duplicate
3823         encoding.
3824
3825 2017-12-07  Richard Sandiford  <richard.sandiford@arm.com>
3826
3827         * doc/generic.texi (VECTOR_CST): Describe new representation of
3828         vector constants.
3829         * vector-builder.h: New file.
3830         * tree-vector-builder.h: Likewise.
3831         * tree-vector-builder.c: Likewise.
3832         * Makefile.in (OBJS): Add tree-vector-builder.o.
3833         * tree.def (VECTOR_CST): Update comment to refer to generic.texi.
3834         * tree-core.h (tree_base): Add a vector_cst field to the u union.
3835         (tree_vector): Change the number of elements to
3836         vector_cst_encoded_nelts.
3837         * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS.
3838         (VECTOR_CST_ELTS): Delete.
3839         (VECTOR_CST_ELT): Redefine using vector_cst_elt.
3840         (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros.
3841         (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise.
3842         (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise.
3843         (VECTOR_CST_ENCODED_ELT): Likewise.
3844         (vector_cst_encoded_nelts): New function.
3845         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
3846         VECTOR_CST_NELTS_PER_PATTERN as arguments.
3847         (vector_cst_int_elt, vector_cst_elt): Declare.
3848         * tree.c: Include tree-vector-builder.h.
3849         (tree_code_size): Abort if passed VECTOR_CST.
3850         (tree_size): Update for new VECTOR_CST layout.
3851         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
3852         VECTOR_CST_NELTS_PER_PATTERN as arguments.
3853         (build_vector): Use tree_vector_builder.
3854         (vector_cst_int_elt, vector_cst_elt): New functions.
3855         (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the
3856         encoded elements and then create the vector in the canonical form.
3857         (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill)
3858         (check_vector_cst_stepped, test_vector_cst_patterns): New functions.
3859         (tree_c_tests): Call test_vector_cst_patterns.
3860         * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new
3861         VECTOR_CST fields.
3862         (hash_tree): Likewise.
3863         * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise.
3864         (streamer_write_tree_header): Likewise.
3865         * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise.
3866         (streamer_alloc_tree): Likewise.  Update call to make_vector.
3867         * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS.
3868
3869 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3870
3871         * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT)
3872         (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names
3873         * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise.
3874
3875 2017-12-07  Bin Cheng  <bin.cheng@arm.com>
3876             Richard Biener  <rguenther@suse.de>
3877
3878         PR tree-optimization/81303
3879         * Makefile.in (gimple-loop-interchange.o): New object file.
3880         * common.opt (floop-interchange): Reuse the option from graphite.
3881         * doc/invoke.texi (-floop-interchange): Ditto.  New document for
3882         -floop-interchange and mention it for -O3.
3883         * opts.c (default_options_table): Enable -floop-interchange at -O3.
3884         * gimple-loop-interchange.cc: New file.
3885         * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter.
3886         (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter.
3887         * passes.def (pass_linterchange): New pass.
3888         * timevar.def (TV_LINTERCHANGE): New time var.
3889         * tree-pass.h (make_pass_linterchange): New declaration.
3890         * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external
3891         interchange.  Record IV before/after increment in new parameters.
3892         * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration.
3893         * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction
3894         path check into...
3895         (check_reduction_path): ...New function here.
3896         * tree-vectorizer.h (check_reduction_path): New declaration.
3897
3898 2017-12-07  Vladimir Makarov  <vmakarov@redhat.com>
3899
3900         PR target/83252
3901         PR rtl-optimization/80818
3902         * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER
3903         always early clobbered.
3904         * lra-lives.c (process_bb_lives): Check input hard regs for early
3905         clobbered non-operand hard reg.
3906
3907 2017-12-07  Jakub Jelinek  <jakub@redhat.com>
3908
3909         PR middle-end/83164
3910         * tree-cfg.c (verify_gimple_assign_binary): Don't require
3911         types_compatible_p, just that TYPE_MODE is the same.
3912
3913 2017-12-07  Martin Sebor  <msebor@redhat.com>
3914
3915         PR c/81544
3916         * attribs.c (empty_attribute_table): Initialize new member of
3917         struct attribute_spec.
3918         (decl_attributes): Add argument.  Handle mutually exclusive
3919         combinations of attributes.
3920         (selftests::test_attribute_exclusions): New function.
3921         (selftests::attribute_c_tests): Ditto.
3922         * attribs.h (decl_attributes): Add default argument.
3923         * selftest.h (attribute_c_tests): Declare.
3924         * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests.
3925         * tree-core.h (attribute_spec::exclusions, exclude): New type and
3926         member.
3927         * doc/extend.texi (Common Function Attributes): Update const and pure.
3928         * config/alpha/alpha.c (vms_attribute_table): Initialize new member
3929         of struct attribute_spec.
3930         * config/arc/arc.c (arc_attribute_table): Same.
3931         * config/arm/arm.c (arm_attribute_table): Same.
3932         * config/avr/avr.c ( avr_attribute_table): Same.
3933         * config/bfin/bfin.c (bfin_attribute_table): Same.
3934         * config/cr16/cr16.c (cr16_attribute_table): Same.
3935         * config/epiphany/epiphany.c (epiphany_attribute_table): Same.
3936         * config/h8300/h8300.c (h8300_attribute_table): Same.
3937         * config/i386/i386.c (ix86_attribute_table): Same.
3938         * config/ia64/ia64.c (ia64_attribute_table): Same.
3939         * config/m32c/m32c.c (m32c_attribute_table): Same.
3940         * config/m32r/m32r.c (m32r_attribute_table): Same.
3941         * config/m68k/m68k.c (m68k_attribute_table): Same.
3942         * config/mcore/mcore.c (mcore_attribute_table): Same.
3943         * config/microblaze/microblaze.c (microblaze_attribute_table): Same.
3944         * config/mips/mips.c (mips_attribute_table): Same.
3945         * config/msp430/msp430.c (msp430_attribute_table): Same.
3946         * config/nds32/nds32.c (nds32_attribute_table): Same.
3947         * config/nvptx/nvptx.c (nvptx_attribute_table): Same.
3948         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Same.
3949         * config/rl78/rl78.c (rl78__attribute_table): Same.
3950         * config/rs6000/rs6000.c (rs6000_attribute_table): Same.
3951         * onfig/rx/rx.c (rx_attribute_table): Same.
3952         * config/s390/s390.c (s390_handle_vectorbool_attribute): Same.
3953         * config/sh/sh.c (sh_attribute_table): Same.
3954         * config/sparc/sparc.c (sparc_attribute_table): Same.
3955         * config/spu/spu.c (spu_attribute_table): Same.
3956         * config/stormy16/stormy16.c (xstormy16_attribute_table): Same.
3957         * config/v850/v850.c (v850_attribute_table): Same.
3958         * config/visium/visium.c (visium_attribute_table): Same.
3959
3960 2017-12-07  Tamar Christina  <tamar.christina@arm.com>
3961
3962         PR target/82641
3963         * config/arm/arm.c (INCLUDE_STRING): Define.
3964         (arm_last_printed_arch_string, arm_last_printed_fpu_string): New.
3965         (arm_declare_function_name): Conservatively emit .arch, .arch_extensions
3966         and .fpu.
3967
3968 2017-12-07  Michael Matz  <matz@suse.de>
3969
3970         Add unroll and jam pass
3971
3972         * gimple-loop-jam.c: New file.
3973         * Makefile.in (OBJS): Add gimple-loop-jam.o.
3974         * common.opt (funroll-and-jam): New option.
3975         * opts.c (default_options_table): Add unroll-and-jam at -O3.
3976         * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
3977         (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
3978         * passes.def: Add pass_loop_jam.
3979         * timevar.def (TV_LOOP_JAM): Add.
3980         * tree-pass.h (make_pass_loop_jam): Declare.
3981         * cfgloop.c (flow_loop_tree_node_add): Add AT argument.
3982         * cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
3983         * cfgloopmanip.c (duplicate_loop): Add AT argument, adjust call
3984         to flow_loop_tree_node_add.
3985         (duplicate_subloops, copy_loops_to): Append to sibling list.
3986         * cfgloopmanip.h: (duplicate_loop): Adjust declaration.
3987         * doc/invoke.texi (-funroll-and-jam): Document new option.
3988         (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
3989
3990 2017-12-07  Richard Biener  <rguenther@suse.de>
3991
3992         PR tree-optimization/83296
3993         PR tree-optimization/67769
3994         * tree-ssa-phiopt.c (conditional_replacement): Do not reset
3995         flow sensitive info in an unrelated BB.
3996         (value_replacement): Use reset_flow_sensitive_info.
3997         (minmax_replacement): Reset flow sensitive info on the def
3998         we move.  Do not reset flow sensitive info in the whole BB
3999         we move the stmt to.
4000         (abs_replacement): Likewise.
4001
4002 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
4003
4004         PR target/43871
4005         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
4006         rs6000_cpu to the given -mcpu=, or to the default processor.
4007
4008 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
4009
4010         * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete.
4011         * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune
4012         instead of rs6000_cpu_attr.
4013         (rs6000_adjust_cost): Ditto.
4014         (is_microcoded_insn): Ditto.
4015         (rs6000_adjust_priority): Ditto.
4016         (rs6000_issue_rate): Ditto.
4017         (rs6000_use_sched_lookahead): Ditto.
4018         (rs6000_use_sched_lookahead_guard): Ditto.
4019         (rs6000_sched_reorder): Ditto.
4020         (force_new_group): Ditto.
4021         * config/rs6000/rs6000.md (cpu attribute): Ditto.
4022         (group_ending_nop): Ditto.
4023
4024 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
4025
4026         * config/rs6000/rs6000.opt (rs6000_tune): New variable.
4027         * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set
4028         rs6000_tune.  Use rs6000_tune instead of rs6000_cpu where appropriate.
4029         (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where
4030         appropriate.
4031         (rs6000_reassociation_width): Ditto.
4032         (rs6000_emit_epilogue): Ditto.
4033         (rs6000_adjust_cost): Ditto.
4034         (is_microcoded_insn): Ditto.
4035         (is_cracked_insn): Ditto.
4036         (rs6000_adjust_priority): Ditto.
4037         (rs6000_sched_reorder): Ditto.
4038         (rs6000_sched_reorder2): Ditto.
4039         (insn_must_be_first_in_group): Ditto.
4040         (insn_must_be_last_in_group): Ditto.
4041         (rs6000_register_move_cost): Ditto.
4042         * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of
4043         rs6000_cpu.
4044
4045 2017-12-07  Julia Koval  <julia.koval@intel.com>
4046
4047         * config.gcc: Add vaesintrin.h.
4048         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
4049         New type.
4050         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
4051         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
4052         New builtins.
4053         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
4054         * config/i386/immintrin.h: Include vaesintrin.h.
4055         * config/i386/sse.md (vaesdec_<mode>): New pattern.
4056         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
4057         _mm_aesdec_epi128): New intrinsics.
4058
4059 2017-12-06  David Malcolm  <dmalcolm@redhat.com>
4060
4061         * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
4062         * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
4063         c-family/c-spellcheck.cc.
4064         (best_macro_match::best_macro_match): Likewise.
4065         * spellcheck-tree.h
4066         (struct edit_distance_traits<cpp_hashnode *>): Move to
4067         c-family/c-spellcheck.h.
4068         (class best_macro_match): Likewise.
4069
4070 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
4071
4072         PR tree-optimization/83293
4073         * gimple-ssa-strength-reduction.c (insert_initializers): Use
4074         GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that
4075         might insert into empty bb.
4076
4077         PR sanitizer/81281
4078         * match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate
4079         simplify for plus with :c added, and pointer_plus without that.
4080         ((T)P - (T)(P + A) -> -(T) A): Likewise.  If type is integral
4081         with undefined overflow and the conversion is not widening,
4082         perform negation in utype and only convert to type afterwards.
4083         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate
4084         simplify for plus with :c added, and pointer_plus without that.
4085         If type is integral with undefined overflow and the conversion is
4086         not widening, perform minus in utype and only convert to type
4087         afterwards.  Move the last pointer_diff_expr simplify into the
4088         two outermost ifs.
4089
4090 2017-12-06  Martin Sebor  <msebor@redhat.com>
4091
4092         PR tree-optimization/82646
4093         * builtins.c (maybe_emit_chk_warning): Use size as the bound for
4094         strncpy, not maxlen.
4095
4096 2017-12-06  Martin Sebor  <msebor@redhat.com>
4097
4098         * doc/invoke.texi (-Wstringop-truncation): Mention attribute
4099         nonstring.
4100
4101         PR tree-optimization/83075
4102         * tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming
4103         strncat/strncpy don't change length of source string.
4104
4105 2017-12-06  Eric Botcazou  <ebotcazou@adacore.com>
4106
4107         Revert
4108         2017-11-29  Martin Aberg  <maberg@gaisler.com>
4109
4110         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
4111         to prevent b2bst errata sequence.
4112         (sqrtdf2_fix): Likewise.
4113
4114 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
4115
4116         PR tree-optimization/81945
4117         * cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn.
4118         * tree-cfg.c (move_sese_region_to_fn): If any of the loops moved
4119         to dest_cfun has orig_loop_num set, either remap it to the new
4120         loop number if the loop got moved too, or clear it.
4121
4122 2017-12-05  Steve Ellcey  <sellcey@cavium.com>
4123
4124         * config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
4125         to reservation.
4126         (thunderx2t99_nothing): New insn reservation.
4127         (thunderx2t99_mrs): New insn reservation.
4128         (thunderx2t99_multiple): New insn reservation.
4129         (thunderx2t99_alu_basi): Add bfx to reservation.
4130         (thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.
4131
4132 2017-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4133
4134         PR target/82248
4135         * config/arm/arm.md (probe_stack) : Use the 'o' constraint.
4136
4137 2017-12-05  Bin Cheng  <bin.cheng@arm.com>
4138
4139         * tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
4140         tree-ssa-pre.c::remove_dead_inserted_code.
4141         * tree-ssa-dce.h: New file.
4142         * tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
4143         (remove_dead_inserted_code): Move and rename to function
4144         tree-ssa-dce.c::simple_dce_from_worklist.
4145         (pass_pre::execute): Update use.
4146
4147 2017-12-05  Richard Biener  <rguenther@suse.de>
4148
4149         PR tree-optimization/83277
4150         * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
4151         to code-gen liveout vars.
4152
4153 2017-12-05  Richard Sandiford  <richard.sandiford@linaro.org>
4154
4155         * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
4156         (aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
4157         (aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
4158         split condition.
4159
4160 2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
4161
4162         * config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
4163         function.
4164         (TARGET_ASAN_SHADOW_OFFSET): New macro definition.
4165         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
4166         ASAN is enabled.
4167
4168 2017-12-05  Richard Biener  <rguenther@suse.de>
4169
4170         * timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL): Add.
4171         * tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
4172         (pass_data_cse_sincos): Use TV_TREE_SINCOS.
4173         (pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.
4174
4175 2017-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4176
4177         * dbxout.c (dbxout_block): Grow buf to 30 bytes.
4178
4179 2017-12-05  Martin Liska  <mliska@suse.cz>
4180             Jakub Jelinek  <jakub@redhat.com>
4181
4182         * doc/invoke.texi: Document the options.
4183         * flag-types.h (enum sanitize_code): Add
4184         SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
4185         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
4186         of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
4187         * opts.c: Define new sanitizer options.
4188         * sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
4189         (BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
4190
4191 2017-12-05  Julia Koval  <julia.koval@intel.com>
4192
4193         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
4194         OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
4195         (ix86_handle_option): Handle -mavx512vnni.
4196         * config/i386/cpuid.h (bit_AVX512VNNI): New bit.
4197         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
4198         * config/i386/i386-c (__AVX512VNNI__): New.
4199         * config/i386/i386.c (ix86_target_string): Handle new option.
4200         (ix86_valid_target_attribute_inner_p): Handle new option.
4201         * config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
4202         * config/i386/i386.opt (mavx512vnni): New option.
4203
4204 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
4205
4206         PR target/81616
4207         * athlon.md: Disable for generic.
4208         * haswell.md: Enable for generic.
4209         * i386.c (ix86_sched_init_global): Add core hooks for generic.
4210         * x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
4211         to 4.
4212         (ix86_adjust_cost): Move generic to haswell path.
4213
4214 2017-12-04  Eric Botcazou  <ebotcazou@adacore.com>
4215
4216         * config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
4217         instead of MEM_P in a couple more places.  Fix formatting issues.
4218
4219 2017-12-04  Jim Wilson  <jimw@sifive.com>
4220
4221         * config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST
4222         instead of GP_REG_LAST-1.
4223         (riscv_adjust_libcall_cfi_prologue): Likewise.
4224         (riscv_adjust_libcall_cri_epilogue): Likewise.
4225         * config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in
4226         comment.
4227
4228 2017-12-04  Luis Machado  <luis.machado@linaro.org>
4229
4230         * ipa-pure-const.c (check_decl): Add missing newline.
4231         (state_from_flags): Likewise.
4232
4233 2017-12-04  Jeff Law  <law@redhat.com>
4234
4235         PR tree-optimizatin/78496
4236         * gimple-ssa-evrp-analyze.h
4237         (evrp_range_analyzer::get_vr_values): Simplify.
4238         * gimple-ssa-evrp-analyze.c: Corresponding changes.
4239         * tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h
4240         and gimple-ssa-evrp-analyze.h.
4241         (dom_opt_dom_walker class): Add evrp_range_analyzer member.
4242         (simplify_stmt_for_jump_threading): Copy a blob of code from
4243         tree-vrp.c to use ranges to simplify statements.
4244         (dom_opt_dom_walker::before_dom_children): Call
4245         evrp_range_analyzer::{enter,record_ranges_from_stmt} methods.
4246         (dom_opt_dom_walker::after_dom_children): Similarly for
4247         evrp_range_analyzer::leave.
4248         (dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize
4249         conditionals.
4250
4251         * gimple-ssa-evrp-analyze.c
4252         (evrp_range_analyzer::extract_range_from_stmt):  Always use
4253         vr_values::update_value_range so preexisting range info is
4254         medged with new range info, even if the new range is VR_VARYING.
4255
4256 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
4257
4258         * combine.c: Adjust comment.
4259         (use_crosses_set_p): Delete.
4260         (can_combine_p): Use modified_between_p instead of use_crosses_set_p.
4261         (try_combine): Ditto.
4262
4263 2017-12-04  Richard Biener  <rguenther@suse.de>
4264
4265         PR tree-optimization/83255
4266         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
4267         Re-add zero-iteration check.
4268
4269 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
4270
4271         PR rtl-optimization/83245
4272         * lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
4273         hard registers as earlyclobber, also if not in an asm.
4274
4275 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
4276
4277         PR bootstrap/83265
4278         Revert
4279         2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4280
4281         PR target/43871
4282         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
4283         rs6000_cpu based on cpu_index, not tune_index.
4284
4285 2017-12-04  Richard Biener  <rguenther@suse.de>
4286
4287         PR tree-optimization/83238
4288         * graphite-scop-detection.c (scop_detection::merge_sese): Make
4289         code match comment, rejecting invalid SESE regions.
4290
4291 2017-12-03  John David Anglin  <danglin@gcc.gnu.org>
4292
4293         * config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
4294         require base operand is a REG_POINTER prior to reload on targets
4295         with non-equivalent space registers.
4296
4297 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
4298
4299         * ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
4300         (update_specialized_profile): Fix updating of counts.
4301         (perhaps_add_new_callers): Likewise.
4302
4303 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
4304
4305         PR target/81616
4306         * x86-tune.def: Remove obsolette FIXMEs.
4307         (X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic
4308         (X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64,
4309         X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH):
4310         Enable for generic.
4311         (X86_TUNE_PAD_RETURNS): Disable for generic.
4312
4313 2017-12-02  Jakub Jelinek  <jakub@redhat.com>
4314
4315         PR tree-optimization/83170
4316         PR tree-optimization/83241
4317         * gimple-ssa-store-merging.c
4318         (imm_store_chain_info::try_coalesce_bswap): Update vuse field from
4319         gimple_vuse (ins_stmt) in case it has changed.
4320         (imm_store_chain_info::output_merged_store): Likewise.
4321
4322         * tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
4323         POINTER_DIFF_EXPR.
4324
4325         PR c++/81212
4326         * tree-cfg.c (pass_warn_function_return::execute): Handle
4327         __builtin_ubsan_handle_missing_return like __builtin_unreachable
4328         with BUILTINS_LOCATION.
4329
4330         PR target/78643
4331         PR target/80583
4332         * expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
4333         is BLKmode for vector field with vector raw mode, use TYPE_MODE
4334         instead of DECL_MODE.
4335
4336         * config/i386/i386-protos.h (standard_sse_constant_opcode): Change
4337         last argument to rtx pointer.
4338         * config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
4339         with OPERANDS.  For AVX+ 128-bit VEX encoded instructions over 256-bit
4340         or 512-bit.  If setting EXT_REX_SSE_REG_P, use EVEX encoded insn
4341         depending on the chosen ISAs.
4342         * config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx,
4343         *movti_internal, *movdi_internal, *movsi_internal, *movtf_internal,
4344         *movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode
4345         callers.
4346         * config/i386/sse.md (mov<mode>_internal): Likewise.
4347         * config/i386/mmx.md (*mov<mode>_internal): Likewise.
4348
4349 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4350
4351         * doc/invoke.texi (-dp): Say that instruction cost is printed as well.
4352
4353 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4354
4355         * config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two
4356         parameters from prototype.
4357         * config/rs6000/rs6000.c (emit_fusion_addis): Remove last two
4358         parameters.  Don't print a comment.
4359         (emit_fusion_gpr_load): Adjust.
4360         (emit_fusion_load_store): Adjust.
4361         * config/rs6000/rs6000.md (*fusion_p9_<mode>_constant): Adjust.
4362         * config/rs6000/vsx.md (two peepholes): Print the "vector load fusion"
4363         comment on the second line.
4364
4365 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4366
4367         PR target/43871
4368         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
4369         rs6000_cpu based on cpu_index, not tune_index.
4370
4371 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4372
4373         * final.c (output_asm_name): Print insn_cost.  Shorten output.  Print
4374         which_alternative instead of which_alternative + 1.
4375         (output_asm_insn): Print an extra tab if the template is short.
4376
4377 2017-12-01  Jim Wilson  <jimw@sifive.com>
4378
4379         * common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
4380         comment.
4381         * config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
4382         * doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
4383         reference.
4384         * doc/tm.texi: Regenerate.
4385
4386 2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
4387
4388         PR target/81959
4389         * config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
4390         whether we can allocate pseudos before trying to fix an address.
4391         * config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
4392         memory address is indexed or indirect.
4393         (floatuns_<mode>si2_hw2): Likewise.
4394
4395 2017-12-01  Jason Merrill  <jason@redhat.com>
4396
4397         * Makefile.in (TAGS): Add c-family/*.cc.
4398
4399 2017-12-01  Wilco Dijkstra  <wdijkstr@arm.com>
4400
4401         * config/aarch64/aarch64.md (call_insn): Use %c rather than %a.
4402         (call_value_insn): Likewise.
4403         (sibcall_insn): Likewise.
4404         (sibcall_value_insn): Likewise.
4405         (movsi_aarch64): Likewise.
4406         (movdi_aarch64): Likewise.
4407         (add_losym_): Likewise.
4408         (ldr_got_small_): Likewise.
4409         (ldr_got_small_sidi): Likewise.
4410         (ldr_got_small_28k_): Likewise.
4411         (ldr_got_small_28k_sidi): Likewise.
4412         * config/aarch64/aarch64.c (aarch64_print_address_internal):
4413         Move output_addr_const to symbolic case. Add error check.
4414
4415 2017-12-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4416
4417         * config/s390/predicates.md (plus16_Q_operand): New predicate.
4418         * config/s390/s390.md: Disable MVC merging peephole if it would
4419         disable operand forwarding.
4420         (new peephole2): Split MVCs if it would turn them into up to 2
4421         forwardable MVCs.
4422
4423 2017-12-01  Richard Biener  <rguenther@suse.de>
4424
4425         PR tree-optimization/83232
4426         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
4427         detection of same access. Instead of breaking the group here
4428         do not consider the duplicate.  Add comment explaining real fix.
4429
4430 2017-12-01  Jonathan Wakely  <jwakely@redhat.com>
4431
4432         * doc/md.texi (Insn Splitting): Fix "central flowgraph" typo.
4433
4434 2017-12-01  Sudakshina Das  <sudi.das@arm.com>
4435
4436         * config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute.
4437
4438 2017-12-01  Jakub Jelinek  <jakub@redhat.com>
4439
4440         * function.h (struct function): Remove cilk_frame_decl,
4441         is_cilk_function and calls_cilk_spawn fields.
4442         * tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk
4443         field.
4444         * omp-simd-clone.c (simd_clone_clauses_extract): Don't clear
4445         cilk_elemental field.
4446         * cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field.
4447         * target.def: Adjust comment.
4448         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
4449         Don't test cilk_elemental.
4450
4451         PR tree-optimization/83233
4452         * gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use
4453         bswap_stat name for the struct.
4454
4455         PR c/79153
4456         * tree.h (SWITCH_BREAK_LABEL_P): Define.
4457         * gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND
4458         starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with
4459         SWITCH_BREAK_LABEL_P set on the label.
4460         (gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label
4461         added for default case if it was missing and not all cases covered.
4462         Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if
4463         switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P
4464         set on the label.
4465         * tree-chrec.c (evolution_function_is_univariate_p): Add return true;
4466         to avoid -Wimplicit-fallthrough warning.
4467         * config/i386/i386.c (ix86_expand_special_args_builtin): Add
4468         FALLTHRU comment to avoid -Wimplicit-fallthrough warning.
4469
4470         PR tree-optimization/83221
4471         * tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
4472         down by 16.
4473         (init_reassoc): Formatting fix.
4474
4475         PR sanitizer/81275
4476         * tree-cfg.c (group_case_labels_stmt): Don't optimize away
4477         C++ FE implicitly added __builtin_unreachable () until -Wreturn-type
4478         is diagnosed.
4479
4480         PR sanitizer/83219
4481         * tree-cfg.c: Include asan.h.
4482         (gimple_seq_unreachable_p): Return false for -fsanitize=unreachable.
4483
4484 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4485
4486         * config/i386/i386.md: Fix AVX512 register width in AVX512 instruction.
4487
4488 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4489
4490         * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for
4491         vpcmpeqd instruction.
4492
4493 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4494
4495         * config/i386/i386.c (standard_sse_constant_opcode): Fix
4496         registers type for 128bit mode.
4497
4498 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
4499
4500         * spellcheck-tree.c (test_find_closest_identifier): Use ; instead
4501         of ;;.
4502         * gengtype-state.c (read_state_pair): Likewise.
4503         * gimple-fold.c (gimple_fold_builtin_string_compare): Likewise.
4504         * sel-sched-dump.c (dump_insn_rtx_1): Likewise.
4505         * ipa-cp.c (intersect_aggregates_with_edge): Likewise.
4506         * ifcvt.c (noce_try_store_flag_constants): Likewise.
4507         * tree-ssa-ccp.c (ccp_finalize): Likewise.
4508         * omp-grid.c (grid_process_kernel_body_copy): Likewise.
4509         * builtins.c (fold_builtin_3): Likewise.
4510         * graphite-scop-detection.c
4511         (scop_detection::stmt_has_simple_data_refs_p): Likewise.
4512         * hsa-gen.c (hsa_function_representation::hsa_function_representation):
4513         Likewise.
4514
4515 2017-12-01  Maxim Ostapenko  <m.ostapenko@samsung.com>
4516
4517         PR sanitizer/81697
4518         * asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p
4519         parameter. Return true if ignore_decl_rtl_set_p is true and other
4520         conditions are satisfied.
4521         * asan.h (asan_protect_global): Add new parameter.
4522         * varasm.c (categorize_decl_for_section): Pass true as second parameter
4523         to asan_protect_global calls.
4524
4525 2017-11-30  Jim Wilson  <jimw@sifive.com>
4526
4527         * doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and
4528         -mno-memcpy options.  For -mplt, -mfdiv, -mdiv, -msave-restore, and
4529         -mstrict-align, add info on default value.  Delete redundant lines for
4530         -mabi.  Add missing -mexplicit-relocs docs.
4531
4532 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4533
4534         * config/arc/arc.md (trap): New pattern.
4535
4536 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4537
4538         * config/arc/arc.c (hwloop_optimize): Prevent the last ZOL
4539         instruction to end into a delay slot.
4540         * config/arc/arc.md (cond_delay_insn): Check if the instruction
4541         can be placed into a delay slot against reg_note.
4542
4543 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4544
4545         * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
4546         labels number of usages.
4547
4548 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4549
4550         * config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New
4551         function.
4552         (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
4553
4554 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
4555
4556         PR target/83210
4557         * internal-fn.c (expand_mul_overflow): Optimize unsigned
4558         multiplication by power of 2 constant into two shifts + comparison.
4559
4560 2017-11-30  Jan Hubicka  <hubicka@ucw.cz>
4561
4562         PR target/81616
4563         * config/i386/x86-tune-costs.h (generic_cost): Revise for modern CPUs.
4564
4565 2017-11-30  Richard Biener  <rguenther@suse.de>
4566
4567         PR tree-optimization/83202
4568         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
4569         allow_peel argument and guard peeling.
4570         (canonicalize_loop_induction_variables): Likewise.
4571         (canonicalize_induction_variables): Pass false.
4572         (tree_unroll_loops_completely_1): Pass unroll_outer to disallow
4573         peeling from cunrolli.
4574
4575 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4576
4577         * combine.c (try_combine): Print a message to dump file whenever
4578         I0, I1, or I2 cannot be combined into I3.
4579
4580 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4581
4582         PR rtl-optimization/83156
4583         PR rtl-optimization/82621
4584         * combine.c (try_combine): Don't split an I2 if one of the dests is
4585         set again before I3.  Allow unused dests.
4586
4587 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4588
4589         * config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.
4590
4591 2017-11-29  Vladimir Makarov  <vmakarov@redhat.com>
4592
4593         PR rtl-optimization/80818
4594         * lra.c (collect_non_operand_hard_regs): New arg insn.  Pass it
4595         recursively.  Use insn code for clobber.
4596         (lra_set_insn_recog_data): Pass the new arg to
4597         collect_non_operand_hard_regs.
4598         (add_regs_to_insn_regno_info): Pass insn instead of uid.  Use insn
4599         code for clobber.
4600         (lra_update_insn_regno_info): Pass insn to
4601         add_regs_to_insn_regno_info.
4602
4603 2017-11-29  Jim Wilson  <jimw@sifive.com>
4604             Andrew Waterman  <andrew@sifive.com>
4605
4606         * config/riscv/riscv.c (SINGLE_SHIFT_COST): New.
4607         (riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return
4608         SINGLE_SHIFT_COST.  Case LT and ZERO_EXTEND, likewise.  Case ASHIFT,
4609         use SINGLE_SHIFT_COST.
4610         * config/riscv/riscv.md (lshrsi3_zero_extend_1): New.
4611         (lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New.
4612
4613 2017-11-29  Julia Koval  <julia.koval@intel.com>
4614
4615         * config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16,
4616         _mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32,
4617         _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64,
4618         _mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics.
4619         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16,
4620         _mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32,
4621         _mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64,
4622         _mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16,
4623         _mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32,
4624         _mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64,
4625         _mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto.
4626         * config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi,
4627         __builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz,
4628         __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
4629         __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
4630         __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
4631         __builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask,
4632         __builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si,
4633         __builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz,
4634         __builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask,
4635         __builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di,
4636         __builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz,
4637         __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
4638         __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
4639         __builtin_ia32_vpshldv_v2di_mask,
4640         __builtin_ia32_vpshldv_v2di_maskz): New builtins.
4641         * config/i386/sse.md (vpshldv_<mode>, vpshldv_<mode>_mask,
4642         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): New patterns.
4643
4644 2017-11-29  Julia Koval  <julia.koval@intel.com>
4645
4646         * config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16,
4647         _mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32,
4648         _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
4649         _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics.
4650         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16,
4651         _mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32,
4652         _mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64,
4653         _mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16,
4654         _mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32,
4655         _mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64,
4656         _mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto.
4657         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI,
4658         V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
4659         V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
4660         V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI,
4661         V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
4662         V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
4663         V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types.
4664         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
4665         * config/i386/sse.md (vpshrdv_<mode>, vpshrdv_<mode>_mask,
4666         vpshrdv_<mode>_maskz, vpshrdv_<mode>_maskz_1): New pattern.
4667
4668 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4669
4670         * config/sparc/sparc.c (sparc_do_work_around_errata): Treat the
4671         movsi_pic_gotdata_op instruction as a load for the UT699 errata
4672         workaround.
4673
4674 2017-11-29  Martin Aberg  <maberg@gaisler.com>
4675
4676         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
4677         to prevent b2bst errata sequence.
4678         (sqrtdf2_fix): Likewise.
4679
4680 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4681
4682         * config/sparc/sparc.c (fpop_reg_depend_p): New function.
4683         (div_sqrt_insn_p): New function.
4684         (sparc_do_work_around_errata): Insert NOP instructions to
4685         prevent sequences that could trigger the TN-0013 errata for
4686         certain LEON3 processors.
4687         (pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt.
4688         (sparc_option_override): Set sparc_fix_lost_divsqrt appropriately.
4689         * config/sparc/sparc.md (fix_lost_divsqrt): New attribute.
4690         (in_branch_delay): Prevent div and sqrt in delay slot if
4691         fix_lost_divsqrt.
4692         * config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable.
4693
4694 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4695
4696         * config/sparc/sparc.c (atomic_insn_p): New function.
4697         (sparc_do_work_around_errata): Insert NOP instructions to
4698         prevent sequences that could trigger the TN-0010 errata for
4699         UT700.
4700         * config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make
4701         instruction referable in atomic_insns_p.
4702
4703 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4704
4705         * config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc.
4706         (atomic_compare_and_swap_leon3_1): Likewise.
4707         (ldstub): Likewise.
4708
4709 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4710
4711         * config/sparc/sparc.c (fpop_insn_p): New function.
4712         (sparc_do_work_around_errata): Insert NOP instructions to
4713         prevent sequences that could trigger the TN-0012 errata for
4714         GR712RC.
4715         (pass_work_around_errata::gate): Also test sparc_fix_gr712rc.
4716         * config/sparc/sparc.md (fix_gr712rc): New attribute.
4717         (in_branch_annul_delay): Prevent floating-point instructions
4718         in delay slot of annulled integer branch.
4719
4720 2017-11-29  Richard Biener  <rguenther@suse.de>
4721
4722         PR tree-optimization/83202
4723         * tree-vect-slp.c (scalar_stmts_set_t): New typedef.
4724         (bst_fail): Use it.
4725         (vect_analyze_slp_cost_1): Add visited set, do not account SLP
4726         nodes vectorized to the same stmts multiple times.
4727         (vect_analyze_slp_cost): Allocate a visited set and pass it down.
4728         (vect_analyze_slp_instance): Adjust.
4729         (scalar_stmts_to_slp_tree_map_t): New typedef.
4730         (vect_schedule_slp_instance): Add a map recording the SLP node
4731         representing the vectorized stmts for a set of scalar stmts.
4732         Avoid code-generating redundancies.
4733         (vect_schedule_slp): Allocate map and pass it down.
4734
4735 2017-11-29  Nathan Sidwell  <nathan@acm.org>
4736
4737         PR c++/83187
4738         * tree.c (build_complex_type): Fix canonicalization.  Only fill in
4739         type if it is new.
4740
4741 2017-11-29  Wilco Dijkstra  <wdijkstr@arm.com>
4742
4743         * config/aarch64/aarch64.c (aarch64_print_operand): Add new
4744         cases for printing LDP/STP memory addresses.
4745         (aarch64_print_address_internal): Renamed from
4746         aarch64_print_operand_address, added parameter, add Pmode check.
4747         (aarch64_print_ldpstp_address): New function for LDP/STP addresses.
4748         (aarch64_print_operand_address): Indirect to
4749         aarch64_print_address_internal.
4750         * config/aarch64/aarch64-simd.md (store_pair_lanes): Use new
4751         'y' operand output specifier.
4752
4753 2017-11-29  Jakub Jelinek  <jakub@redhat.com>
4754
4755         PR middle-end/83185
4756         * tree.c (build_simple_mem_ref_loc): Handle
4757         get_addr_base_and_unit_offset returning a MEM_REF.
4758
4759         PR middle-end/80929
4760         * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.
4761
4762         PR target/80819
4763         * config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm)
4764         alternative.
4765
4766 2017-11-28  David Malcolm  <dmalcolm@redhat.com>
4767
4768         * diagnostic-show-locus.c (layout::print_trailing_fixits): Handle
4769         m_x_offset.
4770         (layout::move_to_column): Likewise.
4771
4772 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4773
4774         PR sanitizer/81275
4775         * tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P
4776         is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()).
4777
4778 2017-11-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
4779             Martin Jambor  <mjambor@suse.cz>
4780
4781         PR ipa/82808
4782         * tree.h (expr_type_first_operand_type_p): Declare
4783         * tree.c (expr_type_first_operand_type_p): New function.
4784         * ipa-prop.h (ipa_get_type): Allow i to be out of bounds.
4785         (ipa_value_from_jfunc): Adjust declaration.
4786         * ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE.
4787         Use it as result type for arithmetics, unless it is NULL in which case
4788         be more conservative.
4789         (ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to
4790         ipa_get_jf_pass_through_result.
4791         (propagate_vals_across_pass_through): Likewise.
4792         (propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass
4793         is to propagate_vals_across_pass_through.
4794         (propagate_constants_across_call): Pass PARM_TYPE to
4795         propagate_scalar_across_jump_function.
4796         (find_more_scalar_values_for_callers_subset): Pass parameter type to
4797         ipa_value_from_jfunc.
4798         (cgraph_edge_brings_all_scalars_for_node): Likewise.
4799         * ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info
4800         to caller_parms_info, pass parameter type to ipa_value_from_jfunc.
4801         * ipa-prop.c (try_make_edge_direct_simple_call): New parameter
4802         target_type, pass it to ipa_value_from_jfunc.
4803         (update_indirect_edges_after_inlining): Pass parameter type to
4804         try_make_edge_direct_simple_call.
4805
4806 2017-11-28  Jeff Law  <law@redhat.com>
4807
4808         * gimple-ssa-evrp-analyze.c
4809         (evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to
4810         refine ranges if scev_initialized_p returns true.
4811         * vr-values.c (vr_values::extract_range_from_phi_node): Likewise.
4812
4813 2017-11-28  Julia Koval  <julia.koval@intel.com>
4814
4815         * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
4816         _mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
4817         _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64,
4818         _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics.
4819         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16,
4820         _mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16,
4821         _mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32,
4822         _mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64,
4823         _mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16,
4824         _mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32,
4825         _mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto.
4826         * config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi,
4827         __builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi,
4828         __builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi,
4829         __builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si,
4830         __builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si,
4831         __builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si,
4832         __builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di,
4833         __builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di,
4834         __builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di,
4835         __builtin_ia32_vpshrd_v2di_mask): New builtins.
4836         * config/i386/sse.md (vpshrd_<mode><mask_name>): New pattern.
4837
4838 2017-11-28  Julia Koval  <julia.koval@intel.com>
4839
4840         * config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16,
4841         _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32,
4842         _mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
4843         _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics.
4844         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16,
4845         _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
4846         _mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32,
4847         _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64,
4848         _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16,
4849         _mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32,
4850         _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto.
4851         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT,
4852         V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT,
4853         V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT,
4854         V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT,
4855         V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT,
4856         V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT,
4857         V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT,
4858         V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT,
4859         V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types.
4860         * config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi,
4861         __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi,
4862         __builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi,
4863         __builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si,
4864         __builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si,
4865         __builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si,
4866         __builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di,
4867         __builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di,
4868         __builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di,
4869         __builtin_ia32_vpshld_v2di_mask): New builtins.
4870         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
4871         * config/i386/sse.md (vpshld_<mode><mask_name>): New pattern.
4872
4873 2017-11-28  Richard Biener  <rguenther@suse.de>
4874
4875         PR tree-optimization/80776
4876         * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info):
4877         Declare.
4878         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info):
4879         New function.
4880         (evrp_range_analyzer::record_ranges_from_incoming_edges):
4881         If the incoming edge is an effective fallthru because the other
4882         edge only reaches a __builtin_unreachable () then record ranges
4883         derived from the controlling condition in SSA info.
4884         (evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info.
4885         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
4886
4887 2017-11-28  Olivier Hainque  <hainque@adacore.com>
4888
4889         * Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null
4890         on mingw build hosts.
4891
4892 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4893
4894         PR debug/81307
4895         * dbxout.c (dbx_block_with_cold_children): Fix function comment.
4896
4897 2017-11-28  Richard Biener  <rguenther@suse.de>
4898
4899         PR middle-end/83141
4900         * gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate
4901         copies generated from memcpy use a character array as reference
4902         type.
4903
4904 2017-11-28  Julia Koval  <julia.koval@intel.com>
4905             Sebastian Peryt  <sebastian.peryt@intel.com>
4906
4907         * Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o,
4908         c-family/c-cilkplus.o, c-family/array-notation-common.o,
4909         cilk-common.o, cilk.h, cilk-common.c): Remove.
4910         * builtin-types.def
4911         (BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove.
4912         * builtins.c (is_builtin_name): Remove cilkplus condition.
4913         (BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove.
4914         * builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN,
4915         cilk-builtins.def, cilkplus.def): Remove.
4916         * cif-code.def (CILK_SPAWN): Remove.
4917         * cilk-builtins.def: Delete.
4918         * cilk-common.c: Ditto.
4919         * cilk.h: Ditto.
4920         * cilkplus.def: Ditto.
4921         * config/darwin.h (fcilkplus): Delete.
4922         * cppbuiltin.c: Ditto.
4923         * doc/extend.texi: Remove cilkplus doc.
4924         * doc/generic.texi: Ditto.
4925         * doc/invoke.texi: Ditto.
4926         * doc/passes.texi: Ditto.
4927         * gcc.c (fcilkplus): Remove.
4928         * gengtype.c (cilk.h): Remove.
4929         * gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus
4930         support.
4931         * gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD):
4932         Remove.
4933         * gimplify.c (gimplify_return_expr, maybe_fold_stmt,
4934         gimplify_call_expr,
4935         is_gimple_stmt, gimplify_modify_expr, gimplify_scan_omp_clauses,
4936         gimplify_adjust_omp_clauses, gimplify_omp_for, gimplify_expr): Remove
4937         cilkplus conditions.
4938         * ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary,
4939         inline_read_section): Ditto.
4940         * ipa-inline-analysis.c (cilk.h): Remove.
4941         * ira.c (ira_setup_eliminable_regset): Remove cilkplus support.
4942         * lto-wrapper.c (merge_and_complain, append_compiler_options,
4943         append_linker_options): Remove condition for fcilkplus.
4944         * lto/lto-lang.c (cilk.h): Remove.
4945         (lto_init): Remove condition for fcilkplus.
4946         * omp-expand.c (expand_cilk_for_call): Delete.
4947         (expand_omp_taskreg, expand_omp_for_static_chunk,
4948         expand_omp_for): Remove cilkplus
4949         conditions.
4950         (expand_cilk_for): Delete.
4951         * omp-general.c (omp_extract_for_data): Remove cilkplus support.
4952         * omp-low.c (scan_sharing_clauses, create_omp_child_function,
4953         execute_lower_omp, diagnose_sb_0): Ditto.
4954         * omp-simd-clone.c (simd_clone_clauses_extract): Ditto.
4955         * tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
4956         * tree-nested.c: Ditto.
4957         * tree-pretty-print.c (dump_omp_clause): Remove cilkplus support.
4958         (dump_generic_node): Ditto.
4959         * tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
4960         * tree.def (cilk_simd, cilk_for, cilk_spawn_stmt, cilk_sync_stmt):
4961         Delete.
4962         * tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete.
4963
4964 2017-11-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4965
4966         * config/aarch64/aarch64.md (div<mode>3): Change check to TARGET_FLOAT.
4967         * config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit
4968         for vector mode and !TARGET_SIMD.
4969
4970 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4971
4972         * tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.
4973         Adjust comment.
4974         * tree.h (SWITCH_LABELS): Remove.
4975         * gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS,
4976         assert SWITCH_BODY is non-NULL.
4977         * tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS
4978         handling.
4979         * tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR.
4980
4981         PR tree-optimization/80788
4982         * match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res
4983         has TREE_OVERFLOW set, call drop_tree_overflow.
4984
4985 2017-11-28  Richard Biener  <rguenther@suse.de>
4986
4987         PR tree-optimization/83158
4988         * tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more cases.
4989
4990 2017-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
4991
4992         PR 81288/target
4993         * config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle
4994         TARGET_ISEL && !TARGET_MFCRF differently.  Simplify code.
4995
4996 2017-11-27  Segher Boessenkool  <segher@kernel.crashing.org>
4997
4998         * config/rs6000/rs6000.md (<code><GPR:mode><GPR2:mode>2_isel): Change
4999         LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible.
5000
5001 2017-11-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
5002
5003         PR middle_end/82333
5004         * varasm.c (compare_constant): Take the mode of the constants into
5005         account when comparing floating point constants.
5006
5007 2017-11-27  Gerald Pfeifer  <gerald@pfeifer.com>
5008
5009         * hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier
5010         from explicit instantiation of debug_helper.
5011         * vec.h (DEFINE_DEBUG_VEC): Ditto.
5012
5013 2017-11-27  Richard Biener  <rguenther@suse.de>
5014
5015         * gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code,
5016         refactor a bit.
5017
5018 2017-11-27  Richard Biener  <rguenther@suse.de>
5019
5020         * tree.c (wide_int_to_tree): Free discarded INTEGER_CST.
5021         (type_hash_canon): Also clear int_cst_hash_table entry for
5022         TYPE_MIN/MAX_VALUE.
5023         (build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs.
5024
5025 2017-11-27  Tamar Christina  <tamar.christina@arm.com>
5026
5027         * doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
5028         * doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
5029         * doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
5030
5031 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
5032
5033         * hash-map.h (gt_cleare_cache): Avoid UB.
5034
5035 2017-11-27  Eric Botcazou  <ebotcazou@adacore.com>
5036
5037         * cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
5038         * loop-unroll.c (decide_unroll_constant_iterations): Implement it.
5039         (decide_unroll_runtime_iterations): Likewise.
5040         (decide_unroll_stupid): Likewise.
5041
5042 2017-11-27  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
5043
5044         PR target/83109
5045         * config/i386/i386.md: Add a loop with incssp.
5046
5047 2017-11-27  Martin Jambor  <mjambor@suse.cz>
5048
5049         PR tree-optimization/81248
5050         * tree-sra.c (splice_param_accesses): Remove size check.
5051         (decide_one_param_reduction): Fix size check.
5052         * gimple-pretty-print.c (dump_profile): Silence warning.
5053         * params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description.
5054
5055 2017-11-27  Jakub Jelinek  <jakub@redhat.com>
5056
5057         PR debug/81307
5058         * dbxout.c (lastlineno): New variable.
5059         (dbx_debug_hooks): Use dbxout_switch_text_section as
5060         switch_text_section debug hook.
5061         (dbxout_function_end): Switch to current_function_section
5062         rather than function_section.  If crtl->has_bb_partition,
5063         output just one N_FUN, depending on in_cold_section_p.
5064         (dbxout_source_line): Remember last lineno in lastlineno.
5065         (dbxout_switch_text_section): New function.
5066         (dbxout_function_decl): Adjust dbxout_block caller.
5067         (dbx_block_with_cold_children): New function.
5068         (dbxout_block): Return true if any LBRAC/RBRAC have been
5069         emitted.  Use dbx_block_with_cold_children at depth == 0
5070         in second partition.  Add PARENT_BLOCKNUM argument, pass
5071         it optionally adjusted to children.  Output LBRAC/RBRAC
5072         around recursive call only if the block is in the current
5073         partition, if not and anything was output, emit empty
5074         range LBRAC/RBRAC.
5075         * final.c (final_scan_insn): Compute cold_function_name
5076         before calling switch_text_section debug hook.  Call
5077         that hook even if dwarf2out_do_frame if not emitting
5078         dwarf debug info.
5079
5080         PR target/83100
5081         * varasm.c (bss_initializer_p): Return true for DECL_COMMON
5082         TREE_READONLY decls.
5083
5084 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
5085
5086         PR rtl-optimization/82488
5087         * expr.c (fixup_args_size_notes): Avoid signed integer overflow.
5088
5089 2017-11-26  Julia Koval  <julia.koval@intel.com>
5090
5091         * config/i386/i386.c (processor_target_table): Add skylake_cost for
5092         skylake-avx512.
5093         * config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset,
5094         skylake_cost): New.
5095
5096 2017-11-26  Julia Koval  <julia.koval@intel.com>
5097
5098         * config/i386/driver-i386.c (host_detect_local_cpu):
5099         Detect skylake-avx512.
5100
5101 2017-11-26  Julia Koval  <julia.koval@intel.com>
5102
5103         * config.gcc: Add -march=cannonlake.
5104         * config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake.
5105         * config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake.
5106         * config/i386/i386.c (processor_costs): Add m_CANNONLAKE.
5107         (PTA_CANNONLAKE): New.
5108         (processor_target_table): Add cannonlake.
5109         (ix86_option_override_internal): Ditto.
5110         (fold_builtin_cpu): Ditto.
5111         (get_builtin_code_for_version): Handle cannonlake.
5112         (M_INTEL_COREI7_CANNONLAKE): New.
5113         * config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New.
5114         * doc/invoke.texi: Add -march=cannonlake.
5115
5116 2017-11-14  Boris Kolpackov  <boris@codesynthesis.com>
5117
5118         * plugin.c (add_new_plugin): Use platform-specific library extensions.
5119         (try_init_one_plugin): Alternative implementation for MinGW.
5120         * Makefile.in (plugin_implib): New.
5121         (gengtype-lex.c): Fix broken AIX workaround.
5122         * configure: Regenerate.
5123         * doc/plugins.texi: Document support for MinGW.
5124
5125 2017-11-25  Jakub Jelinek  <jakub@redhat.com>
5126
5127         PR rtl-optimization/81553
5128         * combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z)
5129         to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP
5130         is a shift where C1 has different mode than the whole shift, use C1's
5131         mode for MULT rather than the shift's mode.
5132
5133         PR target/82848
5134         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Don't fold
5135         builtins not enabled in the currently selected ISA.
5136
5137 2017-11-24  Jackson Woodruff  <jackson.woodruff@arm.com>
5138
5139         PR tree-optimization/71026
5140         * tree-ssa-math-opts (is_division_by_square, is_square_of): New.
5141         (insert_reciprocals): Change to insert reciprocals before a division
5142         by a square and to insert the square of a reciprocal.
5143         (execute_cse_reciprocals_1): Change to consider division by a square.
5144         (register_division_in): Add importance parameter.
5145
5146 2017-11-24  Richard Biener  <rguenther@suse.de>
5147
5148         PR tree-optimization/82402
5149         * tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly
5150         set SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
5151
5152 2017-11-24  Marc Glisse  <marc.glisse@inria.fr>
5153
5154         * match.pd (0-ptr): New transformation.
5155
5156 2017-11-24  Jan Hubicka  <hubicka@ucw.cz>
5157
5158         PR bootstrap/83015
5159         * ipa-inline.c (inline_small_functions): Set current badnes correctly
5160         when skipping checking.
5161
5162 2017-11-24  Richard Biener  <rguenther@suse.de>
5163
5164         PR tree-optimization/83128
5165         * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs.
5166         (vn_reference_lookup_3): Likewise.
5167
5168 2017-11-24  Jakub Jelinek  <jakub@redhat.com>
5169
5170         PR sanitizer/83014
5171         * ubsan.c (ubsan_type_descriptor): Use pp_unsigned_wide_integer
5172         instead of pp_printf with HOST_WIDE_INT_PRINT_DEC.  Avoid calling
5173         tree_to_uhwi twice.
5174
5175         * tree-object-size.c (pass_through_call): Use gimple_call_return_flags
5176         ERF_RETURN*ARG* for builtins other than BUILT_IN_ASSUME_ALIGNED,
5177         check for the latter with gimple_call_builtin_p.  Do not handle
5178         BUILT_IN_STPNCPY_CHK which is not a pass through call.
5179
5180 2017-11-24  Christophe Lyon  <christophe.lyon@linaro.org>
5181
5182         * config/arm/arm_neon.h: Fix pragma GCC push_options before
5183         vdot_u32.
5184
5185 2017-11-23  Julia Koval  <julia.koval@intel.com>
5186
5187         * config/i386/avx512vbmi2intrin.h (_mm512_mask_expand_epi8,
5188         _mm512_maskz_expand_epi8, _mm512_mask_expandloadu_epi8,
5189         _mm512_maskz_expandloadu_epi8, _mm512_mask_expand_epi16,
5190         _mm512_maskz_expand_epi16, _mm512_mask_expandloadu_epi16,
5191         _mm512_maskz_expandloadu_epi16): New intrinsics.
5192         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_expand_epi8,
5193         _mm_maskz_expand_epi8, _mm_mask_expandloadu_epi8,
5194         _mm_maskz_expandloadu_epi8, _mm_mask_expand_epi16,
5195         _mm_maskz_expand_epi16, _mm_mask_expandloadu_epi16,
5196         _mm_maskz_expandloadu_epi16, _mm256_mask_expand_epi16,
5197         _mm256_maskz_expand_epi16, _mm256_mask_expandloadu_epi16,
5198         _mm256_maskz_expandloadu_epi16, _mm256_mask_expand_epi8,
5199         _mm256_maskz_expand_epi8, _mm256_mask_expandloadu_epi8,
5200         _mm256_maskz_expandloadu_epi8): New intrinsics.
5201         * config/i386/i386-builtin-types.def (V64QI_FTYPE_PCV64QI_V64QI_UDI,
5202         V32HI_FTYPE_PCV32HI_V32HI_USI, V32QI_FTYPE_PCV32QI_V32QI_USI,
5203         V16HI_FTYPE_PCV16HI_V16HI_UHI, V16QI_FTYPE_PCV16QI_V16QI_UHI,
5204         V8HI_FTYPE_PCV8HI_V8HI_UQI): New types.
5205         * config/i386/i386.c (ix86_expand_special_args_builtin): Use new types.
5206         * config/i386/sse.md (VI248_VLBW): New iterator.
5207         (expand<mode>_mask, expand<mode>_maskz): New patterns.
5208
5209 2017-11-23  Julia Koval  <julia.koval@intel.com>
5210
5211         * config.gcc (avx512vbmi2intrin.h, avx512vbmi2vlintrin): New headers.
5212         * config/i386/avx512vbmi2intrin.h (_mm512_mask_compress_epi8,
5213         _mm512_maskz_compress_epi8, _mm512_mask_compressstoreu_epi8,
5214         _mm512_mask_compress_epi16, _mm512_maskz_compress_epi16,
5215         _mm512_mask_compressstoreu_epi16): New.
5216         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_compress_epi8,
5217         _mm_maskz_compress_epi8, _mm256_mask_compressstoreu_epi16,
5218         _mm_mask_compress_epi16, _mm_maskz_compress_epi16,
5219         _mm256_mask_compress_epi16, _mm256_maskz_compress_epi16,
5220         _mm_mask_compressstoreu_epi8, _mm_mask_compressstoreu_epi16,
5221         _mm256_mask_compress_epi8, _mm256_maskz_compress_epi8,
5222         _mm256_mask_compressstoreu_epi8): New.
5223         * config/i386/i386-builtin-types.def (VOID_FTYPE_PV64QI_V64QI_UDI,
5224         VOID_FTYPE_PV32HI_V32HI_USI, VOID_FTYPE_PV32QI_V32QI_USI,
5225         VOID_FTYPE_PV16QI_V16QI_UHI, VOID_FTYPE_PV16HI_V16HI_UHI,
5226         VOID_FTYPE_PV8HI_V8HI_UQI): New types.
5227         * config/i386/i386-builtin.def (__builtin_ia32_compressqi512_mask,
5228         __builtin_ia32_compresshi512_mask, __builtin_ia32_compressqi256_mask,
5229         __builtin_ia32_compressqi128_mask, __builtin_ia32_compresshi256_mask,
5230         __builtin_ia32_compresshi128_mask,
5231         __builtin_ia32_compressstoreuqi512_mask,
5232         __builtin_ia32_compressstoreuhi512_mask,
5233         __builtin_ia32_compressstoreuqi256_mask,
5234         __builtin_ia32_compressstoreuqi128_mask,
5235         __builtin_ia32_compressstoreuhi256_mask,
5236         __builtin_ia32_compressstoreuhi128_mask): New builtins.
5237         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Create special args
5238         array for flags2.
5239         (ix86_expand_special_args_builtin): Handle new types.
5240         (s4fma_expand): Handle new builtin array.
5241         * config/i386/immintrin.h: Include new headers.
5242         * config/i386/sse.md (VI12_AVX512VLBW): New iterator.
5243         (compress<mode>_mask, compressstore<mode>_mask): New patterns.
5244
5245 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
5246
5247         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Formatting
5248         fixes.  Declare temp and g variables at the top in order to avoid
5249         {} in most of the cases.
5250
5251 2017-11-23  Marc Glisse  <marc.glisse@inria.fr>
5252
5253         * match.pd (ptr-0): New transformation.
5254
5255 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
5256
5257         * config/arm/arm-protos.h (enum arm_addr_mode_op): New.
5258         (struct addr_mode_cost_table): New.
5259         (struct tune_params): Add field addr_mode_costs.
5260         * config/arm/arm.c (generic_addr_mode_costs): New.
5261         (arm_slowmul_tune): Initialise addr_mode_costs field.
5262         (arm_fastmul_tune): Likewise.
5263         (arm_strongarm_tune): Likewise.
5264         (arm_xscale_tune): Likewise.
5265         (arm_9e_tune): Likewise.
5266         (arm_marvell_pj4_tune): Likewise.
5267         (arm_v6t2_tune): Likewise.
5268         (arm_cortex_tune): Likewise.
5269         (arm_cortex_a8_tune): Likewise.
5270         (arm_cortex_a7_tune): Likewise.
5271         (arm_cortex_a15_tune): Likewise.
5272         (arm_cortex_a35_tune): Likewise.
5273         (arm_cortex_a53_tune): Likewise.
5274         (arm_cortex_a57_tune): Likewise.
5275         (arm_exynosm1_tune): Likewise.
5276         (arm_xgene1_tune): Likewise.
5277         (arm_cortex_a5_tune): Likewise.
5278         (arm_cortex_a9_tune): Likewise.
5279         (arm_cortex_a12_tune): Likewise.
5280         (arm_cortex_a73_tune): Likewise.
5281         (arm_v7m_tune): Likewise.
5282         (arm_cortex_m7_tune): Likewise.
5283         (arm_v6m_tune): Likewise.
5284         (arm_fa726te_tune): Likewise.
5285         (arm_mem_costs): Use table lookup to calculate cost of addressing mode.
5286
5287 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
5288
5289         * config/arm/arm.c (arm_mem_costs): New function.
5290         (arm_rtx_costs_internal): Use arm_mem_costs.
5291
5292 2017-11-23  Mark Wielaard  <mark@klomp.org>
5293
5294         * dwarf2out.c (init_sections_and_labels): Use generation to create
5295         unique ranges_section_label and ranges_base_label. Return generation.
5296         (output_rnglists): Add generation argument. Use generation to create
5297         unique ranges labels.
5298         (dwarf2out_finish): Get generation from init_sections_and_labels
5299         and pass generation to output_rnglists.
5300
5301 2017-11-23  Mike Stump  <mikestump@comcast.net>
5302             Eric Botcazou  <ebotcazou@adacore.com>
5303
5304         * doc/generic.texi (ANNOTATE_EXPR): Document 3rd operand.
5305         * cfgloop.h (struct loop): Add unroll field.
5306         * function.h (struct function): Add has_unroll bitfield.
5307         * gimplify.c (gimple_boolify) <ANNOTATE_EXPR>: Deal with unroll kind.
5308         (gimplify_expr) <ANNOTATE_EXPR>: Propagate 3rd operand.
5309         * loop-init.c (pass_loop2::gate): Return true if cfun->has_unroll.
5310         (pass_rtl_unroll_loops::gate): Likewise.
5311         * loop-unroll.c (decide_unrolling): Tweak note message.  Skip loops
5312         for which loop->unroll==1.
5313         (decide_unroll_constant_iterations): Use note for consistency and
5314         take loop->unroll into account.  Return early if loop->unroll is set.
5315         Fix thinko in existing test.
5316         (decide_unroll_runtime_iterations): Use note for consistency and
5317         take loop->unroll into account.
5318         (decide_unroll_stupid): Likewise.
5319         * lto-streamer-in.c (input_cfg): Read loop->unroll.
5320         * lto-streamer-out.c (output_cfg): Write loop->unroll.
5321         * tree-cfg.c (replace_loop_annotate_in_block) <annot_expr_unroll_kind>:
5322         New case.
5323         (replace_loop_annotate) <annot_expr_unroll_kind>: Likewise.
5324         (print_loop): Print loop->unroll if set.
5325         * tree-core.h (enum annot_expr_kind): Add annot_expr_unroll_kind.
5326         * tree-inline.c (copy_loops): Copy unroll and set cfun->has_unroll.
5327         * tree-pretty-print.c (dump_generic_node) <annot_expr_unroll_kind>:
5328         New case.
5329         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Bail out if
5330         loop->unroll is set and smaller than the trip count.  Otherwise bypass
5331         entirely the heuristics if loop->unroll is set.  Remove dead note.
5332         Fix off-by-one bug in other note.
5333         (try_peel_loop): Bail out if loop->unroll is set.  Fix formatting.
5334         (tree_unroll_loops_completely_1): Force unrolling if loop->unroll
5335         is greater than 1.
5336         (tree_unroll_loops_completely): Make static.
5337         (pass_complete_unroll::execute): Use correct type for variable.
5338         (pass_complete_unrolli::execute): Fix formatting.
5339         * tree.def (ANNOTATE_EXPR): Add 3rd operand.
5340
5341 2017-11-23  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5342
5343         * config/i386/i386.h (TARGET_PREFER_AVX256): Also
5344         enable when TARGET_PREFER_AVX128 is set.
5345
5346 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
5347
5348         * ipa-profile.c (ipa_propagate_frequency_1): Use count instead of
5349         frequency.
5350         * cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies.
5351         (cgraph_edge::maybe_hot_p): Use sreal frequencies.
5352
5353 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
5354
5355         * ipa-fnsummary.c (record_modified_bb_info): Use sreal
5356         frequencies. Fix estimation of aggregate parameters.
5357
5358 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
5359
5360         * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
5361         when inlining.
5362
5363 2017-11-23  Tom de Vries  <tom@codesourcery.com>
5364
5365         * config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)".
5366
5367 2017-11-23  Tom de Vries  <tom@codesourcery.com>
5368
5369         * config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after
5370         macro.
5371
5372 2017-11-23  Oleg Endo  <olegendo@gcc.gnu.org>
5373
5374         PR target/83111
5375         * config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel,
5376         sibcall_value_pcrel_fdpic): Use local variable instead of
5377         operands[3].
5378         (calli_tbr_rel): Add missing operand 2.
5379         (call_valuei_tbr_rel): Add missing operand 3.
5380
5381 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
5382
5383         PR middle-end/82253
5384         * expr.c (expand_assignment): For CONCAT to_rtx, complex type from and
5385         bitpos/bitsize covering the whole destination, use store_expr only if
5386         the complex mode is the same.  Otherwise, use expand_normal and if
5387         it returns CONCAT, subreg each part separately instead of trying to
5388         subreg the whole result.
5389
5390 2017-11-23  Richard Biener  <rguenther@suse.de>
5391
5392         PR tree-optimization/23094
5393         * tree-ssa-sccvn.c (vuse_ssa_val): Handle VN_TOP when we
5394         come here from walking over backedges in the first iteration.
5395         (vn_reference_lookup_3): Skip clobbers that store the same value.
5396
5397 2017-11-23  Richard Biener  <rguenther@suse.de>
5398
5399         PR tree-optimization/81403
5400         * tree-ssa-pre.c (get_representative_for): Add parameter specifying
5401         a block we need a leader relative to.
5402         (phi_translate_1): For nary processing require a leader from
5403         get_representative_for given we run expression simplification
5404         using match-and-simplify.  Remove previous fix.
5405
5406 2017-11-22  Jeff Law  <law@redhat.com>
5407
5408         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
5409         Use new method allocate_value_range rather than accessing the
5410         vrp_value_range_pool data member directly.
5411         * tree-vrp.c (simplify_stmt_for_jump_threading): Tweak slightly
5412         to use extract_range_from_stmt method to avoid need for
5413         extract_range_from_assignment method.
5414         (vrp_prop::vrp_finalize): Use set_lattice_propagation_complete
5415         method rather than setting values_propgated data member directly.
5416         * vr-values.h (class vr_values): Privatize vrp_value_range_pool,
5417         and values propagated data members and extract_range_from_assignment
5418         method.  Reorder private data members to conform to standards.
5419         Add new methods set_lattice_propagation_complete and
5420         allocate_value_range.
5421
5422 2017-11-22  Eric Botcazou  <ebotcazou@adacore.com>
5423
5424         PR rtl-optimization/83030
5425         * doc/rtl.texi (Flags in an RTL Expression): Alphabetize, add entry
5426         for CROSSING_JUMP_P and mention usage of 'jump' for JUMP_INSNs.
5427         (Insns): Delete entry for REG_CROSSING_JUMP in register notes.
5428         * bb-reorder.c (update_crossing_jump_flags): Do not test whether the
5429         CROSSING_JUMP_P flag is already set before setting it.
5430         * cfgrtl.c (fixup_partition_crossing): Likewise.
5431         * reorg.c (relax_delay_slots): Do not consider a CROSSING_JUMP_P
5432         insn as useless.
5433
5434 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
5435
5436         * simplify-rtx.c (simplify_binary_operation_1) <case VEC_SERIES>:
5437         Handle the case where both arguments are using gen_const_vec_series.
5438
5439 2017-11-22  David Malcolm  <dmalcolm@redhat.com>
5440
5441         PR c++/62170
5442         * pretty-print.c (pp_format): Move quoting implementation to
5443         pp_begin_quote and pp_end_quote.  Update pp_format_decoder call
5444         to pass address of "quote" local.
5445         (pp_begin_quote): New function.
5446         (pp_end_quote): New function.
5447         * pretty-print.h (printer_fn): Convert penultimate param from bool
5448         to bool *.
5449         (pp_begin_quote): New decl.
5450         (pp_end_quote): New decl.
5451         * tree-diagnostic.c (default_tree_printer): Convert penultimate
5452         param from bool to bool *.
5453         * tree-diagnostic.h (default_tree_printer): Likewise.
5454
5455 2017-11-22  Jeff Law  <law@redhat.com>
5456
5457         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer)
5458         Initialize vr_values.
5459         (evrp_range_analyzer::try_find_new_range): Call methods attached to
5460         vr_values via vr_values class instance rather than delegators.
5461         (evrp_range_analyzer::record_ranges_from_phis): Likewise.
5462         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
5463         (evrp_range_analyzer::push_value_range): Likewise.
5464         (evrp_range_analyzer::pop_value_range): Likewise.
5465         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove
5466         most delegators.  Those remaining are exposed as public interfaces.
5467         Make vr_values a pointer and private.
5468         (evrp_range_analyzer::~evrp_range_analyzer): Delete the attached
5469         vr_values.
5470         (evrp_range_analyzer::get_vr_value): New method.
5471         * gimple-ssa-evrp.c (class evrp_folder): Use DISABLE_COPY_AND_ASSIGN.
5472         (evrp_folder::evrp_folder): New ctor to initialize vr_values.
5473         (class evrp_dom_walker): Attach evrp_folder class, initialize
5474         it in the ctor.  Remove temporary delegators.
5475         (evrp_dom_walker::before_dom_children): Call methods in attached
5476         evrp_range_analyzer class via class instance pointer.  Use
5477         free value_range_constant_singleton to remove need for
5478         op_with_constant_singleton_value delegator method.  Do not
5479         create a vrp_prop class instance for every call!  Narrow
5480         scope of a couple variables.
5481         (evrp_dom_walker::cleanup): Call methods in attached
5482         evrp_range_analyzer class via class instance pointer.
5483         * vr-values.h (class vr_values): Privatize many methods and
5484         data members.
5485
5486 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5487
5488         * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Delete.
5489         * cfgexpand.c (expand_debug_expr): Remove handling for them.
5490         * expr.c (expand_expr_real_2): Likewise.
5491         * fold-const.c (const_unop): Likewise.
5492         * optabs-tree.c (optab_for_tree_code): Likewise.
5493         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
5494         * tree-inline.c (estimate_operator_cost): Likewise.
5495         * tree-pretty-print.c (dump_generic_node): Likewise.
5496         (op_code_prio): Likewise.
5497         (op_symbol_code): Likewise.
5498         * internal-fn.def (DEF_INTERNAL_SIGNED_OPTAB_FN): Define.
5499         (IFN_REDUC_PLUS, IFN_REDUC_MAX, IFN_REDUC_MIN): New internal functions.
5500         * internal-fn.c (direct_internal_fn_optab): New function.
5501         (direct_internal_fn_array, direct_internal_fn_supported_p
5502         (internal_fn_expanders): Handle DEF_INTERNAL_SIGNED_OPTAB_FN.
5503         * fold-const-call.c (fold_const_reduction): New function.
5504         (fold_const_call): Handle CFN_REDUC_PLUS, CFN_REDUC_MAX and
5505         CFN_REDUC_MIN.
5506         * tree-vect-loop.c: Include internal-fn.h.
5507         (reduction_code_for_scalar_code): Rename to...
5508         (reduction_fn_for_scalar_code): ...this and return an internal
5509         function.
5510         (vect_model_reduction_cost): Take an internal_fn rather than
5511         a tree_code.
5512         (vect_create_epilog_for_reduction): Likewise.  Build calls rather
5513         than assignments.
5514         (vectorizable_reduction): Use internal functions rather than tree
5515         codes for the reduction operation.  Update calls to the functions
5516         above.
5517         * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin):
5518         Use calls to internal functions rather than REDUC tree codes.
5519         * config/aarch64/aarch64-simd.md: Update comment accordingly.
5520
5521 2017-11-22  Olivier Hainque  <hainque@adacore.com>
5522
5523         * config/vxworks.c (vxworks_override_options): Pick default
5524         dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
5525         * config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and
5526         DWARF_GNAT_ENCODINGS_DEFAULT.
5527         * config/vxworksae.h: Likewise.
5528
5529 2017-11-22  Marc Glisse  <marc.glisse@inria.fr>
5530
5531         PR tree-optimization/83104
5532         * vr-values.c (simplify_stmt_using_ranges): Check integral argument,
5533         not result.
5534
5535 2017-11-22  Marek Polacek  <polacek@redhat.com>
5536             H.J. Lu  <hongjiu.lu@intel.com>
5537             Jason Merrill  <jason@redhat.com>
5538
5539         PR c++/60336
5540         PR middle-end/67239
5541         PR target/68355
5542         * calls.c (initialize_argument_information): Call
5543         warn_parameter_passing_abi target hook.
5544         (store_one_arg): Use 0 for empty record size.  Don't push 0 size
5545         argument onto stack.
5546         (must_pass_in_stack_var_size_or_pad): Return false for empty types.
5547         * common.opt: Update -fabi-version description.
5548         * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
5549         (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
5550         int_size_in_bytes.
5551         (ix86_is_empty_record): New function.
5552         (ix86_warn_parameter_passing_abi): New function.
5553         (TARGET_EMPTY_RECORD_P): Redefine.
5554         (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
5555         * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
5556         * doc/tm.texi: Regenerated.
5557         * doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
5558         TARGET_WARN_PARAMETER_PASSING_ABI): Add.
5559         * dwarf2out.c (get_ultimate_context): Move to tree.c.
5560         * explow.c (hard_function_value): Call arg_int_size_in_bytes
5561         instead of int_size_in_bytes.
5562         * expr.c (copy_blkmode_to_reg): Likewise.
5563         * function.c (aggregate_value_p): Return 0 for empty types.
5564         (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi
5565         target hook.
5566         (locate_and_pad_parm): Call arg size_in_bytes instead
5567         size_in_bytes.
5568         * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
5569         * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
5570         * target.def (empty_record_p, warn_parameter_passing_abi): New target
5571         hooks.
5572         * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
5573         (std_gimplify_va_arg_expr): Skip empty records.  Call
5574         arg_size_in_bytes instead size_in_bytes.
5575         * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
5576         * tree-core.h (tree_type_common): Add empty_flag.
5577         (tree_decl_common): Update comments.
5578         * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
5579         DECL_PADDING_P.
5580         (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
5581         * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
5582         DECL_PADDING_P.
5583         (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
5584         * tree.c (default_is_empty_type): New function.
5585         (default_is_empty_record): New function.
5586         (arg_int_size_in_bytes): New function.
5587         (arg_size_in_bytes): New function.
5588         (get_ultimate_context): New function.
5589         * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
5590         TRANSLATION_UNIT_WARN_EMPTY_P.
5591         (default_is_empty_record, arg_int_size_in_bytes,
5592         arg_size_in_bytes, get_ultimate_context): Declare.
5593
5594 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5595
5596         * config/arm/arm.c (cmse_clear_registers): New function.
5597         (cmse_nonsecure_call_clear_caller_saved): Replace register clearing
5598         code by call to cmse_clear_registers.
5599         (cmse_nonsecure_entry_clear_before_return): Likewise.
5600
5601 2017-11-22  Tamar Christina  <tamar.christina@arm.com>
5602
5603         * config/arm/arm_neon.h (vdot_u32, vdotq_u32)
5604         (vdot_s32, vdotq_s32): New.
5605         (vdot_lane_u32, vdotq_lane_u32): New.
5606         (vdot_lane_s32, vdotq_lane_s32): New.
5607
5608
5609 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5610
5611         PR middle-end/82547
5612         * wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection
5613         for unsigned values with fewer HWIs than the precision.
5614         (test_overflow): New function.
5615         (wide_int_cc_tests): Call it.
5616
5617 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5618
5619         * emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
5620         has the same mode class as Pmode.
5621
5622 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5623
5624         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
5625         padding_bits_to_clear_ptr.
5626         (cmse_nonsecure_entry_clear_before_return): Likewise.
5627
5628 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5629
5630         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use
5631         auto_sbitap instead of integer bitfield to control register needing
5632         clearing.
5633
5634 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
5635
5636         PR tree-optimization/83044
5637         * tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not
5638         INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests
5639         that need the upper bound.  Subtract offset from
5640         get_addr_base_and_unit_offset only if positive and subtract it
5641         before division by eltsize rather than after it.
5642
5643         PR debug/83084
5644         * valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
5645         debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
5646         (dead_debug_insert_temp): Likewise, but also ignore even non-volatile
5647         asm.
5648
5649         PR middle-end/82875
5650         * optabs.c (expand_doubleword_mult, expand_binop): Before calling
5651         expand_binop with *mul_widen_optab, make sure at least one of the
5652         operands doesn't have VOIDmode.
5653
5654         PR debug/83034
5655         * dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.
5656
5657         PR rtl-optimization/82044
5658         PR tree-optimization/82042
5659         * dse.c (record_store): Check for overflow.
5660         (check_mem_read_rtx): Properly check for overflow if width == -1, call
5661         add_wild_read instead of clear_rhs_from_active_local_stores on
5662         overflow and log it into dump_file.
5663
5664 2017-11-22  Richard Biener  <rguenther@suse.de>
5665
5666         * gimple-iterator.c (gimple_find_edge_insert_loc): Ignore
5667         fake edges to exit when looking for a place to insert.
5668         * tree-ssa-pre.c (clear_expression_ids): Inline into callers
5669         and remove.
5670         (insert_into_preds_of_block): Commit edge insertion immediately,
5671         assert that doesn't require new BBs.
5672         (fini_pre): Release expressions.
5673         (pass_pre::execute): Shuffle things around a bit, if the fn
5674         is too large do not compute AVAIL either as this is really the
5675         quadratic bit.
5676
5677 2017-11-22  Richard Biener  <rguenther@suse.de>
5678
5679         PR tree-optimization/83089
5680         * tree-if-conv.c (pass_if_conversion::execute): If anything
5681         changed reset SCEV and free the number of iteration estimates.
5682
5683 2017-11-21  Martin Sebor  <msebor@redhat.com>
5684
5685         PR tree-optimization/82945
5686         * calls.h (warn_nonstring_bound): Remove unused function.
5687
5688 2017-11-21  Martin Sebor  <msebor@redhat.com>
5689
5690         PR tree-optimization/82945
5691         * builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg.
5692         * calls.h (maybe_warn_nonstring_arg): Declare new function.
5693         * calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New
5694         functions.
5695         (initialize_argument_information): Call maybe_warn_nonstring_arg.
5696         * calls.h (get_attr_nonstring_decl): Declare new function.
5697         * doc/extend.texi (attribute nonstring): Update.
5698         * gimple-fold.c (gimple_fold_builtin_strncpy): Call
5699         get_attr_nonstring_decl and handle it.
5700         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.  Improve
5701         detection of nul-termination.
5702         (strlen_to_stridx): Change to a pointer.
5703         (handle_builtin_strlen, handle_builtin_stxncpy): Adjust.
5704         (pass_strlen::execute): Same.
5705
5706 2017-11-21  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5707
5708         * config/i386/i386-opts.h (enum prefer_vector_width): Added new enum
5709         for the new option -mprefer-vector-width=[none|128|256|512].
5710         * config/i386/i386.c (ix86_target_string): remove old style options
5711         -mprefer-avx256 and make -mprefer-avx128 as alias.
5712         (ix86_option_override_internal):  Apply defaults for the
5713         -mprefer-vector-width=[128|256] option.
5714         * config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256):
5715         Implement macros to work with -mprefer-vector-width=.
5716         * config/i386/i386.opt: Implemented option
5717         -mprefer-vector-width=[none|128|256|512].
5718         * doc/invoke.texi: Documentation for
5719         -mprefer-vector-width=[none|128|256|512].
5720
5721 2017-11-21  Pat Haugen  <pthaugen@us.ibm.com>
5722
5723         * config/rs6000/ppc-asm.h (f50, vs50): Fix values.
5724
5725 2017-11-21  Jonathan Wakely  <jwakely@redhat.com>
5726
5727         * doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity.
5728
5729 2017-11-21  Marc Glisse  <marc.glisse@inria.fr>
5730
5731         * doc/generic.texi: Document POINTER_DIFF_EXPR, update
5732         POINTER_PLUS_EXPR.
5733         * cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR.
5734         * expr.c (expand_expr_real_2): Likewise.
5735         * fold-const.c (const_binop, fold_addr_of_array_ref_difference,
5736         fold_binary_loc): Likewise.
5737         * match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N),
5738         P-Q==0, -(A-B), X-Z<Y-Z, (X-Z)-(Y-Z), Z-X<Z-Y, (Z-X)-(Z-Y),
5739         (A-B)+(C-A)): New transformations for POINTER_DIFF_EXPR, based on
5740         MINUS_EXPR transformations.
5741         * optabs-tree.c (optab_for_tree_code): Handle POINTER_DIFF_EXPR.
5742         * tree-cfg.c (verify_expr, verify_gimple_assign_binary): Likewise.
5743         * tree-inline.c (estimate_operator_cost): Likewise.
5744         * tree-pretty-print.c (dump_generic_node, op_code_prio,
5745         op_symbol_code): Likewise.
5746         * tree-vect-stmts.c (vectorizable_operation): Likewise.
5747         * vr-values.c (extract_range_from_binary_expr): Likewise.
5748         * varasm.c (initializer_constant_valid_p_1): Likewise.
5749         * tree.def: New tree code POINTER_DIFF_EXPR.
5750
5751 2017-11-21  Uros Bizjak  <ubizjak@gmail.com>
5752
5753         * config/i386/i386.md (*bswap<mode>2_movbe): Add
5754         integer suffix to movbe mnemonic.
5755         (*bswaphi2_movbe): Ditto.
5756         (bswaphi_lowpart): Merge with *bswaphi_lowpart_1.
5757
5758 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5759
5760         PR c++/83045
5761         * tree-cfg.c (pass_warn_function_return::execute): Formatting fix.
5762         Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION.
5763         Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION.
5764
5765 2017-11-21  Martin Liska  <mliska@suse.cz>
5766
5767         * tree-inline.c (expand_call_inline): Remove not needed
5768         xstrdup_for_dump.
5769
5770 2017-11-21  James Cowgill  <James.Cowgill@imgtec.com>
5771             Jakub Jelinek  <jakub@redhat.com>
5772
5773         PR target/82880
5774         * config/mips/frame-header-opt.c (mips_register_frame_header_opt):
5775         Remove static keyword from f variable.
5776
5777 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5778
5779         PR tree-optimization/83086
5780         * gimple-ssa-store-merging.c
5781         (imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr
5782         rather than n.base_addr.
5783
5784 2017-11-21  Martin Liska  <mliska@suse.cz>
5785
5786         PR rtl-optimization/82044
5787         PR tree-optimization/82042
5788         * dse.c (check_mem_read_rtx): Check for overflow.
5789
5790 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
5791
5792         * tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix
5793         typo in comment.
5794
5795 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
5796
5797         * cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call
5798         and its corresponding call arg location note.
5799
5800 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
5801             Andrew Burgess  <andrew.burgess@embecosm.com>
5802
5803         * config/arc/arc-protos.h (arc_compute_frame_size): Delete
5804         declaration.
5805         (arc_return_slot_offset): Likewise.
5806         (arc_eh_return_address_location): New declaration.
5807         * config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
5808         (MUST_SAVE_REGISTER): Add exception handler case.
5809         (MUST_SAVE_RETURN_ADDR): Likewise.
5810         (arc_frame_pointer_required): Likewise.
5811         (arc_frame_pointer_needed): New function.
5812         (arc_compute_frame_size): Changed.
5813         (arc_expand_prologue): Likewise.
5814         (arc_expand_epilogue): Likewise.
5815         (arc_initial_elimination_offset): Likewise.
5816         (arc_return_slot_offset): Delete.
5817         (arc_eh_return_address_location): New function.
5818         (arc_builtin_setjmp_frame_value): Likewise.
5819         * config/arc/arc.h (EH_RETURN_DATA_REGNO): Use 2 registers.
5820         (EH_RETURN_STACKADJ_RTX): Define.
5821         (EH_RETURN_HANDLER_RTX): Likewise.
5822         * config/arc/arc.md (eh_return): Delete.
5823
5824 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
5825
5826         * print-tree.h (debug_vec_tree): Remove prototype.
5827         * gdbinit.in (pvt): Remove macro.
5828
5829 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5830
5831         PR tree-optimization/83047
5832         * gimple-ssa-store-merging.c
5833         (imm_store_chain_info::output_merged_store): If the loads with the
5834         same vuse are in different basic blocks, for load_gsi pick a load
5835         location that is dominated by the other loads.
5836
5837         PR c++/83059
5838         * config/i386/i386.c (ix86_memmodel_check): Start
5839         -Winvalid-memory-model diagnostics with lowercase letter.
5840
5841         PR debug/82718
5842         * dwarf2out.c (dw_loc_list): If crtl->has_bb_partition, temporarily
5843         set in_cold_section_p to the partition containing loc_list->first.
5844         When seeing loc_list->last_before_switch node, update secname and
5845         perform range_across_switch second partition handling only after that.
5846
5847         PR debug/82933
5848         * run-rtl-passes.c: Include debug.h.
5849         (run_rtl_passes): Call debug_hooks->assembly_start.
5850         * dwarf2out.c (dwarf2out_assembly_start): Return early if invoked
5851         multiple times.
5852
5853         PR target/82981
5854         * internal-fn.c (expand_mul_overflow): Use OPTAB_WIDEN instead of
5855         OPTAB_DIRECT in calls to expand_simple_binop.
5856
5857 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
5858
5859         PR c/81404
5860         * Makefile.in (C_COMMON_OBJS): Add c-family/known-headers.o.
5861
5862 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
5863
5864         PR c++/72786
5865         * spellcheck.h (best_match::blithely_get_best_candidate): New
5866         accessor.
5867
5868 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
5869
5870         * config/i386/i386.c (parse_mtune_ctrl_str): Start diagnostics
5871         with lower case letter.
5872
5873 2017-11-20  Uros Bizjak  <ubizjak@gmail.com>
5874
5875         * config/i386/i386.md (bswaphi2): New expander.
5876         (*bswaphi2_movbe): New insn pattern.
5877         (bswaphi -> rorhi pepehole2): New peephole pattern.
5878
5879 2017-11-20  Jeff Law  <law@redhat.com>
5880
5881         * Makefile.in (OBJS): Add gimple-ssa-evrp-analyze.o.
5882         * gimple-ssa-evrp-analyze.c: New file pulled from gimple-ssa-evrp.c.
5883         * gimple-ssa-evrp-analyze.h: New file pulled from gimple-ssa-evrp.c.
5884         * gimple-ssa-evrp.c: Remove bits moved into new files.  Include
5885         gimple-ssa-evrp-analyze.h.
5886
5887         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Do not
5888         set BB_VISITED here.
5889         (evrp_range_analyzer::enter): Set BB_VISITED here instead.
5890
5891 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
5892
5893         * tree-predcom.c: Add general comment on Store-Store chains.
5894         (split_data_refs_to_components): Postpone clearing eliminate_store_p
5895         flag in component.
5896         (get_chain_last_ref_at): Rename into...
5897         (get_chain_last_write_at): ...this.
5898         (get_chain_last_write_before_load): New function.
5899         (add_ref_to_chain): Promote type of chain from CT_STORE_LOAD to
5900         CT_STORE_STORE when write reference is added.
5901         (determine_roots_comp): Support load ref in CT_STORE_STORE chains.
5902         (is_inv_store_elimination_chain): Update get_chain_last_write_at call.
5903         (initialize_root_vars_store_elim_1): Ditto.
5904         (initialize_root_vars_store_elim_2): Ditto.  Replace rhs once default
5905         definition is created.
5906         (execute_pred_commoning_chain): Support load ref in CT_STORE_STORE
5907         chain by replacing it with dominant stored value.
5908
5909 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
5910
5911         * tree-predcom.c (add_ref_to_chain): Remove check on distance.
5912
5913 2017-11-20  Marc Glisse  <marc.glisse@inria.fr>
5914
5915         * vr-values.c (extract_range_from_binary_expr): Use a full range
5916         for VR_VARYING.
5917
5918 2017-11-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5919
5920         * config/arm/arm.md (R4_REGNUM): Define constant.
5921         (nonsecure_call_internal): Remove r4 clobber.
5922         (nonsecure_call_value_internal): Likewise.
5923         * config/arm/thumb1.md (nonsecure_call_reg_thumb1_v5): Remove second
5924         clobber and resequence match_operands.
5925         (nonsecure_call_value_reg_thumb1_v5): Likewise.
5926         * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Likewise.
5927         (nonsecure_call_value_reg_thumb2): Likewise.
5928
5929 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
5930
5931         PR tree-optimization/78821
5932         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Give up
5933         if base is TARGET_MEM_REF.  If base is not MEM_REF, set base_addr
5934         to the address of the base rather than the base itself.
5935         (find_bswap_or_nop_1): Just use pointer comparison for vuse check.
5936         (find_bswap_or_nop_finalize): New function.
5937         (find_bswap_or_nop): Use it.
5938         (bswap_replace): Return a tree rather than bool, change first
5939         argument from gimple * to gimple_stmt_iterator, allow inserting
5940         into an empty sequence, allow ins_stmt to be NULL - then emit
5941         all stmts into gsi.  Fix up MEM_REF address gimplification.
5942         (pass_optimize_bswap::execute): Adjust bswap_replace caller.
5943         (struct store_immediate_info): Add N and INS_STMT non-static
5944         data members.
5945         (store_immediate_info::store_immediate_info): Initialize them
5946         from newly added ctor args.
5947         (merged_store_group::apply_stores): Formatting fixes.  Sort by
5948         bitpos at the end.
5949         (stmts_may_clobber_ref_p): For stores call also
5950         refs_anti_dependent_p.
5951         (gather_bswap_load_refs): New function.
5952         (imm_store_chain_info::try_coalesce_bswap): New method.
5953         (imm_store_chain_info::coalesce_immediate_stores): Use it.
5954         (split_group): Handle LROTATE_EXPR and NOP_EXPR rhs_code specially.
5955         (imm_store_chain_info::output_merged_store): Fail if number of
5956         new estimated stmts is bigger or equal than old.  Handle LROTATE_EXPR
5957         and NOP_EXPR rhs_code.
5958         (pass_store_merging::process_store): Compute n and ins_stmt, if
5959         ins_stmt is non-NULL and the store rhs is otherwise invalid, use
5960         LROTATE_EXPR rhs_code.  Pass n and ins_stmt to store_immediate_info
5961         ctor.
5962         (pass_store_merging::execute): Calculate dominators.
5963
5964         * tree-ssa-math-opts.c (nop_stats, bswap_stats, struct symbolic_number,
5965         BITS_PER_MARKER, MARKER_MASK, MARKER_BYTE_UNKNOWN, HEAD_MARKER, CMPNOP,
5966         CMPXCHG, do_shift_rotate, verify_symbolic_number_p,
5967         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
5968         find_bswap_or_nop_1, find_bswap_or_nop, pass_data_optimize_bswap,
5969         class pass_optimize_bswap, bswap_replace,
5970         pass_optimize_bswap::execute): Moved to ...
5971         * gimple-ssa-store-merging.c: ... this file.
5972         Include optabs-tree.h.
5973         (nop_stats, bswap_stats, do_shift_rotate, verify_symbolic_number_p,
5974         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
5975         find_bswap_or_nop_1, find_bswap_or_nop, bswap_replace): Put into
5976         anonymous namespace, remove static keywords.
5977         (pass_optimize_bswap::gate): Test BITS_PER_UNIT == 8 here...
5978         (pass_optimize_bswap::execute): ... rather than here.  Formatting fix.
5979
5980 2017-11-20  Jan Hubicka  <hubicka@ucw.cz>
5981
5982         PR bootstrap/83062
5983         * ipa-inline.c (can_inline_edge_p): Fix typo in previous patch.
5984
5985 2017-11-20  Aldy Hernandez  <aldyh@redhat.com>
5986
5987         * vec.h (debug_helper): New function.
5988         (DEFINE_DEBUG_VEC): New macro.
5989         * hash-set.h (debug_helper): New function.
5990         (DEFINE_DEBUG_HASH_SET): New macro.
5991         * cfg.c (debug_slim (edge)): New function.
5992         Call DEFINE_DEBUG_VEC for edges.
5993         Call DEFINE_DEBUG_HASH_SET for edges.
5994         * cfghooks.c (debug_slim (basic_block)): New function.
5995         Call DEFINE_DEBUG_VEC for basic blocks.
5996         Call DEFINE_DEBUG_HASH_SET for basic blocks.
5997         * print-tree.c (debug_slim): New function to handle trees.
5998         Call DEFINE_DEBUG_VEC for trees.
5999         Call DEFINE_DEBUG_HASH_SET for trees.
6000         (debug (vec<tree, va_gc>) &): Remove.
6001         (debug (<vec<tree, va_gc>) *): Remove.
6002         * print-rtl.c (debug_slim): New function to handle const_rtx.
6003         Call DEFINE_DEBUG_VEC for rtx_def.
6004         Call DEFINE_DEBUG_VEC for rtx_insn.
6005         Call DEFINE_DEBUG_HASH_SET for rtx_def.
6006         Call DEFINE_DEBUG_HASH_SET for rtx_insn.
6007         * sel-sched-dump.c (debug (vec<rtx_insn *> &): Remove.
6008         (debug (vec<rtx_insn *> *ptr): Remove.
6009         (debug_insn_vector): Remove.
6010         * stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree.
6011
6012 2017-11-20  Tom de Vries  <tom@codesourcery.com>
6013
6014         PR rtl-optimization/82020
6015         * simplify-rtx.c (simplify_ternary_operation): Fix comparison mode of
6016         IF_THEN_ELSE condition.
6017
6018 2017-11-19  Jeff Law  <law@redhat.com>
6019
6020         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
6021         of degenerates resulting from ignoring an edge.
6022
6023 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
6024
6025         PR ipa/81360
6026         * ipa-inline.c (can_inline_edge_p): Also check that caller is optimized
6027
6028 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
6029
6030         PR ipa/83001
6031         * profile-count.c (profile_count::to_sreal_scale): Fix return value
6032         for uninitialied counts.
6033
6034 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
6035
6036         PR ipa/60243
6037         * tree-inline.c (estimate_num_insns): Set to 1 at least.
6038
6039 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
6040
6041         PR target/82713
6042         * i386.c (ix86_builtin_vectorization_cost): Be ready for insane types.
6043
6044 2017-11-19  Tom de Vries  <tom@codesourcery.com>
6045
6046         * config/arc/arc.h (FUNCTION_PROFILER): Remove semicolon after
6047         "do while (0)".
6048
6049 2017-11-19  Tom de Vries  <tom@codesourcery.com>
6050
6051         * config/phoenix.h (TARGET_OS_CPP_BUILTINS): Remove semicolon after
6052         "do {} while (0)".
6053
6054 2017-11-19  Tom de Vries  <tom@codesourcery.com>
6055
6056         * config/visium/visium.h (ASM_OUTPUT_CASE_END): Remove semicolon after
6057         macro body.
6058
6059 2017-11-19  Tom de Vries  <tom@codesourcery.com>
6060
6061         * config/ft32/ft32.h (REGISTER_TARGET_PRAGMAS): Remove semicolon after
6062         "do {} while (0)".
6063         * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Same.
6064
6065 2017-11-19  Tom de Vries  <tom@codesourcery.com>
6066
6067         * config/mcore/mcore-elf.h (MCORE_EXPORT_NAME): Remove semicolon after
6068         "do {} while (0)".
6069         * config/mcore/mcore.h (ASM_OUTPUT_ALIGNED_COMMON): After missing
6070         semicolon after MCORE_EXPORT_NAME call.
6071
6072 2017-11-19  Tom de Vries  <tom@codesourcery.com>
6073
6074         PR target/82961
6075         * vmsdbgout.c (vmsdbgout_early_finish): New function.
6076         (vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish.
6077
6078 2017-11-18  Jan Hubicka  <hubicka@ucw.cz>
6079
6080         * cgraphclones.c (cgraph_edge::clone): Rename gcov_count to prof_count.
6081         (cgraph_edge::clone): Cleanup updating of profile.
6082         * ipa-cp.c (update_profiling_info): Likewise.
6083         * ipa-inline-transform.c (inline_transform): Likewise.
6084         * ipa-inline.c (inline_small_functions): Add missing space to dump.
6085         * ipa-split.c (execute_split_functions): Do not split when function
6086         is cold.
6087         * predict.c (estimate_bb_frequencies): Cleanup updating of profile.
6088         * profile-count.c (profile_count::dump): Add global0.
6089         (profile_count::to_cgraph_frequency): Do not ICE when entry is
6090         undefined.
6091         (profile_count::to_sreal_scale): Likewise.
6092         (profile_count::adjust_for_ipa_scaling): Fix typo in comment.
6093         (profile_count::combine_with_ipa_count): New function.
6094         * profile-count.h (profile_guessed_global0adjusted): New.
6095         (profile_count::adjusted_zero): New.
6096         (profile_count::global0adjusted): New.
6097         (profile_count::combine_with_ipa_count): New.
6098         * tree-inline.c (copy_edges_for_bb): Add NUM/DEN arugment;
6099         correct profile of return block of split functions.
6100         (copy_cfg_body): Remove unused profile_count.
6101         (copy_body): Likewise.
6102         (expand_call_inline): Update.
6103         (tree_function_versioning): Update.
6104
6105 2017-11-18  Aldy Hernandez  <aldyh@redhat.com>
6106
6107         * hash-set.h (hash_set::empty): New.
6108         * tree-ssa-threadbackward.h: Delete.
6109         * tree-ssa-threadbackward.c (class thread_jumps): New.
6110         Move max_threaded_paths into class.
6111         (fsm_find_thread_path): Remove arguments that are now in class.
6112         (profitable_jump_thread_path): Rename to...
6113         (thread_jumps::profitable_jump_thread_path): ...this.
6114         (convert_and_register_jump_thread_path): Rename to...
6115         (thread_jumps::convert_and_register_current_path): ...this.
6116         (check_subpath_and_update_thread_path): Rename to...
6117         (thread_jumps::check_subpath_and_update_thread_path): ...this.
6118         (register_jump_thread_path_if_profitable): Rename to...
6119         (thread_jumps::register_jump_thread_path_if_profitable): ...this.
6120         (handle_phi): Rename to...
6121         (thread_jumps::handle_phi): ...this.
6122         (handle_assignment): Rename to...
6123         (thread_jumps::handle_assignment): ...this.
6124         (fsm_find_control_statement_thread_paths): Rename to...
6125         (thread_jumps::fsm_find_control_statement_thread_paths): ...this.
6126         (find_jump_threads_backwards): Rename to...
6127         (thread_jumps::find_jump_threads_backwards): ...this.
6128         Initialize path local data.
6129         (pass_thread_jumps::execute): Call find_jump_threads_backwards
6130         from within thread_jumps class.
6131         (pass_early_thread_jumps::execute): Same.
6132
6133 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6134
6135         * cgraph.c (cgraph_node::dump): Do IPA sanity checking on IPA counts.
6136
6137 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
6138
6139         * config/aarch64/aarch64-simd.md (fnma<mode>4): Move neg operator
6140         to canonical location.
6141
6142 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
6143
6144         PR target/81356
6145         * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p):
6146         Remove.
6147         (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Remove define.
6148
6149 2017-11-17  H.J. Lu  <hongjiu.lu@intel.com>
6150
6151         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use
6152         rcrt1.o%s/grcrt1.o%s for -static-pie.
6153
6154 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6155
6156         * i386.c (ix86_multiplication_cost, ix86_division_cost,
6157         ix86_shift_rotate_cost): Break out from ...
6158         (ix86_rtx_costs): ... here.
6159         (ix86_add_stmt_cost): Use rtx cost machinery to compute cost of
6160         vector operations.
6161
6162 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6163
6164         * predict.c (determine_unlikely_bbs): Set cgraph node count to 0
6165         when entry block was promoted unlikely.
6166         (estimate_bb_frequencies): Increase frequency scale.
6167         * profile-count.h (profile_count): Export precision info.
6168
6169 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6170
6171         * tree-tailcall.c (eliminate_tail_call): Be more careful about not
6172         disturbin profile of entry block.
6173
6174 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6175
6176         * ipa-fnsummary.c (estimate_node_size_and_time): Be more tolerant for
6177         roundoff errors.
6178
6179 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6180
6181         * ipa-cp.c (update_profiling_info): Handle conversion to local profile.
6182         * tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does.
6183
6184 2017-11-17  Jeff Law  <law@redhat.com>
6185
6186         * gimple-ssa-evrp.c (class evrp_range_analyzer): New class extracted
6187         from evrp_dom_walker class.  Various methods moved into new class.
6188         (evrp_range_analyzer::evrp_range_analyzer): Constructor for new class.
6189         (evrp_range_analyzer::enter): New method.
6190         (evrp_range_analyzer::leave): New method.
6191         (evrp_dom_walker): Remove delegators no longer needed by this class.
6192         Replace vr_values data member with evrp_range_analyzer
6193
6194         * gimple-ssa-evrp.c (evrp_dom_walker::record_ranges_from_phis): New
6195         method extracted from evrp_dom_walker::before_dom_children.
6196         (evrp_dom_walker::record_ranges_from_stmt): Likewise.
6197         (evrp_dom_walker::record_ranges_from_incoming_edge): Likewise.
6198
6199         * gimple-ssa-evrp.c (evrp_dom_walker): Add cleanup method.
6200         Add private copy constructor and move assignment operators.
6201         Privatize methods and class data where trivially possible.
6202         (evrp_dom_walker::cleanup): New function, extracted from
6203         execute_early_vrp.  Simplify access to class data.
6204
6205         * vr-values.h (get_output_for_vrp): Prototype.
6206         * vr-values.c (get_output_for_vrp): New function extracted from
6207         vrp_visit_assignment_or_call and extract_range_from_stmt.
6208         (vrp_visit_assignment_or_call): Use get_output_for_vrp.  Simplify.
6209
6210 2017-11-17  Luis Machado  <luis.machado@linaro.org>
6211
6212         * config/aarch64/aarch64.c
6213         (qdf24xx_prefetch_tune) <default_opt_level>: Set to -1.
6214         (qdf24xx_tunings) <autoprefetcher_model>: Set to
6215         tune_params::AUTOPREFETCHER_WEAK.
6216
6217 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
6218
6219         PR target/82641
6220         * config/arm/arm.c (arm_valid_target_attribute_rec):
6221         Parse "arch=" and "+<ext>".
6222         (arm_valid_target_attribute_tree): Re-init global options.
6223         (arm_option_override): Make non-static.
6224         (arm_options_perform_arch_sanity_checks): Make errors fatal.
6225         * gcc/config/arm/arm-c.c (__ARM_FEATURE_CMSE): Support undef.
6226         (__ARM_FEATURE_CRC32): Support undef.
6227         * config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma.
6228         * doc/extend.texi (ARM Function Attributes): Add pragma and target.
6229
6230 2017-11-17  David Malcolm  <dmalcolm@redhat.com>
6231
6232         * gdbinit.in (break-on-diagnostic): New command.
6233
6234 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6235
6236         * config/i386/i386.c (ix86_expand_epilogue): Change simple
6237         return to indirect jump for EH return if control-flow
6238         protection is enabled. Change explicit 'false' argument in
6239         pro_epilogue_adjust_stack with a value of
6240         flag_cf_protection.
6241         * config/i386/i386.md (simple_return_indirect_internal):
6242         Remove SImode restriction to support 64-bit.
6243
6244 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
6245
6246         * combine.c (added_notes_insn): New.
6247         (try_combine): Handle added_notes_insn like added_links_insn.
6248         Rewrite return value code.
6249         (distribute_notes): Set added_notes_insn to the earliest insn we added
6250         a note to.
6251
6252 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
6253
6254         PR rtl-optimization/82621
6255         * combine.c (try_combine): Do not split PARALLELs of two SETs if the
6256         dest of one of those SETs is unused.
6257
6258 2017-11-17  Richard Biener  <rguenther@suse.de>
6259
6260         PR fortran/83017
6261         * tree-core.h (enum annot_expr_kind): Add annot_expr_parallel_kind.
6262         * tree-pretty-print.c (dump_generic_node): Handle
6263         annot_expr_parallel_kind.
6264         * tree-cfg.c (replace_loop_annotate_in_block): Likewise.
6265         * gimplify.c (gimple_boolify): Likewise.
6266
6267 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6268
6269         * config.gcc (extra_headers): Add cet.h for x86 targets.
6270         * config/i386/cet.h: New file.
6271         * doc/install.texi: Add --enable-cet/--disable-cet.
6272
6273 2017-11-17  Richard Biener  <rguenther@suse.de>
6274
6275         PR tree-optimization/83017
6276         * tree-parloops.c (MIN_PER_THREAD): Use --param parloops-min-per-thread.
6277         (gen_parallel_loop): Properly count iterations.
6278         (parallelize_loops): Handle loop->can_be_parallel independent
6279         of flag_loop_parallelize_all.  Make static profitability test match
6280         the runtime one.
6281         * params.def (PARAM_PARLOOPS_MIN_PER_THREAD): New.
6282         * invoke.texi (parloops-min-per-thread): Document.
6283
6284 2017-11-17  Vineet Gupta  <vgupta@synopsys.com>
6285
6286         * config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc
6287         upstreaming review comments.
6288
6289 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
6290
6291         * expr.c (copy_blkmode_to_reg): Fix bitsize for targets
6292         with fast unaligned access.
6293         * doc/sourcebuild.texi (word_mode_no_slow_unalign): New.
6294
6295 2017-11-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
6296
6297         * config/arm/arm.c (cmse_nonsecure_entry_clear_before_return): Allocate
6298         to_clear_arg_regs_bitmap to the same size as to_clear_bitmap.
6299
6300 2017-11-17  Richard Biener  <rguenther@suse.de>
6301
6302         * tree-ssa-pre.c (phi_translate_1): Remove redundant constant
6303         folding of references.
6304
6305 2017-11-17  Qing Zhao  <qing.zhao@oracle.com>
6306
6307         PR middle-end/78809
6308         * gimple-fold.c (gimple_fold_builtin_string_compare): Add handling
6309         of replacing call to strncmp with corresponding call to strcmp when
6310         meeting conditions.
6311
6312 2017-11-17  Sergey Shalnov  <Sergey.Shalnov@intel.com>
6313
6314         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning
6315         option prefer-avx256 for skylake-avx512 configuration.
6316         * config/i386/i386.c (ix86_option_override_internal): Ditto.
6317         (get_builtin_code_for_version): Ditto.
6318
6319 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6320             Monk Chiang  <sh.chiang04@gmail.com>
6321
6322         * config/nds32/nds32.h (FIRST_PSEUDO_REGISTER): Modify.
6323         (FIXED_REGISTERS): Reserve more register numbers.
6324         (CALL_USED_REGISTERS): Likewise.
6325         (REG_ALLOC_ORDER): Likewise.
6326         (REG_CLASS_CONTENTS): Likewise.
6327         (REGISTER_NAMES): Likewise.
6328
6329 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6330             Kito Cheng  <kito.cheng@gmail.com>
6331
6332         * config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI
6333         V2SI.
6334         * config/nds32/iterators.md: Add vector mode iterators and attributes.
6335
6336 2017-11-16  Steven Munroe  <munroesj@gcc.gnu.org>
6337
6338         * config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct
6339         parameter list for vec_splats.
6340
6341 2017-11-16  Joseph Myers  <joseph@codesourcery.com>
6342
6343         * doc/invoke.texi (-std=c17): Refer to 2018 expected publication
6344         date of C17.
6345         (-std=c18, -std=iso9899:2018, -std=gnu18): Document option aliases.
6346
6347 2017-11-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
6348
6349         PR bootstrap/82856
6350         * doc/install.texi: Document incompatibility of Perl >=5.6.26
6351         with the required version of automake 1.11.6.
6352
6353 2017-11-16  Pat Haugen  <pthaugen@us.ibm.com>
6354
6355         * rs6000/power9.md (power9fpdiv): New automaton and cpu_unit defined
6356         for it.
6357         (DU_C2_3_power9): Correct reservation combinations.
6358         (FP_DIV_power9, VEC_DIV_power9): New.
6359         (power9-alu): Split out rotate/shift...
6360         (power9-rot): ...to here, correct dispatch resource.
6361         (power9-cracked-alu, power9-mul, power9-mul-compare): Correct dispatch
6362         resource.
6363         (power9-fp): Correct latency.
6364         (power9-sdiv): Add div/sqrt resource.
6365         (power9-ddiv): Correct latency, add div/sqrt resource.
6366         (power9-sqrt, power9-dsqrt): Add div/sqrt resource.
6367         (power9-vecfdiv, power9-vecdiv): Correct latency, add div/sqrt
6368         resource.
6369         (power9-qpdiv, power9-qpmul): Adjust resource usage.
6370
6371 2017-11-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
6372
6373         * config/rs6000/rs6000.c (rs6000_expand_builtin): Do not do the
6374         switch statement mapping KF built-ins to TF built-ins if we don't
6375         have the proper ISA 3.0 assembler support.
6376
6377 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6378
6379         * tree-emutls.c (lower_emutls_data): Remove unused bb_freq.
6380         (lower_emutls_function_body): Do not compute it.
6381
6382 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6383
6384         * ipa-split.c (split_bb_info): Turn time to sreal.
6385         (split_point): Likewise.
6386         (dump_split_point): Likewise.
6387         (fine_split_points): Likewise.
6388         (execute_split_functions): Only zero split_bbs; turn time to sreals.
6389
6390 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6391
6392         * ipa-fnsummary.c (analyze_function_body): Accumulate time consistently
6393         in sreal.
6394
6395 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6396
6397         * predict.c (combine_predictions_for_bb): Preserve zero predicted
6398         edges.
6399         (expensive_function_p): Remove useless assert.
6400         (determine_unlikely_bbs): Propagate also forward; determine cold blocks
6401
6402 2017-11-16  Martin Sebor  <msebor@redhat.com>
6403
6404         PR tree-optimization/82588
6405         PR tree-optimization/82583
6406         * tree-vrp.c (check_array_ref): Handle flexible array members,
6407         string literals, and inner indices.
6408         (search_for_addr_array): Add detail to diagnostics.
6409
6410 2017-11-16  Nathan Sidwell  <nathan@acm.org>
6411
6412         PR c++/82836
6413         PR c++/82737
6414         * tree.h (COPY_DECL_RTL): Rename parms for clarity.
6415         (SET_DECL_ASSEMBLER_NAME): Forward to
6416         overwrite_decl_assembler_name.
6417         (COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity.
6418         (overwrite_decl_assembler_name): Declare.
6419         * tree.c (overwrite_decl_assembler_name): New.
6420         * langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare.
6421         (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default.
6422         (LANG_HOOKS_INITIALIZER): Add it.
6423         * langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name.
6424         * langhooks.c (lhd_set_decl_assembler_name): Use
6425         SET_DECL_ASSEMBLER_NAME.
6426         (lhd_overwrite_decl_assembler_name): Default implementation.
6427
6428 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
6429             Jackson Woodruff  <jackson.woodruff@arm.com>
6430
6431         PR tree-optimization/71026
6432         * match.pd: Canonicalize constant multiplies in division.
6433
6434 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
6435
6436         * opts.c (default_options_table): Add OPT_fomit_frame_pointer entry.
6437         * common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE):
6438         Remove OPT_fomit_frame_pointer entry.
6439         * common/config/arc/arc-common.c: Likewise.
6440         * common/config/arm/arm-common.c: Likewise.
6441         * common/config/avr/avr-common.c: Likewise.
6442         * common/config/c6x/c6x-common.c: Likewise.
6443         * common/config/cr16/cr16-common.c: Likewise.
6444         * common/config/cris/cris-common.c: Likewise.
6445         * common/config/epiphany/epiphany-common.c: Likewise.
6446         * common/config/fr30/fr30-common.c: Likewise.
6447         * common/config/frv/frv-common.c: Likewise.
6448         * common/config/ia64/ia64-common.c: Likewise.
6449         * common/config/iq2000/iq2000-common.c: Likewise.
6450         * common/config/lm32/lm32-common.c: Likewise.
6451         * common/config/m32r/m32r-common.c: Likewise.
6452         * common/config/mcore/mcore-common.c: Likewise.
6453         * common/config/microblaze/microblaze-common.c: Likewise.
6454         * common/config/mips/mips-common.c: Likewise.
6455         * common/config/mmix/mmix-common.c: Likewise.
6456         * common/config/mn10300/mn10300-common.c: Likewise.
6457         * common/config/nios2/nios2-common.c: Likewise.
6458         * common/config/pa/pa-common.c: Likewise.
6459         * common/config/pdp11/pdp11-common.c: Likewise.
6460         * common/config/powerpcspe/powerpcspe-common.c: Likewise.
6461         * common/config/riscv/riscv-common.c: Likewise.
6462         * common/config/rs6000/rs6000-common.c: Likewise.
6463         * common/config/rx/rx-common.c: Likewise.
6464         * common/config/s390/s390-common.c: Likewise.
6465         * common/config/sh/sh-common.c: Likewise.
6466         * common/config/sparc/sparc-common.c: Likewise.
6467         * common/config/tilegx/tilegx-common.c: Likewise.
6468         * common/config/tilepro/tilepro-common.c: Likewise.
6469         * common/config/v850/v850-common.c: Likewise.
6470         * common/config/visium/visium-common.c: Likewise.
6471         * common/config/xstormy16/xstormy16-common.c: Likewise.
6472         * common/config/xtensa/xtensa-common.c: Likewise.
6473         * invoke.texi (-fomit-frame-pointer): Update documentation.
6474
6475 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6476
6477         * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq.
6478
6479 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6480
6481         * cfg.c (scale_bbs_frequencies_int,
6482         cale_bbs_frequencies_gcov_type): Remove.
6483         * cfg.h (scale_bbs_frequencies_int,
6484         cale_bbs_frequencies_gcov_type): Remove.
6485
6486 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6487
6488         * tree-ssa-loop-manip.c
6489         (scale_dominated_blocks_in_loop): Update to profile counts.
6490         (tree_transform_and_unroll_loop): Likewise.
6491
6492 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6493
6494         * tree-vect-loop-manip.c (vect_do_peeling): Do not use
6495         scale_bbs_frequencies_int.
6496
6497 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6498
6499         * final.c (compute_alignments): Use counts rather than frequencies.
6500
6501 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6502
6503         * cfgloopanal.c: Include sreal.h
6504         (average_num_loop_insns): Use counts and sreal for accounting.
6505
6506 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6507
6508         * cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile
6509         manipulation.
6510
6511 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6512             Kito Cheng  <kito.cheng@gmail.com>
6513
6514         * config/nds32/constraints.md: Provide more constraints.
6515         * config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES,
6516         REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to
6517         support constraints usage.
6518
6519 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6520
6521         * config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove.
6522
6523 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6524             Kito Cheng  <kito.cheng@gmail.com>
6525
6526         * config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string.
6527         * config/nds32/nds32.opt: Refine the layout.
6528         * config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2,
6529         TARGET_EXT_STRING): Support new options.
6530         * config/nds32/nds32.h: Likewise.
6531         * config/nds32/nds32.md: Likewise.
6532         * config/nds32/nds32-predicates.c: Likewise.
6533         * config/nds32/constraints.md: Likewise.
6534         * common/config/nds32/nds32-common.c: Likewise.
6535
6536 2017-11-16  Julia Koval  <julia.koval@intel.com>
6537
6538         PR target/82983
6539         * config/i386/gfniintrin.h: Add sse check.
6540         * config/i386/i386.c (ix86_expand_builtin): Fix gfni check.
6541
6542 2017-11-16  Julia Koval  <julia.koval@intel.com>
6543
6544         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET,
6545         OPTION_MASK_ISA_AVX512VBMI2_UNSET): New.
6546         (ix86_handle_option): Handle -mavx512vbmi2.
6547         * config/i386/cpuid.h: Add bit_AVX512VBMI2.
6548         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
6549         * config/i386/i386-c.c (__AVX512VBMI2__): New.
6550         * config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2.
6551         (ix86_valid_target_attribute_inner_p): Ditto.
6552         * config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New.
6553         * config/i386/i386.opt (mavx512vbmi2): New option.
6554         * doc/invoke.texi: Add new option.
6555
6556 2017-11-16  Julia Koval  <julia.koval@intel.com>
6557
6558         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8,
6559         _mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8,
6560         _mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8,
6561         _mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8,
6562         _mm512_gf2p8mul_epi8): New intrinsics.
6563         * config/i386/i386-builtin-types.def
6564         (V64QI_FTYPE_V64QI_V64QI): New type.
6565         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi,
6566         __builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi,
6567         __builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi,
6568         __builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins.
6569         * config/i386/sse.md (vgf2p8mulb_*): New pattern.
6570         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
6571
6572 2017-11-15  Uros Bizjak  <ubizjak@gmail.com>
6573
6574         * config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop
6575         explicitly as a stream of bytes.
6576
6577 2017-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6578
6579         * config/rs6000/altivec.h (vec_xst_be): New #define.
6580         * config/rs6000/altivec.md (altivec_vperm_<mode>_direct): Rename
6581         and externalize from *altivec_vperm_<mode>_internal.
6582         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro
6583         instantiation.
6584         (XL_BE_V8HI): Likewise.
6585         (XL_BE_V4SI): Likewise.
6586         (XL_BE_V4SI): Likewise.
6587         (XL_BE_V2DI): Likewise.
6588         (XL_BE_V4SF): Likewise.
6589         (XL_BE_V2DF): Likewise.
6590         (XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation.
6591         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct
6592         all array entries with these keys: VSX_BUILTIN_VEC_XL,
6593         VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST.  Add entries for key
6594         VSX_BUILTIN_VEC_XST_BE.
6595         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove.
6596         (altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_*
6597         built-ins.
6598         (altivec_init_builtins): Replace conditional calls to def_builtin
6599         for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and
6600         __builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR
6601         with unconditional calls.  Remove calls to def_builtin for
6602         __builtin_vsx_le_be_<mode>.  Add a call to def_builtin for
6603         __builtin_vec_xst_be.
6604         * config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn
6605         to define_expand, and add alternate RTL generation for P8.
6606         (*vsx_ld_elemrev_v8hi_internal): New define_insn based on
6607         vsx_ld_elemrev_v8hi.
6608         (vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and
6609         add alternate RTL generation for P8.
6610         (*vsx_ld_elemrev_v16qi_internal): New define_insn based on
6611         vsx_ld_elemrev_v16qi.
6612         (vsx_st_elemrev_v8hi): Convert define_insn
6613         to define_expand, and add alternate RTL generation for P8.
6614         (*vsx_st_elemrev_v8hi_internal): New define_insn based on
6615         vsx_st_elemrev_v8hi.
6616         (vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and
6617         add alternate RTL generation for P8.
6618         (*vsx_st_elemrev_v16qi_internal): New define_insn based on
6619         vsx_st_elemrev_v16qi.
6620
6621 2017-11-15  H.J. Lu  <hongjiu.lu@intel.com>
6622
6623         PR target/82990
6624         * config/i386/i386.c (pass_insert_vzeroupper::gate): Remove
6625         TARGET_AVX512ER check.
6626         (ix86_option_override_internal): Set MASK_VZEROUPPER if
6627         neither -mzeroupper nor -mno-zeroupper is used and
6628         TARGET_EMIT_VZEROUPPER is set.
6629         * config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New.
6630         * config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER.
6631
6632 2017-11-15  Will Schmidt  <will_schmidt@vnet.ibm.com>
6633
6634         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
6635         folding of vector compares.
6636         (fold_build_vec_cmp): New helper function.
6637         (fold_compare_helper): New helper function.
6638         (builtin_function_type): Add compare builtins to the list of functions
6639         having unsigned arguments.  Cosmetic updates to comment indentation.
6640         * config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify
6641         the not+eq combination.
6642
6643 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
6644
6645         PR tree-optimization/82726
6646         PR tree-optimization/70754
6647         * tree-predcom.c (order_drefs_by_pos): New function.
6648         (combine_chains): Move code setting has_max_use_after to...
6649         (try_combine_chains): ...here.  New parameter.  Sort combined chains
6650         according to position information.
6651         (tree_predictive_commoning_loop): Update call to above function.
6652         (update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New.
6653
6654 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
6655
6656         PR tree-optimization/82726
6657         Revert
6658         2017-01-23  Bin Cheng  <bin.cheng@arm.com>
6659
6660         PR tree-optimization/70754
6661         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
6662         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
6663         combined stmt before it if not NULL.
6664         (combine_chains): Process refs reversely and compute dominance point
6665         for root ref.
6666
6667         Revert
6668         2017-02-23  Bin Cheng  <bin.cheng@arm.com>
6669
6670         PR tree-optimization/79663
6671         * tree-predcom.c (combine_chains): Process refs in reverse order
6672         only for ZERO length chains, and add explaining comment.
6673
6674 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
6675
6676         * config/arm/arm-cpus.in (armv8_3, ARMv8_3a, armv8.3-a): New
6677         * config/arm/arm-tables.opt (armv8.3-a): Regenerated.
6678         * doc/invoke.texi (ARM Options): Add armv8.3-a.
6679
6680 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
6681
6682         * config/arm/arm.h (TARGET_DOTPROD): Add arm_arch8_2.
6683
6684 2017-11-15  Martin Liska  <mliska@suse.cz>
6685
6686         * tree-cfg.c (pass_warn_function_return::execute):
6687         Compare warn_return_type for greater than zero.
6688
6689 2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>
6690
6691         PR target/82941
6692         PR target/82942
6693         * config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition
6694         to return true on Xeon and not on Xeon Phi.
6695         (ix86_check_avx256_register): Changed to ...
6696         (ix86_check_avx_upper_register): ... this. Add extra check for
6697         VALID_AVX512F_REG_OR_XI_MODE.
6698         (ix86_avx_u128_mode_needed): Changed
6699         ix86_check_avx256_register to ix86_check_avx_upper_register.
6700         (ix86_check_avx256_stores): Changed to ...
6701         (ix86_check_avx_upper_stores): ... this. Changed
6702         ix86_check_avx256_register to ix86_check_avx_upper_register.
6703         (ix86_avx_u128_mode_after): Changed
6704         avx_reg256_found to avx_upper_reg_found. Changed
6705         ix86_check_avx256_stores to ix86_check_avx_upper_stores.
6706         (ix86_avx_u128_mode_entry): Changed
6707         ix86_check_avx256_register to ix86_check_avx_upper_register.
6708         (ix86_avx_u128_mode_exit): Ditto.
6709         * config/i386/i386.h: (host_detect_local_cpu): New define.
6710
6711 2017-11-15  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
6712
6713         * config/arm/xgene1.md (xgene1): Split into automatons
6714         xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd.
6715         (xgene1_f_load): Adjust reservations and/or types.
6716         (xgene1_f_store): Likewise.
6717         (xgene1_load_pair): Likewise.
6718         (xgene1_store_pair): Likewise.
6719         (xgene1_fp_load1): Likewise.
6720         (xgene1_load1): Likewise.
6721         (xgene1_store1): Likewise.
6722         (xgene1_move): Likewise.
6723         (xgene1_alu): Likewise.
6724         (xgene1_simd): Likewise.
6725         (xgene1_bfm): Likewise.
6726         (xgene1_neon_load1): Likewise.
6727         (xgene1_neon_store1): Likewise.
6728         (xgene1_neon_logic): Likewise.
6729         (xgene1_neon_st1): Likewise.
6730         (xgene1_neon_ld1r): Likewise.
6731         (xgene1_alu_cond): Added.
6732         (xgene1_shift_reg): Likwise.
6733         (xgene1_bfx): Likewise.
6734         (xgene1_mul): Split into xgene1_mul32, xgene1_mul64.
6735
6736 2017-11-15  Jakub Jelinek  <jakub@redhat.com>
6737
6738         PR target/82981
6739         * internal-fn.c: Include gimple-ssa.h, tree-phinodes.h and
6740         ssa-iterators.h.
6741         (can_widen_mult_without_libcall): New function.
6742         (expand_mul_overflow): If only checking unsigned mul overflow,
6743         not result, and can do efficiently MULT_HIGHPART_EXPR, emit that.
6744         Don't use WIDEN_MULT_EXPR if it would involve a libcall, unless
6745         no other way works.  Add MULT_HIGHPART_EXPR + MULT_EXPR support.
6746         (expand_DIVMOD): Formatting fix.
6747         * expmed.h (expand_mult): Add NO_LIBCALL argument.
6748         * expmed.c (expand_mult): Likewise.  Use OPTAB_WIDEN rather
6749         than OPTAB_LIB_WIDEN if NO_LIBCALL is true, and allow it to fail.
6750
6751         PR tree-optimization/82977
6752         * tree-ssa-strlen.c (strlen_optimize_stmt): Pass a reference to a copy
6753         constructed temporary to strlen_to_stridx.put.
6754
6755 2017-11-15  Martin Liska  <mliska@suse.cz>
6756
6757         * configure.ac: Remove -fkeep-inline-functions from coverage_flags.
6758         * configure: Regenerate.
6759
6760 2017-11-15  Martin Liska  <mliska@suse.cz>
6761
6762         PR target/82927
6763         * config/sh/sh-mem.cc: Use proper probability for
6764         REG_BR_PROB_NOTE.
6765
6766 2017-11-14  Jeff Law  <law@redhat.com>
6767
6768         * explow.c (anti_adjust_stack_and_probe_stack_clash): Avoid probing
6769         the red zone for stack_clash_protection_final_dynamic_probe targets
6770         when the total dynamic stack size is zero bytes.
6771
6772         * tree-ssa-threadupdate.c (thread_through_all_blocks): Thread
6773         blocks is post order.
6774
6775 2017-11-15  Alexandre Oliva  <aoliva@redhat.com>
6776
6777         * dumpfile.h (TDF_COMPARE_DEBUG): New.
6778         * final.c (rest_of_clean_state): Set it for the
6779         -fcompare-debug dump.
6780         * tree-pretty-print.c (dump_generic_node): Omit OBJ_TYPE_REF
6781         class when TDF_COMPARE_DEBUG is set.
6782
6783         * dwarf2out.c (gen_producer_string): Discard
6784         OPT_fcompare_debug.
6785
6786 2017-11-15  Joseph Myers  <joseph@codesourcery.com>
6787
6788         PR c/81156
6789         * doc/extend.texi (Other Builtins): Document __builtin_tgmath.
6790         * ginclude/tgmath.h (__tg_cplx, __tg_ldbl, __tg_dbl, __tg_choose)
6791         (__tg_choose_2, __tg_choose_3, __TGMATH_REAL_1_2)
6792         (__TGMATH_REAL_2_3): Remove macros.
6793         (__TGMATH_CPLX, __TGMATH_CPLX_2, __TGMATH_REAL, __TGMATH_REAL_2)
6794         (__TGMATH_REAL_3, __TGMATH_CPLX_ONLY): Define using
6795         __builtin_tgmath.
6796         (frexp, ldexp, nexttoward, scalbn, scalbln): Define using
6797         __TGMATH_REAL_2.
6798         (remquo): Define using __TGMATH_REAL_3.
6799
6800 2017-11-14  Jeff Law  <law@redhat.com>
6801
6802         * vr-values.c: New file with contents extracted from tree-vrp.c.
6803         * Makefile.in (OBJS): Add vr-values.o
6804         * tree-vrp.h (set_value_range_to_nonnull): Prototype.
6805         (set_value_range, set_and_canonicalize_value_range): Likewise.
6806         (vrp_bitmap_equal_p, range_is_nonnull): Likewise.
6807         (value_range_constant_singleton, symbolic_range_p): Likewise.
6808         (compare_values, compare_values_warnv, vrp_val_is_min): Likewise.
6809         (vrp_val_is_max, copy_value_range, set_value_range_to_value): Likewise.
6810         (extract_range_from_binary_expr_1, vrp_val_min, vrp_val_max): Likewise.
6811         (set_value_range_to_null, range_int_cst_p, opreand_less_p): Likewise.
6812         (find_case_label_range, find_case_label_index): Likewise.
6813         (zero_nonzero_bits_from_vr, overflow_comparison_p): Likewise.
6814         (range_int_cst_singleton_p, value_inside_range): Likewise.
6815         (get_single_symbol): Likewise.
6816         (switch_update): Move structure definition here.
6817         (to_remove_edges, to_update_switch_stmts): Provide externs.
6818         * tree-vrp.c: Move all methods for vr-values class to vr-values.c
6819         (vrp_val_max, vrp_val_min, vrp_val_is_max): Make externally visible.
6820         (vrp_val_is_min, set_value_range): Likewise.
6821         (set_and_canonicalize_value_range, copy_value_range): Likewise.
6822         (set_value_range_to_value, set_value_range_to_nonnull): Likewise.
6823         (set_value_range_to_null, vrp_bitmap_equal_p): Likewise.
6824         (range_is_nonnull, range_int_cst_p): Likewwise.
6825         (range_int_cst_singleton_p, symbolic_range_p): Likewise.
6826         (get_single_symbol, operand_less_p): Likewise
6827         (compare_values_warnv, compare_values): Likewise.
6828         (value_inside_range, value_range_constant_singleton): Likewise.
6829         (zero_nonzero_bitgs_from_vr): Likewise.
6830         (extract_range_from_binary_expr_1): Likewise.
6831         (overflow_comparison_p): Likewise.
6832         (to_remove_edges, to_update_switch_stmts): Likewise.
6833         (find_case_label-index, find_case_label_range): Likewise.
6834         (switch_update, set_value_range_to_nonnegative): Remove.
6835         (set_value_range_to_truthvalue): Likewise.
6836         (symbolic_range_based_on_p, gimple_assign_nonzero_p): Likewise.
6837         (gimple_stmt_nonzero_p, compare_ranges): Likewise.
6838         (compare_range_with_value, vrp_valueize, vrp_valueize_1): Likewise.
6839         (find_case_label_ranges, test_for_singularity): Likewise.
6840         (range_fits_type_p, simplify_conversion_using_ranges): LIkewise.
6841         (x_vr_values): Move to its remaining use site.
6842
6843 2017-11-10  Jeff Law  <law@redhat.com>
6844
6845         * vr-values.h (VR_INITIALIZER): Move #define here.
6846         * gimple-ssa-evrp.c: New file with contents extracted from tree-vrp.c
6847         * Makefile.in (OBJS): Add tree-evrp.o
6848         * tree-vrp.h (assert_info): Move structure definition here.
6849         (set_value_range_to_varying): Prototype.
6850         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
6851         (infer_value_range, register_edge_assert_for): Likewise.
6852         (stmt_interesting_for_vrp): Likewise.
6853         * tree-vrp.c: Move all methods for evrp class into gimple-ssa-evrp.c.
6854         (set_value_range_to_varying): No longer static.
6855         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
6856         (infer_value_range, register_edge_assert_for): Likewise.
6857
6858 2017-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
6859
6860         * config/rs6000/rs6000.md (bswapdi2): On 32-bit ISA 3.0, don't
6861         generate the XXBRD instruction.
6862
6863         * config/rs6000/rs6000-c.c (is_float128_p): New helper function.
6864         (rs6000_builtin_type_compatible): Treat _Float128 and long double
6865         as being compatible if -mabi=ieeelongdouble.
6866         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros
6867         to setup float128 built-ins with hardware support.
6868         (BU_FLOAT128_HW_2): Likewise.
6869         (BU_FLOAT128_HW_3): Likewise.
6870         (BU_FLOAT128_HW_VSX_1): Likewise.
6871         (BU_FLOAT128_HW_VSX_2): Likewise.
6872         (scalar_extract_expq): Change float128 built-in functions to
6873         accommodate having both KFmode and TFmode functions.  Use the
6874         KFmode variant as the default.
6875         (scalar_extract_sigq): Likewise.
6876         (scalar_test_neg_qp): Likewise.
6877         (scalar_insert_exp_q): Likewise.
6878         (scalar_insert_exp_qp): Likewise.
6879         (scalar_test_data_class_qp): Likewise.
6880         (sqrtf128_round_to_odd): Delete processing the round to odd
6881         built-in functions as special built-in functions, and define them
6882         as float128 built-ins.  Use the KFmode variant as the default.
6883         (truncf128_round_to_odd): Likewise.
6884         (addf128_round_to_odd): Likewise.
6885         (subf128_round_to_odd): Likewise.
6886         (mulf128_round_to_odd): Likewise.
6887         (divf128_round_to_odd): Likewise.
6888         (fmaf128_round_to_odd): Likewise.
6889         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
6890         support for KFmode and TFmode xststdcqp calls.
6891         (rs6000_expand_builtin): If long double is IEEE 128-bit floating
6892         point, switch the built-in handlers for the get/set float128
6893         exponent, get float128 mantissa, float128 test built-ins, and the
6894         float128 round to odd built-in functions.  Eliminate creating the
6895         float128 round to odd built-in functions as special built-ins.
6896         (rs6000_init_builtins): Eliminate special creation of the float128
6897         round to odd built-in functions.
6898         * config/rs6000/vsx.md (xsxexpqp_<mode>): Change float128 built-in
6899         function insns to support both TFmode and KFmode variants.
6900         (xsxsigqp_<mode>): Likewise.
6901         (xsiexpqpf_<mode>): Likewise.
6902         (xsiexpqp_<mode>): Likewise.
6903         (xststdcqp_<mode>): Likewise.
6904         (xststdcnegqp_<mode>): Likewise.
6905         (xststdcqp_<mode>): Likewise.
6906
6907 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6908
6909         * tree-ssa-threadupdate.c (compute_path_counts): Remove
6910         unused path_in_freq_ptr parameter.
6911         (ssa_fix_duplicate_block_edges): Do not pass around path_in_freq
6912
6913 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6914
6915         * ipa-inline.c (edge_badness): Dump sreal frequency.
6916         (compute_inlined_call_time): Match natural implementaiton ...
6917         * ipa-fnsummary.c (estimate_edge_size_and_time): ... here; remove
6918         forgotten division by CGRAPH_FREQ_BASE.
6919
6920 2017-11-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6921
6922         * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since
6923         Solaris 11.  Update comment.
6924         * configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12
6925         renaming.
6926         * config/sol2.h (STARTFILE_SPEC): Likewise.
6927         * configure: Regenerate.
6928
6929 2017-11-14  Carl Love  <cel@us.ibm.com>
6930
6931         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Remove
6932         le_ and be_ prefixes to swap* variables.  Remove
6933         if (VECTOR_ELT_ORDER_BIG) statement. Remove E_V16QImode case
6934         statements.
6935
6936 2017-11-14  Jason Merrill  <jason@redhat.com>
6937
6938         Support GTY((cache)) on hash_map.
6939         * hash-traits.h (ggc_remove): Add ggc_maybe_mx member function.
6940         (ggc_cache_remove): Override it instead of ggc_mx.
6941         * hash-table.h (gt_ggc_mx): Call it instead of ggc_mx.
6942         (gt_cleare_cache): Call ggc_mx instead of gt_ggc_mx.
6943         * hash-map-traits.h (simple_hashmap_traits): Add maybe_mx member.
6944         (simple_cache_map_traits): Override maybe_mx.
6945         * hash-map.h (hash_entry): Add ggc_maybe_mx and keep_cache_entry.
6946         (hash_map): Friend gt_cleare_cache.
6947         (gt_cleare_cache): New.
6948         * tree.h (tree_cache_traits): New hash_map traits class.
6949         (tree_cache_map): New typedef.
6950
6951 2017-11-14  Richard Biener  <rguenther@suse.de>
6952
6953         * tree-cfgcleanup.c (cleanup_control_expr_graph): Remove first_p
6954         paramter and handling.
6955         (cleanup_control_flow_bb): Likewise.
6956         (cleanup_control_flow_pre): New helper performing a DFS walk
6957         to call cleanup_control_flow_bb in PRE order.
6958         (cleanup_tree_cfg_1): Do the first phase of cleanup_control_flow_bb
6959         via cleanup_control_flow_pre.
6960
6961 2017-11-14  James Greenhalgh  <james.greenhalgh@arm.com>
6962
6963         * config/aarch64/aarch64-simd.md
6964         (aarch64_simd_bsl<mode>_internal): Remove DImode.
6965         (*aarch64_simd_bsl<mode>_alt): Likewise.
6966         (aarch64_simd_bsldi_internal): New.
6967         (aarch64_simd_bsldi_alt): Likewise.
6968
6969 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6970
6971         * tracer.c (better_p): Do not compare frequencies.
6972         * reg-stack.c (better_edge): Likewise.
6973         * shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts
6974         and back.
6975
6976 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6977
6978         * auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count.
6979         * cgraphunit.c (cgraph_node::expand_thunk): Use update_max_bb_count.
6980         * ipa-utils.c (ipa_merge_profiles): Use update_max_bb_count.
6981         * lto-streamer-in.c (input_function): Use update_max_bb_count.
6982         * omp-expand.c (expand_omp_taskreg): Use update_max_bb_count.
6983         * predict.c (maybe_hot_frequency_p): Inline to ...
6984         (maybe_hot_count_p): ... here; rewrite to counts.
6985         (counts_to_freqs): Rename to ...
6986         (update_max_bb_count): ... this one.
6987         (expensive_function_p): Use counts.
6988         (estimate_bb_frequencies): Update.
6989         (rebuild_frequencies): Update.
6990         * predict.h (counts_to_freqs): Rename to ...
6991         (update_max_bb_count): ... this one.
6992         * profile.c (compute_branch_probabilities): Add debug info
6993         * tree-inline.c (expand_call_inline): Update debug info.
6994         (optimize_inline_calls): Use update_max_bb_count..
6995         (tree_function_versioning): Use update_max_bb_count..
6996         * value-prof.c (gimple_value_profile_transformations):
6997         Do not use update_max_bb_count.
6998
6999 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
7000
7001         * ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time):
7002         always use frequencies.
7003
7004 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
7005
7006         * bb-reorder.c: Remove frequencies from comments.
7007         (better_edge_p): Use profile counts.
7008         (find_traces): Dump profile counts.
7009         (rotate_loop): Use profile counts.
7010         (find_traces_1_round): Likewise.
7011         (connect_better_edge_p): Use counts instead of probabilities for
7012         reverse walk.
7013         (copy_bb_p): Drop early check for non-0 frequency.
7014         (sanitize_hot_paths): Update comments.
7015
7016 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
7017
7018         * ipa-split.c (struct split_point): Add count.
7019         (consider_split): Do not compute incoming frequency; compute incoming
7020         count and store it to split_point.
7021         (split_function): Set count of the call to split part correctly.
7022
7023 2017-11-13  Carl Love  <cel@us.ibm.com>
7024
7025         * config/rs6000/altivec.md (altivec_vsumsws_be): Add define_expand.
7026
7027 2017-11-13  Tom Tromey  <tom@tromey.com>
7028
7029         * doc/cpp.texi (Variadic Macros): Document __VA_OPT__.
7030
7031 2017-11-13  Carl Love  <cel@us.ibm.com>
7032
7033         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
7034         Add support for builtins:
7035         unsigned int vec_first_{,miss}_match_{,or_eos}index,
7036         vector {un,}signed {char,int,short},
7037         vector {un,}signed {char,int,short}) arguments.
7038         * config/rs6000/rs6000-builtin.def (VFIRSTMATCHINDEX,
7039         VFIRSTMATCHOREOSINDEX, VFIRSTMISMATCHINDEX, VFIRSTMISMATCHOREOSINDEX):
7040         Add BU_P9V_AV_2 expansions for the builtins.
7041         * config/rs6000/altivec.h (vec_first_match_index,
7042         vec_first_mismatch_index, vec_first_match_or_eos_index,
7043         vec_first_mismatch_or_eos_index): Add #defines for the builtins.
7044         * config/rs6000/rs6000-protos.h (bytes_in_mode): Add
7045         new extern declaration.
7046         * config/rs6000/rs6000.c (bytes_in_mode): Add new function.
7047         * config/rs6000/vsx.md (first_match_index_<mode>,
7048         first_match_or_eos_index_<mode>, first_mismatch_index_<mode>,
7049         first_mismatch_or_eos_index_<mode>): Add define expand.
7050         (vctzlsbb_<mode>): Add mode field to define_insn for vctzlsbb.
7051         * doc/extend.texi: Update the built-in documenation file for the new
7052         built-in functions.
7053
7054 2017-11-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
7055
7056         * match.pd: Convert fminf<N>, fminf<N>x, fmax<N>, and fmax<N>x
7057         into the min/max operations for _Float<N> and _Float<N>X types.
7058
7059 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
7060
7061         PR lto/81351
7062         * dwarf2out.c (do_eh_frame): New static variable.
7063         (dwarf2out_begin_prologue): Set it.
7064         (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame.
7065
7066 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
7067
7068         * tree-ssa-coalesce.c (coalesce_cost): Fix formating.
7069
7070         * tree-ssa-sink.c (select_best_block): Do not use frequencies.
7071
7072 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
7073
7074         PR lto/81351
7075         * debug.h (dwarf2out_do_eh_frame): Declare.
7076         * dwarf2cfi.c (dwarf2out_do_eh_frame): New predicate.
7077         (dwarf2out_do_frame): Use it.
7078         (dwarf2out_do_cfi_asm): Likewise.
7079         * dwarf2out.c (dwarf2out_frame_finish): Likewise.
7080         (dwarf2out_assembly_start): Likewise.
7081         (dwarf2out_begin_prologue): Fix comment.
7082         * toplev.c (compile_file): Always call dwarf2out_frame_finish
7083         if the target needs either debug or unwind DWARF2 info.
7084         * lto-opts.c (lto_write_options): Do not save -fexceptions,
7085         -fnon-call-exceptions, -ffp-contract, -fmath-errno, -fsigned-zeros,
7086         -ftrapping-math, -ftrapv and -fwrapv.
7087
7088 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
7089
7090         * cgraph.c (cgraph_edge::sreal_frequency): New function.
7091         * cgraph.h (cgraph_edge::sreal_frequency): Declare.
7092         * ipa-fnsummary.c (dump_ipa_call_summary): Use sreal_frequency.
7093         (estimate_edge_size_and_time): Likewise.
7094         (ipa_merge_fn_summary_after_inlining): Likewise.
7095         * ipa-inline.c (cgraph_freq_base_rec): Remove.
7096         (compute_uninlined_call_time): Use sreal_frequency.
7097         (compute_inlined_call_time): Likewise.
7098         (ipa_inline): Do not initialize cgraph_freq_base_rec.
7099         * profile-count.c: Include sreal.h.
7100         (profile_count::to_sreal_scale): New.
7101         * profile-count.h: Forward declare sreal.
7102         (profile_count::to_sreal_scale): Declare.
7103
7104 2017-11-13  Nathan Sidwell  <nathan@acm.org>
7105
7106         * diagnostic.c (maybe_line_and_column): New.
7107         (diagnostic_get_location_text): Use it.
7108         (diagnostic_report_current_module): Likewise.
7109         (test_diagnostic_get_location_text): Add tests.
7110
7111 2017-11-13  Luis Machado  <luis.machado@linaro.org>
7112
7113         * doc/md.texi (Specifying processor pipeline description): Fix
7114         incorrect latency for the div instruction example.
7115
7116 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
7117
7118         PR tree-optimization/78821
7119         * gimple-ssa-store-merging.c (compatible_load_p): Don't require
7120         that bit_not_p is the same.
7121         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
7122         (split_group): Count precisely bit_not_p bits in each statement.
7123         (invert_op): New function.
7124         (imm_store_chain_info::output_merged_store): Use invert_op to
7125         emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some
7126         but not all orig_stores have BIT_NOT_EXPR in the corresponding spots.
7127
7128 2017-11-13  Martin Liska  <mliska@suse.cz>
7129
7130         * gcov.c (struct coverage_info): Remove typedef of coverage_t.
7131         (struct source_info): Likewise.
7132         (add_branch_counts): Likewise.
7133         (add_line_counts): Likewise.
7134         (function_summary): Likewise.
7135         (output_intermediate_line): Likewise.
7136         (generate_results): Likewise.
7137
7138 2017-11-13  Martin Liska  <mliska@suse.cz>
7139
7140         * gcov.c (struct block_info): Remove typedef for block_t.
7141         (struct line_info): Likewise.
7142         (line_info::has_block): Likewise.
7143         (EXIT_BLOCK): Likewise.
7144         (unblock): Likewise.
7145         (circuit): Likewise.
7146         (get_cycles_count): Likewise.
7147         (process_file): Likewise.
7148         (read_graph_file): Likewise.
7149         (solve_flow_graph): Likewise.
7150         (find_exception_blocks): Likewise.
7151         (add_line_counts): Likewise.
7152         (accumulate_line_info): Likewise.
7153         (output_line_details): Likewise.
7154
7155 2017-11-13  Martin Liska  <mliska@suse.cz>
7156
7157         * gcov.c (struct arc_info): Remove typedef for arc_t.
7158         (struct line_info): Likewise.
7159         (add_branch_counts): Likewise.
7160         (output_branch_count): Likewise.
7161         (function_info::~function_info): Likewise.
7162         (circuit): Likewise.
7163         (output_intermediate_line): Likewise.
7164         (read_graph_file): Likewise.
7165         (solve_flow_graph): Likewise.
7166         (find_exception_blocks): Likewise.
7167         (add_line_counts): Likewise.
7168         (accumulate_line_info): Likewise.
7169         (output_line_details): Likewise.
7170         (output_function_details): Likewise.
7171
7172 2017-11-13  Martin Liska  <mliska@suse.cz>
7173
7174         * gcov.c (struct function_info): Remove typedef for function_t.
7175         (struct source_info): Likewise.
7176         (source_info::get_functions_at_location): Likewise.
7177         (solve_flow_graph): Likewise.
7178         (find_exception_blocks): Likewise.
7179         (add_line_counts): Likewise.
7180         (output_intermediate_file): Likewise.
7181         (process_file): Likewise.
7182         (generate_results): Likewise.
7183         (release_structures): Likewise.
7184         (read_graph_file): Likewise.
7185         (read_count_file): Likewise.
7186         (accumulate_line_counts): Likewise.
7187         (output_lines): Likewise.
7188
7189 2017-11-13  Martin Liska  <mliska@suse.cz>
7190
7191         * gcov.c (function_info::function_info): Remove num_counts
7192         and add vector<gcov_type>.
7193         (function_info::~function_info): Use the vector.
7194         (process_file): Likewise.
7195         (read_graph_file): Likewise.
7196         (read_count_file): Likewise.
7197         (solve_flow_graph): Likewise.
7198
7199 2017-11-13  Martin Liska  <mliska@suse.cz>
7200
7201         * gcov.c (function_info::is_artificial): New function.
7202         (process_file): Erase all artificial early.
7203         (generate_results): Skip as all artificial are already
7204         removed.
7205
7206 2017-11-13  Martin Liska  <mliska@suse.cz>
7207
7208         * gcov.c (read_graph_file): Store to global vector of functions.
7209         (read_count_file): Iterate the vector.
7210         (process_file): Likewise.
7211         (generate_results): Likewise.
7212         (release_structures): Likewise.
7213
7214 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
7215
7216         PR tree-optimization/82954
7217         * gimple-ssa-store-merging.c
7218         (imm_store_chain_info::coalesce_immediate_stores): If
7219         !infof->ops[N].base_addr, split group if info->ops[N].base_addr.
7220
7221 2017-11-13  Richard Sandiford  <richard.sandiford@linaro.org>
7222
7223         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
7224         Upddate call to ENDIAN_LANE_N.
7225         (aarch64_<sur>dot_lane<vsi2qi>): Use aarch64_endian_lane_rtx.
7226         (aarch64_<sur>dot_laneq<vsi2qi>): Likewise.
7227         (*aarch64_simd_vec_copy_lane<mode>): Update calls to ENDIAN_LANE_N
7228         and use aarch64_endian_lane_rtx.
7229         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
7230
7231 2017-11-12  Tom de Vries  <tom@codesourcery.com>
7232
7233         * config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0).
7234
7235 2017-11-12  Tom de Vries  <tom@codesourcery.com>
7236
7237         * config/elfos.h (ASM_OUTPUT_ASCII): Remove semicolon after macro body.
7238
7239 2017-11-12  Tom de Vries  <tom@codesourcery.com>
7240
7241         * config/cr16/cr16.h (ASM_OUTPUT_LABELREF): Remove semicolon after macro
7242         body.
7243         * config/powerpcspe/xcoff.h (ASM_OUTPUT_LABELREF): Same.
7244         * config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Same.
7245         * defaults.h (ASM_OUTPUT_LABELREF): Same.
7246
7247 2017-11-11  Martin Sebor  <msebor@redhat.com>
7248
7249         PR c/81117
7250         * doc/extend.texi (attribute nonstring): Remove spurious argument.
7251
7252         PR bootstrap/82948
7253         * prefic.c (translate_name): Replace strncpy with memcpy to
7254         avoid -Wstringop-truncation.
7255
7256 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
7257
7258         * tree-ssa-loop-im.c (execute_sm_if_changed): Do not compute freq_sum.
7259
7260 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
7261
7262         * predict.c (maybe_hot_frequency_p): Do not use cfun.
7263
7264 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
7265
7266         * tree-ssa-tail-merge.c (replace_block_by): Fix and re-enable profile
7267         merging.
7268
7269 2017-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
7270
7271         * config/rs6000/rs6000.md (bswaphi2_reg): On ISA 3.0 systems,
7272         enable generating XXBRH if the value is in a vector register.
7273         (bswapsi2_reg): On ISA 3.0 systems, enable generating XXBRW if the
7274         value is in a vector register.
7275         (bswapdi2_reg): On ISA 3.0 systems, always use XXBRD to do
7276         register to register bswap64's instead of doing the GPR sequence
7277         used on previous machines.
7278         (bswapdi2_xxbrd): New insn.
7279         (bswapdi2_reg): Disallow on ISA 3.0.
7280         (register to register bswap64 splitter): Do not split the insn on
7281         ISA 3.0 systems that use XXBRD.
7282
7283 2017-11-10  Martin Sebor  <msebor@redhat.com>
7284
7285         PR c/81117
7286         * config/darwin-c.c (framework_construct_pathname): Replace strncpy
7287         with memcpy.
7288         (find_subframework_file): Same.
7289
7290 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
7291
7292         * auto-profile.c (afdo_indirect_call): Drop frequency.
7293         * cgraph.c (symbol_table::create_edge): Drop frequency argument.
7294         (cgraph_node::create_edge): Drop frequency argument.
7295         (cgraph_node::create_indirect_edge): Drop frequency argument.
7296         (cgraph_edge::make_speculative): Drop frequency arguments.
7297         (cgraph_edge::resolve_speculation): Do not update frequencies
7298         (cgraph_edge::dump_edge_flags): Do not dump frequency.
7299         (cgraph_node::dump): Check consistency in IPA mode.
7300         (cgraph_edge::maybe_hot_p): Use IPA counter.
7301         (cgraph_edge::verify_count_and_frequency): Rename to ...
7302         (cgraph_edge::verify_count): ... this one; drop frequency checking.
7303         (cgraph_node::verify_node): Update.
7304         * cgraph.h (struct cgraph_edge): Drop frequency.
7305         (cgraph_edge::frequency): New function.
7306         * cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass
7307         frequencies.
7308         (cgraph_edge::rebuild_edges): Likewise.
7309         * cgraphclones.c (cgraph_edge::clone): Scale only counts.
7310         (duplicate_thunk_for_node): Do not pass frequency.
7311         (cgraph_node::create_clone): Scale only counts.
7312         (cgraph_node::create_virtual_clone): Do not pass frequency.
7313         (cgraph_node::create_edge_including_clones): Do not pass frequency.
7314         (cgraph_node::create_version_clone): Do not pass frequency.
7315         * cgraphunit.c (cgraph_node::analyze): Do not pass frequency.
7316         (cgraph_node::expand_thunk): Do not pass frequency.
7317         (cgraph_node::create_wrapper): Do not pass frequency.
7318         * gimple-iterator.c (update_call_edge_frequencies): Do not pass
7319         frequency.
7320         * gimple-streamer-in.c (input_bb): Scale only IPA counts.
7321         * ipa-chkp.c (chkp_produce_thunks): Do not pass frequency.
7322         * ipa-cp.c (ipcp_lattice::print): Use frequency function.
7323         (gather_caller_stats): Use frequency function.
7324         (ipcp_cloning_candidate_p): Use frequency function.
7325         (ipcp_propagate_stage): Use frequency function.
7326         (get_info_about_necessary_edges): Use frequency function.
7327         (update_profiling_info): Update only IPA profile.
7328         (update_specialized_profile): Use frequency functoin.
7329         (perhaps_add_new_callers): Update only IPA profile.
7330         * ipa-devirt.c (ipa_devirt): Use IPA profile.
7331         * ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency.
7332         (dump_ipa_call_summary): Use frequency function.
7333         (estimate_edge_size_and_time): Use frequency function.
7334         (ipa_merge_fn_summary_after_inlining): Use frequency function.
7335         * ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile.
7336         * ipa-inline-transform.c (update_noncloned_frequencies): Rename to ..
7337         (update_noncloned_counts): ... ths one; scale counts only.
7338         (clone_inlined_nodes): Do not scale frequency.
7339         (inline_call): Do not pass frequency.
7340         * ipa-inline.c (compute_uninlined_call_time): Use IPA profile.
7341         (compute_inlined_call_time): Use IPA profile.
7342         (want_inline_small_function_p): Use IPA profile.
7343         (want_inline_self_recursive_call_p): Use IPA profile.
7344         (edge_badness): Use IPA profile.
7345         (lookup_recursive_calls): Use IPA profile.
7346         (recursive_inlining): Do not pass frequency.
7347         (resolve_noninline_speculation): Do not update frequency.
7348         (inline_small_functions): Collect max of IPA profile.
7349         (dump_overall_stats): Dump IPA porfile.
7350         (dump_inline_stats): Dump IPA porfile.
7351         (ipa_inline): Collect IPA stats.
7352         * ipa-inline.h (clone_inlined_nodes): Update prototype.
7353         * ipa-profile.c (ipa_propagate_frequency_1): Use frequency function.
7354         (ipa_propagate_frequency): Use frequency function.
7355         (ipa_profile): Cleanup.
7356         * ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency
7357         * ipa-utils.c (ipa_merge_profiles): Merge all profiles.
7358         * lto-cgraph.c (lto_output_edge): Do not stream frequency.
7359         (input_node): Do not stream frequency.
7360         (input_edge): Do not stream frequency.
7361         (merge_profile_summaries): Scale only IPA profiles.
7362         * omp-simd-clone.c (simd_clone_adjust): Do not pass frequency.
7363         * predict.c (drop_profile): Do not recompute frequency.
7364         * trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency.
7365         (ipa_tm_insert_gettmclone_call): Do not pass frequency.
7366         * tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed.
7367         * tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency.
7368         * tree-emutls.c (gen_emutls_addr): Do not pass frequency.
7369         * tree-inline.c (copy_bb): Do not scale frequency.
7370         (expand_call_inline): Do not scale frequency.
7371         (tree_function_versioning): Do not scale frequency.
7372         * ubsan.c (ubsan_create_edge): Do not pass frequency.
7373
7374 2017-11-10  Julia Koval  <julia.koval@intel.com>
7375
7376         * config/i386/gfniintrin.h (_mm_gf2p8affine_epi64_epi8)
7377         (_mm256_gf2p8affine_epi64_epi8, _mm_mask_gf2p8affine_epi64_epi8)
7378         (_mm_maskz_gf2p8affine_epi64_epi8, _mm256_mask_gf2p8affine_epi64_epi8)
7379         (_mm256_maskz_gf2p8affine_epi64_epi8)
7380         (_mm512_mask_gf2p8affine_epi64_epi8, _mm512_gf2p8affine_epi64_epi8)
7381         (_mm512_maskz_gf2p8affine_epi64_epi8): New intrinsics.
7382         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineqb_v64qi)
7383         (__builtin_ia32_vgf2p8affineqb_v32qi)
7384         (__builtin_ia32_vgf2p8affineqb_v16qi): New builtins.
7385         * config/i386/sse.md (vgf2p8affineqb_<mode><mask_name>): New pattern.
7386
7387 2017-11-10  Tamar Christina  <tamar.christina@arm.com>
7388
7389         PR target/82641
7390         * config/arm/arm.c
7391         (arm_option_override): Refactor.
7392         (arm_option_reconfigure_globals): New.
7393         (arm_options_perform_arch_sanity_checks): New.
7394         * config/arm/arm-protos.h (arm_option_reconfigure_globals):
7395         New prototype.
7396         (arm_options_perform_arch_sanity_checks): Likewise
7397
7398 2017-11-10  Pat Haugen  <pthaugen@us.ibm.com>
7399
7400         * rs6000/power9.md (power9-qpdiv): Correct DFU pipe usage.
7401         (power9-qpmul): New.
7402         * rs6000/rs6000.md ("type" attr): Add qmul.
7403         (mul<mode>3, fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw,
7404         *nfms<mode>4_hw, mul<mode>3_odd, fma<mode>4_odd, *fms<mode>4_odd,
7405         *nfma<mode>4_odd, *nfms<mode>4_odd): Change type to qmul.
7406
7407 2017-11-10  Martin Sebor  <msebor@redhat.com>
7408
7409         PR c/81117
7410         * builtins.c (compute_objsize): Handle arrays that
7411         compute_builtin_object_size likes to fail for.  Make extern.
7412         * builtins.h (compute_objsize): Declare.
7413         (check_strncpy_sizes): New function.
7414         (expand_builtin_strncpy): Call check_strncpy_sizes.
7415         * gimple-fold.c (gimple_fold_builtin_strncpy): Implement
7416         -Wstringop-truncation.
7417         (gimple_fold_builtin_strncat): Same.
7418         * gimple.c (gimple_build_call_from_tree): Set call location.
7419         * tree-ssa-strlen.c (strlen_to_stridx): New global variable.
7420         (maybe_diag_bound_equal_length, is_strlen_related_p): New functions.
7421         (handle_builtin_stxncpy, handle_builtin_strncat): Same.
7422         (handle_builtin_strlen): Use strlen_to_stridx.
7423         (strlen_optimize_stmt): Handle flavors of strncat, strncpy, and
7424         stpncpy.
7425         Use strlen_to_stridx.
7426         (pass_strlen::execute): Release strlen_to_stridx.
7427         * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement.
7428         (-Wstringop-truncation): Document new option.
7429
7430 2017-11-10  Martin Liska  <mliska@suse.cz>
7431
7432         PR gcov-profile/82702
7433         * gcov.c (main): Handle intermediate files in a different
7434         way.
7435         (get_gcov_intermediate_filename): New function.
7436         (output_gcov_file): Remove support of intermediate files.
7437         (generate_results): Allocate intermediate file.
7438         (release_structures): Clean-up properly fn_end.
7439         (output_intermediate_file): Start iterating with line 1.
7440
7441 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
7442
7443         PR tree-optimization/82929
7444         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
7445         ops_swapped_p non-static data member.
7446         (store_immediate_info::store_immediate_info): Clear it.
7447         (imm_store_chain_info::coalesce_immediate_stores): If swapping
7448         ops set ops_swapped_p.
7449         (count_multiple_uses): Handle ops_swapped_p.
7450
7451 2017-11-10  Martin Liska  <mliska@suse.cz>
7452
7453         * coverage.c (coverage_init): Stream information about
7454         support of has_unexecuted_blocks.
7455         * doc/gcov.texi: Document that.
7456         * gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool.
7457         * gcov.c (read_graph_file): Likewise.
7458         (output_line_beginning): Fix a small issue with
7459         color output.
7460
7461 2017-11-10  Bin Cheng  <bin.cheng@arm.com>
7462
7463         * tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing
7464         reference of trivial component.
7465
7466 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
7467
7468         PR bootstrap/82916
7469         * gimple-ssa-store-merging.c
7470         (pass_store_merging::terminate_all_aliasing_chains): For
7471         gimple_store_p stmts also call refs_output_dependent_p.
7472
7473         PR rtl-optimization/82913
7474         * compare-elim.c (try_merge_compare): Punt if def_insn is not
7475         single set.
7476
7477 2017-11-09  Jeff Law  <law@redhat.com>
7478
7479         * vr-values.h: New file with vr_values class.
7480         * tree-vrp.c: Include vr-values.h
7481         (vrp_value_range_pool, vrp_equiv_obstack, num_vr_values): Move static
7482         data objects into the vr_values class.
7483         (vr_value, values_propagated, vr_phi_edge_counts): Likewise.
7484         (get_value_range): Make it a member function within vr_values class.
7485         (set_defs_to_varying, update_value_range, add_equivalence): Likewise.
7486         (vrp_stmt_computes_nonzero_p, op_with_boolean_value_range_p): Likewise.
7487         (op_with_constant_singleton_value_range): Likewise.
7488         (extract_range_for_var_from_comparison_expr): Likewise.
7489         (extract_range_from_assert, extract_range_from_ssa_name): Likewise.
7490         (extract_range_from_binary_expr): Likewise.
7491         (extract_range_from_unary_expr): Likewise.
7492         (extract_range_from_cond_expr, extrat_range_from_comparison): Likewise.
7493         (check_for_binary_op_overflow, extract_range_basic): Likewise.
7494         (extract_range_from_assignment, adjust_range_with_scev): Likewise.
7495         (dump_all_value_ranges, get_vr_for_comparison): Likewise.
7496         (compare_name_with_value, compare_names): Likewise.
7497         (vrp_evaluate_conditional_warnv_with_ops_using_ranges): Likewise.
7498         (vrp_evaluate_conditional_warnv_with_ops): Likewise.  Remove prototype.
7499         (vrp_evaluate_conditional, vrp_visit_cond_stmt): Likewise.
7500         (vrp_visit_switch_stmt, extract_range_from_stmt): Likewise.
7501         (extract_range_from_phi_node): Likewise.
7502         (simplify_truth_ops_using_ranges): Likewise.
7503         (simplify_div_or_mod_using_ranges): Likewise.
7504         (simplify_min_or_max_using_ranges, simplify_abs_using_ranges): Likewise.
7505         (simplify_bit_ops_using_ranges, simplify_cond_using_ranges_1): Likewise.
7506         (simplify_cond_using_ranges_2, simplify_switch_using_ranges): Likewise.
7507         (simplify_float_conversion_using_ranges): Likewise.
7508         (simplify_internal_call_using_ranges): Likewise.
7509         (two_valued_val_range_p, simplify_stmt_using_ranges): Likewise.
7510         (vrp_visit_assignment_or_call): Likewise.  Smuggle class instance
7511         poitner via x_vr_values for calls into gimple folder.
7512         (vrp_initialize_lattice): Make this the vr_values ctor.
7513         (vrp_free_lattice): Make this the vr_values dtor.
7514         (set_vr_value): New function.
7515         (class vrp_prop): Add vr_values data member.  Add various member
7516         functions as well as member functions that delegate to vr_values.
7517         (check_array_ref): Make a member function within vrp_prop class.
7518         (search_for_addr_array, vrp_initialize): Likewise.
7519         (vrp_finalize): Likewise.  Revamp to avoid direct access to
7520         vr_value, values_propagated, etc.
7521         (check_array_bounds): Extract vrp_prop class instance pointer from
7522         walk info structure.  Use it to call member functions.
7523         (check_all_array_refs): Make a member function within vrp_prop class.
7524         Smuggle class instance pointer via walk info structure.
7525         (x_vr_values): New local static.
7526         (vrp_valueize): Use x_vr_values to get class instance.
7527         (vr_valueize_1): Likewise.
7528         (class vrp_folder): Add vr_values data member.  Add various member
7529         functions as well as member functions that delegate to vr_values.
7530         (fold_predicate_in): Make a mber fucntion within vrp_folder class.
7531         (simplify_stmt_for_jump_threading): Extract smuggled vr_values
7532         class instance from vr_values.  Use it to call member functions.
7533         (vrp_dom_walker): Add vr_values data member.
7534         (vrp_dom_walker::after_dom_children): Smuggle vr_values class
7535         instance via x_vr_values.
7536         (identify_jump_threads): Accept vr_values as argument.  Store
7537         it into the walker structure.
7538         (evrp_dom_walker): Add vr_values class data member.  Add various
7539         delegators.
7540         (evrp_dom_walker::try_find_new_range): Use vr_values data
7541         member to access the memory allocator.
7542         (evrp_dom_walker::before_dom_children): Store vr_values class
7543         instance into the vrp_folder class.
7544         (evrp_dom_walker::push_value_range): Rework to avoid direct
7545         access to num_vr_values and vr_value.
7546         (evrp_dom_walker::pop_value_range): Likewise.
7547         (execute_early_vrp): Remove call to vrp_initialize_lattice.
7548         Use vr_values to get to dump_all_value_ranges member function.
7549         Remove call to vrp_free_lattice.  Call vrp_initialize, vrp_finalize,
7550         and simplify_cond_using_ranges_2 via vrp_prop class instance.
7551         Pass vr_values class instance down to identify_jump_threads.
7552         Remove call to vrp_free_lattice.
7553         (debug_all_value_ranges): Remove.
7554
7555         * tree-vrp.c (vrp_prop): Move class to earlier point in the file.
7556         (vrp_folder): Likewise.
7557
7558         * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack.
7559         Get it from the existing bitmap instead.
7560         (vrp_intersect_ranges_1): Likewise.
7561
7562 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7563
7564         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
7565         bit_not_p field.
7566         (store_immediate_info::store_immediate_info): Add bitnotp argument,
7567         set bit_not_p to it.
7568         (imm_store_chain_info::coalesce_immediate_stores): Break group
7569         if bit_not_p is different.
7570         (count_multiple_uses, split_group,
7571         imm_store_chain_info::output_merged_store): Handle info->bit_not_p.
7572         (handled_load): Avoid multiple chained BIT_NOT_EXPRs.
7573         (pass_store_merging::process_store): Handle BIT_{AND,IOR,XOR}_EXPR
7574         result inverted using BIT_NOT_EXPR, compute bit_not_p, pass it
7575         to store_immediate_info ctor.
7576
7577 2017-11-09  Jim Wilson  <jimw@sifive.com>
7578
7579         * collect2.c (OBJECT_FORMAT_COFF): Remove EXTENDED_COFF support.
7580         (scan_prog_file): Likewise.
7581
7582 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
7583
7584         * bb-reorder.c (max_entry_frequency): Remove.
7585         (find_traces, rotate_loop, mark_bb_visited, connect_better_edge_p,
7586         connect_traces, push_to_next_round_p): Remove prototypes.
7587         (find_traces_1_round): Use counts only.
7588         (push_to_next_round_p): Likewise.
7589         (find_traces): Likewise.
7590         (rotate_loop): Likewise.
7591         (find_traces_1_round): Likewise.
7592         (connect_traces): Likewise.
7593         (edge_order): Likewise.
7594
7595 2017-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>
7596
7597         * config/arm/arm.c (output_return_instruction): Add comments to
7598         indicate requirement for cmse_nonsecure_entry return to account
7599         for the size of clearing instruction output here.
7600         (thumb_exit): Likewise.
7601         * config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for
7602         return in hardfloat mode.
7603
7604 2017-11-09  Segher Boessenkool  <segher@kernel.crashing.org>
7605
7606         * config/rs6000/rs6000.c (machine_function): Add a bool,
7607         "toc_is_wrapped_separately".
7608         (rs6000_option_override_internal): Enable OPTION_MASK_SAVE_TOC_INDIRECT
7609         if it wasn't explicitly set or unset, we are optimizing for speed, and
7610         doing separate shrink-wrapping.
7611         (rs6000_get_separate_components): Enable the TOC component if
7612         saving the TOC register in the prologue.
7613         (rs6000_components_for_bb): Handle the TOC component.
7614         (rs6000_emit_prologue_components): Store the TOC register where needed.
7615         (rs6000_set_handled_components): Mark TOC as handled, if handled.
7616         (rs6000_emit_prologue): Don't save the TOC if that is already done.
7617
7618 2017-11-09  Martin Jambor  <mjambor@suse.cz>
7619
7620         * ipa-param-manipulation.c: New file.
7621         * ipa-param-manipulation.h: Likewise.
7622         * Makefile.in (OBJS): Add ipa-param-manipulation.o.
7623         (PLUGIN_HEADERS): Addded ipa-param-manipulation.h
7624         * ipa-param.h (ipa_parm_op): Moved to ipa-param-manipulation.h.
7625         (ipa_parm_adjustment): Likewise.
7626         (ipa_parm_adjustment_vec): Likewise.
7627         (ipa_get_vector_of_formal_parms): Moved declaration to
7628         ipa-param-manipulation.h.
7629         (ipa_get_vector_of_formal_parm_types): Likewise.
7630         (ipa_modify_formal_parameters): Likewise.
7631         (ipa_modify_call_arguments): Likewise.
7632         (ipa_combine_adjustments): Likewise.
7633         (ipa_dump_param_adjustments): Likewise.
7634         (ipa_modify_expr): Likewise.
7635         (ipa_get_adjustment_candidate): Likewise.
7636         * ipa-prop.c (ipa_get_vector_of_formal_parms): Moved to
7637         ipa-param-manipulation.c.
7638         (ipa_get_vector_of_formal_parm_types): Likewise.
7639         (ipa_modify_formal_parameters): Likewise.
7640         (ipa_modify_call_arguments): Likewise.
7641         (ipa_modify_expr): Likewise.
7642         (get_ssa_base_param): Likewise.
7643         (ipa_get_adjustment_candidate): Likewise.
7644         (index_in_adjustments_multiple_times_p): Likewise.
7645         (ipa_combine_adjustments): Likewise.
7646         (ipa_dump_param_adjustments): Likewise.
7647         * tree-sra.c: Also include ipa-param-manipulation.h
7648         * omp-simd-clone.c: Include ipa-param-manipulation.h instead of
7649         ipa-param.h.
7650
7651 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7652             Alan Hayward  <alan.hayward@arm.com>
7653             David Sherwood  <david.sherwood@arm.com>
7654
7655         * doc/sourcebuild.texi (vect_masked_store): Document.
7656
7657 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7658             Alan Hayward  <alan.hayward@arm.com>
7659             David Sherwood  <david.sherwood@arm.com>
7660
7661         * doc/sourcebuild.texi (vect_align_stack_vars): Document.
7662
7663 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7664             Alan Hayward  <alan.hayward@arm.com>
7665             David Sherwood  <david.sherwood@arm.com>
7666
7667         * doc/sourcebuild.texi (vect_variable_length): Document.
7668
7669 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7670             Alan Hayward  <alan.hayward@arm.com>
7671             David Sherwood  <david.sherwood@arm.com>
7672
7673         * doc/sourcebuild.texi (vect_unaligned_possible): Document.
7674
7675 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7676             Alan Hayward  <alan.hayward@arm.com>
7677             David Sherwood  <david.sherwood@arm.com>
7678
7679         * doc/sourcebuild.texi (vect_element_align_preferred): Document.
7680
7681 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7682             Alan Hayward  <alan.hayward@arm.com>
7683             David Sherwood  <david.sherwood@arm.com>
7684
7685         * doc/sourcebuild.texi (vect_perm_short, vect_perm_byte): Document
7686         previously undocumented selectors.
7687         (vect_perm3_byte, vect_perm3_short, vect_perm3_int): Document.
7688
7689 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7690
7691         * doc/rtl.texi (const_vector): Say that elements can be
7692         const_wide_ints too.
7693         * emit-rtl.h (valid_for_const_vec_duplicate_p): Declare.
7694         * emit-rtl.c (valid_for_const_vec_duplicate_p): New function.
7695         (gen_vec_duplicate): Use it instead of CONSTANT_P.
7696         * optabs.c (expand_vector_broadcast): Likewise.
7697
7698 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7699             Alan Hayward  <alan.hayward@arm.com>
7700             David Sherwood  <david.sherwood@arm.com>
7701
7702         * tree-ssa-loop-ivopts.c (get_address_cost): Try using a
7703         scaled index even if the unscaled address was invalid.
7704         Don't increase the complexity of using a scale in that case.
7705
7706 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7707             Alan Hayward  <alan.hayward@arm.com>
7708             David Sherwood  <david.sherwood@arm.com>
7709
7710         * doc/rtl.texi: Rewrite the subreg rules so that they partition
7711         the inner register into REGMODE_NATURAL_SIZE bytes rather than
7712         UNITS_PER_WORD bytes.
7713         * emit-rtl.c (validate_subreg): Divide subregs into blocks
7714         based on REGMODE_NATURAL_SIZE of the inner mode.
7715         (gen_lowpart_common): Split the SCALAR_FLOAT_MODE_P and
7716         !SCALAR_FLOAT_MODE_P cases.  Use REGMODE_NATURAL_SIZE for the latter.
7717         * expmed.c (lowpart_bit_field_p): Divide the value up into
7718         chunks of REGMODE_NATURAL_SIZE rather than UNITS_PER_WORD.
7719         * expr.c (store_constructor): Use REGMODE_NATURAL_SIZE to test
7720         whether something is likely to occupy more than one register.
7721
7722 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
7723
7724         PR ipa/82879
7725         * ipa-inline-transform.c (update_noncloned_frequencies): Use
7726         profile_count::adjust_for_ipa_scaling.
7727         * tree-inline.c (copy_bb, copy_cfg_body): Likewise.
7728         * profile-count.c (profile_count::adjust_for_ipa_scaling): New member
7729         function.
7730         * profile-count.h (profile_count::adjust_for_ipa_scaling): Declare.
7731
7732 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7733
7734         * gimple-ssa-store-merging.c (count_multiple_uses): New function.
7735         (split_group): Add total_orig and total_new arguments, estimate the
7736         number of statements related to the store group without store merging
7737         and with store merging.
7738         (imm_store_chain_info::output_merged_store): Adjust split_group
7739         callers, punt if estimated number of statements with store merging
7740         is not smaller than estimated number of statements without it.
7741         Formatting fix.
7742         (handled_load): Remove has_single_use checks.
7743         (pass_store_merging::process_store): Likewise.
7744
7745 2017-11-09  Richard Biener  <rguenther@suse.de>
7746
7747         PR tree-optimization/82902
7748         * tree-ssa-phiprop.c (propagate_with_phi): Test proper type.
7749
7750 2017-11-09  Martin Liska  <mliska@suse.cz>
7751
7752         PR target/82863
7753         * emit-rtl.c (init_emit_regs): Initialize split_branch_probability to
7754         uninitialized.
7755
7756 2017-11-09  Martin Liska  <mliska@suse.cz>
7757
7758         PR tree-optimization/82669
7759         * sbitmap.h (bmp_iter_set_init): Remove non needed check.
7760
7761 2017-11-09  Martin Liska  <mliska@suse.cz>
7762
7763         PR gcov-profile/48463
7764         * coverage.c (coverage_begin_function): Output also end locus
7765         of a function and information whether the function is
7766         artificial.
7767         * gcov-dump.c (tag_function): Parse and print the information.
7768         * gcov.c (INCLUDE_MAP): Add include.
7769         (INCLUDE_SET): Likewise.
7770         (struct line_info): Move earlier in the source file because
7771         of vector<line_info> in function_info structure.
7772         (line_info::line_info): Likewise.
7773         (line_info::has_block): Likewise.
7774         (struct source_info): Add new member index.
7775         (source_info::get_functions_at_location): New function.
7776         (function_info::group_line_p): New function.
7777         (output_intermediate_line): New function.
7778         (output_intermediate_file): Use the mentioned function.
7779         (struct function_start): New.
7780         (struct function_start_pair_hash): Likewise.
7781         (process_file): Add code that identifies group functions.
7782         Assign lines either to global or function scope.
7783         (generate_results): Skip artificial functions.
7784         (find_source): Assign index for each source file.
7785         (read_graph_file): Read new flag artificial and end_line.
7786         (add_line_counts): Assign it either to global of function scope.
7787         (accumulate_line_counts): Isolate core of the function to
7788         accumulate_line_info and call it for both function and global
7789         scope lines.
7790         (accumulate_line_info): New function.
7791         (output_line_beginning): Fix GNU coding style.
7792         (print_source_line): New function.
7793         (output_line_details): Likewise.
7794         (output_function_details): Likewise.
7795         (output_lines): Iterate both source (global) scope and function
7796         scope.
7797         (struct function_line_start_cmp): New class.
7798         * doc/gcov.texi: Reflect changes in documentation.
7799
7800 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7801
7802         PR debug/82837
7803         * dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT.
7804         (mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...)))
7805         and similarly for not instead of neg.
7806
7807 2017-11-08  Andi Kleen  <ak@linux.intel.com>
7808
7809         * config/i386/i386.opt: Add -mforce-indirect-call.
7810         * config/i386/predicates.md: Check for flag_force_indirect_call.
7811         * doc/invoke.texi: Document -mforce-indirect-call
7812
7813 2017-11-08  Kito Cheng  <kito.cheng@gmail.com>
7814
7815         * config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p):
7816         New extern.
7817         (MOVE_RATIO): Use riscv_slow_unaligned_access_p.
7818         config/riscv/riscv.c (predict.h): New include.
7819         (riscv_slow_unaligned_access_p): No longer static.
7820         (riscv_block_move_straight): Add require.
7821         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
7822
7823 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
7824
7825         PR target/82855
7826         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>,
7827         <avx512>_eq<mode>3<mask_scalar_merge_name>_1): Use
7828         nonimmediate_operand predicate for operand 1 instead of
7829         register_operand.
7830
7831 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7832
7833         * config/aarch64/aarch64-simd.md (store_pair_lanes<mode>):
7834         New pattern.
7835         * config/aarch64/constraints.md (Uml): New constraint.
7836         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New
7837         predicate.
7838
7839 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7840
7841         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
7842         of two vec_duplicates into a vec_concat.
7843
7844 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7845
7846         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
7847         Simplify vec_merge of vec_duplicate and vec_concat.
7848         * config/aarch64/constraints.md (Utq): New constraint.
7849         * config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): New
7850         define_insn.
7851
7852 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7853
7854         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
7855         Simplify vec_merge of vec_duplicate and const_vector.
7856         * config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero):
7857         New predicate.
7858         * config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Use VDC
7859         mode iterator.  Update predicate on operand 1 to
7860         handle non-const_vec constants.  Delete constraints.
7861         (*aarch64_combinez_be<mode>): Likewise for operand 2.
7862
7863 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
7864
7865         PR tree-optimization/78821
7866         * gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p
7867         data member.
7868         (store_operand_info::store_operand_info): Initialize it to false.
7869         (pass_store_merging::terminate_all_aliasing_chains): Rewritten to use
7870         ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each
7871         store in the group, and if chain_info is non-NULL, to ignore altogether
7872         that chain.
7873         (compatible_load_p): Fail if bit_not_p does not match.
7874         (imm_store_chain_info::output_merged_store): Handle bit_not_p loads.
7875         (handled_load): Fill in bit_not_p.  Handle BIT_NOT_EXPR.
7876         (pass_store_merging::process_store): Adjust
7877         terminate_all_aliasing_chains calls to pass NULL in all current spots,
7878         call terminate_all_aliasing_chains newly when adding a store into
7879         a chain with non-NULL chain_info.
7880
7881 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
7882
7883         * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.
7884
7885 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
7886
7887         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
7888         Remove.
7889         (aarch64_layout_frame): Initialise emit_frame_chain.
7890         (aarch64_can_eliminate): Remove omit leaf frame pointer code.
7891         (TARGET_FRAME_POINTER_REQUIRED): Remove define.
7892
7893 2017-11-08  Martin Liska  <mliska@suse.cz>
7894
7895         * gimplify.c (expand_FALLTHROUGH_r): Simplify usage
7896         of gimple_call_internal_p.
7897
7898 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7899
7900         * config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".
7901
7902 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7903
7904         * config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
7905         "do {} while (0)".
7906
7907 2017-11-08  Martin Liska  <mliska@suse.cz>
7908
7909         PR sanitizer/82792
7910         * gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
7911
7912 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
7913
7914         * gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
7915
7916 2017-11-07  Jakub Jelinek  <jakub@redhat.com>
7917
7918         PR target/82855
7919         * config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
7920         (*cmp<mode>_ccz_1): New insn with $k alternative.
7921
7922         PR target/82855
7923         * config/i386/i386.c (ix86_swap_binary_operands_p): Treat
7924         RTX_COMM_COMPARE as commutative as well.
7925         (ix86_binary_operator_ok): Formatting fix.
7926         * config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
7927         *<code><mode>3<mask_name><round_saeonly_name>,
7928         *<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
7929         *<s>mul<mode>3_highpart<mask_name>,
7930         *vec_widen_umult_even_v16si<mask_name>,
7931         *vec_widen_umult_even_v8si<mask_name>,
7932         *vec_widen_umult_even_v4si<mask_name>,
7933         *vec_widen_smult_even_v16si<mask_name>,
7934         *vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
7935         *avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
7936         *avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
7937         *sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
7938         *sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
7939         <avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
7940         *sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
7941         *<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
7942         *<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
7943         !(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
7944         ix86_binary_operator_ok.  Formatting fixes.
7945         (*<plusminus_insn><mode>3<mask_name><round_name>,
7946         *<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
7947         fixes.
7948
7949 2017-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
7950
7951         * config/rs6000/rs6000.md (GPR2): New mode_iterator.
7952         ("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
7953         eq and ne if TARGET_ISEL.
7954         (cmp): New code_iterator.
7955         (UNS, UNSU_, UNSIK): New code_attrs.
7956         (<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
7957         ("eq<mode>3"): New define_expand, rename the define_insn_and_split
7958         to...
7959         ("eq<mode>3"): ... this.
7960         ("ne<mode>3"): New define_expand, rename the define_insn_and_split
7961         to...
7962         ("ne<mode>3"): ... this.
7963
7964 2017-11-07  Julia Koval  <julia.koval@intel.com>
7965
7966         PR target/82812
7967         * common/config/i386/i386-common.c
7968         (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
7969         (ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
7970         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
7971         * config/i386/i386.opt: Ditto.
7972         * config/i386/i386.c (ix86_target_string): Ditto.
7973         (ix86_option_override_internal): Ditto.
7974         (ix86_init_mpx_builtins): Move MPX to args2.
7975         (ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
7976         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
7977         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
7978         __builtin_ia32_vgf2p8affineinvqb_v32qi,
7979         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
7980         __builtin_ia32_vgf2p8affineinvqb_v16qi,
7981         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.
7982
7983 2017-11-07  Uros Bizjak  <ubizjak@gmail.com>
7984
7985         PR target/80425
7986         * config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
7987         and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
7988         (zero-extendsidi peephole2): Remove peephole.
7989
7990 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
7991
7992         PR c/53037
7993         * stor-layout.c: Include attribs.h.
7994         (handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
7995         explicit lookup of "aligned" attribute.
7996
7997 2017-11-07  Andrew Waterman  <andrew@sifive.com>
7998
7999         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New prototype.
8000         (riscv_expand_block_move): Likewise.
8001         * config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
8002         implementation.
8003         (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
8004         (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
8005         * config/riscv/riscv.c (riscv_block_move_straight): New function.
8006         (riscv_adjust_block_mem): Likewise.
8007         (riscv_block_move_loop): Likewise.
8008         (riscv_expand_block_move): Likewise.
8009         * config/riscv/riscv.md (movmemsi): New pattern.
8010
8011 2017-11-07  Michael Clark  <michaeljclark@mac.com>
8012
8013         * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
8014         (MUSL_DYNAMIC_LINKER): Likewise.
8015
8016 2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>
8017
8018         * config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
8019         (rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
8020         nonmmory_operand.
8021
8022 2017-11-07  Richard Biener  <rguenther@suse.de>
8023
8024         * match.pd: Fix build.
8025
8026 2017-11-07  Wilco Dijkstra  <wdijkstr@arm.com>
8027             Jackson Woodruff  <jackson.woodruff@arm.com>
8028
8029         PR tree-optimization/71026
8030         * match.pd: Canonicalize negate in division.
8031
8032 2017-11-07  Sudakshina Das  <sudi.das@arm.com>
8033
8034         PR middle-end/80131
8035         * match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.
8036
8037 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
8038
8039         * match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
8040         (a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.
8041
8042 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
8043
8044         * fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
8045         non-scalar integral types.
8046         * match.pd (negate_expr_p): Handle MINUS_EXPR.
8047         (-(A-B), -(~A)): New transformations.
8048
8049 2017-11-07  Tom de Vries  <tom@codesourcery.com>
8050
8051         * config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
8052         semicolon after "do {} while (0)".
8053         * config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8054         * config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8055         * config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8056         * config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8057         * config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8058
8059 2017-11-07  Tom de Vries  <tom@codesourcery.com>
8060
8061         * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
8062         after "do {} while (0)".
8063         * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8064         * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8065         * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8066         * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8067         * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
8068
8069 2017-11-07  Tom de Vries  <tom@codesourcery.com>
8070
8071         PR other/82784
8072         * config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
8073         "while {} do (0)".
8074         (arm_rtx_costs_internal): Add missing semicolon after
8075         HANDLE_NARROW_SHIFT_ARITH call.
8076
8077 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
8078
8079         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
8080         disable isel if it was not set explicitly.
8081
8082 2017-11-06  James Bowman  <james.bowman@ftdichip.com>
8083
8084         * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers.
8085         (add_type_attribute) likewise.
8086
8087 2017-11-06  H.J. Lu  <hongjiu.lu@intel.com>
8088
8089         * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
8090         of struct ix86_frame.
8091         (ix86_initial_elimination_offset): Likewise.
8092         (ix86_expand_split_stack_prologue): Likewise.
8093
8094 2017-11-06  Marc Glisse  <marc.glisse@inria.fr>
8095
8096         * tree-vrp.h (enum value_range_type): Update stale comment.
8097
8098 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8099             Alan Hayward  <alan.hayward@arm.com>
8100             David Sherwood  <david.sherwood@arm.com>
8101
8102         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm)
8103         (aarch64_expand_vec_perm_const): Take the number of units too.
8104         * config/aarch64/aarch64.c (aarch64_expand_vec_perm)
8105         (aarch64_expand_vec_perm_const): Likewise.
8106         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>)
8107         (vec_perm<mode>): Update accordingly.
8108
8109 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8110             Alan Hayward  <alan.hayward@arm.com>
8111             David Sherwood  <david.sherwood@arm.com>
8112
8113         * config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half):
8114         Take the number of units too.
8115         * config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise.
8116         (aarch64_simd_check_vect_par_cnst_half): Update call accordingly,
8117         but check for a vector mode before rather than after the call.
8118         * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
8119         (move_hi_quad_<mode>, vec_unpack<su>_hi_<mode>)
8120         (vec_unpack<su>_lo_<mode, vec_widen_<su>mult_lo_<mode>)
8121         (vec_widen_<su>mult_hi_<mode>, vec_unpacks_lo_<mode>)
8122         (vec_unpacks_hi_<mode>, aarch64_saddl2<mode>, aarch64_uaddl2<mode>)
8123         (aarch64_ssubl2<mode>, aarch64_usubl2<mode>, widen_ssum<mode>3)
8124         (widen_usum<mode>3, aarch64_saddw2<mode>, aarch64_uaddw2<mode>)
8125         (aarch64_ssubw2<mode>, aarch64_usubw2<mode>, aarch64_sqdmlal2<mode>)
8126         (aarch64_sqdmlsl2<mode>, aarch64_sqdmlal2_lane<mode>)
8127         (aarch64_sqdmlal2_laneq<mode>, aarch64_sqdmlsl2_lane<mode>)
8128         (aarch64_sqdmlsl2_laneq<mode>, aarch64_sqdmlal2_n<mode>)
8129         (aarch64_sqdmlsl2_n<mode>, aarch64_sqdmull2<mode>)
8130         (aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>)
8131         (aarch64_sqdmull2_n<mode>): Update accordingly.
8132
8133 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8134             Alan Hayward  <alan.hayward@arm.com>
8135             David Sherwood  <david.sherwood@arm.com>
8136
8137         * config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take
8138         the number of units too.
8139         * config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise.
8140         * config/aarch64/aarch64-simd.md (vec_load_lanesoi<mode>)
8141         (vec_store_lanesoi<mode>, vec_load_lanesci<mode>)
8142         (vec_store_lanesci<mode>, vec_load_lanesxi<mode>)
8143         (vec_store_lanesxi<mode>): Update accordingly.
8144
8145 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8146             Alan Hayward  <alan.hayward@arm.com>
8147             David Sherwood  <david.sherwood@arm.com>
8148
8149         * config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare.
8150         * config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function.
8151         * config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number
8152         of units rather than the mode.
8153         * config/aarch64/iterators.md (nunits): New mode attribute.
8154         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args):
8155         Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...).
8156         * config/aarch64/aarch64-simd.md (aarch64_dup_lane<mode>)
8157         (aarch64_dup_lane_<vswap_width_name><mode>, *aarch64_mul3_elt<mode>)
8158         (*aarch64_mul3_elt_<vswap_width_name><mode>): Likewise.
8159         (*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt<mode>): Likewise.
8160         (*aarch64_mla_elt_<vswap_width_name><mode>, *aarch64_mls_elt<mode>)
8161         (*aarch64_mls_elt_<vswap_width_name><mode>, *aarch64_fma4_elt<mode>)
8162         (*aarch64_fma4_elt_<vswap_width_name><mode>):: Likewise.
8163         (*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt<mode>): Likewise.
8164         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
8165         (*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_<mode>): Likewise.
8166         (reduc_plus_scal_v4sf, reduc_<maxmin_uns>_scal_<mode>): Likewise.
8167         (reduc_<maxmin_uns>_scal_<mode>): Likewise.
8168         (*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
8169         (*aarch64_get_lane_zero_extendsi<mode>): Likewise.
8170         (aarch64_get_lane<mode>, *aarch64_mulx_elt_<vswap_width_name><mode>)
8171         (*aarch64_mulx_elt<mode>, *aarch64_vgetfmulx<mode>): Likewise.
8172         (aarch64_sq<r>dmulh_lane<mode>, aarch64_sq<r>dmulh_laneq<mode>)
8173         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Likewise.
8174         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Likewise.
8175         (aarch64_sqdml<SBINQOPS:as>l_lane<mode>): Likewise.
8176         (aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): Likewise.
8177         (aarch64_sqdml<SBINQOPS:as>l2_lane<mode>_internal): Likewise.
8178         (aarch64_sqdml<SBINQOPS:as>l2_laneq<mode>_internal): Likewise.
8179         (aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Likewise.
8180         (aarch64_sqdmull2_lane<mode>_internal): Likewise.
8181         (aarch64_sqdmull2_laneq<mode>_internal): Likewise.
8182         (aarch64_vec_load_lanesoi_lane<mode>): Likewise.
8183         (aarch64_vec_store_lanesoi_lane<mode>): Likewise.
8184         (aarch64_vec_load_lanesci_lane<mode>): Likewise.
8185         (aarch64_vec_store_lanesci_lane<mode>): Likewise.
8186         (aarch64_vec_load_lanesxi_lane<mode>): Likewise.
8187         (aarch64_vec_store_lanesxi_lane<mode>): Likewise.
8188         (aarch64_simd_vec_set<mode>): Update use of ENDIAN_LANE_N.
8189         (aarch64_simd_vec_setv2di): Likewise.
8190
8191 2017-11-06  Carl Love  <cel@us.ibm.com>
8192
8193         * config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8
8194         definitions.
8195         (P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions.
8196         * config/rs6000/altivec.h (vec_revb): Change the #define from power 9
8197         to power 8.
8198         * config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new
8199         extern declaration.
8200         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function.
8201         * config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1):
8202         Add power 8 macro expansions.
8203         (BU_P9V_OVERLOAD_1): Remove power 9 overload expansion.
8204         * config/rs6000/vsx.md (revb_<mode>): Add define_expand to generate
8205         power 8 instructions.  (VSX_XXBR): Add iterator.
8206
8207 2017-11-06  Wilco Dijkstra  <wdijkstr@arm.com>
8208
8209         * config/arm/arm.md (predicable_short_it): Change default to "no",
8210         improve documentation, remove uses that are identical to the default.
8211         (enabled_for_depr_it): Rename to enabled_for_short_it.
8212         * gcc/config/arm/arm-fixed.md (predicable_short_it):
8213         Remove default uses.
8214         * gcc/config/arm/ldmstm.md (predicable_short_it): Likewise.
8215         * gcc/config/arm/sync.md (predicable_short_it): Likewise.
8216         * gcc/config/arm/thumb2.md (predicable_short_it): Likewise.
8217         * gcc/config/arm/vfp.md (predicable_short_it): Likewise.
8218
8219 2017-11-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
8220
8221         PR target/82748
8222         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete
8223         float128 helper macros, which are no longer used after deleting
8224         the old 'q' built-in functions, and moving the round to odd
8225         built-in functions to being special built-in functions.
8226         (BU_FLOAT128_2): Likewise.
8227         (BU_FLOAT128_1_HW): Likewise.
8228         (BU_FLOAT128_2_HW): Likewise.
8229         (BU_FLOAT128_3_HW): Likewise.
8230         (FABSQ): Delete old 'q' built-in functions.
8231         (COPYSIGNQ): Likewise.
8232         (SQRTF128_ODD): Move round to odd built-in functions to be
8233         special built-in functions, so that we can handle
8234         -mabi=ieeelongdouble.
8235         (TRUNCF128_ODD): Likewise.
8236         (ADDF128_ODD): Likewise.
8237         (SUBF128_ODD): Likewise.
8238         (MULF128_ODD): Likewise.
8239         (DIVF128_ODD): Likewise.
8240         (FMAF128_ODD): Likewise.
8241         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q'
8242         built-in names to 'f128'.
8243         * config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the
8244         old 'q' built-in functions, as the machine independent code for
8245         'f128' built-in functions handles this.
8246         (rs6000_expand_builtin): Add expansion for float128 round to odd
8247         functions, keying off on -mabi=ieeelongdouble of whether to use
8248         the KFmode or TFmode variant.
8249         (rs6000_init_builtins): Initialize the _Float128 round to odd
8250         built-in functions.
8251         * doc/extend.texi (PowerPC Built-in Functions): Document the old
8252         _Float128 'q' built-in functions are now mapped into the new
8253         'f128' built-in functions.
8254
8255 2017-11-06  David Edelsohn  <dje.gcc@gmail.com>
8256
8257         * collect2.c (add_lto_object): Compile for OBJECT_COFF.
8258         (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects.
8259
8260 2017-11-06  David Malcolm  <dmalcolm@redhat.com>
8261
8262         PR jit/82826
8263         * ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function.
8264         * ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl.
8265         * toplev.c: Include "ipa-fnsummary.h".
8266         (toplev::finalize): Call ipa_fnsummary_c_finalize.
8267
8268 2017-11-06  Jakub Jelinek  <jakub@redhat.com>
8269
8270         PR tree-optimization/82838
8271         * gimple-ssa-store-merging.c
8272         (imm_store_chain_info::output_merged_store): Call force_gimple_operand_1
8273         on a separate gimple_seq which is then appended to seq.
8274
8275 2017-11-06  Jeff Law  <law@redhat.com>
8276
8277         PR target/82788
8278         * config/i386/i386.c (PROBE_INTERVAL): Remove.
8279         (get_probe_interval): New functions.
8280         (ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval.
8281         (ix86_adjust_stack_and_probe): Likewise.
8282         (output_adjust_stack_and_probe): Likewise.
8283         (ix86_emit_probe_stack_range): Likewise.
8284         (ix86_expand_prologue): Likewise.
8285
8286 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8287
8288         PR tree-optimization/82816
8289         * tree-ssa-math-opts.c (convert_mult_to_widen): Return false
8290         if the modes of the two types are the same.
8291         (convert_plusminus_to_widen): Likewise.
8292
8293 2017-11-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8294
8295         * config/rs6000/altivec.md (*p9_vadu<mode>3) Rename to
8296         p9_vadu<mode>3.
8297         (usadv16qi): New define_expand.
8298         (usadv8hi): New define_expand.
8299
8300 2017-11-06  Jan Hubicka  <hubicka@ucw.cz>
8301
8302         PR bootstrap/82832
8303         * ipa-inline-transform.c (update_noncloned_frequencies): Always
8304         scale.
8305         (inline_transform): Likewise.
8306         * predict.c (counts_to_freqs): Remove useless conditional.
8307         * profile-count.h (profile_count::apply_scale): Move sanity check.
8308         * tree-inline.c (copy_bb): Always scale.
8309         (copy_cfg_body): Likewise.
8310
8311 2017-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
8312
8313         PR target/67591
8314         * config/arm/arm.md (*sub_shiftsi): Add predicable_short_it
8315         attribute.
8316         (*cmp_ite0): Add enabled_for_depr_it attribute.
8317         (*cmp_ite1): Likewise.
8318
8319 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
8320
8321         * config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and
8322         TYPE_MFCRF.
8323
8324 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8325
8326         * tree-vrp.c (vrp_int_const_binop): Return true on success and
8327         return the value by pointer.
8328         (extract_range_from_multiplicative_op_1): Update accordingly.
8329         Return as soon as an operation fails.
8330
8331 2017-11-05  Tom de Vries  <tom@codesourcery.com>
8332
8333         PR other/82784
8334         * asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ...
8335         (DEF_SANITIZER_BUILTIN): ... here.
8336         (initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of
8337         DEF_SANITIZER_BUILTIN in if stmt.  Add missing semicolon.
8338
8339 2017-11-05  Tom de Vries  <tom@codesourcery.com>
8340
8341         PR other/82784
8342         * config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after
8343         macro body.
8344         (ASM_OUTPUT_CASE_LABEL): Add semicolon after
8345         ASM_OUTPUT_BEFORE_CASE_LABEL call.
8346         * config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon
8347         after macro body.
8348         * config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
8349         * config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
8350         * config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
8351
8352 2017-11-05  Tom de Vries  <tom@codesourcery.com>
8353
8354         PR other/82784
8355         * graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after
8356         "do {} while (0)".
8357
8358 2017-11-04  Michael Clark  <michaeljclark@mac.com>
8359
8360         * config/riscv/riscv.c (riscv_print_operand): Add a 'i' format.
8361         config/riscv/riscv.md (addsi3): Use 'i' for immediates.
8362         (adddi3): Likewise.
8363         (*addsi3_extended): Likewise.
8364         (*addsi3_extended2): Likewise.
8365         (<optab>si3): Likewise.
8366         (<optab>di3): Likewise.
8367         (<optab><mode>3): Likewise.
8368         (<*optabe>si3_internal): Likewise.
8369         (zero_extendqi<SUPERQI:mode>2): Likewise.
8370         (*add<mode>hi3): Likewise.
8371         (*xor<mode>hi3): Likewise.
8372         (<optab>di3): Likewise.
8373         (*<optab>si3_extend): Likewise.
8374         (*sge<u>_<X:mode><GPR:mode>): Likewise.
8375         (*slt<u>_<X:mode><GPR:mode>): Likewise.
8376         (*sle<u>_<X:mode><GPR:mode>): Likewise.
8377
8378 2017-11-04  Andrew Waterman  <andrew@sifive.com>
8379
8380         * config/riscv/riscv.c (riscv_option_override): Conditionally set
8381         TARGET_STRICT_ALIGN based upon -mtune argument.
8382
8383 2017-11-04  Andrew Waterman  <andrew@sifive.com>
8384
8385         * config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1.
8386
8387 2017-11-04  Daniel Santos  <daniel.santos@pobox.com>
8388
8389         * config/i386/i386.c (choose_basereg): Use optional scratch
8390         register and add assertion.
8391         (x86_emit_outlined_ms2sysv_save): Use scratch register when
8392         needed, and don't allocate stack.
8393         (ix86_expand_prologue): Rearrange where SSE saves/stub call is
8394         emitted, correct wrong allocation with -mcall-ms2sysv-xlogues.
8395         (ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets.
8396
8397 2017-11-03  Jeff Law  <law@redhat.com>
8398
8399         * config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype.
8400         (ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence
8401         to probe at the start of a noreturn function.
8402
8403 2017-11-03  Jakub Jelinek  <jakub@redhat.com>
8404
8405         PR tree-optimization/78821
8406         * gimple-ssa-store-merging.c: Update the file comment.
8407         (MAX_STORE_ALIAS_CHECKS): Define.
8408         (struct store_operand_info): New type.
8409         (store_operand_info::store_operand_info): New constructor.
8410         (struct store_immediate_info): Add rhs_code and ops data members.
8411         (store_immediate_info::store_immediate_info): Add rhscode, op0r
8412         and op1r arguments to the ctor, initialize corresponding data members.
8413         (struct merged_store_group): Add load_align_base and load_align
8414         data members.
8415         (merged_store_group::merged_store_group): Initialize them.
8416         (merged_store_group::do_merge): Update them.
8417         (merged_store_group::apply_stores): Pick the constant for
8418         encode_tree_to_bitpos from one of the two operands, or skip
8419         encode_tree_to_bitpos if neither operand is a constant.
8420         (class pass_store_merging): Add process_store method decl.  Remove
8421         bool argument from terminate_all_aliasing_chains method decl.
8422         (pass_store_merging::terminate_all_aliasing_chains): Remove
8423         var_offset_p argument and corresponding handling.
8424         (stmts_may_clobber_ref_p): New function.
8425         (compatible_load_p): New function.
8426         (imm_store_chain_info::coalesce_immediate_stores): Terminate group
8427         if there is overlap and rhs_code is not INTEGER_CST.  For
8428         non-overlapping stores terminate group if rhs is not mergeable.
8429         (get_alias_type_for_stmts): Change first argument from
8430         auto_vec<gimple *> & to vec<gimple *> &.  Add IS_LOAD, CLIQUEP and
8431         BASEP arguments.  If IS_LOAD is true, look at rhs1 of the stmts
8432         instead of lhs.  Compute *CLIQUEP and *BASEP in addition to the
8433         alias type.
8434         (get_location_for_stmts): Change first argument from
8435         auto_vec<gimple *> & to vec<gimple *> &.
8436         (struct split_store): Remove orig_stmts data member, add orig_stores.
8437         (split_store::split_store): Create orig_stores rather than orig_stmts.
8438         (find_constituent_stmts): Renamed to ...
8439         (find_constituent_stores): ... this.  Change second argument from
8440         vec<gimple *> * to vec<store_immediate_info *> *, push pointers
8441         to info structures rather than the statements.
8442         (split_group): Rename ALLOW_UNALIGNED argument to
8443         ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle
8444         it.  Adjust find_constituent_stores caller.
8445         (imm_store_chain_info::output_merged_store): Handle rhs_code other
8446         than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and
8447         get_location_for_stmts callers.  Set MR_DEPENDENCE_CLIQUE and
8448         MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores.
8449         (mem_valid_for_store_merging): New function.
8450         (handled_load): New function.
8451         (pass_store_merging::process_store): New method.
8452         (pass_store_merging::execute): Use process_store method.  Adjust
8453         terminate_all_aliasing_chains caller.
8454
8455 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8456
8457         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
8458         Return true for more constants, symbols and label references.
8459         (aarch64_valid_floating_const): Remove unused function.
8460
8461 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8462
8463         PR target/82786
8464         * config/aarch64/aarch64.c (aarch64_layout_frame):
8465         Undo forcing of LR at bottom of frame.
8466
8467 2017-11-03  Jeff Law  <law@redhat.com>
8468
8469         PR target/82823
8470         * config/i386/i386.c (ix86_expand_prologue): Tighten assert
8471         for int_registers_saved.
8472
8473         * cfganal.c (single_pred_edge_ignoring_loop_edges): New function
8474         extracted from tree-ssa-dom.c.
8475         * cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype.
8476         * tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove.
8477         (record_equivalences_from_incoming_edge): Add additional argument
8478         to single_pred_edge_ignoring_loop_edges call.
8479         * tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove.
8480         (uncprop_dom_walker::before_dom_children): Add additional argument
8481         to single_pred_edge_ignoring_loop_edges call.
8482         * tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use
8483         single_pred_edge_ignoring_loop_edges rather than open coding.
8484         * tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly.
8485
8486 2017-11-03  Marc Glisse  <marc.glisse@inria.fr>
8487
8488         * match.pd (-(-A)): Rewrite.
8489
8490 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8491
8492         * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete.
8493         (rs6000_emit_int_cmove): New declaration.
8494         * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration.
8495         (rs6000_emit_sISEL): Delete.
8496         (rs6000_emit_int_cmove): Make non-static.
8497         * config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove
8498         instead of rs6000_emit_sISEL.
8499
8500 2017-11-03  Jan Hubicka  <hubicka@ucw.cz>
8501
8502         * asan.c (create_cond_insert_point): Maintain profile.
8503         * ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are
8504         merged.
8505         * basic-block.h (struct basic_block_def): Remove frequency.
8506         (EDGE_FREQUENCY): Use to_frequency
8507         * bb-reorder.c (push_to_next_round_p): Use only IPA counts for global
8508         heuristics.
8509         (find_traces): Update to use to_frequency.
8510         (find_traces_1_round): Likewise; use only IPA counts.
8511         (bb_to_key): Likewise.
8512         (connect_traces): Use IPA counts only.
8513         (copy_bb_p): Update to use to_frequency.
8514         (fix_up_crossing_landing_pad): Likewise.
8515         (sanitize_hot_paths): Likewise.
8516         * bt-load.c (basic_block_freq): Likewise.
8517         * cfg.c (init_flow): Set count_max to uninitialized.
8518         (check_bb_profile): Remove frequencies; check counts.
8519         (dump_bb_info): Do not dump frequencies.
8520         (update_bb_profile_for_threading): Update counts only.
8521         (scale_bbs_frequencies_int): Likewise.
8522         (MAX_SAFE_MULTIPLIER): Remove.
8523         (scale_bbs_frequencies_gcov_type): Update counts only.
8524         (scale_bbs_frequencies_profile_count): Update counts only.
8525         (scale_bbs_frequencies): Update counts only.
8526         * cfg.h (struct control_flow_graph): Add count-max.
8527         (update_bb_profile_for_threading): Update prototype.
8528         * cfgbuild.c (find_bb_boundaries): Do not update frequencies.
8529         (find_many_sub_basic_blocks): Likewise.
8530         * cfgcleanup.c (try_forward_edges): Likewise.
8531         (try_crossjump_to_edge): Likewise.
8532         * cfgexpand.c (expand_gimple_cond): Likewise.
8533         (expand_gimple_tailcall): Likewise.
8534         (construct_init_block): Likewise.
8535         (construct_exit_block): Likewise.
8536         * cfghooks.c (verify_flow_info): Check consistency of counts.
8537         (dump_bb_for_graph): Do not dump frequencies.
8538         (split_block_1): Do not update frequencies.
8539         (split_edge): Do not update frequencies.
8540         (make_forwarder_block): Do not update frequencies.
8541         (duplicate_block): Do not update frequencies.
8542         (account_profile_record): Do not update frequencies.
8543         * cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts
8544         for global heuristics.
8545         * cfgloopanal.c (average_num_loop_insns): Update to use to_frequency.
8546         (expected_loop_iterations_unbounded): Use counts only.
8547         * cfgloopmanip.c (scale_loop_profile): Simplify.
8548         (create_empty_loop_on_edge): Simplify
8549         (loopify): Simplify
8550         (duplicate_loop_to_header_edge): Simplify
8551         * cfgrtl.c (force_nonfallthru_and_redirect): Update profile.
8552         (update_br_prob_note): Take care of removing note when profile
8553         becomes undefined.
8554         (relink_block_chain): Do not dump frequency.
8555         (rtl_account_profile_record): Use to_frequency.
8556         * cgraph.c (symbol_table::create_edge): Convert count to ipa count.
8557         (cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count.
8558         (cgraph_update_edges_for_call_stmt_node): Likewise.
8559         (cgraph_edge::verify_count_and_frequency): Update.
8560         (cgraph_node::verify_node): Temporarily disable frequency verification.
8561         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use
8562         to_cgraph_frequency.
8563         (cgraph_edge::rebuild_edges): Convert to ipa counts.
8564         * cgraphunit.c (init_lowered_empty_function): Do not initialize
8565         frequencies.
8566         (cgraph_node::expand_thunk): Update profile.
8567         * except.c (dw2_build_landing_pads): Do not update frequency.
8568         * final.c (compute_alignments): Use to_frequency.
8569         (dump_basic_block_info): Do not dump frequency.
8570         * gimple-pretty-print.c (dump_profile): Do not dump frequency.
8571         (dump_gimple_bb_header): Do not dump frequency.
8572         * gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency;
8573         do update count.
8574         * gimple-streamer-in.c (input_bb): Do not stream frequency.
8575         * gimple-streamer-out.c (output_bb): Do not stream frequency.
8576         * haifa-sched.c (sched_pressure_start_bb): Use to_freuqency.
8577         (init_before_recovery): Do not update frequency.
8578         (sched_create_recovery_edges): Do not update frequency.
8579         * hsa-gen.c (convert_switch_statements): Do not update frequency.
8580         * ipa-cp.c (ipcp_propagate_stage): Update search for max_count.
8581         (ipa_cp_c_finalize): Set max_count to uninitialized.
8582         * ipa-fnsummary.c (get_minimal_bb): Use counts.
8583         (param_change_prob): Use counts.
8584         * ipa-profile.c (ipa_profile_generate_summary): Do not summarize
8585         local profiles.
8586         * ipa-split.c (consider_split): Use to_frequency.
8587         (split_function): Use to_frequency.
8588         * ira-build.c (loop_compare_func): Likewise.
8589         (mark_loops_for_removal): Likewise.
8590         (mark_all_loops_for_removal): Likewise.
8591         * loop-doloop.c (doloop_modify): Do not update frequency.
8592         * loop-unroll.c (unroll_loop_runtime_iterations): Do not update
8593         frequency.
8594         * lto-streamer-in.c (input_function): Update count_max.
8595         * omp-expand.c (expand_omp_taskreg): Update count_max.
8596         * omp-simd-clone.c (simd_clone_adjust): Update profile.
8597         * predict.c (maybe_hot_frequency_p): Use to_frequency.
8598         (maybe_hot_count_p): Use ipa counts only.
8599         (maybe_hot_bb_p): Simplify.
8600         (maybe_hot_edge_p): Simplify.
8601         (probably_never_executed): Do not take frequency argument.
8602         (probably_never_executed_bb_p): Do not pass frequency.
8603         (probably_never_executed_edge_p): Likewise.
8604         (combine_predictions_for_bb): Check that profile is nonzero.
8605         (propagate_freq): Do not set frequency.
8606         (drop_profile): Simplify.
8607         (counts_to_freqs): Simplify.
8608         (expensive_function_p): Use to_frequency.
8609         (propagate_unlikely_bbs_forward): Simplify.
8610         (determine_unlikely_bbs): Simplify.
8611         (estimate_bb_frequencies): Add hack to silence graphite issues.
8612         (compute_function_frequency): Use ipa counts.
8613         (pass_profile::execute): Update.
8614         (rebuild_frequencies): Use counts only.
8615         (force_edge_cold): Use counts only.
8616         * profile-count.c (profile_count::dump): Dump new count types.
8617         (profile_count::differs_from_p): Check compatiblity.
8618         (profile_count::to_frequency): New function.
8619         (profile_count::to_cgraph_frequency): New function.
8620         * profile-count.h (struct function): Declare.
8621         (enum profile_quality): Add profile_guessed_local and
8622         profile_guessed_global0.
8623         (class profile_proability): Decrease number of bits to 29;
8624         update from_reg_br_prob_note and to_reg_br_prob_note.
8625         (class profile_count: Update comment; decrease number of bits
8626         to 61. Check compatibility.
8627         (profile_count::compatible_p): New private member function.
8628         (profile_count::ipa_p): New member function.
8629         (profile_count::operator<): Handle global zero correctly.
8630         (profile_count::operator>): Handle global zero correctly.
8631         (profile_count::operator<=): Handle global zero correctly.
8632         (profile_count::operator>=): Handle global zero correctly.
8633         (profile_count::nonzero_p): New member function.
8634         (profile_count::force_nonzero): New member function.
8635         (profile_count::max): New member function.
8636         (profile_count::apply_scale): Handle IPA scalling.
8637         (profile_count::guessed_local): New member function.
8638         (profile_count::global0): New member function.
8639         (profile_count::ipa): New member function.
8640         (profile_count::to_frequency): Declare.
8641         (profile_count::to_cgraph_frequency): Declare.
8642         * profile.c (OVERLAP_BASE): Delete.
8643         (compute_frequency_overlap): Delete.
8644         (compute_branch_probabilities): Do not use compute_frequency_overlap.
8645         * regs.h (REG_FREQ_FROM_BB): Use to_frequency.
8646         * sched-ebb.c (rank): Use counts only.
8647         * shrink-wrap.c (handle_simple_exit): Use counts only.
8648         (try_shrink_wrapping): Use counts only.
8649         (place_prologue_for_one_component): Use counts only.
8650         * tracer.c (find_best_predecessor): Use to_frequency.
8651         (find_trace): Use to_frequency.
8652         (tail_duplicate): Use to_frequency.
8653         * trans-mem.c (expand_transaction): Do not update frequency.
8654         * tree-call-cdce.c: Do not update frequency.
8655         * tree-cfg.c (gimple_find_sub_bbs): Likewise.
8656         (gimple_merge_blocks): Likewise.
8657         (gimple_split_edge): Likewise.
8658         (gimple_duplicate_sese_region): Likewise.
8659         (gimple_duplicate_sese_tail): Likewise.
8660         (move_sese_region_to_fn): Likewise.
8661         (gimple_account_profile_record): Likewise.
8662         (insert_cond_bb): Likewise.
8663         * tree-complex.c (expand_complex_div_wide): Likewise.
8664         * tree-eh.c (lower_resx): Update profile.
8665         * tree-inline.c (copy_bb): Simplify count scaling; do not scale
8666         frequencies.
8667         (initialize_cfun): Do not initialize frequencies
8668         (freqs_to_counts): Delete.
8669         (copy_cfg_body): Ignore count parameter.
8670         (copy_body): Update.
8671         (expand_call_inline): Update count_max.
8672         (optimize_inline_calls): Update count_max.
8673         (tree_function_versioning): Update count_max.
8674         * tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency.
8675         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update
8676         frequency.
8677         * tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only.
8678         * tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency.
8679         (try_peel_loop): Likewise.
8680         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use
8681         to_frequency.
8682         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1.
8683         (tree_transform_and_unroll_loop): Do not use frequencies
8684         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations):
8685         Use reliable prediction only.
8686         * tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies.
8687         * tree-ssa-sink.c (select_best_block): Use to_frequency.
8688         * tree-ssa-tail-merge.c (replace_block_by): Temporarily disable
8689         probability scaling.
8690         * tree-ssa-threadupdate.c (create_block_for_threading): Do
8691         not update frequency
8692         (any_remaining_duplicated_blocks): Likewise.
8693         (update_profile): Likewise.
8694         (estimated_freqs_path): Delete.
8695         (freqs_to_counts_path): Delete.
8696         (clear_counts_path): Delete.
8697         (ssa_fix_duplicate_block_edges): Likewise.
8698         (duplicate_thread_path): Likewise.
8699         * tree-switch-conversion.c (gen_inbound_check): Use counts.
8700         * tree-tailcall.c (decrease_profile): Do not update frequency.
8701         (eliminate_tail_call): Likewise.
8702         * tree-vect-loop-manip.c (vect_do_peeling): Likewise.
8703         * tree-vect-loop.c (scale_profile_for_vect_loop): Likewise.
8704         (optimize_mask_stores): Likewise.
8705         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
8706         * ubsan.c (ubsan_expand_null_ifn): Update profile.
8707         (ubsan_expand_ptr_ifn): Update profile.
8708         * value-prof.c (gimple_ic): Simplify.
8709         * value-prof.h (gimple_ic): Update prototype.
8710         * ipa-inline-transform.c (inline_transform): Fix scaling conditoins.
8711         * ipa-inline.c (compute_uninlined_call_time): Be sure that
8712         counts are nonzero.
8713         (want_inline_self_recursive_call_p): Likewise.
8714         (resolve_noninline_speculation): Only cummulate defined counts.
8715         (inline_small_functions): Use nonzero_p.
8716         (ipa_inline): Do not access freed node.
8717
8718 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8719
8720         * config/aarch64/aarch64.c (aarch64_override_options_internal):
8721         Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL.
8722
8723 2017-11-03  Kito Cheng  <kito.cheng@gmail.com>
8724
8725         * config/riscv/riscv.c (riscv_legitimize_move): Handle
8726         non-legitimate address.
8727
8728 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8729
8730         * config/rs6000/rs6000.md (*lt0_disi): Delete.
8731         (*lt0_<mode>di, *lt0_<mode>si): New.
8732
8733 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8734
8735         * config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to
8736         TARGET_PAIRED_FLOAT.
8737
8738 2017-11-03  Siddhesh Poyarekar  <siddhesh.poyarekar@linaro.org>
8739             Jim Wilson  <jim.wilson@linaro.org>
8740
8741         * config/aarch64/aarch64-cores.def (saphira): New CPU.
8742         * config/aarch64/aarch64-tune.md: Regenerated.
8743         * doc/invoke.texi (AArch64 Options/-mtune): Add "saphira".
8744         * gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table.
8745
8746 2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
8747
8748         * config/arc/arc.c (arc_save_restore): Corrected CFA note.
8749         (arc_expand_prologue): Restore blink for millicode.
8750         * config/arc/linux.h (LINK_EH_SPEC): Defined.
8751
8752 2017-11-03  Richard Sandiford  <richard.sandiford@linaro.org>
8753
8754         PR target/82809
8755         * config/i386/i386.c (ix86_vector_duplicate_value): Use
8756         gen_vec_duplicate after forcing the scalar into a register.
8757
8758 2017-11-02  Segher Boessenkool  <segher@kernel.crashing.org>
8759
8760         * combine (try_combine): Print the insns input to try_combine to the
8761         dump file.
8762
8763 2017-11-02  Steve Ellcey  <sellcey@cavium.com>
8764
8765         PR target/79868
8766         * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse):
8767         Remove second argument from aarch64_process_target_attr call.
8768         * config/aarch64/aarch64-protos.h (aarch64_process_target_attr):
8769         Ditto.
8770         * config/aarch64/aarch64.c (aarch64_attribute_info): Change
8771         field type.
8772         (aarch64_handle_attr_arch): Remove second argument.
8773         (aarch64_handle_attr_cpu): Ditto.
8774         (aarch64_handle_attr_tune): Ditto.
8775         (aarch64_handle_attr_isa_flags): Ditto.
8776         (aarch64_process_one_target_attr): Ditto.
8777         (aarch64_process_target_attr): Ditto.
8778         (aarch64_option_valid_attribute_p): Remove second argument.
8779         on aarch64_process_target_attr call.
8780
8781 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
8782
8783         * diagnostic.c: Include "selftest-diagnostic.h".
8784         (selftest::assert_location_text): New function.
8785         (selftest::test_diagnostic_get_location_text): New function.
8786         (selftest::diagnostic_c_tests): Call it.
8787
8788 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
8789
8790         * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o.
8791         * diagnostic-show-locus.c: Include "selftest-diagnostic.h".
8792         (class selftest::test_diagnostic_context): Move to...
8793         * selftest-diagnostic.c: New file.
8794         * selftest-diagnostic.h: New file.
8795
8796 2017-11-02  James Bowman  <james.bowman@ftdichip.com>
8797
8798         * config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase
8799         offset range for FT32B.
8800         * config/ft32/ft32.h: option "mcompress" enables relaxation.
8801         * config/ft32/ft32.md: Add TARGET_NOPM.
8802         * config/ft32/ft32.opt: Add mft32b, mcompress, mnopm.
8803         * gcc/doc/invoke.texi: Add mft32b, mcompress, mnopm.
8804
8805 2017-11-02  Wilco Dijkstra  <wdijkstr@arm.com>
8806
8807         * config/aarch64/aarch64.h (MALLOC_ABI_ALIGNMENT): New define.
8808
8809 2017-11-02  Jeff Law  <law@redhat.com>
8810
8811         * gimple-ssa-sprintf.c (sprintf_dom_walker): Remove
8812         virtual keyword on FINAL OVERRIDE members.
8813
8814         * tree-ssa-propagate.h (ssa_propagation_engine): Group
8815         virtuals together.  Add virtual destructor.
8816         (substitute_and_fold_engine): Similarly.
8817
8818 2017-11-02  Jan Hubicka  <hubicka@ucw.cz>
8819
8820         * x86-tune.def (X86_TUNE_USE_INCDEC): Enable for Haswell+.
8821
8822 2017-11-02  Richard Biener  <rguenther@suse.de>
8823
8824         PR tree-optimization/82795
8825         * tree-if-conv.c (predicate_mem_writes): Remove bogus assert.
8826
8827 2017-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8828
8829         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Don't require
8830         gcc_SUN_LD_VERSION.
8831         (gcc_GAS_CHECK_FEATURE): Remove.
8832         * configure.ac (ld_vers) <*-*-solaris2*>: Move comments from
8833         gcc_AC_INITFINI_ARRAY here.  Update for Solaris 11.4 changes.
8834         * configure: Regenerate.
8835
8836 2017-11-02  Claudiu Zissulescu <claziss@synopsys.com>
8837
8838         * config/arc/arc.c (hwloop_optimize): Account for empty
8839         body loops.
8840
8841 2017-11-02  Richard Biener  <rguenther@suse.de>
8842
8843         PR middle-end/82765
8844         * varasm.c (decode_addr_const): Make offset HOST_WIDE_INT.
8845         Truncate ARRAY_REF index and element size.
8846
8847 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
8848
8849         * doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB".
8850
8851 2017-11-01  Jeff Law  <law@redhat.com>
8852
8853         * tree-ssa-ccp.c (ccp_folder): New class derived from
8854         substitute_and_fold_engine.
8855         (ccp_folder::get_value): New member function.
8856         (ccp_folder::fold_stmt): Renamed from ccp_fold_stmt.
8857         (ccp_fold_stmt): Remove prototype.
8858         (ccp_finalize): Call substitute_and_fold from the ccp_class.
8859         * tree-ssa-copy.c (copy_folder): New class derived from
8860         substitute_and_fold_engine.
8861         (copy_folder::get_value): Renamed from get_value.
8862         (fini_copy_prop): Call substitute_and_fold from copy_folder class.
8863         * tree-vrp.c (vrp_folder): New class derived from
8864         substitute_and_fold_engine.
8865         (vrp_folder::fold_stmt): Renamed from vrp_fold_stmt.
8866         (vrp_folder::get_value): New member function.
8867         (vrp_finalize): Call substitute_and_fold from vrp_folder class.
8868         (evrp_dom_walker::before_dom_children): Similarly for replace_uses_in.
8869         * tree-ssa-propagate.h (substitute_and_fold_engine): New class to
8870         provide a class interface to folder/substitute routines.
8871         (ssa_prop_fold_stmt_fn): Remove typedef.
8872         (ssa_prop_get_value_fn): Likewise.
8873         (subsitute_and_fold): Remove prototype.
8874         (replace_uses_in): Likewise.
8875         * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
8876         Renamed from replace_uses_in.  Call the virtual member function
8877         (substitute_and_fold_engine::replace_phi_args_in): Similarly.
8878         (substitute_and_fold_dom_walker): Remove initialization of
8879         data member entries for calbacks.  Add substitute_and_fold_engine
8880         member and initialize it.
8881         (substitute_and_fold_dom_walker::before_dom_children0: Use the
8882         member functions for get_value, replace_phi_args_in c
8883         replace_uses_in, and fold_stmt calls.
8884         (substitute_and_fold_engine::substitute_and_fold): Renamed from
8885         substitute_and_fold.  Remove assert.   Update ctor call.
8886
8887         * tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
8888         (ssa_prop_visit_phi_fn): Likewise.
8889         (class ssa_propagation_engine): New class to provide an interface
8890         into ssa_propagate.
8891         * tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped
8892         variable.
8893         (ssa_prop_visit_phi): Likewise.
8894         (ssa_propagation_engine::simulate_stmt): Moved into class.
8895         Call visit_phi/visit_stmt from the class rather than via
8896         file scoped static variables.
8897         (ssa_propagation_engine::simulate_block): Moved into class.
8898         (ssa_propagation_engine::process_ssa_edge_worklist): Similarly.
8899         (ssa_propagation_engine::ssa_propagate): Similarly.  No longer
8900         set file scoped statics for the visit_stmt/visit_phi callbacks.
8901         * tree-complex.c (complex_propagate): New class derived from
8902         ssa_propagation_engine.
8903         (complex_propagate::visit_stmt): Renamed from complex_visit_stmt.
8904         (complex_propagate::visit_phi): Renamed from complex_visit_phi.
8905         (tree_lower_complex): Call ssa_propagate via the complex_propagate
8906         class.
8907         * tree-ssa-ccp.c: (ccp_propagate): New class derived from
8908         ssa_propagation_engine.
8909         (ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node.
8910         (ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt.
8911         (do_ssa_ccp): Call ssa_propagate from the ccp_propagate class.
8912         * tree-ssa-copy.c (copy_prop): New class derived from
8913         ssa_propagation_engine.
8914         (copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt.
8915         (copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node.
8916         (execute_copy_prop): Call ssa_propagate from the copy_prop class.
8917         * tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine.
8918         (vrp_prop::visit_stmt): Renamed from vrp_visit_stmt.
8919         (vrp_prop::visit_phi): Renamed from vrp_visit_phi_node.
8920         (execute_vrp): Call ssa_propagate from the vrp_prop class.
8921
8922 2017-11-01  Jakub Jelinek  <jakub@redhat.com>
8923
8924         PR rtl-optimization/82778
8925         PR rtl-optimization/82597
8926         * compare-elim.c (struct comparison): Add in_a_setter field.
8927         (find_comparison_dom_walker::before_dom_children): Remove killed
8928         bitmap and df_simulate_find_defs call, instead walk the defs.
8929         Compute last_setter and initialize in_a_setter.  Merge definitions
8930         with first initialization for a few variables.
8931         (try_validate_parallel): Use insn_invalid_p instead of
8932         recog_memoized.  Return insn rather than just the pattern.
8933         (try_merge_compare): Fix up comment.  Don't uselessly test if
8934         in_a is a REG_P.  Use cmp->in_a_setter instead of walking UD
8935         chains.
8936         (execute_compare_elim_after_reload): Remove df_chain_add_problem
8937         call.
8938
8939 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8940             Alan Hayward  <alan.hayward@arm.com>
8941             David Sherwood  <david.sherwood@arm.com>
8942
8943         * config/aarch64/aarch64.c (aarch64_rtx_costs): Use
8944         aarch64_hard_regno_nregs to get the number of registers
8945         in a mode.
8946
8947 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8948             Alan Hayward  <alan.hayward@arm.com>
8949             David Sherwood  <david.sherwood@arm.com>
8950
8951         * config/aarch64/constraints.md (Upl): Rename to...
8952         (Uaa): ...this.
8953         * config/aarch64/aarch64.md
8954         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64, *addsi3_aarch64_uxtw):
8955         Update accordingly.
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         * config/aarch64/aarch64.c (aarch64_add_constant_internal)
8962         (aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move
8963         earlier in file.
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         * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp)
8970         (aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev)
8971         (aarch64_evpc_dup): Generate rtl direcly, rather than using
8972         named expanders.
8973         (aarch64_expand_vec_perm_const_1): Explicitly check for permutes
8974         of a single element.
8975         * config/aarch64/iterators.md: Add a comment above the permute
8976         unspecs to say that they are generated directly by
8977         aarch64_expand_vec_perm_const.
8978         * config/aarch64/aarch64-simd.md: Likewise the permute instructions.
8979
8980 2017-11-01  Nathan Sidwell  <nathan@acm.org>
8981
8982         * tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P.
8983
8984 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
8985
8986         * doc/invoke.texi (RISC-V Options): Explicitly name the medlow
8987         and medany code models, and describe what they do.
8988
8989 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8990
8991         Revert accidental duplicate:
8992
8993         * combine.c (can_change_dest_mode): Reject changes in
8994         REGMODE_NATURAL_SIZE.
8995
8996 2017-11-01  Segher Boessenkool  <segher@kernel.crashing.org>
8997
8998         PR rtl-optimization/64682
8999         PR rtl-optimization/69567
9000         PR rtl-optimization/69737
9001         PR rtl-optimization/82683
9002         * combine.c (distribute_notes) <REG_DEAD>: If the new I2 sets the same
9003         register mentioned in the note, drop the note, unless it came from I3,
9004         in which case it should go to I3 again.
9005
9006 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9007
9008         * tree-ssa-dse.c (normalize_ref): Check whether the ranges overlap
9009         and return false if not.
9010         (clear_bytes_written_by, live_bytes_read): Update accordingly.
9011
9012 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9013
9014         * tree-ssa-alias.h (ranges_overlap_p): Return false if either
9015         range is known to be empty.
9016
9017 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9018             Alan Hayward  <alan.hayward@arm.com>
9019             David Sherwood  <david.sherwood@arm.com>
9020
9021         * simplify-rtx.c (simplify_const_unary_operation): Use GET_MODE_NUNITS
9022         and CONST_VECTOR_NUNITS instead of computing the number of units from
9023         the byte sizes of the vector and element.
9024         (simplify_binary_operation_1): Likewise.
9025         (simplify_const_binary_operation): Likewise.
9026         (simplify_ternary_operation): Likewise.
9027
9028 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9029             Alan Hayward  <alan.hayward@arm.com>
9030             David Sherwood  <david.sherwood@arm.com>
9031
9032         * var-tracking.c (INT_MEM_OFFSET): Replace with...
9033         (int_mem_offset): ...this new function.
9034         (var_mem_set, var_mem_delete_and_set, var_mem_delete)
9035         (find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs)
9036         (same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset):
9037         Update accordingly.
9038
9039 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9040             Alan Hayward  <alan.hayward@arm.com>
9041             David Sherwood  <david.sherwood@arm.com>
9042
9043         * lower-subreg.c (interesting_mode_p): New function.
9044         (compute_costs, find_decomposable_subregs, decompose_register)
9045         (simplify_subreg_concatn, can_decompose_p, resolve_simple_move)
9046         (resolve_clobber, dump_choices): Use it.
9047
9048 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9049             Alan Hayward  <alan.hayward@arm.com>
9050             David Sherwood  <david.sherwood@arm.com>
9051
9052         * rtlhash.c (add_rtx): Use add_hwi for 'w' and add_int for 'i'.
9053
9054 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9055             Alan Hayward  <alan.hayward@arm.com>
9056             David Sherwood  <david.sherwood@arm.com>
9057
9058         * alias.c (find_base_value, find_base_term): Only process integer
9059         truncations.  Check the precision rather than the size.
9060
9061 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9062             Alan Hayward  <alan.hayward@arm.com>
9063             David Sherwood  <david.sherwood@arm.com>
9064
9065         * machmode.h (is_narrower_int_mode): New function
9066         * optabs.c (expand_float, expand_fix): Use it.
9067         * dwarf2out.c (rotate_loc_descriptor): Likewise.
9068
9069 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9070             Alan Hayward  <alan.hayward@arm.com>
9071             David Sherwood  <david.sherwood@arm.com>
9072
9073         * rtl.h (narrower_subreg_mode): New function.
9074         * ira-color.c (update_costs_from_allocno): Use it.
9075
9076 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9077             Alan Hayward  <alan.hayward@arm.com>
9078             David Sherwood  <david.sherwood@arm.com>
9079
9080         * optabs-query.h (convert_optab_p): New function, split out from...
9081         (convert_optab_handler): ...here.
9082         (widening_optab_handler): Delete.
9083         (find_widening_optab_handler): Remove permit_non_widening parameter.
9084         (find_widening_optab_handler_and_mode): Likewise.  Provide an
9085         override that operates on mode class wrappers.
9086         * optabs-query.c (widening_optab_handler): Delete.
9087         (find_widening_optab_handler_and_mode): Remove permit_non_widening
9088         parameter.  Assert that the two modes are the same class and that
9089         the "from" mode is narrower than the "to" mode.  Use
9090         convert_optab_handler instead of widening_optab_handler.
9091         * expmed.c (expmed_mult_highpart_optab): Use convert_optab_handler
9092         instead of widening_optab_handler.
9093         * expr.c (expand_expr_real_2): Update calls to
9094         find_widening_optab_handler.
9095         * optabs.c (expand_widen_pattern_expr): Likewise.
9096         (expand_binop_directly): Take the insn_code as a parameter.
9097         (expand_binop): Only call find_widening_optab_handler for
9098         conversion optabs; use optab_handler otherwise.  Update calls
9099         to find_widening_optab_handler and expand_binop_directly.
9100         Use convert_optab_handler instead of widening_optab_handler.
9101         * tree-ssa-math-opts.c (convert_mult_to_widen): Update calls to
9102         find_widening_optab_handler and use scalar_mode rather than
9103         machine_mode.
9104         (convert_plusminus_to_widen): Likewise.
9105
9106 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9107             Alan Hayward  <alan.hayward@arm.com>
9108             David Sherwood  <david.sherwood@arm.com>
9109
9110         * machmode.h (fixed_size_mode): New class.
9111         * rtl.h (get_pool_mode): Return fixed_size_mode.
9112         * gengtype.c (main): Add fixed_size_mode.
9113         * target.def (get_raw_result_mode): Return a fixed_size_mode.
9114         (get_raw_arg_mode): Likewise.
9115         * doc/tm.texi: Regenerate.
9116         * targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode.
9117         * targhooks.c (default_get_reg_raw_mode): Likewise.
9118         * config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise.
9119         * config/mips/mips.c (mips_get_reg_raw_mode): Likewise.
9120         * config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise.
9121         (msp430_get_raw_result_mode): Likewise.
9122         * config/avr/avr-protos.h (regmask): Use as_a <fixed_side_mode>
9123         * dbxout.c (dbxout_parms): Require fixed-size modes.
9124         * expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise.
9125         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
9126         * omp-low.c (lower_oacc_reductions): Likewise.
9127         * simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes.
9128         (simplify_subreg): Update accordingly.
9129         * varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode.
9130         (force_const_mem): Update accordingly.  Return NULL_RTX for modes
9131         that aren't fixed-size.
9132         (get_pool_mode): Return a fixed_size_mode.
9133         (output_constant_pool_2): Take a fixed_size_mode.
9134
9135 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9136             Alan Hayward  <alan.hayward@arm.com>
9137             David Sherwood  <david.sherwood@arm.com>
9138
9139         * doc/rtl.texi (vec_series): Document.
9140         (const): Say that the operand can be a vec_series.
9141         * rtl.def (VEC_SERIES): New rtx code.
9142         * rtl.h (const_vec_series_p_1): Declare.
9143         (const_vec_series_p): New function.
9144         * emit-rtl.h (gen_const_vec_series): Declare.
9145         (gen_vec_series): Likewise.
9146         * emit-rtl.c (const_vec_series_p_1, gen_const_vec_series)
9147         (gen_vec_series): Likewise.
9148         * optabs.c (expand_mult_highpart): Use gen_const_vec_series.
9149         * simplify-rtx.c (simplify_unary_operation): Handle negations
9150         of vector series.
9151         (simplify_binary_operation_series): New function.
9152         (simplify_binary_operation_1): Use it.  Handle VEC_SERIES.
9153         (test_vector_ops_series): New function.
9154         (test_vector_ops): Call it.
9155         * config/powerpcspe/altivec.md (altivec_lvsl): Use
9156         gen_const_vec_series.
9157         (altivec_lvsr): Likewise.
9158         * config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise.
9159
9160 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9161             Alan Hayward  <alan.hayward@arm.com>
9162             David Sherwood  <david.sherwood@arm.com>
9163
9164         * doc/rtl.texi (const): Update description of address constants.
9165         Say that vector constants are allowed too.
9166         * common.md (E, F): Use CONSTANT_P instead of checking for
9167         CONST_VECTOR.
9168         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
9169         checking for CONST_VECTOR.
9170         * expmed.c (make_tree): Use build_vector_from_val for a CONST
9171         VEC_DUPLICATE.
9172         * expr.c (expand_expr_real_2): Check for vector modes instead
9173         of checking for CONST_VECTOR.
9174         * rtl.h (const_vec_p): New function.
9175         (const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE.
9176         (unwrap_const_vec_duplicate): Handle them here too.
9177
9178 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9179             David Malcolm  <dmalcolm@redhat.com>
9180             Alan Hayward  <alan.hayward@arm.com>
9181             David Sherwood  <david.sherwood@arm.com>
9182
9183         * rtl.h (vec_duplicate_p): New function.
9184         * selftest-rtl.c (assert_rtx_eq_at): New function.
9185         * selftest-rtl.h (ASSERT_RTX_EQ): New macro.
9186         (assert_rtx_eq_at): Declare.
9187         * selftest.h (selftest::simplify_rtx_c_tests): Declare.
9188         * selftest-run-tests.c (selftest::run_tests): Call it.
9189         * simplify-rtx.c: Include selftest.h and selftest-rtl.h.
9190         (simplify_unary_operation_1): Recursively handle vector duplicates.
9191         (simplify_binary_operation_1): Likewise.  Handle VEC_SELECTs of
9192         vector duplicates.
9193         (simplify_subreg): Handle subregs of vector duplicates.
9194         (make_test_reg, test_vector_ops_duplicate, test_vector_ops)
9195         (selftest::simplify_rtx_c_tests): New functions.
9196
9197 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9198             Alan Hayward  <alan.hayward@arm.com>
9199             David Sherwood  <david.sherwood@arm.com>
9200
9201         * emit-rtl.h (gen_const_vec_duplicate): Declare.
9202         (gen_vec_duplicate): Likewise.
9203         * emit-rtl.c (gen_const_vec_duplicate_1): New function, split
9204         out from...
9205         (gen_const_vector): ...here.
9206         (gen_const_vec_duplicate, gen_vec_duplicate): New functions.
9207         (gen_rtx_CONST_VECTOR): Use gen_const_vec_duplicate for constants
9208         whose elements are all equal.
9209         * optabs.c (expand_vector_broadcast): Use gen_const_vec_duplicate.
9210         * simplify-rtx.c (simplify_const_unary_operation): Likewise.
9211         (simplify_relational_operation): Likewise.
9212         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
9213         Likewise.
9214         (aarch64_simd_dup_constant): Use gen_vec_duplicate.
9215         (aarch64_expand_vector_init): Likewise.
9216         * config/arm/arm.c (neon_vdup_constant): Likewise.
9217         (neon_expand_vector_init): Likewise.
9218         (arm_expand_vec_perm): Use gen_const_vec_duplicate.
9219         (arm_block_set_unaligned_vect): Likewise.
9220         (arm_block_set_aligned_vect): Likewise.
9221         * config/arm/neon.md (neon_copysignf<mode>): Likewise.
9222         * config/i386/i386.c (ix86_expand_vec_perm): Likewise.
9223         (expand_vec_perm_even_odd_pack): Likewise.
9224         (ix86_vector_duplicate_value): Use gen_vec_duplicate.
9225         * config/i386/sse.md (one_cmpl<mode>2): Use CONSTM1_RTX.
9226         * config/ia64/ia64.c (ia64_expand_vecint_compare): Use
9227         gen_const_vec_duplicate.
9228         * config/ia64/vect.md (addv2sf3, subv2sf3): Use CONST1_RTX.
9229         * config/mips/mips.c (mips_gen_const_int_vector): Use
9230         gen_const_vec_duplicate.
9231         (mips_expand_vector_init): Use CONST0_RTX.
9232         * config/powerpcspe/altivec.md (abs<mode>2, nabs<mode>2): Likewise.
9233         (define_split): Use gen_const_vec_duplicate.
9234         * config/rs6000/altivec.md (abs<mode>2, nabs<mode>2): Use CONST0_RTX.
9235         (define_split): Use gen_const_vec_duplicate.
9236         * config/s390/vx-builtins.md (vec_genmask<mode>): Likewise.
9237         (vec_ctd_s64, vec_ctd_u64, vec_ctsl, vec_ctul): Likewise.
9238         * config/spu/spu.c (spu_const): Likewise.
9239
9240 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9241             Alan Hayward  <alan.hayward@arm.com>
9242             David Sherwood  <david.sherwood@arm.com>
9243
9244         * combine.c (can_change_dest_mode): Reject changes in
9245         REGMODE_NATURAL_SIZE.
9246
9247 2017-10-31  Sandra Loosemore  <sandra@codesourcery.com>
9248
9249         * configure.ac (--enable-libssp): New.
9250         (gcc_cv_libc_provides_ssp): Check for explicit setting before
9251         trying to determine target-specific default.  Adjust indentation.
9252         * configure: Regenerated.
9253         * doc/install.texi (Configuration): Expand --disable-libssp
9254         documentation.
9255
9256 2017-10-31  Daniel Santos  <daniel.santos@pobox.com>
9257
9258         config/i386/i386.c (ix86_expand_epilogue): Correct stack
9259         calculation.
9260
9261 2017-10-31  Martin Jambor  <mjambor@suse.cz>
9262
9263         PR c++/81702
9264         * gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert.
9265
9266 2017-10-31  David Malcolm  <dmalcolm@redhat.com>
9267
9268         * auto-profile.c (autofdo_source_profile::read): Use
9269         UNKNOWN_LOCATION rather than 0.
9270         * diagnostic-core.h (warning_at_rich_loc): Rename to...
9271         (warning_at): ...this overload.
9272         (warning_at_rich_loc_n): Rename to...
9273         (warning_n): ...this overload.
9274         (error_at_rich_loc): Rename to...
9275         (error_at): ...this overload.
9276         (pedwarn_at_rich_loc): Rename to...
9277         (pedwarn): ...this overload.
9278         (permerror_at_rich_loc): Rename to...
9279         (permerror): ...this overload.
9280         (inform_at_rich_loc): Rename to...
9281         (inform): ...this overload.
9282         * diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl.
9283         (diagnostic_n_impl_richloc): Rename to...
9284         (diagnostic_n_impl): ...this rich_location *-based decl.
9285         (inform_at_rich_loc): Rename to...
9286         (inform): ...this, and add an assertion.
9287         (inform_n): Update for removal of location_t-based diagnostic_n_impl.
9288         (warning_at_rich_loc): Rename to...
9289         (warning_at): ...this, and add an assertion.
9290         (warning_at_rich_loc_n): Rename to...
9291         (warning_n): ...this, and add an assertion.
9292         (warning_n): Update location_t-based implementation for removal of
9293         location_t-based diagnostic_n_impl.
9294         (pedwarn_at_rich_loc): Rename to...
9295         (pedwarn): ...this, and add an assertion.
9296         (permerror_at_rich_loc): Rename to...
9297         (permerror): ...this, and add an assertion.
9298         (error_n): Update for removal of location_t-based diagnostic_n_impl.
9299         (error_at_rich_loc): Rename to...
9300         (error_at): ...this, and add an assertion.
9301         * gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0.
9302         (driver::do_spec_on_infiles): Likewise.
9303         * substring-locations.c (format_warning_va): Update for renaming
9304         of inform_at_rich_loc.
9305
9306 2017-10-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
9307
9308         * builtins.def (DEF_FLOATN_BUILTIN): Change most _Float<N> and
9309         _Float<N>X built-in functions so that the variant without the
9310         "__builtin_" prefix is only enabled for the GNU C and Objective C
9311         languages when they are in non-strict ANSI/ISO mode.
9312         (DEF_EXT_LIB_FLOATN_NX_BUILTINS): Likewise.
9313         * target.def (floatn_builtin_p): Add a target hook to control
9314         whether _Float<N> and _Float<N>X built-in functions without the
9315         "__builtin_" prefix are enabled, and return true for C and
9316         Objective C in the default hook.  Include langhooks.h in
9317         targhooks.c.
9318         * targhooks.h (default_floatn_builtin_p): Likewise.
9319         * targhooks.c (default_floatn_builtin_p): Likewise.
9320         * doc/tm.texi.in (TARGET_FLOATN_BUILTIN_P): Document the
9321         floatn_builtin_p target hook.
9322         * doc/tm.texi (TARGET_FLOATN_BUILTIN_P): Likewise.
9323
9324 2017-10-31  Matthew Fortune  <matthew.fortune@imgtec.com>
9325             Eric Botcazou  <ebotcazou@adacore.com>
9326
9327         PR rtl-optimization/81803
9328         * lra-constraints.c (curr_insn_transform): Also reload the whole
9329         register for a strict subreg no wider than a word if this is for
9330         a WORD_REGISTER_OPERATIONS target.
9331
9332 2017-10-31  Jason Merrill  <jason@redhat.com>
9333
9334         * gdbinit.in: Skip over inlines from timevar.h.
9335
9336 2017-10-31  Martin Liska  <mliska@suse.cz>
9337
9338         * doc/gcov.texi: Document new option.
9339         * gcov.c (print_usage): Likewise print it.
9340         (process_args): Support the argument.
9341         (format_count): New function.
9342         (format_gcov): Use the function.
9343
9344 2017-10-31  Martin Liska  <mliska@suse.cz>
9345
9346         * gcov.c (struct name_map): do not use typedef.
9347         Define operator== and operator<.
9348         (name_search): Remove.
9349         (name_sort): Remove.
9350         (main): Do not allocate names.
9351         (process_file): Add vertical space.
9352         (generate_results): Use std::find.
9353         (release_structures): Do not release memory.
9354         (find_source): Use std::find.
9355
9356 2017-10-31  Martin Liska  <mliska@suse.cz>
9357
9358         * gcov.c (struct line_info): Remove it's typedef.
9359         (line_info::line_info): Add proper ctor.
9360         (line_info::has_block): Do not use a typedef.
9361         (struct source_info): Do not use typedef.
9362         (circuit): Likewise.
9363         (get_cycles_count): Likewise.
9364         (output_intermediate_file): Iterate via vector iterator.
9365         (add_line_counts): Use std::vector methods.
9366         (accumulate_line_counts): Likewise.
9367         (output_lines): Likewise.
9368
9369 2017-10-31  Martin Liska  <mliska@suse.cz>
9370
9371         * gcov.c (struct source_info): Remove typedef.
9372         (source_info::source_info): Add proper ctor.
9373         (accumulate_line_counts): Use struct, not it's typedef.
9374         (output_gcov_file): Likewise.
9375         (output_lines): Likewise.
9376         (main): Do not allocate an array.
9377         (output_intermediate_file): Use size of vector container.
9378         (process_file): Resize the vector.
9379         (generate_results): Do not preallocate, use newly added vector
9380         lines.
9381         (release_structures): Do not release sources.
9382         (find_source): Use vector methods.
9383         (add_line_counts): Do not use typedef.
9384
9385 2017-10-31  Martin Liska  <mliska@suse.cz>
9386
9387         * doc/gcov.texi: Document that.
9388         * gcov.c (add_line_counts): Mark lines with a non-executed
9389         statement.
9390         (output_line_beginning): Handle such lines.
9391         (output_lines): Pass new argument.
9392         (output_intermediate_file): Print it in intermediate format.
9393
9394 2017-10-31  Martin Liska  <mliska@suse.cz>
9395
9396         * color-macros.h: New file.
9397         * diagnostic-color.c: Factor out color related to macros to
9398         color-macros.h.
9399         * doc/gcov.texi: Document -k option.
9400         * gcov.c (INCLUDE_STRING): Include string.h.
9401         (print_usage): Add -k option.
9402         (process_args): Parse it.
9403         (pad_count_string): New function.
9404         (output_line_beginning): Likewise.
9405         (DEFAULT_LINE_START): New macro.
9406         (output_lines): Support color output.
9407
9408 2017-10-31  Martin Liska  <mliska@suse.cz>
9409
9410         PR gcov-profile/82633
9411         * doc/gcov.texi: Document -fkeep-{static,inline}-functions and
9412         their interaction with GCOV infrastructure.
9413         * configure.ac: Add -fkeep-{inline,static}-functions to
9414         coverage_flags.
9415         * configure: Regenerate.
9416
9417 2017-10-31  Uros Bizjak  <ubizjak@gmail.com>
9418
9419         PR target/82772
9420         * config/alpha/sync.md (fetchop_constr) <and>: Change to "rINM".
9421
9422 2017-10-31  Segher Boessenkool  <segher@kernel.crashing.org>
9423
9424         PR target/82674
9425         * config/rs6000/rs6000.md (allocate_stack): Force update interval
9426         into a register if it does not fit into an immediate offset field.
9427
9428 2017-10-31  Olivier Hainque  <hainque@adacore.com>
9429
9430         * gcc/Makefile.in (FLAGS_TO_PASS): Pass libsubdir as well.
9431
9432 2017-10-31  Julia Koval  <julia.koval@intel.com>
9433
9434         * config.gcc: Add gfniintrin.h.
9435         * config/i386/gfniintrin.h: New.
9436         * config/i386/i386-builtin-types.def
9437         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
9438         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
9439         __builtin_ia32_vgf2p8affineinvqb_v32qi,
9440         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
9441         __builtin_ia32_vgf2p8affineinvqb_v16qi,
9442         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): New builtins.
9443         * config/i386/i386-builtin.def (V64QI_FTYPE_V64QI_V64QI_INT_V64QI_UDI,
9444         V32QI_FTYPE_V32QI_V32QI_INT_V32QI_USI,
9445         V16QI_FTYPE_V16QI_V16QI_INT_V16QI_UHI,
9446         V64QI_FTYPE_V64QI_V64QI_INT): New types.
9447         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
9448         * config/i386/immintrin.h: Include gfniintrin.h.
9449         * config/i386/sse.md (vgf2p8affineinvqb_*) New pattern.
9450
9451 2017-10-30  Eric Botcazou  <ebotcazou@adacore.com>
9452
9453         * gcc.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Remove old kludge.
9454
9455 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
9456
9457         * config/arm/arm.md (ashldi3): Remove shift by 1 expansion.
9458         (arm_ashldi3_1bit): Remove pattern.
9459         (ashrdi3): Remove shift by 1 expansion.
9460         (arm_ashrdi3_1bit): Remove pattern.
9461         (lshrdi3): Remove shift by 1 expansion.
9462         (arm_lshrdi3_1bit): Remove pattern.
9463         * config/arm/arm.c (arm_rtx_costs_internal): Slightly increase
9464         cost of ashldi3 by 1.
9465         * config/arm/neon.md (ashldi3_neon): Remove shift by 1 expansion.
9466         (<shift>di3_neon): Likewise.
9467
9468 2017-10-30  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
9469
9470         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Rename
9471         both identically named patterns to (*aarch64_simd_mov<VD:mode>)
9472         and (*aarch64_simd_mov<VQ:mode>).
9473         (*aarch64_simd_mov<VD:mode>): Change type attribute to match
9474         pattern alternative.
9475         (*aarch64_simd_mov<VQ:mode>): Re-order and change type
9476         attributes to match pattern alternative.
9477
9478 2017-10-30  Steven Munroe  <munroesj@gcc.gnu.org>
9479
9480         * config.gcc (powerpc*-*-*): Add emmintrin.h.
9481         * config/rs6000/emmintrin.h: New file.
9482         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include emmintrin.h.
9483
9484 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
9485
9486         * config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8.
9487         * (movdi_vfp_cortexa8): Remove pattern.
9488
9489 2017-10-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9490
9491         * doc/install.texi (Specific, alpha*-*-*): Remove DEC OSF/1
9492         etc. reference.
9493         (Specific, alpha*-dec-osf5.1): Remove.
9494         (Specific, mips-sgi-irix5): Remove.
9495         (Specific, mips-sgi-irix6): Remove.
9496
9497 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
9498
9499         PR middle-end/22141
9500         * gimple-ssa-store-merging.c (merged_store_group::apply_stores): Fix
9501         arguments to clear_bit_region_be.
9502
9503 2017-10-30  Jim Wilson  <wilson@tuliptree.org>
9504
9505         * gimplify.c: Include memmodel.h.
9506
9507 2017-10-30  Martin Jambor  <mjambor@suse.cz>
9508
9509         * omp-grid.c (grid_attempt_target_gridification): Also insert a
9510         condition whether loop should be executed at all.
9511
9512 2017-10-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
9513
9514         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
9515         gimple folding of vec_madd() intrinsics.
9516         * config/rs6000/altivec.md (mulv8hi3): Rename altivec_vmladduhm to
9517         fmav8hi4.  (altivec_vmladduhm): Rename to fmav8hi4.
9518         * config/rs6000/rs6000-builtin.def: Rename vmladduhm to fmav8hi4
9519
9520 2017-10-30  Richard Biener  <rguenther@suse.de>
9521
9522         PR tree-optimization/82762
9523         Revert
9524         2017-10-23  Richard Biener  <rguenther@suse.de>
9525
9526         PR tree-optimization/82129
9527         Revert
9528         2017-08-01  Richard Biener  <rguenther@suse.de>
9529
9530         PR tree-optimization/81181
9531         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
9532         (compute_antic): ... end of iteration here.
9533
9534 2017-10-30  Joseph Myers  <joseph@codesourcery.com>
9535
9536         * doc/invoke.texi (C Dialect Options): Document -std=c17,
9537         -std=iso9899:2017 and -std=gnu17.
9538         * doc/standards.texi (C Language): Document C17 support.
9539         * doc/cpp.texi (Overview): Mention -std=c17.
9540         (Standard Predefined Macros): Document C11 and C17 values of
9541         __STDC_VERSION__.  Do not refer to C99 support as incomplete.
9542         * doc/extend.texi (Inline): Do not list individual options for
9543         standards newer than C99.
9544         * dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle
9545         "GNU C17".
9546         * config/rl78/rl78.c (rl78_option_override): Handle "GNU C17"
9547         language name.
9548
9549 2017-10-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
9550
9551         * asan.c (asan_finish_file): Align asan globals array by shadow
9552         granularity.
9553
9554 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
9555
9556         PR middle-end/22141
9557         * gimple-ssa-store-merging.c: Include rtl.h and expr.h.
9558         (struct store_immediate_info): Add bitregion_start and bitregion_end
9559         fields.
9560         (store_immediate_info::store_immediate_info): Add brs and bre
9561         arguments and initialize bitregion_{start,end} from those.
9562         (struct merged_store_group): Add bitregion_start, bitregion_end,
9563         align_base and mask fields.  Drop unnecessary struct keyword from
9564         struct store_immediate_info.  Add do_merge method.
9565         (clear_bit_region_be): Use memset instead of loop storing zeros.
9566         (merged_store_group::do_merge): New method.
9567         (merged_store_group::merge_into): Use do_merge.  Allow gaps in between
9568         stores as long as the surrounding bitregions have no gaps.
9569         (merged_store_group::merge_overlapping): Use do_merge.
9570         (merged_store_group::apply_stores): Test that bitregion_{start,end}
9571         is byte aligned, rather than requiring that start and width are
9572         byte aligned.  Drop unnecessary struct keyword from
9573         struct store_immediate_info.  Allocate and populate also mask array.
9574         Make start of the arrays relative to bitregion_start rather than
9575         start and size them according to bitregion_{end,start} difference.
9576         (struct imm_store_chain_info): Drop unnecessary struct keyword from
9577         struct store_immediate_info.
9578         (pass_store_merging::gate): Punt if BITS_PER_UNIT or CHAR_BIT is not 8.
9579         (pass_store_merging::terminate_all_aliasing_chains): Drop unnecessary
9580         struct keyword from struct store_immediate_info.
9581         (imm_store_chain_info::coalesce_immediate_stores): Allow gaps in
9582         between stores as long as the surrounding bitregions have no gaps.
9583         Formatting fixes.
9584         (struct split_store): Add orig non-static data member.
9585         (split_store::split_store): Initialize orig to false.
9586         (find_constituent_stmts): Return store_immediate_info *, non-NULL
9587         if there is exactly a single original stmt.  Change stmts argument
9588         to pointer from reference, if NULL, don't push anything to it.  Add
9589         first argument, use it to optimize skipping over orig stmts that
9590         are known to be before bitpos already.  Simplify.
9591         (split_group): Return unsigned int count how many stores are or
9592         would be needed rather than a bool.  Add allow_unaligned argument.
9593         Change split_stores argument from reference to pointer, if NULL,
9594         only do a dry run computing how many stores would be produced.
9595         Rewritten algorithm to use both alignment and misalign if
9596         !allow_unaligned and handle bitfield stores with gaps.
9597         (imm_store_chain_info::output_merged_store): Set start_byte_pos
9598         from bitregion_start instead of start.  Compute allow_unaligned
9599         here, if true, do 2 split_group dry runs to compute which one
9600         produces fewer stores and prefer aligned if equal.  Punt if
9601         new count is bigger or equal than original before emitting any
9602         statements, rather than during that.  Remove no longer needed
9603         new_ssa_names tracking.  Replace num_stmts with
9604         split_stores.length ().  Use 32-bit stack allocated entries
9605         in split_stores auto_vec.  Try to reuse original store lhs/rhs1
9606         if possible.  Handle bitfields with gaps.
9607         (pass_store_merging::execute): Ignore bitsize == 0 stores.
9608         Compute bitregion_{start,end} for the stores and construct
9609         store_immediate_info with that.  Formatting fixes.
9610
9611 2017-10-30  Uros Bizjak  <ubizjak@gmail.com>
9612
9613         PR target/82725
9614         * config/i386/i386.c (legitimate_pic_address_disp_p): Allow
9615         UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset.
9616
9617 2017-10-29  Jim Wilson  <wilson@tuliptree.org>
9618
9619         * gimplify.c: Include tm_p.h.
9620
9621         * common.opt (gcoff): Re-add as ignored option.
9622         (gcoff1, gcoff2, gcoff3): Likewise.
9623
9624         * Makefile.in (OBJS): Delete sdbout.o.
9625         (GTFILES): Delete $(srcdir)/sdbout.c.
9626         * debug.h: Delete sdb_debug_hooks.
9627         * final.c: Delete sdbout.h include.
9628         (final_scan_insn): Delete SDB_DEBUG check.
9629         (rest_of_clean_state): Likewise.
9630         * output.h: Delete sdb_begin_function_line.
9631         * sdbout.c: Delete.
9632         * sdbout.h: Delete.
9633         * toplev.c: Delete sdbout.h include.
9634         (process_options): Delete SDB_DEBUG check.
9635         * tree-core.h (tree_type_common): Delete pointer field of
9636         tree_type_symtab.
9637         * tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of
9638         TYPE_SYMTAB_POINTER.
9639         * tree.h (TYPE_SYMTAB_POINTER): Delete.
9640         (TYPE_SYMTAB_IS_POINTER): Delete.
9641         (TYPE_SYMTAB_IS_DIE): Renumber.
9642         * xcoffout.c: Refer to former sdbout.c file.
9643         (xcoffout_begin_prologue): Use past tense for sdbout.c reference.
9644
9645         * doc/install.texi (--with-stabs): Delete COFF and ECOFF info.
9646         * doc/invoke.texi (SEEALSO): Delete adb and sdb references.
9647         (Debugging Options): Delete -gcoff.
9648         (-gstabs): Delete SDB reference.
9649         (-gcoff): Delete.
9650         (-gcoff@var{level}): Delete.
9651         * doc/passes.texi (Debugging information output): Delete SDB and
9652         sdbout.c references.
9653         * doc/tm.texi: Regenerate.
9654         * doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref.
9655         (SDB and DWARF): Change node name to DWARF and delete SDB and COFF
9656         references.
9657         (DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references.
9658         (PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references.
9659         (SDB_DEBUGGING_INFO): Delete.
9660         (PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES)
9661         SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete.
9662         * target.def (output_source_filename): Delete COFF reference.
9663
9664         * common.opt (gcoff): Delete.
9665         (gxcoff+): Update Negative chain.
9666         * defaults.h: Delete all references to SDB_DEBUGGING_INFO and
9667         SDB_DEBUG.
9668         * dwarf2out.c (gen_array_type_die): Change SDB to debuggers.
9669         * flag-types.h (enum debug_info_type): Delete SDB_DEBUG.
9670         * function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG,
9671         and SDB references.
9672         (expand_function_start): Change sdb reference to past tense.
9673         (expand_function_end): Change sdb reference to past tense.
9674         * gcc.c (cpp_unique_options): Delete gcoff3 reference.
9675         * opts.c (debug_type_names): Delete coff entry.
9676         (common_handle_option): Delete OPT_gcoff case.
9677         * system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison.
9678
9679         * config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG.
9680         * config/cris/cris.h: Delete SDB reference in comment.
9681         * config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO.
9682         (ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment.
9683         * config/i386/gas.h: Don't define SDB_DEBUGGING_INFO.
9684         * config/i386/i386.c (svr4_dbx_register_map): Change SDB references
9685         to past tense.
9686         (ix86_expand_prologue): Likewise.
9687         * config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG.
9688         * config/ia64/ia64.h: Likewise.
9689         * config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference.
9690         * config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff*
9691         support.
9692         * config/mmix/mmix.h: Likewise.
9693         * config/nds32/nds32.c: Likewise.
9694         * config/stormy/storym16.h: Likewise.
9695         * config/visium/visium.h: Likewise.
9696         * config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef.
9697
9698 2017-10-28  Sandra Loosemore  <sandra@codesourcery.com>
9699
9700         * config/nios2/nios2.h (FRAME_GROWS_DOWNWARD): Define to 1.
9701         * config/nios2/nios2.c (nios2_initial_elimination_offset):  Make
9702         FRAME_POINTER_REGNUM point at high end of local var area.
9703
9704 2017-10-27  Eric Botcazou  <ebotcazou@adacore.com>
9705
9706         * bb-reorder.c (find_traces_1_round): Fix off-by-one index.
9707         Move comment around.  Do not reset best_edge for a copiable
9708         destination if the copy would cause a partition change.
9709         (better_edge_p): Remove redundant check.
9710
9711 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
9712
9713         * config/i386/i386-protos.h (ix86_fp_compare_mode): Remove prototype.
9714
9715 2017-10-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
9716
9717         * builtins.c (CASE_MATHFN_FLOATN): New helper macro to add cases
9718         for math functions that have _Float<N> and _Float<N>X variants.
9719         (mathfn_built_in_2): Add support for math functions that have
9720         _Float<N> and _Float<N>X variants.
9721         (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro.
9722         (expand_builtin_mathfn_ternary): Add support for fma with
9723         _Float<N> and _Float<N>X variants.
9724         (expand_builtin): Likewise.
9725         (fold_builtin_3): Likewise.
9726         * builtins.def (DEF_EXT_LIB_FLOATN_NX_BUILTINS): New macro to
9727         create math function _Float<N> and _Float<N>X variants as external
9728         library builtins.
9729         (BUILT_IN_COPYSIGN _Float<N> and _Float<N>X variants) Use
9730         DEF_EXT_LIB_FLOATN_NX_BUILTINS to make built-in functions using
9731         the __builtin_ prefix and if not strict ansi, without the prefix.
9732         (BUILT_IN_FABS _Float<N> and _Float<N>X variants): Likewise.
9733         (BUILT_IN_FMA _Float<N> and _Float<N>X variants): Likewise.
9734         (BUILT_IN_FMAX _Float<N> and _Float<N>X variants): Likewise.
9735         (BUILT_IN_FMIN _Float<N> and _Float<N>X variants): Likewise.
9736         (BUILT_IN_NAN _Float<N> and _Float<N>X variants): Likewise.
9737         (BUILT_IN_SQRT _Float<N> and _Float<N>X variants): Likewise.
9738         * builtin-types.def (BT_FN_FLOAT16_FLOAT16_FLOAT16_FLOAT16): New
9739         function signatures for fma _Float<N> and _Float<N>X variants.
9740         (BT_FN_FLOAT32_FLOAT32_FLOAT32_FLOAT32): Likewise.
9741         (BT_FN_FLOAT64_FLOAT64_FLOAT64_FLOAT64): Likewise.
9742         (BT_FN_FLOAT128_FLOAT128_FLOAT128_FLOAT128): Likewise.
9743         (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_FLOAT32X): Likewise.
9744         (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_FLOAT64X): Likewise.
9745         (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_FLOAT128X): Likewise.
9746         * gencfn-macros.c (print_case_cfn): Add support for math functions
9747         that have _Float<N> and _Float<N>X variants.
9748         (print_define_operator_list): Likewise.
9749         (fltfn_suffixes): Likewise.
9750         (main): Likewise.
9751         * internal-fn.def (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro
9752         for math functions that have _Float<N> and _Float<N>X variants.
9753         (SQRT): Add support for sqrt, copysign, fmin and fmax _Float<N>
9754         and _Float<N>X variants.
9755         (COPYSIGN): Likewise.
9756         (FMIN): Likewise.
9757         (FMAX): Likewise.
9758         * fold-const.c (tree_call_nonnegative_warnv_p): Add support for
9759         copysign, fma, fmax, fmin, and sqrt _Float<N> and _Float<N>X
9760         variants.
9761         (integer_valued_read_call_p): Likewise.
9762         * fold-const-call.c (fold_const_call_ss): Likewise.
9763         (fold_const_call_sss): Add support for copysign, fmin, and fmax
9764         _Float<N> and _Float<N>X variants.
9765         (fold_const_call_ssss): Add support for fma _Float<N> and
9766         _Float<N>X variants.
9767         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Add
9768         support for copysign and fma _Float<N> and _Float<N>X variants.
9769         (backprop::process_builtin_call_use): Likewise.
9770         * tree-call-cdce.c (can_test_argument_range); Add support for
9771         sqrt _Float<N> and _Float<N>X variants.
9772         (edom_only_function): Likewise.
9773         (get_no_error_domain): Likewise.
9774         * tree-ssa-math-opts.c (internal_fn_reciprocal): Likewise.
9775         * tree-ssa-reassoc.c (attempt_builtin_copysign): Add support for
9776         copysign _Float<N> and _Float<N>X variants.
9777         * config/rs6000/rs6000-builtin.def (SQRTF128): Delete, this is now
9778         handled by machine independent code.
9779         (FMAF128): Likewise.
9780         * doc/cpp.texi (Common Predefined Macros): Document defining
9781         __FP_FAST_FMAF<N> and __FP_FAST_FMAF<N>X if the backend supports
9782         fma _Float<N> and _Float<N>X variants.
9783
9784 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
9785
9786         PR target/82692
9787         * config/i386/i386-modes.def (CCFPU): Remove definition.
9788         * config/i386/i386.c (put_condition_mode): Remove CCFPU mode handling.
9789         (ix86_cc_modes_compatible): Ditto.
9790         (ix86_expand_carry_flag_compare): Ditto.
9791         (ix86_expand_int_movcc): Ditto.
9792         (ix86_expand_int_addcc): Ditto.
9793         (ix86_reverse_condition): Ditto.
9794         (ix86_unordered_fp_compare): Rename from ix86_fp_compare_mode.
9795         Return true/false for unordered/ordered fp comparisons.
9796         (ix86_cc_mode): Always return CCFPmode for float mode comparisons.
9797         (ix86_prepare_fp_compare_args): Update for rename.
9798         (ix86_expand_fp_compare): Update for rename.  Generate unordered
9799         compare RTXes wrapped with UNSPEC_NOTRAP unspec.
9800         (ix86_expand_sse_compare_and_jump): Ditto.
9801         * config/i386/predicates.md (fcmov_comparison_operator):
9802         Remove CCFPU mode handling.
9803         (ix86_comparison_operator): Ditto.
9804         (ix86_carry_flag_operator): Ditto.
9805         * config/i386/i386.md (UNSPEC_NOTRAP): New unspec.
9806         (*cmpu<mode>_i387): Wrap compare RTX with UNSPEC_NOTRAP unspec.
9807         (*cmpu<mode>_cc_i387): Ditto.
9808         (FPCMP): Remove mode iterator.
9809         (unord): Remove mode attribute.
9810         (unord_subst): New define_subst transformation
9811         (unord): New define_subst attribute.
9812         (unordered): Ditto.
9813         (*cmpi<unord><MODEF:mode>): Rewrite using unord_subst transformation.
9814         (*cmpi<unord>xf_i387): Ditto.
9815         * config/i386/sse.md (<sse>_<unord>comi<round_saeonly_name>): Merge
9816         from <sse>_comi<round_saeonly_name> and <sse>_ucomi<round_saeonly_name>
9817         using unord_subst transformation.
9818         * config/i386/subst.md (SUBST_A): Remove CCFP and CCFPU modes.
9819         (round_saeonly): Also handle CCFP mode.
9820         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_NOTRAP unspec.
9821         Remove UNSPEC_SAHF unspec handling.
9822
9823 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
9824
9825         * x86-tune.def (X86_TUNE_INTER_UNIT_MOVES_TO_VEC): Disable for Zen.
9826
9827 2017-10-27  Jeff Law  <law@redhat.com>
9828
9829         * gimple-ssa-sprintf.c: Include domwalk.h.
9830         (class sprintf_dom_walker): New class, derived from dom_walker.
9831         (sprintf_dom_walker::before_dom_children): New function.
9832         (struct call_info): Moved into sprintf_dom_walker class
9833         (compute_formath_length, handle_gimple_call): Likewise.
9834         (sprintf_length::execute): Call the dominator walker rather
9835         than walking the statements.
9836
9837         * tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle
9838         gimple statement locations.
9839         (check_array_bounds): Corresponding changes.  Get the statement's
9840         location directly from wi->stmt.
9841
9842 2017-10-27  Palmer Dabbelt  <palmer@dabbelt.com>
9843
9844         PR target/82717
9845         * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
9846
9847 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
9848
9849         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
9850         X86_TUNE_MOVX): Disable for Haswell and newer CPUs.
9851
9852 2017-10-27  Jakub Jelinek  <jakub@redhat.com>
9853
9854         PR target/82703
9855         * config/i386/i386-protos.h (maybe_get_pool_constant): Removed.
9856         * config/i386/i386.c (maybe_get_pool_constant): Removed.
9857         (ix86_split_to_parts): Use avoid_constant_pool_reference instead of
9858         maybe_get_pool_constant.
9859         * config/i386/predicates.md (zero_extended_scalar_load_operand):
9860         Likewise.
9861
9862 2017-10-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9863
9864         * doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas
9865         2.26 caveat.  Update gas and gld versions.
9866         (Specific, *-*-solaris2*): Update binutils version.  Remove caveat
9867         reference.
9868
9869 2017-10-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
9870
9871         * cgraph.h (set_malloc_flag): Declare.
9872         * cgraph.c (set_malloc_flag_1): New function.
9873         (set_malloc_flag): Likewise.
9874         * ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
9875         * ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
9876         false.
9877         (read_ipa_call_summary): Add support for reading is_return_callee.
9878         (write_ipa_call_summary): Stream is_return_callee.
9879         * ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
9880         * ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
9881         ipa-prop.h, ipa-fnsummary.h.
9882         (pure_const_names): Change to static.
9883         (malloc_state_e): Define.
9884         (malloc_state_names): Define.
9885         (funct_state_d): Add field malloc_state.
9886         (varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
9887         (check_retval_uses): New function.
9888         (malloc_candidate_p): Likewise.
9889         (analyze_function): Add support for malloc attribute.
9890         (pure_const_write_summary): Stream malloc_state.
9891         (pure_const_read_summary): Add support for reading malloc_state.
9892         (dump_malloc_lattice): New function.
9893         (propagate_malloc): New function.
9894         (warn_function_malloc): New function.
9895         (ipa_pure_const::execute): Call propagate_malloc and
9896         ipa_free_fn_summary.
9897         (pass_local_pure_const::execute): Add support for malloc attribute.
9898         * ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
9899         * doc/invoke.texi: Document Wsuggest-attribute=malloc.
9900
9901 2017-10-27  Martin Liska  <mliska@suse.cz>
9902
9903         PR gcov-profile/82457
9904         * doc/invoke.texi: Document that one needs a non-strict ISO mode
9905         for fork-like functions to be properly instrumented.
9906
9907 2017-10-27  Richard Biener  <rguenther@suse.de>
9908
9909         PR middle-end/81659
9910         * tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator
9911         info when we redirected EH.
9912
9913 2017-10-26  Michael Collison  <michael.collison@arm.com>
9914
9915         * config/aarch64/aarch64.md(<optab>_trunc><vf><GPI:mode>2):
9916         New pattern.
9917         (<optab>_trunchf<GPI:mode>2: New pattern.
9918         (<optab>_trunc<vgp><GPI:mode>2: New pattern.
9919         * config/aarch64/iterators.md (wv): New mode attribute.
9920         (vf, VF): New mode attributes.
9921         (vgp, VGP): New mode attributes.
9922         (s): Update attribute with SImode and DImode prefixes.
9923
9924 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
9925
9926         * config/nios2/constraints.md ("S"): Match r0rel_constant_p too.
9927         * config/nios2/nios2-protos.h (r0rel_constant_p): Declare.
9928         * config/nios2/nios2.c: (nios2_r0rel_sec_regex): New.
9929         (nios2_option_overide): Initialize it.  Don't allow R0-relative
9930         addressing with PIC.
9931         (nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p.
9932         (nios2_symbolic_constant_p): Likewise.
9933         (nios2_legitimate_address_p): Likewise.
9934         (nios2_r0rel_section_name_p): New.
9935         (nios2_symbol_ref_in_r0rel_data_p): New.
9936         (nios2_emit_move_sequence): Handle r0rel_constant_p.
9937         (r0rel_constant_p): New.
9938         (nios2_print_operand_address): Handle r0rel_constant_p.
9939         (nios2_cdx_narrow_form_p): Likewise.
9940         * config/nios2/nios2.opt (mr0rel-sec=): New option.
9941         * doc/invoke.texi (Option Summary): Add -mr0rel-sec.
9942         (Nios II Options): Document -mr0rel-sec.
9943
9944 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
9945
9946         * config/nios2/nios2.c: Include xregex.h.
9947         (nios2_gprel_sec_regex): New.
9948         (nios2_option_overide): Initialize it.  Don't allow GP-relative
9949         addressing with PIC.
9950         (nios2_small_section_name_p): Check for regex match.
9951         * config/nios2/nios2.opt (mgprel-sec=): New option.
9952         * doc/invoke.texi (Option Summary): Add -mgprel-sec.
9953         (Nios II Options): Document -mgprel-sec.
9954
9955 2017-10-26  Jim Wilson  <wilson@tuliptree.org>
9956
9957         * doc/invoke.texi (-fdebug-prefix-map): Expand documentation.
9958
9959 2017-10-26  Tom de Vries  <tom@codesourcery.com>
9960
9961         PR tree-optimization/82707
9962         * gimple.c (gimple_copy): Fix unsharing of
9963         GIMPLE_OMP_{SINGLE,TARGET,TEAMS}.
9964
9965 2017-10-26  Olga Makhotina  <olga.makhotina@intel.com>
9966
9967         * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
9968         _mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
9969         _mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
9970         _mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
9971         _mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
9972         _mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
9973         _mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
9974         _mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
9975         _mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask,
9976         _mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
9977         _mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
9978         _mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
9979         _mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
9980         _mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
9981         _mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
9982         _mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
9983         _mm512_mask_cmpunord_ps_mask): New intrinsics.
9984
9985 2017-10-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
9986
9987         * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
9988         default to IBM.
9989         * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
9990         * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
9991         warning to rs6000.c.  Remove the Undocumented flag, since it has
9992         been documented.
9993         (-mabi=ibmlongdouble): Likewise.
9994         * config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not
9995         already set, set the default format for long double.
9996         (rs6000_debug_reg_global): Print whether long double is IBM or
9997         IEEE.
9998         (rs6000_option_override_internal): Rework setting long double
9999         format.  Only warn if the user is changing the long double default
10000         and they did not use -Wno-psabi.
10001         * doc/invoke.texi (PowerPC options): Update the documentation for
10002         -mabi=ieeelongdouble and -mabi=ibmlongdouble.
10003
10004 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
10005             Alan Hayward  <alan.hayward@arm.com>
10006             David Sherwood  <david.sherwood@arm.com>
10007
10008         * rtl.h (wider_subreg_mode): New function.
10009         * ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
10010         rather than an unsigned int *.
10011         * ira-color.c (regno_max_ref_width): Replace with...
10012         (regno_max_ref_mode): ...this new variable.
10013         (coalesced_pseudo_reg_slot_compare): Update accordingly.
10014         Use wider_subreg_mode.
10015         (ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
10016         rather than an unsigned int *.
10017         * lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
10018         (process_alt_operands): Likewise.
10019         (invariant_p): Likewise.
10020         * lra-spills.c (assign_mem_slot): Likewise.
10021         (add_pseudo_to_slot): Likewise.
10022         * lra.c (collect_non_operand_hard_regs): Likewise.
10023         (add_regs_to_insn_regno_info): Likewise.
10024         * reload1.c (regno_max_ref_width): Replace with...
10025         (regno_max_ref_mode): ...this new variable.
10026         (reload): Update accordingly.  Update call to
10027         ira_sort_regnos_for_alter_reg.
10028         (alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
10029         (init_eliminable_invariants): Update to use regno_max_ref_mode.
10030         (scan_paradoxical_subregs): Likewise.
10031
10032 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
10033
10034         * config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used.
10035         (aarch64_frame): Add emit_frame_chain boolean.
10036         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
10037         Move eh_return case to aarch64_layout_frame.
10038         (aarch64_layout_frame): Initialize emit_frame_chain.
10039         (aarch64_expand_prologue): Use emit_frame_chain.
10040
10041 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
10042
10043         * config/aarch64/aarch64.c (aarch64_layout_frame):
10044         Ensure LR is always stored at the bottom of the callee-saves.
10045         Remove rarely used frame layout which saves callee-saves at top of
10046         frame, so the store of LR can be used as a valid probe in all cases.
10047
10048 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
10049
10050         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
10051         Improve unaligned TImode/TFmode base/offset split.
10052
10053 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
10054             Alan Hayward  <alan.hayward@arm.com>
10055             David Sherwood  <david.sherwood@arm.com>
10056
10057         * caller-save.c (mark_referenced_regs):  Use read_modify_subreg_p.
10058         * combine.c (find_single_use_1): Likewise.
10059         (expand_field_assignment): Likewise.
10060         (move_deaths): Likewise.
10061         * lra-constraints.c (simplify_operand_subreg): Likewise.
10062         (curr_insn_transform): Likewise.
10063         * lra.c (collect_non_operand_hard_regs): Likewise.
10064         (add_regs_to_insn_regno_info): Likewise.
10065         * rtlanal.c (reg_referenced_p): Likewise.
10066         (covers_regno_no_parallel_p): Likewise.
10067
10068 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
10069
10070         * wide-int-print.cc (print_hex): Loop based on extract_uhwi.
10071         Don't print any bits outside the precision of the value.
10072         * wide-int.cc (test_printing): Add some new tests.
10073
10074 2017-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
10075
10076         * configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
10077         supports -xbrace_comment option.
10078         * configure: Regenerate.
10079         * config.in: Regenerate.
10080         * config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
10081         (ASM_CPU_SPEC): Use it.
10082
10083 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
10084
10085         * target.def (static_rtx_alignment): New hook.
10086         * targhooks.h (default_static_rtx_alignment): Declare.
10087         * targhooks.c (default_static_rtx_alignment): New function.
10088         * doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook.
10089         * doc/tm.texi: Regenerate.
10090         * varasm.c (force_const_mem): Use targetm.static_rtx_alignment
10091         instead of targetm.constant_alignment.  Remove call to
10092         set_mem_attributes.
10093         * config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
10094         (cris_preferred_mininum_alignment): New function, split out from...
10095         (cris_constant_alignment): ...here.
10096         (cris_static_rtx_alignment): New function.
10097         * config/i386/i386.c (ix86_static_rtx_alignment): New function,
10098         split out from...
10099         (ix86_constant_alignment): ...here.
10100         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
10101         * config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
10102         (mmix_static_rtx_alignment): New function.
10103         * config/spu/spu.c (spu_static_rtx_alignment): New function.
10104         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
10105
10106 2017-10-26  Tamar Christina  <tamar.christina@arm.com>
10107
10108         PR target/81800
10109         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2):
10110         Add flag_trapping_math and flag_fp_int_builtin_inexact.
10111
10112 2017-10-25  Palmer Dabbelt  <palmer@dabbelt.com>
10113
10114         * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
10115         * config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s,
10116         mark as a sign-extending load.
10117         (local_pic_load_u): Define.
10118
10119 2017-10-25  Eric Botcazou  <ebotcazou@adacore.com>
10120
10121         PR middle-end/82062
10122         * fold-const.c (operand_equal_for_comparison_p): Also return true
10123         if ARG0 is a simple variant of ARG1 with narrower precision.
10124         (fold_ternary_loc): Always pass unstripped operands to the predicate.
10125
10126 2017-10-25  Jan Hubicka  <hubicka@ucw.cz>
10127
10128         * i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather
10129         cost correctly.
10130         * i386.h (processor_costs): Add gather_static, gather_per_elt,
10131         scatter_static, scatter_per_elt.
10132         * x86-tune-costs.h: Add new cost entries.
10133
10134 2017-10-25  Richard Biener  <rguenther@suse.de>
10135
10136         * tree-ssa-sccvn.h (vn_eliminate): Declare.
10137         * tree-ssa-pre.c (class eliminate_dom_walker, eliminate,
10138         class pass_fre): Move to ...
10139         * tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate,
10140         class pass_fre): ... here and adjust for statistics.
10141
10142 2017-10-25  Jakub Jelinek  <jakub@redhat.com>
10143
10144         PR libstdc++/81706
10145         * attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal
10146         for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}.
10147         (duplicate_one_attribute, copy_attributes_to_builtin): New functions.
10148         * attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New
10149         declarations.
10150
10151 2017-10-25  Richard Biener  <rguenther@suse.de>
10152
10153         * tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove,
10154         el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail,
10155         eliminate_push_avail, eliminate_insert): Move inside...
10156         (class eliminate_dom_walker): ... this class in preparation
10157         of move.
10158         (fini_eliminate): Remove by merging with ...
10159         (eliminate): ... this function.  Adjust for class changes.
10160         (pass_pre::execute): Remove fini_eliminate call.
10161         (pass_fre::execute): Likewise.
10162
10163 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
10164
10165         PR target/82460
10166         * config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove.
10167         (VPERMI2, VPERMI2I): New mode iterators.
10168         (<avx512>_vpermi2var<mode>3_maskz): Remove 3 define_expand patterns.
10169         (<avx512>_vpermi2var<mode>3<sd_maskz_name>): Remove 3 define_insn
10170         patterns.
10171         (<avx512>_vpermi2var<mode>3_mask): New define_expand using VPERMI2
10172         mode iterator.  Remove 3 old define_insn patterns.
10173         (*<avx512>_vpermi2var<mode>3_mask): 2 new define_insn patterns.
10174         (<avx512>_vpermt2var<mode>3_maskz): Adjust 1 define_expand to use
10175         VPERMI2 mode iterator, remove the other two expanders.
10176         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): Adjust 1 define_insn
10177         to use VPERMI2 mode iterator, add another alternative for vpermi2*
10178         instructions, remove the other two patterns.
10179         (<avx512>_vpermt2var<mode>3_mask): Adjust 1 define_insn to use VPERMI2
10180         mode iterator, remove the other two patterns.
10181         * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ...
10182         (ix86_expand_vec_perm_vpermt2): ... this.  Swap mask and op0
10183         arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2*
10184         and adjust argument order accordingly.
10185         (ix86_expand_vec_perm): Adjust caller.
10186         (expand_vec_perm_1): Likewise.
10187         (expand_vec_perm_vpermi2_vpshub2): Rename to ...
10188         (expand_vec_perm_vpermt2_vpshub2): ... this.
10189         (ix86_expand_vec_perm_const_1): Adjust caller.
10190         (ix86_vectorize_vec_perm_const_ok): Adjust comments.
10191
10192         PR target/82370
10193         * config/i386/sse.md (VIMAX_AVX2): Remove V4TImode.
10194         (VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators.
10195         (vec_shl_<mode>): Remove unused expander.
10196         (avx512bw_<shift_insn><mode>3): New define_insn.
10197         (<sse2_avx2>_ashl<mode>3, <sse2_avx2>_lshr<mode>3): Replaced by ...
10198         (<sse2_avx2>_<shift_insn><mode>3): ... this.  New define_insn.
10199
10200 2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>
10201
10202         PR c++/82466
10203         * doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend
10204         description.
10205
10206 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
10207
10208         PR rtl-optimization/82396
10209         * gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround.
10210         (autopref_multipass_init): Simplify initialization.
10211         (autopref_rank_data): Simplify sort order.
10212         * gcc/sched-int.h (autopref_multipass_data_): Remove
10213         multi_mem_insn_p, min_offset and max_offset.
10214
10215 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
10216
10217         PR middle-end/60580
10218         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
10219         Check special value of flag_omit_frame_pointer.
10220         (aarch64_can_eliminate): Likewise.
10221         (aarch64_override_options_after_change_1): Simplify handling of
10222         -fomit-frame-pointer and -fomit-leaf-frame-pointer.
10223
10224 2017-10-24  Richard Biener  <rguenther@suse.de>
10225
10226         PR tree-optimization/82697
10227         * tree-ssa-phiopt.c (cond_store_replacement): Use alias-set
10228         zero for conditional load and unconditional store.
10229
10230 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
10231
10232         * doc/install.texi: Document bootstrap-cet.
10233
10234 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
10235
10236         PR target/82659
10237         * config/i386/i386.c (rest_of_insert_endbranch): Don't insert
10238         ENDBR instruction at function entrance if function is only
10239         called directly.
10240
10241 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
10242
10243         PR target/82628
10244         * config/i386/i386.md (addcarry<mode>, subborrow<mode>): Change
10245         patterns to better describe from which operation the CF is computed.
10246         (addcarry<mode>_0, subborrow<mode>_0): New patterns.
10247         * config/i386/i386.c (ix86_expand_builtin) <case handlecarry>: Pass
10248         one LTU with [DT]Imode and another one with [SD]Imode.  If arg0
10249         is 0, use _0 suffixed expanders instead of emitting a comparison
10250         before it.
10251
10252 2017-10-06  Sergey Shalnov  <Sergey.Shalnov@intel.com>
10253
10254         * config/i386/i386.md(*movsf_internal, *movdf_internal):
10255         Avoid 512-bit AVX modes for TARGET_PREFER_AVX256.
10256
10257 2017-10-24  Eric Botcazou  <ebotcazou@adacore.com>
10258
10259         PR middle-end/82569
10260         * tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete.
10261         * expr.c (expand_expr_real_1) <expand_decl_rtl>: Revert latest change.
10262         * loop-iv.c (iv_get_reaching_def): Likewise.
10263         * cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the
10264         variable is promoted and the partition contains undefined values.
10265
10266 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
10267
10268         * config/nios2/nios2.c (nios2_rtx_costs): Make costs better
10269         reflect reality.
10270         (nios2_address_cost): Define.
10271         (nios2_legitimize_address): Recognize (exp + constant) directly.
10272         (TARGET_ADDRESS_COST): Define.
10273
10274 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
10275
10276         * config/nios2/nios2-protos.h (nios2_large_constant_p): Declare.
10277         (nios2_symbolic_memory_operand_p): Declare.
10278         (nios2_split_large_constant): Declare.
10279         (nios2_split_symbolic_memory_operand): Declare.
10280         * config/nios2/nios2.c: Adjust includes.
10281         (nios2_symbolic_constant_allowed): New.
10282         (nios2_symbolic_constant_p): New.
10283         (nios2_plus_symbolic_constant_p): New.
10284         (nios2_valid_addr_expr_p): Recognize addresses involving
10285         symbolic constants.
10286         (nios2_legitimate_address_p): Likewise, also LO_SUM.
10287         (nios2_symbolic_memory_operand_p): New.
10288         (nios2_large_constant_p): New.
10289         (nios2_split_large_constant): New.
10290         (nios2_split_plus_large_constant): New.
10291         (nios2_split_symbolic_memory_operand): New.
10292         (nios2_legitimize_address): Code refactoring.  Handle addresses
10293         involving symbolic constants.
10294         (nios2_emit_move_sequence): Likewise.
10295         (nios2_print_operand): Improve error output.
10296         (nios2_print_operand_address): Handle LO_SUM.
10297         (nios2_cdx_narrow_form_p): Likewise.
10298         * config/nios2/nios2.md (movqi_internal): Add splitter for memory
10299         operands involving symbolic constants.
10300         (movhi_internal, movsi_internal): Likewise.
10301         (zero_extendhisi2, zero_extendqi<mode>2): Likewise.
10302         (extendhisi2, extendqi<mode>2): Likewise.
10303
10304 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
10305
10306         * tree-pass.h (PROP_rtl_split_insns): Define.
10307         * recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns.
10308
10309 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
10310
10311         * config/nios2/nios2.c (TARGET_LRA_P): Don't override.
10312
10313 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
10314
10315         PR debug/82630
10316         * target.def (const_not_ok_for_debug_p): Default to
10317         default_const_not_ok_for_debug_p instead of hook_bool_rtx_false.
10318         * targhooks.h (default_const_not_ok_for_debug_p): New declaration.
10319         * targhooks.c (default_const_not_ok_for_debug_p): New function.
10320         * dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for
10321         which targetm.const_not_ok_for_debug_p returned true.
10322         * config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true
10323         for UNSPECs.
10324         * config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p):
10325         Likewise.
10326         * config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise.
10327         * config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize
10328         UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol
10329         if !base_term_p.
10330         (ix86_const_not_ok_for_debug_p): New function.
10331         (i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF.
10332         (TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine.
10333
10334 2017-10-23  David Malcolm  <dmalcolm@redhat.com>
10335
10336         PR bootstrap/82610
10337         * system.h: Conditionally include "unique-ptr.h" if
10338         INCLUDE_UNIQUE_PTR is defined.
10339         * unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor
10340         of defining INCLUDE_UNIQUE_PTR before including "system.h".
10341
10342 2017-10-23  Sebastian Perta  <sebastian.perta@renesas.com>
10343
10344         * config/rl78/rl78.md: New define_expand "subdi3".
10345
10346 2017-10-23  H.J. Lu  <hongjiu.lu@intel.com>
10347
10348         PR target/82673
10349         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip
10350         DF_REF_INSN if DF_REF_INSN_INFO is false.
10351
10352 2017-10-23  Jan Hubicka  <hubicka@ucw.cz>
10353
10354         * i386.c (dimode_scalar_chain::compute_convert_gain): Use
10355         xmm_move instead of sse_move.
10356         (sse_store_index): New function.
10357         (ix86_register_move_cost): Be more sensible about mismatch stall;
10358         model AVX moves correctly; make difference between sse->integer and
10359         integer->sse.
10360         (ix86_builtin_vectorization_cost): Model correctly aligned and unaligned
10361         moves; make difference between SSE and AVX.
10362         * i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move
10363         and zmm_move. Increase size of sse load and store tables;
10364         add unaligned load and store tables; add ssemmx_to_integer.
10365         * x86-tune-costs.h: Update all entries according to real
10366         move latencies from Agner Fog's manual and chip documentation.
10367
10368 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
10369
10370         PR target/82628
10371         * config/i386/predicates.md (x86_64_dwzext_immediate_operand): New.
10372         * config/i386/constraints.md (Wf): New constraint.
10373         * config/i386/i386.md (UNSPEC_SBB): New unspec.
10374         (cmp<dwi>_doubleword): Removed.
10375         (sub<mode>3_carry_ccc, *sub<mode>3_carry_ccc_1): New patterns.
10376         (sub<mode>3_carry_ccgz): Use unspec instead of compare.
10377         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>: Don't
10378         expand with cmp<dwi>_doubleword.  For LTU and GEU use
10379         sub<mode>3_carry_ccc instead of sub<mode>3_carry_ccgz and use CCCmode.
10380
10381         * common.opt (gcolumn-info): Enable by default.
10382         * doc/invoke.texi (gcolumn-info): Document new default.
10383
10384 2017-10-23  Richard Biener  <rguenther@suse.de>
10385
10386         PR tree-optimization/82672
10387         * graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
10388         Fold the stmt if we propagated into it.
10389
10390 2017-10-23  Richard Biener  <rguenther@suse.de>
10391
10392         * tree-ssa-pre.c (bitmap_remove_from_set): Rename to...
10393         (bitmap_remove_expr_from_set): ... this.  All callers call this
10394         for non-constant values.
10395         (bitmap_set_subtract): Rename to...
10396         (bitmap_set_subtract_expressions): ... this.  Adjust and
10397         optimize.
10398         (bitmap_set_contains_value): Remove superfluous check.
10399         (bitmap_set_replace_value): Inline into single caller ...
10400         (bitmap_value_replace_in_set): ... here and simplify.
10401         (dependent_clean): Merge into ...
10402         (clean): ... this using an overload.  Adjust.
10403         (prune_clobbered_mems): Adjust.
10404         (compute_antic_aux): Likewise.
10405         (compute_partial_antic_aux): Likewise.
10406
10407 2017-10-23  Richard Biener  <rguenther@suse.de>
10408
10409         PR tree-optimization/82129
10410         Revert
10411         2017-08-01  Richard Biener  <rguenther@suse.de>
10412
10413         PR tree-optimization/81181
10414         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
10415         (compute_antic): ... end of iteration here.
10416
10417 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10418
10419         * target.def (starting_frame_offset): New hook.
10420         * doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of...
10421         (TARGET_STARTING_FRAME_OFFSET): ...this new hook.
10422         * doc/tm.texi.in: Regenerate.
10423         * hooks.h (hook_hwi_void_0): Declare.
10424         * hooks.c (hook_hwi_void_0): New function.
10425         * doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of
10426         STARTING_FRAME_OFFSET.
10427         * builtins.c (expand_builtin_setjmp_receiver): Likewise.
10428         * reload1.c (reload): Likewise.
10429         * cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset
10430         instead of STARTING_FRAME_OFFSET.
10431         * function.c (try_fit_stack_local): Likewise.
10432         (assign_stack_local_1): Likewise
10433         (instantiate_virtual_regs): Likewise.
10434         * rtlanal.c (rtx_addr_can_trap_p_1): Likewise.
10435         * config/avr/avr.md (nonlocal_goto_receiver): Likewise.
10436         * config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete.
10437         * config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise.
10438         * config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise.
10439         * config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise.
10440         * config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise.
10441         * config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise.
10442         * config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise.
10443         * config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise.
10444         * config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise.
10445         * config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise.
10446         * config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise.
10447         * config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise.
10448         * config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise.
10449         * config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise.
10450         * config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise.
10451         * config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise.
10452         * config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise.
10453         * config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise.
10454         * config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise.
10455         * config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise.
10456         * config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise.
10457         * config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise.
10458         * config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise.
10459         * config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise.
10460         * config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise.
10461         * config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise.
10462         * config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise.
10463         * config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise.
10464         * config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise.
10465         * config/sparc/sparc.c (sparc_compute_frame_size): Likewise.
10466         * config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise.
10467         * config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise.
10468         * config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise.
10469         * config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise.
10470         * config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise.
10471         * config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise.
10472         * config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise.
10473         * config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise.
10474         * config/avr/avr-protos.h (avr_starting_frame_offset): Likewise.
10475         * config/avr/avr.c (avr_starting_frame_offset): Make static and
10476         return a HOST_WIDE_INT.
10477         (avr_builtin_setjmp_frame_value): Use it instead of
10478         STARTING_FRAME_OFFSET.
10479         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10480         * config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete.
10481         * config/epiphany/epiphany.c (epiphany_starting_frame_offset):
10482         New function.
10483         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10484         * config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete.
10485         * config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function.
10486         (TARGET_CONSTANT_ALIGNMENT): Redefine.
10487         * config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete.
10488         * config/lm32/lm32.c (lm32_starting_frame_offset): New function.
10489         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10490         * config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete.
10491         * config/m32r/m32r.c (m32r_starting_frame_offset): New function.
10492         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10493         * config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete.
10494         * config/microblaze/microblaze.c (microblaze_starting_frame_offset):
10495         New function.
10496         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10497         * config/mips/mips.h (STARTING_FRAME_OFFSET): Delete.
10498         * config/mips/mips.c (mips_compute_frame_info): Refer to
10499         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
10500         (mips_starting_frame_offset): New function.
10501         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10502         * config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete.
10503         * config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete.
10504         * config/mmix/mmix.c (mmix_starting_frame_offset): Make static
10505         and return a HOST_WIDE_INT.
10506         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10507         (mmix_initial_elimination_offset): Refer to
10508         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
10509         * config/pa/pa.h (STARTING_FRAME_OFFSET): Delete.
10510         * config/pa/pa.c (pa_starting_frame_offset): New function.
10511         (pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET.
10512         (pa_expand_prologue): Likewise.
10513         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10514         * config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out
10515         !FRAME_GROWS_DOWNWARD handling to...
10516         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10517         * config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out
10518         !FRAME_GROWS_DOWNWARD handling to...
10519         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10520         * config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out
10521         !FRAME_GROWS_DOWNWARD handling to...
10522         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10523         * config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET):
10524         Redefine.
10525         (rs6000_starting_frame_offset): New function.
10526         * config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out
10527         !FRAME_GROWS_DOWNWARD handling to...
10528         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10529         * config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out
10530         !FRAME_GROWS_DOWNWARD handling to...
10531         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10532         * config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out
10533         !FRAME_GROWS_DOWNWARD handling to...
10534         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10535         * config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine.
10536         (rs6000_starting_frame_offset): New function.
10537         * config/vax/elf.h (STARTING_FRAME_OFFSET): Delete.
10538         * config/vax/vax.h (STARTING_FRAME_OFFSET): Delete.
10539         * config/vax/vax.c (vax_starting_frame_offset): New function.
10540         (vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET.
10541         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10542         * config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete.
10543         * config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function.
10544         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10545         * system.h (STARTING_FRAME_OFFSET): Poison.
10546
10547 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10548
10549         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
10550         SCALAR_TYPE_MODE instead of TYPE_MODE.
10551
10552 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10553             Alan Hayward  <alan.hayward@arm.com>
10554             David Sherwood  <david.sherwood@arm.com>
10555
10556         * dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE
10557
10558 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10559             Alan Hayward  <alan.hayward@arm.com>
10560             David Sherwood  <david.sherwood@arm.com>
10561
10562         * expmed.c (expand_shift_1): Use scalar_mode for scalar_mode.
10563
10564 2017-10-23  Richard Biener  <rguenther@suse.de>
10565
10566         PR tree-optimization/82129
10567         * tree-ssa-pre.c (bitmap_set_and): Remove.
10568         (compute_antic_aux): Compute ANTIC_OUT intersection in a way
10569         canonicalizing expressions in the set to those with lowest
10570         ID rather than taking that from the first edge.
10571
10572 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10573
10574         * combine.c (rtx_equal_for_field_assignment_p): Use
10575         byte_lowpart_offset.
10576
10577 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10578             Alan Hayward  <alan.hayward@arm.com>
10579             David Sherwood  <david.sherwood@arm.com>
10580
10581         * internal-fn.c (expand_direct_optab_fn): Don't assign directly
10582         to a SUBREG_PROMOTED_VAR.
10583
10584 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10585             Alan Hayward  <alan.hayward@arm.com>
10586             David Sherwood  <david.sherwood@arm.com>
10587
10588         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION.
10589         (expand_debug_source_expr): Likewise.
10590         * combine.c (combine_simplify_rtx): Likewise.
10591         * cse.c (fold_rtx): Likewise.
10592         * optabs.c (expand_float): Likewise.
10593         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
10594         (simplify_binary_operation_1): Likewise.
10595
10596 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10597             Alan Hayward  <alan.hayward@arm.com>
10598             David Sherwood  <david.sherwood@arm.com>
10599
10600         * combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P.
10601         (record_promoted_value): Likewise.
10602         * expr.c (expand_expr_real_2): Likewise.
10603         * ree.c (update_reg_equal_equiv_notes): Likewise.
10604         (combine_set_extension): Likewise.
10605         * rtlanal.c (low_bitmask_len): Likewise.
10606         * simplify-rtx.c (neg_const_int): Likewise.
10607         (simplify_binary_operation_1): Likewise.
10608
10609 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10610             Alan Hayward  <alan.hayward@arm.com>
10611             David Sherwood  <david.sherwood@arm.com>
10612
10613         * lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset.
10614         * regcprop.c (maybe_mode_change): Likewise.
10615         * reload1.c (alter_reg): Likewise.
10616
10617 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10618
10619         * inchash.h (inchash::hash::add_wide_int): New function.
10620         * lto-streamer-out.c (hash_tree): Use it.
10621
10622 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10623
10624         * inchash.h (inchash::hash::add_wide_int): Rename to...
10625         (inchash::hash::add_hwi): ...this.
10626         * ipa-devirt.c (hash_odr_vtable): Update accordingly.
10627         (polymorphic_call_target_hasher::hash): Likewise.
10628         * ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise.
10629         (sem_item::add_expr, sem_item::add_type, sem_variable::get_hash)
10630         (sem_item_optimizer::update_hash_by_addr_refs): Likewise.
10631         * lto-streamer-out.c (hash_tree): Likewise.
10632         * optc-save-gen.awk: Likewise.
10633         * tree.c (add_expr): Likewise.
10634
10635 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
10636
10637         PR target/52451
10638         * config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode
10639         for ordered inequality comparisons even with TARGET_IEEE_FP.
10640
10641 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
10642
10643         PR target/82628
10644         * config/i386/i386.md (cmp<dwi>_doubleword): New pattern.
10645         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
10646         Expand with cmp<dwi>_doubleword.
10647
10648 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10649
10650         * extend.texi: Add x86 specific to 'nocf_check' attribute.
10651         List CET intrinsics.
10652         * invoke.texi: Add -mcet, -mibt, -mshstk options.  Add x86
10653         specific to -fcf-protection option.
10654
10655 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10656
10657         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New.
10658         (OPTION_MASK_ISA_SHSTK_SET): Likewise.
10659         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
10660         (OPTION_MASK_ISA_SHSTK_UNSET): Likewise.
10661         (ix86_handle_option): Add -mibt, -mshstk, -mcet handling.
10662         * config.gcc (extra_headers): Add cetintrin.h for x86 targets.
10663         (extra_objs): Add cet.o for Linux/x86 targets.
10664         (tmake_file): Add i386/t-cet for Linux/x86 targets.
10665         * config/i386/cet.c: New file.
10666         * config/i386/cetintrin.h: Likewise.
10667         * config/i386/t-cet: Likewise.
10668         * config/i386/cpuid.h (bit_SHSTK): New.
10669         (bit_IBT): Likewise.
10670         * config/i386/driver-i386.c (host_detect_local_cpu): Detect and
10671         pass IBT and SHSTK bits.
10672         * config/i386/i386-builtin-types.def
10673         (VOID_FTYPE_UNSIGNED_PVOID): New.
10674         (VOID_FTYPE_UINT64_PVOID): Likewise.
10675         * config/i386/i386-builtin.def: Add CET intrinsics.
10676         * config/i386/i386-c.c (ix86_target_macros_internal): Add
10677         OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling.
10678         * config/i386/i386-passes.def: Add pass_insert_endbranch pass.
10679         * config/i386/i386-protos.h (make_pass_insert_endbranch): New
10680         prototype.
10681         * config/i386/i386.c (rest_of_insert_endbranch): New.
10682         (pass_data_insert_endbranch): Likewise.
10683         (pass_insert_endbranch): Likewise.
10684         (make_pass_insert_endbranch): Likewise.
10685         (ix86_notrack_prefixed_insn_p): Likewise.
10686         (ix86_target_string): Add -mibt, -mshstk flags.
10687         (ix86_option_override_internal): Add flag_cf_protection
10688         processing.
10689         (ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk.
10690         (ix86_print_operand): Add 'notrack' prefix output.
10691         (ix86_init_mmx_sse_builtins): Add CET intrinsics.
10692         (ix86_expand_builtin): Expand CET intrinsics.
10693         (x86_output_mi_thunk): Add 'endbranch' instruction.
10694         * config/i386/i386.h (TARGET_IBT): New.
10695         (TARGET_IBT_P): Likewise.
10696         (TARGET_SHSTK): Likewise.
10697         (TARGET_SHSTK_P): Likewise.
10698         * config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP,
10699         UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP,
10700         UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY.
10701         (builtin_setjmp_setup): New pattern.
10702         (builtin_longjmp): Likewise.
10703         (rdssp<mode>): Likewise.
10704         (incssp<mode>): Likewise.
10705         (saveprevssp): Likewise.
10706         (rstorssp): Likewise.
10707         (wrss<mode>): Likewise.
10708         (wruss<mode>): Likewise.
10709         (setssbsy): Likewise.
10710         (clrssbsy): Likewise.
10711         (nop_endbr): Likewise.
10712         * config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch
10713         options.
10714         * config/i386/immintrin.h: Include <cetintrin.h>.
10715         * config/i386/linux-common.h
10716         (file_end_indicate_exec_stack_and_cet): New prototype.
10717         (TARGET_ASM_FILE_END): New.
10718
10719 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
10720
10721         * i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost
10722         latencies instead of having separate table; make difference between
10723         integer and float costs.
10724         * i386.h (processor_costs): Remove scalar_stmt_cost,
10725         scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
10726         scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost,
10727         vec_store_cost.
10728         * x86-tune-costs.h: Remove entries which has been removed in
10729         procesor_costs from all tables; make cond_taken_branch_cost
10730         and cond_not_taken_branch_cost COST_N_INSNS based.
10731
10732 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
10733
10734         * x86-tune-costs.h (intel_cost, generic_cost): Fix move costs.
10735
10736 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
10737
10738         * config/i386/i386.md (isa): Remove fma_avx512f.
10739         * config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
10740         <avx512>_fmadd_<mode>_mask3<round_name>,
10741         <avx512>_fmsub_<mode>_mask<round_name>,
10742         <avx512>_fmsub_<mode>_mask3<round_name>,
10743         <avx512>_fnmadd_<mode>_mask<round_name>,
10744         <avx512>_fnmadd_<mode>_mask3<round_name>,
10745         <avx512>_fnmsub_<mode>_mask<round_name>,
10746         <avx512>_fnmsub_<mode>_mask3<round_name>,
10747         <avx512>_fmaddsub_<mode>_mask<round_name>,
10748         <avx512>_fmaddsub_<mode>_mask3<round_name>,
10749         <avx512>_fmsubadd_<mode>_mask<round_name>,
10750         <avx512>_fmsubadd_<mode>_mask3<round_name>): Remove isa attribute.
10751         (*vec_widen_umult_even_v16si<mask_name>,
10752         *vec_widen_smult_even_v16si<mask_name>): Likewise.
10753         (<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Likewise.
10754
10755 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10756
10757         * extend.texi: Add 'nocf_check' documentation.
10758         * gimple.texi: Add second parameter to
10759         gimple_build_call_from_tree.
10760         * invoke.texi: Add -fcf-protection documentation.
10761         * rtl.texi: Add REG_CALL_NOTRACK documenation.
10762
10763 2017-10-20  Richard Biener  <rguenther@suse.de>
10764
10765         PR tree-optimization/82473
10766         * tree-vect-loop.c (vectorizable_reduction): Properly get at
10767         the largest input type.
10768
10769 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10770
10771         * c-attribs.c (handle_nocf_check_attribute): New function.
10772         (c_common_attribute_table): Add 'nocf_check' handling.
10773         * gimple-parser.c: Add second argument NULL to
10774         gimple_build_call_from_tree.
10775         * attrib.c (comp_type_attributes): Check nocf_check attribute.
10776         * cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
10777         call insn.
10778         * combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
10779         * common.opt: Add fcf-protection flag.
10780         * emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
10781         * flag-types.h: Add enum cf_protection_level.
10782         * gimple.c (gimple_build_call_from_tree): Add second parameter.
10783         Add 'nocf_check' attribute propagation to gimple call.
10784         * gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
10785         (gimple_build_call_from_tree): Update prototype.
10786         (gimple_call_nocf_check_p): New function.
10787         (gimple_call_set_nocf_check): Likewise.
10788         * gimplify.c: Add second argument to gimple_build_call_from_tree.
10789         * ipa-icf.c: Add nocf_check attribute in statement hash.
10790         * recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
10791         * reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
10792         * toplev.c (process_options): Add flag_cf_protection handling.
10793
10794 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10795
10796         * x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.
10797
10798 2017-10-20  Richard Biener  <rguenther@suse.de>
10799
10800         PR tree-optimization/82603
10801         * tree-if-conv.c (predicate_mem_writes): Make sure to only
10802         remove false predicated stores.
10803
10804 2017-10-20  Richard Biener  <rguenther@suse.de>
10805
10806         * graphite-isl-ast-to-gimple.c
10807         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
10808         Remove return value and simplify, dump copied stmt after lhs
10809         adjustment.
10810         (translate_isl_ast_to_gimple::translate_isl_ast_node_user):
10811         Reduce dump verbosity.
10812         (gsi_insert_earliest): Likewise.
10813         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
10814         * graphite.c (print_global_statistics): Adjust dumping.
10815         (print_graphite_scop_statistics): Likewise.
10816         (print_graphite_statistics): Do not dump loops here.
10817         (graphite_transform_loops): But here.
10818
10819 2017-10-20  Nicolas Roche  <roche@adacore.com>
10820
10821         * configure.ac (ACX_PROG_GNAT): Append "libgnat" to include search dir.
10822         * configure: Regenerate.
10823
10824 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
10825
10826         PR target/82158
10827         * tree-cfg.c (pass_warn_function_return::execute): In noreturn
10828         functions when optimizing replace GIMPLE_RETURN stmts with
10829         calls to __builtin_unreachable ().
10830
10831         PR sanitizer/82595
10832         * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
10833         for -fsanitize=thread link of executables.
10834         (LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
10835         link of executables.
10836
10837         PR target/82370
10838         * config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
10839         New mode iterators.
10840         (<shift_insn><mode>3<mask_name>): Change the last of the 3
10841         define_insns for logical vector shifts to use VI248_AVX512BW
10842         iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
10843         condition, useless isa and prefix attributes.  Change the first
10844         2 of these define_insns to ...
10845         (<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
10846         define_insn for avx512vl.
10847         (<shift_insn><mode>3): ... and this, new define_insn without
10848         masking for non-avx512vl.
10849
10850         PR target/82370
10851         * config/i386/sse.md (*andnot<mode>3,
10852         <mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
10853         (=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
10854         and 256-bit vectors, the (=x,x,xm) alternative and when mask is
10855         not applied use empty suffix even for TARGET_AVX512VL.
10856         * config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
10857         is applied, supply evex,evex or evex,evex,evex instead of just
10858         evex.
10859
10860 2017-10-20  Julia Koval  <julia.koval@intel.com>
10861
10862         * common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
10863         (OPTION_MASK_ISA_GFNI_UNSET): New.
10864         (ix86_handle_option): Handle OPT_mgfni.
10865         * config/i386/cpuid.h (bit_GFNI): New.
10866         * config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
10867         * config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
10868         * config/i386/i386.c (ix86_target_string): Add -mgfni.
10869         (ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
10870         * config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
10871         * config/i386/i386.opt: Add mgfni.
10872
10873 2017-10-20  Orlando Arias  <oarias@knights.ucf.edu>
10874
10875         * config/msp430/msp430.c (msp430_option_override): Disable
10876         -fdelete-null-pointer-checks.
10877         * doc/invoke.text (-fdelete-null-pointer-checks): Document that.
10878
10879 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10880
10881         * x86-tune-costs.h (generic_cost, core_cost): Correct costs
10882         of x87 and SSE instructions.
10883
10884 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10885
10886         * asan.c (create_cond_insert_point): Do not update edge count.
10887         * auto-profile.c (afdo_propagate_edge): Update for edge count removal.
10888         (afdo_propagate_circuit): Likewise.
10889         (afdo_calculate_branch_prob): Likewise.
10890         (afdo_annotate_cfg): Likewise.
10891         * basic-block.h (struct edge_def): Remove count.
10892         (edge_def::count): New accessor.
10893         * bb-reorder.c (rotate_loop): Update.
10894         (find_traces_1_round): Update.
10895         (connect_traces): Update.
10896         (sanitize_hot_paths): Update.
10897         * cfg.c (unchecked_make_edge): Update.
10898         (make_single_succ_edge): Update.
10899         (check_bb_profile): Update.
10900         (dump_edge_info): Update.
10901         (update_bb_profile_for_threading): Update.
10902         (scale_bbs_frequencies_int): Update.
10903         (scale_bbs_frequencies_gcov_type): Update.
10904         (scale_bbs_frequencies_profile_count): Update.
10905         (scale_bbs_frequencies): Update.
10906         * cfganal.c (connect_infinite_loops_to_exit): Update.
10907         * cfgbuild.c (compute_outgoing_frequencies): Update.
10908         (find_many_sub_basic_blocks): Update.
10909         * cfgcleanup.c (try_forward_edges): Update.
10910         (try_crossjump_to_edge): Update
10911         * cfgexpand.c (expand_gimple_cond): Update
10912         (expand_gimple_tailcall): Update
10913         (construct_exit_block): Update
10914         * cfghooks.c (verify_flow_info): Update
10915         (redirect_edge_succ_nodup): Update
10916         (split_edge): Update
10917         (make_forwarder_block): Update
10918         (duplicate_block): Update
10919         (account_profile_record): Update
10920         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
10921         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
10922         * cfgloopmanip.c (scale_loop_profile): Update.
10923         (loopify): Update.
10924         (lv_adjust_loop_entry_edge): Update.
10925         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
10926         (force_nonfallthru_and_redirect): Update.
10927         (purge_dead_edges): Update.
10928         (rtl_flow_call_edges_add): Update.
10929         * cgraphunit.c (init_lowered_empty_function): Update.
10930         (cgraph_node::expand_thunk): Update.
10931         * gimple-pretty-print.c (dump_probability): Update.
10932         (dump_edge_probability): Update.
10933         * gimple-ssa-isolate-paths.c (isolate_path): Update.
10934         * haifa-sched.c (sched_create_recovery_edges): Update.
10935         * hsa-gen.c (convert_switch_statements): Update.
10936         * ifcvt.c (dead_or_predicable): Update.
10937         * ipa-inline-transform.c (inline_transform): Update.
10938         * ipa-split.c (split_function): Update.
10939         * ipa-utils.c (ipa_merge_profiles): Update.
10940         * loop-doloop.c (add_test): Update.
10941         * loop-unroll.c (unroll_loop_runtime_iterations): Update.
10942         * lto-streamer-in.c (input_cfg): Update.
10943         (input_function): Update.
10944         * lto-streamer-out.c (output_cfg): Update.
10945         * modulo-sched.c (sms_schedule): Update.
10946         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
10947         * predict.c (maybe_hot_edge_p): Update.
10948         (unlikely_executed_edge_p): Update.
10949         (probably_never_executed_edge_p): Update.
10950         (dump_prediction): Update.
10951         (drop_profile): Update.
10952         (propagate_unlikely_bbs_forward): Update.
10953         (determine_unlikely_bbs): Update.
10954         (force_edge_cold): Update.
10955         * profile.c (compute_branch_probabilities): Update.
10956         * reg-stack.c (better_edge): Update.
10957         * shrink-wrap.c (handle_simple_exit): Update.
10958         * tracer.c (better_p): Update.
10959         * trans-mem.c (expand_transaction): Update.
10960         (split_bb_make_tm_edge): Update.
10961         * tree-call-cdce.c: Update.
10962         * tree-cfg.c (gimple_find_sub_bbs): Update.
10963         (gimple_split_edge): Update.
10964         (gimple_duplicate_sese_region): Update.
10965         (gimple_duplicate_sese_tail): Update.
10966         (gimple_flow_call_edges_add): Update.
10967         (insert_cond_bb): Update.
10968         (execute_fixup_cfg): Update.
10969         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
10970         * tree-complex.c (expand_complex_div_wide): Update.
10971         * tree-eh.c (lower_resx): Update.
10972         (unsplit_eh): Update.
10973         (cleanup_empty_eh_move_lp): Update.
10974         * tree-inline.c (copy_edges_for_bb): Update.
10975         (freqs_to_counts): Update.
10976         (copy_cfg_body): Update.
10977         * tree-ssa-dce.c (remove_dead_stmt): Update.
10978         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
10979         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
10980         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
10981         (unloop_loops): Update.
10982         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
10983         * tree-ssa-loop-split.c (connect_loops): Update.
10984         (split_loop): Update.
10985         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
10986         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
10987         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
10988         * tree-ssa-reassoc.c (branch_fixup): Update.
10989         * tree-ssa-tail-merge.c (replace_block_by): Update.
10990         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
10991         (compute_path_counts): Update.
10992         (update_profile): Update.
10993         (recompute_probabilities): Update.
10994         (update_joiner_offpath_counts): Update.
10995         (estimated_freqs_path): Update.
10996         (freqs_to_counts_path): Update.
10997         (clear_counts_path): Update.
10998         (ssa_fix_duplicate_block_edges): Update.
10999         (duplicate_thread_path): Update.
11000         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
11001         (case_bit_test_cmp): Update.
11002         (collect_switch_conv_info): Update.
11003         (gen_inbound_check): Update.
11004         (do_jump_if_equal): Update.
11005         (emit_cmp_and_jump_insns): Update.
11006         * tree-tailcall.c (decrease_profile): Update.
11007         (eliminate_tail_call): Update.
11008         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
11009         (vect_do_peeling): Update.
11010         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
11011         * ubsan.c (ubsan_expand_null_ifn): Update.
11012         (ubsan_expand_ptr_ifn): Update.
11013         * value-prof.c (gimple_divmod_fixed_value): Update.
11014         (gimple_mod_pow2): Update.
11015         (gimple_mod_subtract): Update.
11016         (gimple_ic): Update.
11017         (gimple_stringop_fixed_value): Update.
11018
11019 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
11020
11021         PR target/82618
11022         * config/i386/i386.md (sub to cmp): New peephole2 pattern.
11023
11024 2017-10-19  Alexander Monakov  <amonakov@ispras.ru>
11025
11026         PR rtl-optimization/82395
11027         * ira-color.c (allocno_priority_compare_func): Fix comparison step
11028         based on non_spilled_static_chain_regno_p.
11029
11030 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
11031
11032         * config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
11033         (ix86_emit_mode_set): Rewrite insn mnemonic construction.
11034         (ix86_prepare_fp_compare_args): Redefine is_sse as bool.
11035
11036 2017-10-19  Martin Sebor  <msebor@redhat.com>
11037
11038         PR tree-optimization/82596
11039         * tree.c (array_at_struct_end_p): Handle STRING_CST.
11040
11041 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
11042
11043         * asan.c (handle_builtin_alloca): Deal with all alloca variants.
11044         (get_mem_refs_of_builtin_call): Likewise.
11045         * builtins.c (expand_builtin_apply): Adjust call to
11046         allocate_dynamic_stack_space.
11047         (expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
11048         the third argument to allocate_dynamic_stack_space, otherwise -1.
11049         (expand_builtin): Deal with all alloca variants.
11050         (is_inexpensive_builtin): Likewise.
11051         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
11052         * calls.c (special_function_p): Deal with all alloca variants.
11053         (initialize_argument_information): Adjust call to
11054         allocate_dynamic_stack_space.
11055         (expand_call): Likewise.
11056         * cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
11057         * doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
11058         * explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
11059         use it for the stack usage computation.
11060         * explow.h (allocate_dynamic_stack_space): Adjust prototype.
11061         * function.c (gimplify_parameters): Call build_alloca_call_expr.
11062         * gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
11063         Take into account 3rd argument of __builtin_alloca_with_align_and_max.
11064         (in_loop_p): Remove first argument and useless check.
11065         (pass_walloca::execute): Remove useless test and adjust call to above.
11066         * gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
11067         * gimplify.c (gimplify_vla_decl): Call build_alloca_call_expr.
11068         (gimplify_call_expr): Deal with all alloca variants.
11069         * hsa-gen.c (gen_hsa_alloca): Likewise.
11070         (gen_hsa_insns_for_call): Likewise.
11071         * ipa-pure-const.c (special_builtin_state): Likewise.
11072         * tree-chkp.c (chkp_build_returned_bound): Likewise.
11073         * tree-object-size.c (alloc_object_size): Likewise.
11074         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
11075         (call_may_clobber_ref_p_1): Likewise.
11076         * tree-ssa-ccp.c (evaluate_stmt): Likewise.
11077         (ccp_fold_stmt): Likewise.
11078         (optimize_stack_restore): Likewise.
11079         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
11080         (mark_all_reaching_defs_necessary_1): Likewise.
11081         (propagate_necessity): Likewise.
11082         (eliminate_unnecessary_stmts): Likewise.
11083         * tree.c (build_common_builtin_nodes): Build
11084         BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
11085         (build_alloca_call_expr): New function.
11086         * tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
11087         (CASE_BUILT_IN_ALLOCA): Likewise.
11088         (build_alloca_call_expr): Declare.
11089         * varasm.c (incorporeal_function_p): Deal with all alloca variants.
11090
11091 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
11092
11093         PR debug/82509
11094         * dwarf2out.c (new_die_raw): New static inline function.
11095         (new_die): Use it to create the DIE.
11096         (add_AT_external_die_ref): Likewise.
11097         (clone_die): Likewise.
11098         (clone_as_declaration): Likewise.
11099         (dwarf2out_vms_debug_main_pointer): Likewise.
11100         (base_type_die): Likewise.  Remove early return for corner cases.
11101         Do not call add_pubtype on the DIE here.
11102         (is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
11103         (modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
11104         typedefs for base types with DW_AT_endianity.  Make sure a DIE with
11105         native order exists for base types, attach the DIE manually and call
11106         add_pubtype on it.  Do not equate a reverse order DIE to the type.
11107
11108 2017-10-19  Richard Earnshaw  <rearnsha@arm.com>
11109
11110         * config/arm/arm.c (align_ok_ldrd_strd): New function.
11111         (mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of
11112         the mem into it.
11113         (gen_operands_ldrd_strd): Validate the alignment of the accesses.
11114
11115 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
11116
11117         * flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
11118         SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
11119         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
11120         BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
11121         * opts.c (sanitizer_opts): Add builtin.
11122         * ubsan.c (instrument_builtin): New function.
11123         (pass_ubsan::execute): Call it.
11124         (pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
11125         * doc/invoke.texi: Document -fsanitize=builtin.
11126
11127         * ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
11128         builtins, store max (log2 (align), 0) into uchar field instead of
11129         align into uptr field.
11130         (ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
11131         store uchar 0 field instead of uptr 0 field.
11132         (instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
11133         instead of passing one address of struct with 2 locations pass
11134         two addresses of structs with 1 location each.
11135         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
11136         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
11137         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
11138         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
11139         (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
11140         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
11141         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
11142         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.
11143
11144 2017-10-19  Martin Liska  <mliska@suse.cz>
11145
11146         PR driver/81829
11147         * file-find.c (remove_prefix): Remove.
11148         * file-find.h (remove_prefix): Likewise.
11149         * gcc-ar.c: Remove smartness of lookup.
11150
11151 2017-10-19  Segher Boessenkool  <segher@kernel.crashing.org>
11152
11153         * config/rs6000/rs6000.md (*call_indirect_aix<mode>,
11154         *call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
11155         *call_value_indirect_elfv2<mode>): Add correct mode to the unspec.
11156
11157 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
11158
11159         PR target/82580
11160         * config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
11161         (setcc + and to xor + setcc): New peephole2.
11162
11163 2017-10-19  Tom de Vries  <tom@codesourcery.com>
11164
11165         * doc/sourcebuild.texi (Test Directives, Variants of
11166         dg-require-support): Add dg-require-stack-size.
11167
11168 2017-10-19  Martin Liska  <mliska@suse.cz>
11169
11170         PR sanitizer/82517
11171         * gimplify.c (gimplify_decl_expr): Do not instrument variables
11172         that have a large alignment.
11173         (gimplify_target_expr): Likewise.
11174
11175 2017-10-18  Segher Boessenkool  <segher@kernel.crashing.org>
11176
11177         PR rtl-optimization/82602
11178         * ira.c (rtx_moveable_p): Return false for volatile asm.
11179
11180 2017-10-18  Uros Bizjak  <ubizjak@gmail.com>
11181
11182         PR target/82580
11183         * config/i386/i386-modes.def (CCGZ): New CC mode.
11184         * config/i386/i386.md (sub<mode>3_carry_ccgz): New insn pattern.
11185         * config/i386/predicates.md (ix86_comparison_operator):
11186         Handle CCGZmode.
11187         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
11188         Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons
11189         with double-word subtraction.
11190         (put_condition_code): Handle CCGZmode.
11191
11192 2017-10-18  Aldy Hernandez  <aldyh@redhat.com>
11193
11194         * wide-int.cc (debug (const wide_int &)): New.
11195         (debug (const wide_int *)): New.
11196         (debug (const widest_int &)): New.
11197         (debug (const widest_int *)): New.
11198
11199 2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>
11200
11201         PR middle-end/82556
11202         * lra-constraints.c (curr_insn_transform): Use non-input operand
11203         instead of output one for matched reload.
11204
11205 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
11206
11207         * tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.
11208         (tree-ssa-loop-ivopts.h): New header file.
11209         (struct builtin_info): New fields.
11210         (classify_builtin_1): Compute and record base and offset parts for
11211         memset builtin partition by calling strip_offset.
11212         (offset_cmp, fuse_memset_builtins): New functions.
11213         (finalize_partitions): Fuse adjacent memset partitions by calling
11214         above function.
11215         * tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration.
11216         Expose the interface.
11217         * tree-ssa-loop-ivopts.h (strip_offset): New declaration.
11218
11219 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
11220
11221         PR tree-optimization/82574
11222         * tree-loop-distribution.c (find_single_drs): New parameter.  Check
11223         that data reference must be executed exactly once per iteration
11224         against the outermost loop in nest.
11225         (classify_partition): Update call to above function.
11226
11227 2017-10-18  Richard Biener  <rguenther@suse.de>
11228
11229         PR tree-optimization/82591
11230         * graphite.c (graphite_transform_loops): Move code gen message
11231         printing ...
11232         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
11233         Here.  Handle scop_to_isl_ast failing.
11234         (scop_to_isl_ast): Limit the number of ISL operations.
11235
11236 2017-10-18  Richard Biener  <rguenther@suse.de>
11237
11238         * graphite-isl-ast-to-gimple.c
11239         (translate_isl_ast_to_gimple::set_rename): Simplify.
11240         (translate_isl_ast_to_gimple::set_rename_for_each_def): Inline...
11241         (graphite_copy_stmts_from_block): ... here.
11242         (copy_bb_and_scalar_dependences): Simplify.
11243         (add_parameters_to_ivs_params): Canonicalize.
11244         (generate_entry_out_of_ssa_copies): Simplify.
11245         * graphite-sese-to-poly.c (extract_affine_name): Simplify
11246         by passing in ISL dimension.
11247         (parameter_index_in_region_1): Rename to ...
11248         (parameter_index_in_region): ... this.
11249         (extract_affine): Adjust assert, pass down parameter index.
11250         (add_param_constraints): Use range-info when available.
11251         (build_scop_context): Adjust.
11252         * sese.c (new_sese_info): Adjust.
11253         (free_sese_info): Likewise.
11254         * sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t):
11255         Remove unused typedefs.
11256         (struct sese_info_t): Simplify rename_map, remove incomplete_phis.
11257
11258 2017-10-18  Martin Liska  <mliska@suse.cz>
11259
11260         * combine.c (simplify_compare_const): Add gcc_fallthrough.
11261
11262 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
11263
11264         * config/s390/s390.c (s390_bb_fallthru_entry_likely): New function.
11265         (s390_sched_init): Do not reset s390_sched_state if we entered the
11266         current basic block via a fallthru edge and all others are unlikely.
11267
11268 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
11269
11270         * config/s390/s390.c (NUM_SIDES): New variable.
11271         (LONGRUNNING_THRESHOLD): New variable.
11272         (LATENCY_FACTOR): New variable.
11273         (s390_sched_score): Decrease score for long-running instructions on
11274         wrong side.
11275         (s390_sched_variable_issue): Perform bookkeeping for long-running
11276         instructions.
11277
11278 2017-10-18  Richard Biener  <rguenther@suse.de>
11279
11280         * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
11281         Simplify with removal of the parameter rename map.
11282         (set_rename): Likewise.
11283         (should_copy_to_new_region): Likewise.
11284         (graphite_copy_stmts_from_block): Likewise.
11285         (copy_bb_and_scalar_dependences): Remove initialization of
11286         unused copied_bb_map.
11287         (copy_def): Remove.
11288         (copy_internal_parameters): Likewise.
11289         (graphite_regenerate_ast_isl): Do not call copy_internal_parameters.
11290         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
11291         Use INTEGRAL_TYPE_P.
11292         (parameter_index_in_region_1): Rename to ...
11293         (assign_parameter_index_in_region): ... this.  Assert we have
11294         a parameter we handle.
11295         (scan_tree_for_params): Adjust.
11296         * sese.h (parameter_rename_map_t): Remove.
11297         (struct sese_info_t): Remove unused parameter_rename_map and
11298         copied_bb_map members.
11299         * sese.c (new_sese_info): Adjust.
11300         (free_sese_info): Likewise.
11301
11302 2017-10-18  Martin Liska  <mliska@suse.cz>
11303
11304         PR sanitizer/82545
11305         * asan.c (asan_expand_poison_ifn): Do not put gimple stmt
11306         on an abnormal edge.
11307
11308 2017-10-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
11309
11310         * doc/invoke.texi (ffunction-sections and fdata-sections):
11311         Update.
11312
11313 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
11314
11315         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if
11316         the use statement can throw internally.
11317
11318 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
11319
11320         * config/visium/visium.c (visium_select_cc_mode): Return CCmode for
11321         any RTX present on the RHS of a SET.
11322         * compare-elim.c (try_eliminate_compare): Restore comment.
11323
11324 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
11325
11326         * langhooks.h (struct lang_hooks): Document that tree_size langhook
11327         may be also called on tcc_type nodes.
11328         * langhooks.c (lhd_tree_size): Likewise.
11329
11330 2017-10-17  David Malcolm  <dmalcolm@redhat.com>
11331
11332         * gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
11333         format_warning_at_substring.
11334         (maybe_warn): Convert source_range * param to a location_t.  Pass
11335         UNKNOWN_LOCATION rather than NULL to fmtwarn.
11336         (format_directive): Remove code to extract source_ranges and
11337         source_range * in favor of just a location_t.
11338         (parse_directive): Pass UNKNOWN_LOCATION rather than NULL to
11339         fmtwarn.
11340         * substring-locations.c (format_warning_va): Convert
11341         source_range * param to a location_t.
11342         (format_warning_at_substring): Likewise.
11343         * substring-locations.h (format_warning_va): Likewise.
11344         (format_warning_at_substring): Likewise.
11345
11346 2017-10-17  Jan Hubicka  <hubicka@ucw.cz>
11347
11348         * target.h (enum vect_cost_for_stmt): Add vec_gather_load and
11349         vec_scatter_store
11350         * tree-vect-stmts.c (record_stmt_cost): Make difference between normal
11351         and scatter/gather ops.
11352
11353         * aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add
11354         vec_gather_load and vec_scatter_store.
11355         * arm/arm.c (arm_builtin_vectorization_cost): Likewise.
11356         * powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise.
11357         * rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise.
11358         * s390/s390.c (s390_builtin_vectorization_cost): Likewise.
11359         * spu/spu.c (spu_builtin_vectorization_cost): Likewise.
11360         * i386/i386.c (x86_builtin_vectorization_cost): Likewise.
11361
11362 2017-10-17  Uros Bizjak  <ubizjak@gmail.com>
11363
11364         * reg-stack.c (compare_for_stack_reg): Add bool argument.
11365         Detect FTST instruction and handle its register pops.  Only pop
11366         second operand if can_pop_second_op is true.
11367         (subst_stack_regs_pat) <case COMPARE>: Detect FCOMI instruction to
11368         set can_pop_second_op to false in the compare_for_stack_reg call.
11369
11370         * config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Only call
11371         output_fp_compare for stack register operands.
11372         * config/i386/i386.c (output_fp_compare): Do not output SSE compare
11373         instructions here.  Do not emit stack register pops here.  Assert
11374         that FCOMPP pops next to top stack register.  Rewrite function.
11375
11376 2017-10-17  Nathan Sidwell  <nathan@acm.org>
11377
11378         PR middle-end/82577
11379         * alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
11380         use DECL_ASSEMBLER_NAME_RAW.
11381
11382         PR middle-end/82546
11383         * tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
11384         TYPE nodes.
11385
11386 2017-10-17  Qing Zhao <qing.zhao@oracle.com>
11387             Wilco Dijkstra <wilco.dijkstra@arm.com>
11388
11389         * builtins.c (expand_builtin_update_setjmp_buf): Add a
11390         converstion to Pmode from the buf_addr.
11391
11392 2017-10-17  Richard Biener  <rguenther@suse.de>
11393
11394         * graphite-dependences.c (scop_get_reads_and_writes): Change
11395         output parameters to references.
11396
11397 2017-10-17  Jackson Woodruff  <jackson.woodruff@arm.com>
11398
11399         PR 71026/tree-optimization
11400         * fold-const.c (distribute_real_division): Removed.
11401         (fold_binary_loc): Remove calls to distribute_real_divison.
11402
11403 2017-10-17  Richard Biener  <rguenther@suse.de>
11404
11405         * graphite-scop-detection.c
11406         (scop_detection::stmt_has_simple_data_refs_p): Always use
11407         the full nest as region.
11408         (try_generate_gimple_bb): Likewise.
11409         * sese.c (scalar_evolution_in_region): Simplify now that
11410         SCEV can handle instantiation in regions.
11411         * tree-scalar-evolution.c (instantiate_scev_name): Also instantiate
11412         in the non-loop part of a function if requested.
11413
11414 2017-10-17  Richard Biener  <rguenther@suse.de>
11415
11416         PR tree-optimization/82563
11417         * graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
11418         New function.
11419         (graphite_regenerate_ast_isl): Call it.
11420         * graphite-scop-detection.c (build_scops): Remove entry edge split.
11421
11422 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
11423
11424         PR tree-optimization/82549
11425         * fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
11426         Formatting fixes.  Instead of calling make_bit_field_ref with negative
11427         bitpos return 0.
11428
11429 2017-10-17  Olga Makhotina  <olga.makhotina@intel.com>
11430
11431         * config/i386/avx512dqintrin.h (_mm_mask_reduce_sd,
11432         _mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20
11433         _mm_maskz_reduce_ss): New.
11434         * config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask,
11435         __builtin_ia32_reducess_mask): Ditto..
11436         (__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove.
11437         * config/i386/sse.md (reduces<mode>): Renamed to ...
11438         (reduces<mode><mask_scalar_name>): ... this.
11439         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}):
11440         Changed to ...
11441         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0<mask_scalar_operand4>|
11442         %0<mask_scalar_operand4>, %1, %2, %3}): ... this.
11443
11444 2017-10-16  David Malcolm  <dmalcolm@redhat.com>
11445
11446         * Makefile.in (OBJS): Add unique-ptr-tests.o.
11447         * selftest-run-tests.c (selftest::run_tests): Call
11448         selftest::unique_ptr_tests_cc_tests.
11449         * selftest.h (selftest::unique_ptr_tests_cc_tests): New decl.
11450         * unique-ptr-tests.cc: New file.
11451
11452 2017-10-16  Vladimir Makarov  <vmakarov@redhat.com>
11453
11454         PR sanitizer/82353
11455         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11456         locations.
11457         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11458         (make_hard_regno_born, make_hard_regno_dead): Update
11459         bb_killed_pseudos and bb_gen_pseudos for fixed regs.
11460
11461 2017-10-16  Jeff Law  <law@redhat.com>
11462
11463         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
11464
11465 2017-10-16  Jan Hubicka  <hubicka@ucw.cz>
11466
11467         * x86-tune-costs.h (znver1_cost): Fix move cost tables.
11468
11469 2017-10-16  Olivier Hainque  <hainque@adacore.com>
11470
11471         * gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default
11472         with_cpu if we were configured for an e500v2 target cpu name.
11473
11474 2017-10-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
11475
11476         * config/arm/arm-cpus.in (cortex-m33): Add nodsp option.
11477         * doc/invoke.texi: Document +nodsp as a valid extension for
11478         -mcpu=cortex-m33.
11479
11480 2017-10-16  Martin Liska  <mliska@suse.cz>
11481
11482         * sbitmap.c (bitmap_bit_in_range_p_checking): New function.
11483         (test_set_range): Likewise.
11484         (test_range_functions): Rename to ...
11485         (test_bit_in_range): ... this.
11486         (sbitmap_c_tests): Add new test.
11487
11488 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11489
11490         * config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32):
11491         New.
11492         (vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New.
11493         (vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New.
11494
11495 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11496
11497         * config/aarch64/aarch64-builtins.c
11498         (aarch64_types_quadopu_lane_qualifiers): New.
11499         (TYPES_QUADOPU_LANE): New.
11500         * config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>): New.
11501         (<sur>dot_prod<vsi2qi>, aarch64_<sur>dot_lane<vsi2qi>): New.
11502         (aarch64_<sur>dot_laneq<vsi2qi>): New.
11503         * config/aarch64/aarch64-simd-builtins.def (sdot, udot): New.
11504         (sdot_lane, udot_lane, sdot_laneq, udot_laneq): New.
11505         * config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT.
11506         (Vdottype, DOTPROD): New.
11507         (sur): Add SDOT and UDOT.
11508
11509 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11510
11511         * config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New.
11512         (AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New.
11513         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11514         Add TARGET_DOTPROD.
11515         * config/aarch64/aarch64-option-extensions.def (dotprod): New.
11516         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75):
11517         Enable TARGET_DOTPROD.
11518         (cortex-a75.cortex-a55): Likewise.
11519         * doc/invoke.texi (aarch64-feature-modifiers): Document dotprod.
11520
11521 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11522
11523         * config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New.
11524         (UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS):
11525         New.
11526         * config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane):
11527         New.
11528         * config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New.
11529         (UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New.
11530         * config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
11531         (neon_<sup>dot_lane<vsi2qi>, <sup>dot_prod<vsi2qi>): New.
11532         * config/arm/types.md (neon_dot, neon_dot_q): New.
11533         * config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U.
11534
11535 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11536
11537         * config/arm/arm.h (TARGET_DOTPROD): New.
11538         * config/arm/arm.c (arm_arch_dotprod): New.
11539         (arm_option_reconfigure_globals): Add arm_arch_dotprod.
11540         * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.
11541         * config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.
11542         (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.
11543         (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.
11544         * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.
11545         * doc/invoke.texi (armv8.2-a): Document dotprod
11546
11547 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
11548
11549         * i386.c (ix86_vec_cost): New function.
11550         (ix86_rtx_costs): Handle vector operations better.
11551         * i386.h (struct processor_costs): Add sse_op, fmasd, fmass.
11552         * x86-tune-costs.h: Add new costs to all tables.
11553
11554 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
11555
11556         * i386.c (ix86_rtx_costs): Make difference between x87 and SSE
11557         operations.
11558         * i386.h (struct processor_costs): Add addss, mulss, mulsd, divss,
11559         divsd, sqrtss and sqrtsd
11560         * x86-tune-costs.h: Add new entries to all costs.
11561         (znver1_cost): Fix to match real instruction latencies.
11562
11563 2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11564             Michael Collison <michael.collison@arm.com>
11565
11566         * compare-elim.c: Include emit-rtl.h.
11567         (can_merge_compare_into_arith): New function.
11568         (try_validate_parallel): Likewise.
11569         (try_merge_compare): Likewise.
11570         (try_eliminate_compare): Call the above when no previous clobber
11571         is available.
11572         (execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN
11573         dataflow problems.
11574
11575 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
11576
11577         PR middle-end/62263
11578         PR middle-end/82498
11579         * tree-ssa-phiopt.c (value_replacement): Comment fix.  Handle
11580         up to 2 preparation statements for ASSIGN in MIDDLE_BB.
11581
11582         PR middle-end/62263
11583         PR middle-end/82498
11584         * tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N]
11585         to be any operand_equal_p operands.  For & (B - 1) require
11586         B to be power of 2.  Recognize
11587         (X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns.
11588
11589 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11590
11591         PR bootstrap/82553
11592         * optabs.c (expand_memory_blockage): Fix call of
11593         targetm.have_memory_blockage.
11594
11595 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
11596
11597         PR bootstrap/82548
11598         * config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*,
11599         x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append
11600         objects to extra_objs instead of overwriting it.
11601
11602 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11603
11604         * config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
11605         Use any_fp_register_operand as operand[3] predicate.  Simplify
11606         equality test for operands[2] and operands[4] memory location.
11607         (LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
11608         (FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New.
11609         (LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
11610         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use
11611         any_fp_register_operand as operand[1] predicate.  Simplify
11612         equality test for operands[0] and operands[3] memory location.
11613         (LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
11614         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New.
11615         (LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto.
11616
11617 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11618
11619         * target-insns.def: Add memory_blockage.
11620         * optabs.c (expand_memory_blockage): New function.
11621         (expand_asm_memory_barrier): Rename ...
11622         (expand_asm_memory_blockage): ... to this.
11623         (expand_mem_thread_fence): Call expand_memory_blockage
11624         instead of expand_asm_memory_barrier.
11625         (expand_mem_singnal_fence): Ditto.
11626         (expand_atomic_load): Ditto.
11627         (expand_atomic_store): Ditto.
11628         * doc/md.texi (Standard Pattern Names For Generation):
11629         Document memory_blockage instruction pattern.
11630
11631 2017-10-13  Sebastian Perta  <sebastian.perta@renesas.com>
11632
11633         * config/rl78/rl78.c (rl78_emit_libcall): New function.
11634         * config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
11635         * config/rl78/rl78.md: New define_expand "adddi3".
11636
11637 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
11638
11639         * cfghooks.c (verify_flow_info): Disable check that all probabilities
11640         are set correctly.
11641
11642 2017-10-13  Jeff Law  <law@redhat.com>
11643
11644         * tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.
11645
11646 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
11647
11648         PR target/82274
11649         * internal-fn.c (expand_mul_overflow): If both operands have
11650         the same highpart of -1 or 0 and the topmost bit of lowpart
11651         is different, overflow is if res <= 0 rather than res < 0.
11652
11653 2017-10-13  Pat Haugen  <pthaugen@us.ibm.com>
11654
11655         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove
11656         TARGET_P9_VECTOR code for unaligned_load case.
11657
11658 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
11659
11660         * cfghooks.c (verify_flow_info): Check that edge probabilities are set.
11661
11662 2017-10-13  Nathan Sidwell  <nathan@acm.org>
11663
11664         * tree-core.h (tree_contains_struct): Make bool.
11665         * tree.c (tree_contains_struct): Likewise.
11666         * tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
11667         (MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
11668         MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
11669         MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
11670         MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.
11671
11672 2017-10-13  Richard Biener  <rguenther@suse.de>
11673
11674         * graphite-isl-ast-to-gimple.c
11675         (translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
11676         parameters and dominance check.
11677         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
11678         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
11679         (translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
11680         Do not update SSA form here or do intermediate IL verification.
11681         * graphite.c: Include tree-ssa.h and tree-into-ssa.h.
11682         (graphite_initialize): Remove check on the number of loops in
11683         the function and inline into graphite_transform_loops.
11684         (graphite_finalize): Inline into graphite_transform_loops.
11685         (graphite_transform_loops): Perform SSA update and IL verification
11686         here.
11687         * params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.
11688
11689 2017-10-13  Richard Biener  <rguenther@suse.de>
11690
11691         * graphite-isl-ast-to-gimple.c (max_mode_int_precision,
11692         graphite_expression_type_precision): Avoid global constructor
11693         by moving ...
11694         (translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
11695         (translate_isl_ast_to_gimple::graphite_expr_type): Add type member.
11696         (translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
11697         (translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
11698         (translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
11699         * graphite-sese-to-poly.c (build_original_schedule): Return nothing.
11700
11701 2017-10-13  H.J. Lu  <hongjiu.lu@intel.com>
11702
11703         PR target/82499
11704         * config/i386/i386.h (ix86_red_zone_size): New.
11705         * config/i386/i386.md (push peephole2s): Replace
11706         "!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".
11707
11708 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11709             Alan Hayward  <alan.hayward@arm.com>
11710             David Sherwood  <david.sherwood@arm.com>
11711
11712         * combine.c (can_change_dest_mode): Reject changes in
11713         REGMODE_NATURAL_SIZE.
11714
11715 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11716             Alan Hayward  <alan.hayward@arm.com>
11717             David Sherwood  <david.sherwood@arm.com>
11718
11719         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
11720         (expand_debug_source_expr): Likewise.
11721         * combine.c (combine_simplify_rtx): Likewise.
11722         * cse.c (fold_rtx): Likewise.
11723         * fwprop.c (canonicalize_address): Likewise.
11724         * targhooks.c (default_shift_truncation_mask): Likewise.
11725
11726 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11727             Alan Hayward  <alan.hayward@arm.com>
11728             David Sherwood  <david.sherwood@arm.com>
11729
11730         * optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
11731         (widened_mode): Likewise.
11732         (expand_unop): Likewise.
11733         * ree.c (transform_ifelse): Likewise.
11734         (merge_def_and_ext): Likewise.
11735         (combine_reaching_defs): Likewise.
11736         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
11737
11738 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11739             Alan Hayward  <alan.hayward@arm.com>
11740             David Sherwood  <david.sherwood@arm.com>
11741
11742         * caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
11743         * combine.c (gen_lowpart_for_combine): Likewise.
11744         * dwarf2out.c (rtl_for_decl_location): Likewise.
11745         * final.c (alter_subreg): Likewise.
11746         * rtlhooks.c (gen_lowpart_general): Likewise.
11747         (gen_lowpart_if_possible): Likewise.
11748
11749 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11750             Alan Hayward  <alan.hayward@arm.com>
11751             David Sherwood  <david.sherwood@arm.com>
11752
11753         * calls.c (expand_call): Use subreg_lowpart_offset.
11754         * cse.c (cse_insn): Likewise.
11755         * regcprop.c (copy_value): Likewise.
11756         (copyprop_hardreg_forward_1): Likewise.
11757
11758 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
11759
11760         PR target/82524
11761         * config/i386/i386.md (addqi_ext_1, andqi_ext_1,
11762         *andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
11763         =Q constraints to +Q and into insn condition add check
11764         that operands[0] and operands[1] are equal.
11765         (*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
11766         =Q constraints to +Q and into insn condition add check
11767         that operands[0] is equal to either operands[1] or operands[2].
11768
11769         PR target/82498
11770         * fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups,
11771         instead of handling MINUS_EXPR twice (once for each argument),
11772         canonicalize operand order and handle just once, use rtype where
11773         possible.  Handle (A << B) | (A >> (-B & (Z - 1))).
11774
11775         PR target/82498
11776         * config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow
11777         any values of __C while still being pattern recognizable as a simple
11778         rotate instruction.
11779
11780 2017-10-13  Richard Biener  <rguenther@suse.de>
11781
11782         PR tree-optimization/82451
11783         Revert
11784         2017-10-02  Richard Biener  <rguenther@suse.de>
11785
11786         PR tree-optimization/82355
11787         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
11788         a mapping for the enclosing loop but avoid generating one for
11789         the loop tree root.
11790         (copy_bb_and_scalar_dependences): Remove premature codegen
11791         error on PHIs in blocks duplicated into multiple places.
11792         * graphite-scop-detection.c
11793         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
11794         in the region use it as loop and nest to analyze the DR in.
11795         (try_generate_gimple_bb): Likewise.
11796         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
11797         (add_loop_constraints): For blocks in a loop not in the region
11798         create a dimension with a single iteration.
11799         * sese.h (gbb_loop_at_index): Remove assert.
11800
11801         * cfgloop.c (loop_preheader_edge): For the loop tree root
11802         return the single successor of the entry block.
11803         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
11804         Reset the SCEV hashtable and niters.
11805         * graphite-scop-detection.c
11806         (scop_detection::graphite_can_represent_scev): Add SCOP parameter,
11807         assert that we only have POLYNOMIAL_CHREC that vary in loops
11808         contained in the region.
11809         (scop_detection::graphite_can_represent_expr): Adjust.
11810         (scop_detection::stmt_has_simple_data_refs_p): For loops
11811         not in the region set loop to NULL.  The nest is now the
11812         entry edge to the region.
11813         (try_generate_gimple_bb): Likewise.
11814         * sese.c (scalar_evolution_in_region): Adjust for
11815         instantiate_scev change.
11816         * tree-data-ref.h (graphite_find_data_references_in_stmt):
11817         Make nest parameter the edge into the region.
11818         (create_data_ref): Likewise.
11819         * tree-data-ref.c (dr_analyze_indices): Make nest parameter an
11820         entry edge into a region and adjust instantiate_scev calls.
11821         (create_data_ref): Likewise.
11822         (graphite_find_data_references_in_stmt): Likewise.
11823         (find_data_references_in_stmt): Pass the loop preheader edge
11824         from the nest argument.
11825         * tree-scalar-evolution.h (instantiate_scev): Make instantiate_below
11826         parameter the edge into the region.
11827         (instantiate_parameters): Use the loop preheader edge as entry.
11828         * tree-scalar-evolution.c (analyze_scalar_evolution): Handle
11829         NULL loop.
11830         (get_instantiated_value_entry): Make instantiate_below parameter
11831         the edge into the region.
11832         (instantiate_scev_name): Likewise.  Adjust dominance checks,
11833         when we cannot use loop-based instantiation instantiate by
11834         walking use-def chains.
11835         (instantiate_scev_poly): Adjust.
11836         (instantiate_scev_binary): Likewise.
11837         (instantiate_scev_convert): Likewise.
11838         (instantiate_scev_not): Likewise.
11839         (instantiate_array_ref): Remove.
11840         (instantiate_scev_3): Likewise.
11841         (instantiate_scev_2): Likewise.
11842         (instantiate_scev_1): Likewise.
11843         (instantiate_scev_r): Do not blindly handle N-operand trees.
11844         Do not instantiate array-refs.  Handle all constants and invariants.
11845         (instantiate_scev): Make instantiate_below parameter
11846         the edge into the region.
11847         (resolve_mixers): Use the loop preheader edge for the region
11848         parameter to instantiate_scev_r.
11849         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust.
11850
11851 2017-10-13  Richard Biener  <rguenther@suse.de>
11852
11853         PR tree-optimization/82525
11854         * graphite-isl-ast-to-gimple.c
11855         (translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split
11856         out from ...
11857         (translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here.
11858         Fail code generation when we cannot represent the isl integer.
11859         (binary_op_to_tree): Elide modulo operations that are no-ops
11860         in the type we code generate.  Remove now superfluous code
11861         generation errors.
11862
11863 2017-10-13  Richard Biener  <rguenther@suse.de>
11864
11865         * graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
11866         (scop_detection::harmful_loop_in_region): Remove premature
11867         IV type restriction.
11868         (scop_detection::graphite_can_represent_scev): We can handle
11869         pointer IVs just fine.
11870
11871 2017-10-13  Alan Modra  <amodra@gmail.com>
11872
11873         * doc/extend.texi (Extended Asm <Clobbers>): Rename to
11874         "Clobbers and Scratch Registers".  Add paragraph on
11875         alternative to clobbers for scratch registers and OpenBLAS
11876         example.
11877
11878 2017-10-13  Alan Modra  <amodra@gmail.com>
11879
11880         * doc/extend.texi (Clobbers): Correct vax example.  Delete old
11881         example of a memory input for a string of known length.  Move
11882         commentary out of table.  Add a number of new examples
11883         covering array memory inputs.
11884
11885 2017-10-12  Martin Liska  <mliska@suse.cz>
11886
11887         PR tree-optimization/82493
11888         * sbitmap.c (bitmap_bit_in_range_p): Fix the implementation.
11889         (test_range_functions): New function.
11890         (sbitmap_c_tests): Likewise.
11891         * selftest-run-tests.c (selftest::run_tests): Run new tests.
11892         * selftest.h (sbitmap_c_tests): New function.
11893
11894         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
11895
11896 2017-10-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
11897
11898         * config/rs6000/amo.h: Fix spacing issue.
11899
11900 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11901
11902         PR target/82498
11903         * config/i386/i386.md (*ashl<mode>3_mask_1,
11904         *<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1,
11905         *<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split
11906         patterns.
11907
11908 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
11909
11910         * profile-count.h (safe_scale_64bit): Fix GCC4.x path.
11911         (profile_probability): Set max_probability
11912         to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows
11913         in temporaries.
11914         * profile-count.c (profile_probability::differs_from_p): Do not
11915         rely on max_probaiblity == 10000
11916
11917 2017-10-12  Jeff Law  <law@redhat.com>
11918
11919         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
11920         negative offsets.
11921
11922 2017-10-12  Martin Sebor  <msebor@redhat.com>
11923
11924         PR other/82301
11925         PR c/82435
11926         * cgraphunit.c (maybe_diag_incompatible_alias): New function.
11927         (handle_alias_pairs): Call it.
11928         * common.opt (-Wattribute-alias): New option.
11929         * doc/extend.texi (ifunc attribute): Discuss C++ specifics.
11930         * doc/invoke.texi (-Wattribute-alias): Document.
11931
11932 2017-10-12  Vladimir Makarov  <vmakarov@redhat.com>
11933
11934         Revert
11935         2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
11936         PR sanitizer/82353
11937         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11938         locations.
11939         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11940         (make_hard_regno_born, make_hard_regno_dead): Update
11941         bb_killed_pseudos and bb_gen_pseudos.
11942
11943 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
11944
11945         * config/i386/x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.
11946
11947 2017-10-12  Uros Bizjak  <ubizjak@gmail.com>
11948
11949         * config/alpha/alpha.c (alpha_split_conditional_move):
11950         Use std::swap instead of manually swapping.
11951         (alpha_stdarg_optimize_hook): Ditto.
11952         (alpha_canonicalize_comparison): Ditto.
11953
11954 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11955
11956         * tree-loop-distribution.c (struct builtin_info): New struct.
11957         (struct partition): Refactor fields into struct builtin_info.
11958         (partition_free): Free struct builtin_info.
11959         (build_size_arg_loc, build_addr_arg_loc): Delete.
11960         (generate_memset_builtin, generate_memcpy_builtin): Get memory range
11961         information from struct builtin_info.
11962         (find_single_drs): New function refactored from classify_partition.
11963         Also moved builtin validity checks to this function.
11964         (compute_access_range, alloc_builtin): New functions.
11965         (classify_builtin_st, classify_builtin_ldst): New functions.
11966         (classify_partition): Refactor code into functions find_single_drs,
11967         classify_builtin_st and classify_builtin_ldst.
11968         (distribute_loop): Don't do runtime alias check when distributing
11969         loop nest.
11970         (find_seed_stmts_for_distribution): New function.
11971         (pass_loop_distribution::execute): Refactor code finding seed
11972         stmts into above function.  Support distribution for the innermost
11973         two-level loop nest.  Adjust dump information.
11974
11975 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11976
11977         * tree-loop-distribution.c: Adjust the general comment.
11978         (NUM_PARTITION_THRESHOLD): New macro.
11979         (ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
11980         (classify_partition): Skip builtin pattern of loop nest's inner loop.
11981         (merge_dep_scc_partitions): New parameter ignore_alias_p and use it
11982         in call to build_partition_graph.
11983         (finalize_partitions): New parameter.  Make loop distribution more
11984         conservative by fusing more partitions.
11985         (distribute_loop): Don't do runtime alias check in case of loop nest
11986         distribution.
11987         (find_seed_stmts_for_distribution): New function.
11988         (prepare_perfect_loop_nest): New function.
11989         (pass_loop_distribution::execute): Refactor code finding seed stmts
11990         and loop nest into above functions.  Support loop nest distribution.
11991         Adjust dump information accordingly.
11992
11993 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11994
11995         * tree-loop-distribution.c (break_alias_scc_partitions): Add comment
11996         and set PTYPE_SEQUENTIAL for merged partition.
11997
11998 2017-10-12  Richard Biener  <rguenther@suse.de>
11999
12000         PR tree-optimization/69728
12001         Revert
12002         2017-09-19  Richard Biener  <rguenther@suse.de>
12003
12004         PR tree-optimization/69728
12005         * graphite-sese-to-poly.c (schedule_error): New global.
12006         (add_loop_schedule): Handle empty domain by failing the
12007         schedule.
12008         (build_original_schedule): Handle schedule_error.
12009
12010         * graphite-sese-to-poly.c (add_loop_schedule): Handle empty
12011         domain by returning an unchanged schedule.
12012
12013 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
12014
12015         * genrecog.c (validate_pattern): For VEC_SELECT verify that
12016         CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.
12017
12018 2017-10-12  Aldy Hernandez  <aldyh@redhat.com>
12019
12020         * Makefile.in (TAGS): Merge all the *.def files into one pattern.
12021         Handle params.def.
12022
12023 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
12024
12025         PR c++/82159
12026         * expr.c (store_field): Don't optimize away bitsize == 0 store
12027         from CALL_EXPR with addressable return type.
12028
12029 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
12030
12031         * config/rs6000/rs6000.h (TARGET_ISEL64): Delete.
12032         * config/rs6000/rs6000.md (sel): Delete mode attribute.
12033         (mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>,
12034         *isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use
12035         TARGET_ISEL instead of TARGET_ISEL<sel>.
12036
12037 2017-10-11  David Edelsohn  <dje.gcc@gmail.com>
12038
12039         * config/rs6000/rs6000.c
12040         (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl.
12041
12042 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
12043
12044         * config/rs6000/predicates.md (zero_constant, all_ones_constant):
12045         Move up in file.
12046         (reg_or_cint_operand): Fix comment.
12047         (reg_or_zero_operand): New predicate.
12048         * config/rs6000/rs6000-protos.h (output_isel): Delete.
12049         * config/rs6000/rs6000.c (output_isel): Delete.
12050         * config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand
12051         instead of reg_or_cint_operand.  Output instruction directly (not via
12052         output_isel).
12053         (isel_unsigned_<mode>): Ditto.
12054         (*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of
12055         gpc_reg_operand.  Add an instruction alternative for this.  Output
12056         instruction directly.
12057         (*isel_reversed_unsigned_<mode>): Ditto.
12058
12059 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
12060
12061         * config/i386/i386.c (ix86_canonicalize_comparison): New function.
12062         (TARGET_CANONICALIZE_COMPARISON): Define.
12063
12064 2017-10-11  Qing Zhao  <qing.zhao@oracle.com>
12065
12066         PR target/81422
12067         * config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
12068         Check whether the dest is REG before adding REG_EQUIV note.
12069
12070 2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
12071
12072         PR sanitizer/82353
12073         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
12074         locations.
12075         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
12076         (make_hard_regno_born, make_hard_regno_dead): Update
12077         bb_killed_pseudos and bb_gen_pseudos.
12078
12079 2017-10-11  Nathan Sidwell  <nathan@acm.org>
12080
12081         * incpath.h (enum incpath_kind): Name enum, prefix values.
12082         (add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
12083         * incpath.c (heads, tails): Use INC_MAX.
12084         (add_env_var_paths, add_standard_paths): Use incpath_kind.
12085         (merge_include_chains, split_quote_chain,
12086         register_include_chains): Update incpath_kind names.
12087         (add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
12088         * config/darwin-c.c (add_system_framework_path): Update incpath_kind
12089         names.
12090         (add_framework_path, darwin_register_objc_includes): Likewise.
12091         * config/vms/vms-c.c (vms_c_register_includes): Likewise.
12092
12093 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
12094
12095         * config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
12096         Do not use float_operator operator predicate.
12097         (*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
12098         * config/i386/predicates.md (float_operator): Remove predicate.
12099
12100 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
12101
12102         * config/i386/i386.md (*jcc<mode>_0_i387): Remove insn pattern.
12103         (*jccxf_i387): Ditto.
12104         (*jcc<mode>_i387): Ditto.
12105         (*jccu<mode>_i387): Ditto.
12106         (*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Ditto.
12107         (*jcc_*_i387 splitters): Remove.
12108         * config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype.
12109         * config/i386/i386.c (ix86_split_fp_branch): Remove.
12110         * config/i386/predicates.md (ix86_swapped_fp_comparison_operator):
12111         Remove predicate.
12112
12113 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
12114
12115         * profile-count.h (slow_safe_scale_64bit): New function.
12116         (safe_scale_64bit): New inline.
12117         (profile_count::max_safe_multiplier): Remove; use safe_scale_64bit.
12118         * profile-count.c: Include wide-int.h
12119         (slow_safe_scale_64bit): New.
12120
12121 2017-10-11  Nathan Sidwell  <nathan@acm.org>
12122
12123         * tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check
12124         HAS_DECL_ASSEMBLER_NAME_P.
12125         * gimple-expr.c (gimple_decl_printable_name: Check
12126         HAS_DECL_ASSEMBLER_NAME_P too.
12127         * ipa-utils.h (type_in_anonymous_namespace_p): Check
12128         DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME.
12129         (odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL.
12130         * passes.c (rest_of_decl_compilation): Check
12131         HAS_DECL_ASSEMBLER_NAME_P too.
12132         * recog.c (verify_changes): Likewise.
12133         * tree-pretty-print.c (dump_decl_name): Likewise.
12134         * tree-ssa-structalias.c (alias_get_name): Likewise.  Reimplement.
12135
12136         * tree.h (DECL_ASSEMBLER_NAME_RAW): New.
12137         (SET_DECL_ASSEMBLER_NAME): Use it.
12138         (DECL_ASSEMBLER_NAME_SET_P): Likewise.
12139         (COPY_DECL_ASSEMBLER_NAME): Likewise.
12140         * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW.
12141
12142 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
12143
12144         * config.gcc (i386, x86_64): Add extra objects.
12145         * config/i386/i386-protos.h (ix86_rip_relative_addr_p): Declare.
12146         (ix86_min_insn_size): Declare.
12147         (ix86_issue_rate): Declare.
12148         (ix86_adjust_cost): Declare.
12149         (ia32_multipass_dfa_lookahead): Declare.
12150         (ix86_macro_fusion_p): Declare.
12151         (ix86_macro_fusion_pair_p): Declare.
12152         (ix86_bd_has_dispatch): Declare.
12153         (ix86_bd_do_dispatch): Declare.
12154         (ix86_core2i7_init_hooks): Declare.
12155         (ix86_atom_sched_reorder): Declare.
12156         * config/i386/i386.c Move all CPU cost tables to x86-tune-costs.h.
12157         (COSTS_N_BYTES): Move to x86-tune-costs.h.
12158         (DUMMY_STRINGOP_ALGS):Move to x86-tune-costs.h.
12159         (rip_relative_addr_p): Rename to ...
12160         (ix86_rip_relative_addr_p): ... this one; export.
12161         (memory_address_length): Update.
12162         (ix86_issue_rate): Move to x86-tune-sched.c.
12163         (ix86_flags_dependent): Move to x86-tune-sched.c.
12164         (ix86_agi_dependent): Move to x86-tune-sched.c.
12165         (exact_dependency_1): Move to x86-tune-sched.c.
12166         (exact_store_load_dependency): Move to x86-tune-sched.c.
12167         (ix86_adjust_cost): Move to x86-tune-sched.c.
12168         (ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c.
12169         (ix86_macro_fusion_p): Move to x86-tune-sched.c.
12170         (ix86_macro_fusion_pair_p): Move to x86-tune-sched.c.
12171         (do_reorder_for_imul): Move to x86-tune-sched-atom.c.
12172         (swap_top_of_ready_list): Move to x86-tune-sched-atom.c.
12173         (ix86_sched_reorder): Move to x86-tune-sched-atom.c.
12174         (core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c.
12175         (core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c.
12176         (min_insn_size): Rename to ...
12177         (ix86_min_insn_size): ... this one; export.
12178         (core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c.
12179         (core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c.
12180         (core2i7_first_cycle_multipass_backtrack): Move to
12181         x86-tune-sched-core.c.
12182         (core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c.
12183         (core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c.
12184         (ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks.
12185         (ix86_avoid_jump_mispredicts): Update.
12186         (TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c.
12187         (TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c.
12188         (TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c.
12189         (DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c.
12190         (MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c.
12191         (MAX_INSN): Move to ix86-tune-sched-bd.c.
12192         (MAX_IMM): Move to ix86-tune-sched-bd.c.
12193         (MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c.
12194         (MAX_IMM_32): Move to ix86-tune-sched-bd.c.
12195         (MAX_IMM_64): Move to ix86-tune-sched-bd.c.
12196         (MAX_LOAD): Move to ix86-tune-sched-bd.c.
12197         (MAX_STORE): Move to ix86-tune-sched-bd.c.
12198         (BIG): Move to ix86-tune-sched-bd.c.
12199         (enum dispatch_group): Move to ix86-tune-sched-bd.c.
12200         (enum insn_path): Move to ix86-tune-sched-bd.c.
12201         (get_mem_group): Move to ix86-tune-sched-bd.c.
12202         (is_cmp): Move to ix86-tune-sched-bd.c.
12203         (dispatch_violation): Move to ix86-tune-sched-bd.c.
12204         (is_branch): Move to ix86-tune-sched-bd.c.
12205         (is_prefetch): Move to ix86-tune-sched-bd.c.
12206         (init_window): Move to ix86-tune-sched-bd.c.
12207         (allocate_window): Move to ix86-tune-sched-bd.c.
12208         (init_dispatch_sched): Move to ix86-tune-sched-bd.c.
12209         (is_end_basic_block): Move to ix86-tune-sched-bd.c.
12210         (process_end_window): Move to ix86-tune-sched-bd.c.
12211         (allocate_next_window): Move to ix86-tune-sched-bd.c.
12212         (find_constant): Move to ix86-tune-sched-bd.c.
12213         (get_num_immediates): Move to ix86-tune-sched-bd.c.
12214         (has_immediate): Move to ix86-tune-sched-bd.c.
12215         (get_insn_path): Move to ix86-tune-sched-bd.c.
12216         (get_insn_group): Move to ix86-tune-sched-bd.c.
12217         (count_num_restricted): Move to ix86-tune-sched-bd.c.
12218         (fits_dispatch_window): Move to ix86-tune-sched-bd.c.
12219         (add_insn_window): Move to ix86-tune-sched-bd.c.
12220         (add_to_dispatch_window): Move to ix86-tune-sched-bd.c.
12221         (debug_dispatch_window_file): Move to ix86-tune-sched-bd.c.
12222         (debug_dispatch_window): Move to ix86-tune-sched-bd.c.
12223         (debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c.
12224         (debug_ready_dispatch): Move to ix86-tune-sched-bd.c.
12225         (do_dispatch): Move to ix86-tune-sched-bd.c.
12226         (has_dispatch): Move to ix86-tune-sched-bd.c.
12227         * config/i386/t-i386: Add new object files.
12228         * config/i386/x86-tune-costs.h: New file.
12229         * config/i386/x86-tune-sched-atom.c: New file.
12230         * config/i386/x86-tune-sched-bd.c: New file.
12231         * config/i386/x86-tune-sched-core.c: New file.
12232         * config/i386/x86-tune-sched.c: New file.
12233
12234 2017-10-11  Liu Hao  <lh_mouse@126.com>
12235
12236         * pretty-print.c [_WIN32] (colorize_init): Remove.  Use
12237         the generic version below instead.
12238         (should_colorize): Recognize Windows consoles as terminals
12239         for MinGW targets.
12240         * pretty-print.c [__MINGW32__] (write_all): New function.
12241         [__MINGW32__] (find_esc_head): Likewise.
12242         [__MINGW32__] (find_esc_terminator): Likewise.
12243         [__MINGW32__] (eat_esc_sequence): Likewise.
12244         [__MINGW32__] (mingw_ansi_fputs): New function that handles
12245         ANSI escape codes.
12246         (pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs
12247         for MinGW targets.
12248
12249 2017-10-11  Richard Biener  <rguenther@suse.de>
12250
12251         * tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith):
12252         Properly call analyze_scalar_evolution with the loop of the stmt.
12253
12254 2017-10-11  Richard Biener  <rguenther@suse.de>
12255
12256         * tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
12257         * tree-core.h (tree_base): Add chrec_var union member.
12258         * tree.h (CHREC_VAR): Remove.
12259         (CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust.
12260         * tree-chrec.h (build_polynomial_chrec): Adjust.
12261         * tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec.
12262         * tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE.
12263
12264 2017-10-11  Marc Glisse  <marc.glisse@inria.fr>
12265
12266         * fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ...
12267         * match.pd: ... here.
12268         ((T) X == (T) Y): Relax condition.
12269
12270 2017-10-11  Bin Cheng  <bin.cheng@arm.com>
12271
12272         PR tree-optimization/82472
12273         * tree-loop-distribution.c (sort_partitions_by_post_order): Refine
12274         comment.
12275         (break_alias_scc_partitions): Update postorder number.
12276
12277 2017-10-11  Martin Liska  <mliska@suse.cz>
12278
12279         PR sanitizer/82490
12280         * opts.c (parse_no_sanitize_attribute): Do not use error_value
12281         variable.
12282         * opts.h (parse_no_sanitize_attribute): Remove last argument.
12283
12284 2017-10-11  Martin Liska  <mliska@suse.cz>
12285
12286         * print-rtl.c (print_insn): Move declaration of idbuf
12287         to same scope as name.
12288
12289 2017-10-11  Martin Liska  <mliska@suse.cz>
12290
12291         Revert r253637:
12292
12293         PR sanitizer/82484
12294         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
12295         volatile arguments.
12296
12297 2017-10-11  Martin Liska  <mliska@suse.cz>
12298
12299         PR sanitizer/82484
12300         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
12301         volatile arguments.
12302
12303 2017-10-11  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
12304
12305         * config.gcc (default_gnu_indirect_function): Default to yes for
12306         arm*-*-linux* with glibc.
12307
12308 2017-10-11  Richard Biener  <rguenther@suse.de>
12309
12310         * tree-scalar-evolution.c (get_scalar_evolution): Handle
12311         default-defs and types we do not want to analyze.
12312         (interpret_loop_phi): Replace unreachable code with an assert.
12313         (compute_scalar_evolution_in_loop): Remove and inline ...
12314         (analyze_scalar_evolution_1): ... here, replacing condition with
12315         what makes the intent clearer.  Remove handling of cases
12316         get_scalar_evolution now handles.
12317
12318 2017-10-10  Jim Wilson  <wilson@tuliptree.org>
12319
12320         PR rtl-optimization/81434
12321         * haifa-sched.c (prune_ready_list): Init min_cost_group to 0.  Update
12322         comment for main loop.  In sched_group_found if, also add checks for
12323         pass and min_cost_group.
12324
12325 2017-10-10  Segher Boessenkool  <segher@kernel.crashing.org>
12326
12327         * config/rs6000/rs6000.c (TARGET_INSN_COST): New.
12328         (rs6000_insn_cost): New function.
12329         * config/rs6000/rs6000.md (cost): New attribute.
12330
12331 2017-10-10  Jakub Jelinek  <jakub@redhat.com>
12332             H.J. Lu  <hongjiu.lu@intel.com>
12333
12334         PR target/79565
12335         PR target/82483
12336         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
12337         OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq,
12338         __builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi.
12339         (ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly
12340         to OPTION_MASK_ISA_AVX512VL - builtins that have both
12341         OPTION_MASK_ISA_MMX and some other bit set require both
12342         mmx and the ISAs without the mmx bit.
12343         * config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi,
12344         __builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps,
12345         __builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw,
12346         __builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub,
12347         __builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb,
12348         __builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi,
12349         __builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd,
12350         __builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw,
12351         __builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd,
12352         __builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd,
12353         __builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw,
12354         __builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb,
12355         __builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq,
12356         __builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr):
12357         Add OPTION_MASK_ISA_MMX.
12358
12359 2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
12360
12361         * config.gcc (armv7*-*-freebsd*): New target.
12362         (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.
12363
12364 2017-10-10  Jan Hubicka  <hubicka@ucw.cz>
12365
12366         * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI,
12367         X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right
12368         spot in the file.
12369
12370 2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
12371
12372         * wide-int.h (wide_int_ref_storage): Make host_dependent_precision
12373         a template parameter.
12374         (WIDE_INT_REF_FOR): Update accordingly.
12375         * tree.h (wi::int_traits <const_tree>): Delete.
12376         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
12377         (wi::to_widest, wi::to_offset): Use them.  Expand commentary.
12378         (wi::tree_to_wide_ref): New typedef.
12379         (wi::to_wide): New function.
12380         * calls.c (get_size_range): Use wi::to_wide when operating on
12381         trees as wide_ints.
12382         * cgraph.c (cgraph_node::create_thunk): Likewise.
12383         * config/i386/i386.c (ix86_data_alignment): Likewise.
12384         (ix86_local_alignment): Likewise.
12385         * dbxout.c (stabstr_O): Likewise.
12386         * dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
12387         * expr.c (const_vector_from_tree): Likewise.
12388         * fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
12389         * fold-const.c (may_negate_without_overflow_p, negate_expr_p)
12390         (fold_negate_expr_1, int_const_binop_1, const_binop)
12391         (fold_convert_const_int_from_real, optimize_bit_field_compare)
12392         (all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
12393         (fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
12394         (pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
12395         (fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
12396         (fold_not_const, round_up_loc): Likewise.
12397         * gimple-fold.c (gimple_fold_indirect_ref): Likewise.
12398         * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
12399         (alloca_call_type): Likewise.
12400         * gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
12401         * godump.c (go_output_typedef): Likewise.
12402         * graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
12403         * internal-fn.c (get_min_precision): Likewise.
12404         * ipa-cp.c (ipcp_store_vr_results): Likewise.
12405         * ipa-polymorphic-call.c
12406         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
12407         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
12408         (ipa_modify_call_arguments): Likewise.
12409         * match.pd: Likewise.
12410         * omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
12411         * print-tree.c (print_node_brief, print_node): Likewise.
12412         * stmt.c (expand_case): Likewise.
12413         * stor-layout.c (layout_type): Likewise.
12414         * tree-affine.c (tree_to_aff_combination): Likewise.
12415         * tree-cfg.c (group_case_labels_stmt): Likewise.
12416         * tree-data-ref.c (dr_analyze_indices): Likewise.
12417         (prune_runtime_alias_test_list): Likewise.
12418         * tree-dump.c (dequeue_and_dump): Likewise.
12419         * tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
12420         * tree-predcom.c (is_inv_store_elimination_chain): Likewise.
12421         * tree-pretty-print.c (dump_generic_node): Likewise.
12422         * tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
12423         (simple_iv_with_niters): Likewise.
12424         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
12425         * tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
12426         * tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
12427         * tree-ssa-loop-niter.c (split_to_var_and_offset)
12428         (refine_value_range_using_guard, number_of_iterations_ne_max)
12429         (number_of_iterations_lt_to_ne, number_of_iterations_lt)
12430         (get_cst_init_from_scev, record_nonwrapping_iv)
12431         (scev_var_range_cant_overflow): Likewise.
12432         * tree-ssa-phiopt.c (minmax_replacement): Likewise.
12433         * tree-ssa-pre.c (compute_avail): Likewise.
12434         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
12435         (vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
12436         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
12437         * tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
12438         * tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
12439         * tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
12440         (dump_case_nodes, try_switch_expansion): Likewise.
12441         * tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
12442         (vect_do_peeling): Likewise.
12443         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
12444         * tree-vect-stmts.c (vectorizable_load): Likewise.
12445         * tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
12446         (zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
12447         (extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
12448         (overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
12449         (is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
12450         (vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
12451         (range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
12452         (evrp_dom_walker::before_dom_children): Likewise.
12453         * tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
12454         (integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
12455         (tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
12456         (tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
12457         (get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
12458         (get_range_pos_neg): Likewise.
12459         * ubsan.c (ubsan_expand_ptr_ifn): Likewise.
12460         * config/darwin.c (darwin_mergeable_constant_section): Likewise.
12461         * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
12462         * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
12463         * config/avr/avr.c (avr_fold_builtin): Likewise.
12464         * config/bfin/bfin.c (bfin_local_alignment): Likewise.
12465         * config/msp430/msp430.c (msp430_attr): Likewise.
12466         * config/nds32/nds32.c (nds32_insert_attributes): Likewise.
12467         * config/powerpcspe/powerpcspe-c.c
12468         (altivec_resolve_overloaded_builtin): Likewise.
12469         * config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
12470         (rs6000_expand_ternop_builtin): Likewise.
12471         * config/rs6000/rs6000-c.c
12472         (altivec_resolve_overloaded_builtin): Likewise.
12473         * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
12474         (rs6000_expand_ternop_builtin): Likewise.
12475         * config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.
12476
12477 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12478
12479         * tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes
12480         when copying loop nest with only one inner loop.
12481
12482 2017-10-10  Richard Biener  <rguenther@suse.de>
12483
12484         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting
12485         blocks if SCEV is active.
12486         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove
12487         dead code.
12488         (analyze_scalar_evolution): Handle cached evolutions the obvious way.
12489         (scev_initialize): Assert we are not yet initialized.
12490
12491 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12492
12493         * tree-loop-distribution.c (generate_loops_for_partition): Remove
12494         inner loop's exit stmt by making it always exit the loop, otherwise
12495         we would generate an infinite empty loop.
12496
12497 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12498
12499         * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip
12500         renaming variables in new preheader if it's deleted.
12501
12502 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12503
12504         * tree-loop-distribution.c (struct partition): Remove unused field
12505         loops of the structure.
12506         (partition_alloc, partition_free): Ditto.
12507         (build_rdg_partition_for_vertex): Ditto.
12508
12509 2017-10-09  Jeff Law  <law@redhat.com>
12510
12511         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix
12512         return type to match prototype and documentation.
12513
12514 2010-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12515
12516         * config/rs6000/rs6000.c (processor_costs): Move to ...
12517         * config/rs6000/rs6000.h: ... here.
12518         (rs6000_cost): Declare.
12519
12520 2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>
12521
12522         * except.c (setjmp_fn): New global variable.
12523         (init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined.
12524         (sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP
12525         if DONT_USE_BUILTIN_SETJMP is defined.
12526
12527 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12528
12529         * target.def (insn_cost): New hook.
12530         * doc/tm.texi.in (TARGET_INSN_COST): New hook.
12531         * doc/tm.texi: Regenerate.
12532         * rtlanal.c (insn_cost): Use the new hook.
12533
12534 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12535
12536         * combine.c (combine_validate_cost): Compute the new insn_cost,
12537         not just pattern_cost.
12538         (try_combine): Adjust comment.
12539
12540 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12541
12542         * cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
12543         insn_cost.
12544         * combine.c (uid_insn_cost): Adjust comment.
12545         (combine_validate_cost): Adjust comment.  Use pattern_cost instead
12546         of insn_rtx_cost
12547         (combine_instructions): Use insn_cost instead of insn_rtx_cost.
12548         * dse.c (find_shift_sequence): Ditto.
12549         * ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
12550         (bb_valid_for_noce_process_p): Use pattern_cost.
12551         * rtl.h (insn_rtx_cost): Delete.
12552         (pattern_cost): New prototype.
12553         (insn_cost): New prototype.
12554         * rtlanal.c (insn_rtx_cost): Rename to...
12555         (pattern_cost): ... this.
12556         (insn_cost): New.
12557
12558 2017-10-09  Uros Bizjak  <ubizjak@gmail.com>
12559
12560         * config/i386/i386.md (*jcc_2): Remove insn pattern.
12561         (*jcc<mode>_0_r_i387): Ditto.
12562         (*jccxf_r_i387): Ditto.
12563         (*jcc<mode>_r_i387): Ditto.
12564         (*jccu<mode>_r_i387): Ditto.
12565         (*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
12566         (*jcc): Rename from *jcc_1.
12567
12568 2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12569
12570         * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
12571         deferred rescans after the lvx/stvx recombination pre-pass.
12572
12573 2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
12574
12575         * config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
12576         memory operation instruction support.
12577         * config.gcc (powerpc*-*-*): Include amo.h as an extra header.
12578         (rs6000-ibm-aix[789]*): Likewise.
12579         * doc/extend.texi (PowerPC Atomic Memory Operation Functions):
12580         Document new functions.
12581
12582 2017-10-09  Richard Biener  <rguenther@suse.de>
12583
12584         PR tree-optimization/82397
12585         * tree-data-ref.c (data_ref_compare_tree): Make sure to return
12586         equality only for semantically equal trees.
12587
12588 2017-10-09  Richard Biener  <rguenther@suse.de>
12589
12590         PR tree-optimization/82449
12591         * sese.c (scev_analyzable_p): Check whether the SCEV is linear.
12592         * tree-chrec.h (evolution_function_is_constant_p): Adjust to
12593         allow constant addresses.
12594         * tree-chrec.c (scev_is_linear_expression): Constant evolutions
12595         are linear.
12596
12597 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12598
12599         * config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
12600         flags.
12601
12602 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12603
12604         PR target/82463
12605         * config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
12606         definitions.
12607
12608 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12609
12610         PR target/82465
12611         * config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.
12612
12613 2017-10-09  Jakub Jelinek  <jakub@redhat.com>
12614
12615         PR target/82464
12616         * config/s390/s390-builtins.def (s390_vec_xor_flt_a,
12617         s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.
12618
12619 2017-10-09  Richard Sandiford  <richard.sandiford@linaro.org>
12620
12621         * wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro.
12622         (WI_BINARY_PREDICATE_RESULT): Likewise.
12623         (wi::binary_traits::operator_result): New type.
12624         (wi::binary_traits::predicate_result): Likewise.
12625         (generic_wide_int::operator~, unary generic_wide_int::operator-)
12626         (generic_wide_int::operator==, generic_wide_int::operator!=)
12627         (generic_wide_int::operator&, generic_wide_int::and_not)
12628         (generic_wide_int::operator|, generic_wide_int::or_not)
12629         (generic_wide_int::operator^, generic_wide_int::operator+
12630         (binary generic_wide_int::operator-, generic_wide_int::operator*):
12631         Delete.
12632         (operator~, unary operator-, operator==, operator!=, operator&)
12633         (operator|, operator^, operator+, binary operator-, operator*): New
12634         functions.
12635         * expr.c (get_inner_reference): Use wi::bit_and_not.
12636         * fold-const.c (fold_binary_loc): Likewise.
12637         * ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise.
12638         * tree-ssa-ccp.c (get_value_from_alignment): Likewise.
12639         (bit_value_binop): Likewise.
12640         * tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise.
12641         * tree-vrp.c (zero_nonzero_bits_from_vr): Likewise.
12642         (extract_range_from_binary_expr_1): Likewise.
12643         (masked_increment): Likewise.
12644         (simplify_bit_ops_using_ranges): Likewise.
12645
12646 2017-10-09  Martin Jambor  <mjambor@suse.cz>
12647
12648         PR hsa/82416
12649         * hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit.
12650         * hsa-gen.c (hsa_extend_inttype_to_32bit): New function.
12651         (hsa_type_for_scalar_tree_type): Use it.  Always force min32int for
12652         COMPLEX types.
12653         (hsa_fixup_mov_insn_type): New function.
12654         (hsa_op_with_type::get_in_type): Use it.
12655         (hsa_build_append_simple_mov): Likewise.  Allow sub-32bit
12656         immediates in an assert.
12657         (hsa_op_with_type::extend_int_to_32bit): New method.
12658         (gen_hsa_insns_for_bitfield): Fixup instruction and intermediary
12659         types.  Convert to dest type if necessary.
12660         (gen_hsa_insns_for_bitfield_load): Fixup load type if necessary.
12661         (reg_for_gimple_ssa): Pass false as min32int to
12662         hsa_type_for_scalar_tree_type.
12663         (gen_hsa_addr): Fixup type when creating addresable temporary.
12664         (gen_hsa_cmp_insn_from_gimple): Extend operands if necessary.
12665         (gen_hsa_unary_operation): Extend operands and convert to dest type if
12666         necessary.  Call hsa_fixup_mov_insn_type.
12667         (gen_hsa_binary_operation): Changed operand types to hsa_op_with_type,
12668         extend operands and convert to dest type if necessary.
12669         (gen_hsa_insns_for_operation_assignment): Extend operands and convert
12670         to dest type if necessary.
12671         (set_output_in_type): Call hsa_fixup_mov_insn_type.  Just ude dest
12672         if conversion nt necessary and size matches.
12673         (gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert
12674         to dest type if necessary.
12675         (gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type.
12676         (gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if
12677         necessary.
12678         (gen_hsa_clrsb): Likewise.
12679         (gen_hsa_ffs): Likewise.
12680         (gen_hsa_divmod): Extend operands and convert to dest type if
12681         necessary.
12682         (gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type.
12683
12684 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
12685
12686         * config/rs6000/rs6000.md (conditional branch): Clean up formatting.
12687         Remove empty default arguments.  Use a brace block as output
12688         statement.
12689         (conditional return): Ditto.
12690         (jump): Ditto.
12691         (indirect_jump): Ditto.  Use b%T0 instead of bctr/blr.
12692         (tablejump, tablejumpsi, tablejumpdi, *tablejump<mode>_internal1):
12693         Ditto.
12694         (group_ending_nop): Ditto.
12695         (doloop_end): Ditto.
12696         (ctr<mode>, ctr<mode>_internal1, ctr<mode>_internal2): Ditto.
12697         (splitters for those): Ditto.
12698
12699 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
12700
12701         * config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert
12702         a conditional jump (and the compare for it) so that pc_rtx is the
12703         last operand.
12704         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust
12705         for the deleted and renamed ctr<mode>_internal[234] patterns.
12706         * config/rs6000/rs6000.md: Delete second conditional branch pattern.
12707         Delete second conditional return pattern.
12708         (ctr<mode>_internal2): Delete this second bdnz pattern.
12709         (ctr<mode>_internal3): Rename to ctr<mode>_internal2.
12710         (ctr<mode>_internal4): Delete this second bdz pattern.
12711
12712 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
12713
12714         * tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
12715         (always_initialized_rtx_for_ssa_name_p): New predicate.
12716         * tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA.
12717         (finish_out_of_ssa): Free new field of SA.
12718         * tree-ssa-coalesce.h (get_undefined_value_partitions): Declare.
12719         * tree-ssa-coalesce.c: Include tree-ssa.h.
12720         (get_parm_default_def_partitions): Remove extern keyword.
12721         (get_undefined_value_partitions): New function.
12722         * expr.c (expand_expr_real_1) <expand_decl_rtl>: For a SSA_NAME, do
12723         not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain
12724         uninitialized bits.
12725         * loop-iv.c (iv_get_reaching_def): Disqualify all subregs.
12726
12727 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
12728
12729         * builtins.def (BUILT_IN_SETJMP): Revert latest change.
12730
12731 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
12732
12733         * config/i386/i386.c (ix86_expand_set_or_movmem): Disable 512bit loops
12734         for targets that preffer 128bit.
12735
12736 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
12737
12738         * config/i386/i386.c (has_dispatch): Disable for Ryzen.
12739
12740 2017-10-08  Olivier Hainque  <hainque@adacore.com>
12741
12742         * config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P
12743         on the target mem instead of RTX_FRAME_RELATED_P on the insn to
12744         prevent DSE.
12745         (thumb_set_return_address): Likewise.
12746
12747 2017-10-08  Olivier Hainque  <hainque@adacore.com>
12748
12749         * common/config/arm/arm-common.c (arm_except_unwind_info):
12750         Handle DWARF2_UNWIND_INFO.
12751
12752 2017-10-07  Michael Collison <michael.collison@arm.com>
12753
12754         * config/aarch64/aarch64.md (*aarch64_reg_<optab>_minus<mode>3):
12755         New pattern.
12756
12757 2017-10-07  Eric Botcazou  <ebotcazou@adacore.com>
12758
12759         * builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead
12760         of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined.
12761         * except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is
12762         defined, force the creation of a new block for a dispatch label.
12763
12764 2017-10-07  Jan Hubicka  <hubicka@ucw.cz>
12765
12766         * invoke.texi (Wsuggest-attribute=cold): Document.
12767         * common.opt (Wsuggest-attribute=cold): New
12768         * ipa-pure-const.c (warn_function_cold): New function.
12769         * predict.c (compute_function_frequency): Use it.
12770         * predict.h (warn_function_cold): Declare.
12771
12772 2017-10-06  Jan Hubicka  <hubicka@ucw.cz>
12773
12774         * tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
12775         Update profile.
12776
12777 2017-10-06  Martin Liska  <mliska@suse.cz>
12778
12779         * sanopt.c (struct sanopt_tree_triplet_hash): Remove inline
12780         keyword for member functions.
12781         (struct sanopt_tree_couple): New struct.
12782         (struct sanopt_tree_couple_hash): New function.
12783         (struct sanopt_ctx): Add new hash_map.
12784         (has_dominating_ubsan_ptr_check): New function.
12785         (record_ubsan_ptr_check_stmt): Likewise.
12786         (maybe_optimize_ubsan_ptr_ifn): Likewise.
12787         (sanopt_optimize_walker): Handle IFN_UBSAN_PTR.
12788         (pass_sanopt::execute): Handle also SANITIZE_POINTER_OVERFLOW.
12789
12790 2017-10-06  Sudakshina Das  <sudi.das@arm.com>
12791
12792         PR target/82440
12793         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Only call
12794         aarch64_simd_valid_immediate on CONST_VECTORs.
12795         (aarch64_reg_or_bic_imm): Likewise.
12796
12797 2017-10-06  Wilco Dijkstra  <wdijkstr@arm.com>
12798
12799         PR rtl-optimization/82396
12800         * haifa-sched.c (ready_sort_real): Disable qsort checking.
12801
12802 2017-10-06  Sebastian Pop  <sebpop@gmail.com>
12803
12804         * graphite-dependences.c (scop_get_reads): Move code to...
12805         (scop_get_must_writes): Move code to...
12806         (scop_get_may_writes): Move code to...
12807         (scop_get_reads_and_writes): ... here.
12808         (scop_get_dependences): Call scop_get_reads_and_writes.
12809
12810 2017-10-06  Jakub Jelinek  <jakub@redhat.com>
12811
12812         PR tree-optimization/82434
12813         * fold-const.h (can_native_encode_type_p,
12814         can_native_encode_string_p): Remove.
12815         * fold-const.c (native_encode_int): Formatting fixes.  If ptr is NULL,
12816         don't encode anything, just return what would be otherwise returned.
12817         (native_encode_fixed, native_encode_complex, native_encode_vector):
12818         Likewise.
12819         (native_encode_string): Likewise.  Inline by hand
12820         can_native_encode_string_p.
12821         (can_native_encode_type_p): Remove.
12822         (can_native_encode_string_p): Remove.
12823         * tree-vect-stmts.c (vectorizable_store): Instead of testing just
12824         STRING_CSTs using can_native_encode_string_p, test all
12825         CONSTANT_CLASS_P values using native_encode_expr with NULL ptr.
12826         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last
12827         argument from native_encode_expr.
12828         (rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr.
12829         (pass_store_merging::execute): Don't unnecessarily look for 3 stmts,
12830         but just 2.
12831
12832 2017-10-06  Richard Biener  <rguenther@suse.de>
12833
12834         PR tree-optimization/82397
12835         * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use
12836         operand_equal_p but rely on data_ref_compare_tree for detecting
12837         equalities.
12838         (vect_analyze_data_ref_accesses): Use data_ref_compare_tree
12839         to match up with dr_group_sort_cmp.
12840
12841 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12842
12843         PR target/82322
12844         * config/s390/s390-builtins.def (s390_vfi): Define new overloaded
12845         builtin.
12846         * config/s390/s390-builtin-types.def: Regenerate.
12847
12848 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12849
12850         PR target/82317
12851         * config/s390/s390-builtin-types.def: Regenerate.
12852         * config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4):
12853         Change flag from B_VXE to B_VX.
12854         (s390_vec_min_dbl): Remove B_VXE flag.
12855
12856 2017-10-06  Richard Biener  <rguenther@suse.de>
12857
12858         * graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h.
12859         (translate_isl_ast_to_gimple::translate_pending_phi_nodes,
12860         translate_isl_ast_to_gimple::is_valid_rename,
12861         translate_isl_ast_to_gimple::get_rename,
12862         translate_isl_ast_to_gimple::get_def_bb_for_const,
12863         translate_isl_ast_to_gimple::get_new_name,
12864         translate_isl_ast_to_gimple::collect_all_ssa_names,
12865         translate_isl_ast_to_gimple::copy_loop_phi_args,
12866         translate_isl_ast_to_gimple::collect_all_ssa_names,
12867         translate_isl_ast_to_gimple::copy_loop_phi_args,
12868         translate_isl_ast_to_gimple::copy_loop_phi_nodes,
12869         translate_isl_ast_to_gimple::add_close_phis_to_merge_points,
12870         translate_isl_ast_to_gimple::add_close_phis_to_outer_loops,
12871         translate_isl_ast_to_gimple::copy_loop_close_phi_args,
12872         translate_isl_ast_to_gimple::copy_loop_close_phi_nodes,
12873         translate_isl_ast_to_gimple::copy_cond_phi_args,
12874         translate_isl_ast_to_gimple::copy_cond_phi_nodes,
12875         translate_isl_ast_to_gimple::edge_for_new_close_phis,
12876         translate_isl_ast_to_gimple::add_phi_arg_for_new_expr,
12877         translate_isl_ast_to_gimple::rename_uses,
12878         translate_isl_ast_to_gimple::rename_all_uses): Remove.
12879         (translate_isl_ast_to_gimple::get_rename_from_scev): Simplify.
12880         (set_rename_for_each_def): Likewise.
12881         (graphite_copy_stmts_from_block): Handle debug stmt resetting
12882         here.  Handle rewriting SCEV analyzable uses here.
12883         (copy_bb_and_scalar_dependences): Generate code for PHI
12884         copy-in/outs.
12885         (graphite_regenerate_ast_isl): Adjust.
12886         * graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch].
12887         (add_write, add_read): New functions.
12888         (build_cross_bb_scalars_def): Use it and simplify.
12889         (build_cross_bb_scalars_use): Likewise.
12890         (graphite_find_cross_bb_scalar_vars): Inline into...
12891         (try_generate_gimple_bb): ...here.  Add dependences for PHIs,
12892         simulating out-of-SSA.  Compute liveout and add dependencies.
12893         (build_scops): Force an empty entry block.
12894         * sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New
12895         members.
12896         (sese_build_liveouts): Declare.
12897         (sese_trivially_empty_bb_p): Likewise.
12898         * sese.c (sese_build_liveouts_bb): Properly handle PHIs,
12899         compute liveout and debug_liveout.
12900         (sese_bad_liveouts_use): Remove.
12901         (sese_reset_debug_liveouts_bb): Likewise.
12902         (sese_reset_debug_liveouts): Rewrite in terms of debug_liveout.
12903         (sese_build_liveouts): Build liveout and debug_liveout and store
12904         it in region.
12905         (new_sese_info): Adjust.
12906         (free_sese_info): Likewise.
12907         (sese_insert_phis_for_liveouts): Reset debug stmts from here,
12908         do not build liveout here.
12909         (move_sese_in_condition): Adjust region entry.
12910         (scev_analyzable_p): Match up with chrec_apply requirements.
12911         (sese_trivially_empty_bb_p): New.
12912         * tree-into-ssa.c (get_reaching_def): Properly support generating
12913         default-defs for incremental rewrite of anonymous names.
12914
12915 2017-10-06  Richard Biener  <rguenther@suse.de>
12916
12917         * graphite-sese-to-poly.c (extract_affine): For casts increasing
12918         precision do not perform modulo reduction.
12919
12920 2017-10-06  Richard Biener  <rguenther@suse.de>
12921
12922         PR tree-optimization/82436
12923         * tree-vect-slp.c (vect_supported_load_permutation_p): More
12924         conservatively choose the vectorization factor when checking
12925         whether we can perform the required load permutation.
12926         (vect_transform_slp_perm_load): Assert when we may not fail.
12927
12928 2017-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
12929
12930         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error
12931         message for incompatible -msdata=* and -mcall-* options.
12932
12933 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12934
12935         * config/i386/i386.c (ia32_multipass_dfa_lookahead): Default to issue
12936         rate for post-reload scheduling.
12937
12938 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
12939
12940         * doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New.
12941
12942 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12943
12944         * config/i386/i386.c (znver1_cost): Set branch_cost to 3 (instead of 2)
12945         to improve monte carlo in scimark.
12946
12947 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12948
12949         * config/i386/i386.c (ix86_size_cost, i386_cost, i486_cost,
12950         pentium_cost, lakemont_cost, pentiumpro_cost, geode_cost, k6_cost,
12951         athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost,
12952         pentium4_cost, nocona_cost): Set reassociation width to 1.
12953         (bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation
12954         width to 2 for fp operations and 1 otherwise.
12955         (znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6
12956         for int and fp.
12957         (atom_cost): Set reassociation width to 2.
12958         (slm_cost, generic_cost): Set fp reassociation width
12959         to 2 and 1 otherwise.
12960         (intel_cost): Set fp reassociation width to 4 and 1 otherwise.
12961         (core_cost): Set fp reassociation width to 4 and vector to 2.
12962         (ix86_reassociation_width): Rewrite using cost table; special case
12963         plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS
12964         and TARGET_AVX128_OPTIMAL.
12965         * config/i386/i386.h (processor_costs): Add
12966         reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp.
12967         (TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL,
12968         TARGET_REASSOC_FP_TO_PARALLEL): Remove.
12969         * x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove.
12970         (X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove.
12971         (X86_TUNE_VECTOR_PARALLEL_EXECUTION):  Remove.
12972
12973 2017-10-05  Nathan Sidwell  <nathan@acm.org>
12974
12975         * doc/invoke.texi (Wparentheses): Document C++ MVP behaviour.
12976
12977 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
12978
12979         * config/arm/arm.c (arm_test_fpu_data): New.
12980         (arm_run_selftests): Call arm_test_fpu_data.
12981
12982 2017-10-04  Nathan Sidwell  <nathan@acm.org>
12983
12984         * toplev.c (toplev::main): Remove excess parens on pretty_printer
12985         decl.
12986         * caller-save.c (insert_save): Remove excess parens on TO_SAVE parm.
12987
12988 2017-10-04  Sudakshina Das  <sudi.das@arm.com>
12989
12990         * config/aarch64/aarch64-protos.h (enum simd_immediate_check): New
12991         check type for aarch64_simd_valid_immediate.
12992         (aarch64_output_simd_mov_immediate): Update prototype.
12993         (aarch64_simd_valid_immediate): Update prototype.
12994         * config/aarch64/aarch64-simd.md (orr<mode>3): modified pattern to add
12995         support for ORR-immediate.
12996         (and<mode>3): modified pattern to add support for BIC-immediate.
12997         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function
12998         now checks for valid immediate for BIC and ORR based on new enum
12999         argument.
13000         (aarch64_output_simd_mov_immediate): Function now used to output
13001         BIC/ORR imm as well based on new enum argument.
13002         * config/aarch64/constraints.md (Do): New vector immediate constraint.
13003         (Db) : Likewise.
13004         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate.
13005         (aarch64_reg_or_bic_imm): Likewise.
13006
13007 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13008
13009         * config/s390/vx-builtins.md ("vec_mergeh<mode>")
13010         ("vec_mergel<mode>"): Change mode iterator to V_128_NOSINGLE.
13011
13012 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
13013
13014         Revert r253399:
13015
13016         PR rtl-optimization/82396
13017         * haifa-sched.c (autopref_multipass_init): Simplify
13018         initialization.
13019         (autopref_rank_data): Simplify sort order.
13020         * sched-int.h (autopref_multipass_data_): Remove
13021         multi_mem_insn_p, min_offset and max_offset.
13022
13023 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13024
13025         * doc/sourcebuild.texi: Document vect_peeling_profitable.
13026
13027 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13028
13029         * doc/sourcebuild.texi: Document vect_intdouble_cvt and
13030         vect_doubleint_cvt.
13031
13032 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13033
13034         * doc/sourcebuild.texi: Document vect_long_mult.
13035
13036 2017-10-04  Richard Sandiford  <richard.sandiford@linaro.org>
13037
13038         PR tree-optimization/82413
13039         * fold-const.c (build_range_check): Use widest_int when comparing
13040         the maximum ETYPE value with HIGH.
13041
13042 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
13043
13044         PR rtl-optimization/82396
13045         * haifa-sched.c (autopref_multipass_init): Simplify
13046         initialization.
13047         (autopref_rank_data): Simplify sort order.
13048         * sched-int.h (autopref_multipass_data_): Remove
13049         multi_mem_insn_p, min_offset and max_offset.
13050
13051 2017-10-04  Jakub Jelinek  <jakub@redhat.com>
13052
13053         PR tree-optimization/82381
13054         * tree-ssa-reassoc.c (sort_by_operand_rank): Check for different
13055         oeN->rank first.  Return 1 or -1 if one op is SSA_NAME and the other
13056         is not.
13057
13058         PR tree-optimization/82374
13059         * omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES,
13060         DECL_FUNCTION_SPECIFIC_OPTIMIZATION,
13061         DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from
13062         current_function_decl to the new decl.
13063
13064 2017-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
13065
13066         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new
13067         helper macro for IEEE float128 hardware built-in functions.
13068         (SQRTF128_ODD): Add built-in functions with the round-to-odd
13069         semantics.
13070         (TRUNCF128_ODD): Likewise.
13071         (ADDF128_ODD): Likewise.
13072         (SUBF128_ODD): Likewise.
13073         (MULF128_ODD): Likewise.
13074         (DIVF128_ODD): Likewise.
13075         (FMAF128_ODD): Likewise.
13076         * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to
13077         UNSPEC_TRUNC_ROUND_TO_ODD.
13078         (UNSPEC_TRUNC_ROUND_TO_ODD): Likewise.
13079         (UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit
13080         floating point round to odd instructions.
13081         (UNSPEC_SUB_ROUND_TO_ODD): Likewise.
13082         (UNSPEC_MUL_ROUND_TO_ODD): Likewise.
13083         (UNSPEC_DIV_ROUND_TO_ODD): Likewise.
13084         (UNSPEC_FMA_ROUND_TO_ODD): Likewise.
13085         (UNSPEC_SQRT_ROUND_TO_ODD): Likewise.
13086         (trunc<mode>sf2_hw): Change the truncate with round to odd
13087         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.
13088         (add<mode>3_odd): Add insns for IEEE 128-bit floating point round
13089         to odd hardware instructions.
13090         (sub<mode>3_odd): Likewise.
13091         (mul<mode>3_odd): Likewise.
13092         (div<mode>3_odd): Likewise.
13093         (sqrt<mode>2_odd): Likewise.
13094         (fma<mode>4_odd): Likewise.
13095         (fms<mode>4_odd): Likewise.
13096         (nfma<mode>4_odd): Likewise.
13097         (nfms<mode>4_odd): Likewise.
13098         (trunc<mode>df2_odd): Change the truncate with round to odd
13099         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.  Add a generator
13100         function.
13101         * doc/extend.texi (PowerPC built-in functions): Update documentation
13102         for existing IEEE float128-bit built-in functions.  Add built-in
13103         functions that generate the IEEE 128-bit floating point round to
13104         odd instructions.
13105
13106 2017-10-03  Segher Boessenkool  <segher@kernel.crashing.org>
13107
13108         PR rtl-optimization/77729
13109         * simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2
13110         to (X&(C1&~C2))|C2 transformations.
13111
13112 2017-10-03  Martin Jambor  <mjambor@suse.cz>
13113
13114         PR tree-optimization/82363
13115         * tree-sra.c (propagate_subaccesses_across_link): In unrecoverable
13116         mismatch, mark lacc written regardless of racc.
13117
13118 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
13119
13120         PR tree-optimization/82381
13121         * tree-ssa-reassoc.c (sort_by_operand_rank): Don't check
13122         stmt_to_insert nor wheather SSA_NAMEs are default defs.
13123         Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal,
13124         fallthrough into reassoc_stmt_dominates_stmt_p.
13125
13126         PR target/82386
13127         * combine.c (combine_instructions): Don't combine in unreachable
13128         basic blocks.
13129
13130 2017-10-02  Peter Bergner  <bergner@vnet.ibm.com>
13131
13132         PR target/80210
13133         * config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite
13134         function to not use the have_cpu variable.  Do not set cpu_index,
13135         rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT
13136         or the default cpu.
13137         (rs6000_valid_attribute_p): Remove duplicate initializations of
13138         old_optimize and func_optimize.
13139         (rs6000_pragma_target_parse): Call rs6000_activate_target_options ().
13140         (rs6000_activate_target_options): Make global.
13141         * config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add
13142         prototype.
13143
13144 2017-10-02  Jakub Jelinek  <jakub@redhat.com>
13145
13146         * tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1
13147         if *poffset + *pmax_size overflows in HOST_WIDE_INT.
13148         Set *poffset to 0 and *psize and *pmax_size to -1 if
13149         *poffset + *psize overflows in HOST_WIDE_INT.
13150
13151         PR tree-optimization/82387
13152         PR tree-optimization/82388
13153         PR tree-optimization/82389
13154         * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled
13155         instead of live_bytes non-NULL.
13156
13157 2017-10-02  Georg-Johann Lay  <avr@gjlay.de>
13158
13159         PR target/41076
13160         * confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0"
13161         alternative.
13162
13163 2017-10-02  Richard Biener  <rguenther@suse.de>
13164
13165         * graphite-isl-ast-to-gimple.c (set_codegen_error): With
13166         -fchecking and --param graphite-allow-codegen-errors=0 ICE.
13167         * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param.
13168
13169 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
13170
13171         * tree.h (wi::int_traits <const_tree>::decompose): Assert that the
13172         requested precision matches the type's.
13173         * calls.c (alloc_max_size): Calculate the new candidate size as
13174         a widest_int and use wi::to_widest when comparing it with the
13175         current candidate size.
13176         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with
13177         zero rather than integer_zero_node.
13178         * match.pd: Check for a no-op conversion before using wi::add
13179         rather than after.  Use tree_to_uhwi when summing small shift
13180         counts into an unsigned int.
13181
13182 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
13183             Alan Hayward  <alan.hayward@arm.com>
13184             David Sherwood  <david.sherwood@arm.com>
13185
13186         PR target/71307
13187         * config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class.
13188         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
13189         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
13190         POINTER_AND_FP_REGS.
13191
13192 2017-10-02  Richard Biener  <rguenther@suse.de>
13193
13194         PR tree-optimization/82355
13195         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
13196         a mapping for the enclosing loop but avoid generating one for
13197         the loop tree root.
13198         (copy_bb_and_scalar_dependences): Remove premature codegen
13199         error on PHIs in blocks duplicated into multiple places.
13200         * graphite-scop-detection.c
13201         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
13202         in the region use it as loop and nest to analyze the DR in.
13203         (try_generate_gimple_bb): Likewise.
13204         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
13205         (add_loop_constraints): For blocks in a loop not in the region
13206         create a dimension with a single iteration.
13207         * sese.h (gbb_loop_at_index): Remove assert.
13208
13209 2017-10-01  Kevin Buettner  <kevinb@redhat.com>
13210
13211         * omp-expand.c (adjust_context_scope): New function.
13212         (expand_parallel_call): Call adjust_context_scope.
13213
13214 2017-10-01  Jeff Law  <law@redhat.com>
13215
13216         * tree-ssa-dom.c (optimize_stmt): Make this a method within the
13217         dom_opt_dom_walker class with direct access to private members.
13218         Add comments.  Call test_for_singularity.
13219         (dom_opt_dom_walker::before_dom_children): Corresponding changes.
13220         (dom_opt_dom_walker::after_dom_children): Do not lazily initialize
13221         m_dummy_cond anymore.
13222         (class dom_opt_dom_walker): Initialize m_dummy_cond member in the
13223         class ctor.
13224         (pass_dominator:execute): Build the dummy_cond here and pass it
13225         to the dom_opt_dom_walker ctor.
13226         (test_for_singularity): New function.
13227
13228 2017-09-30  Krister Walfridsson  <krister.walfridsson@gmail.com>
13229             Maya Rashish  <coypu@sdf.org>
13230
13231         * config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing
13232         netbsd.h, netbsd-stdint.h, and netbsd-elf.h.
13233         (alpha*-*-netbsd*) Use nbsd_tm_file.
13234         (arm*-*-netbsdelf*) Likewise.
13235         (i[34567]86-*-netbsdelf*) Likewise.
13236         (x86_64-*-netbsd*) Likewise.
13237         (mips*-*-netbsd*) Likewise.
13238         (powerpc-*-netbsd*) Likewise.
13239         (sh*-*-netbsd*) Likewise.
13240         (sparc-*-netbsdelf*) Likewise.
13241         (sparc64-*-netbsd*) Likewise.
13242         (m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16
13243         to tm_defines.
13244         (vax-*-netbsdelf*) Likewise.
13245         * config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8.
13246         (UINT_FAST8_TYPE) Likewise.
13247         (INT_FAST16_TYPE) Check CHAR_FAST16.
13248         (UINT_FAST16_TYPE) Likewise.
13249
13250 2017-09-30  Jakub Jelinek  <jakub@redhat.com>
13251
13252         PR target/82361
13253         * config/i386/i386.md
13254         (TARGET_USE_8BIT_IDIV zext divmodsi4 splitter): New define_split.
13255         (divmodsi4_zext_1, divmodsi4_zext_2, *divmodsi4_zext_1,
13256         *divmodsi4_zext_2): New define_insn_and_split.
13257         (*divmodsi4_noext_zext_1, *divmodsi4_noext_zext_2): New define_insn.
13258         (TARGET_USE_8BIT_IDIV zext udivmodsi4 splitter): New define_split.
13259         (udivmodsi4_zext_1, udivmodsi4_zext_2, *udivmodsi4_zext_1,
13260         *udivmodsi4_zext_2, *udivmodsi4_pow2_zext_1, *udivmodsi4_pow2_zext_2):
13261         New define_insn_and_split.
13262         (*udivmodsi4_noext_zext_1, *udivmodsi4_noext_zext_2): New define_insn.
13263         * config/i386/i386.c (ix86_split_idivmod): Handle operands[0] or
13264         operands[1] having DImode when mode is SImode.
13265
13266         * config/i386/i386.c (ix86_split_idivmod): Use mode instead of
13267         always SImode for DIV and MOD in REG_EQUAL notes.
13268
13269 2017-09-29  Yury Gribov  <tetra2005@gmail.com>
13270
13271         PR middle-end/82319
13272         * match.pd: Fix handling of NaNs in pattern.
13273
13274 2017-09-29  Jeff Law  <law@redhat.com>
13275
13276         * sbitmap.c (bitmap_bit_in_range_p): New function.
13277         * sbitmap.h (bitmap_bit_in_range_p): Prototype.
13278         * tree-ssa-dse.c (live_bytes_read): New function.
13279         (dse_classify_store): Ignore reads of dead bytes.
13280
13281         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix
13282         typos and whitespace errors.
13283         * config/i386/predicates.md (address_no_seg_operand): Likewise.
13284         * config/s390/s390.c (s390_emit_prologue): Likewise.
13285
13286 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
13287
13288         PR target/81481
13289         * ira-costs.c (scan_one_insn): Don't take into account PIC equiv
13290         with a symbol for LRA.
13291
13292 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
13293
13294         PR rtl-optimization/82338
13295         * lra-constraints.c (inherit_in_ebb): Check usage_insns check.
13296
13297 2017-09-29  Alexander Monakov  <amonakov@ispras.ru>
13298
13299         * genmodes.c (calc_wider_mode): Suppress qsort macro.
13300         * system.h [CHECKING_P] (qsort): Redirect to qsort_chk.
13301         (qsort_chk): Declare.
13302         * vec.c [CHECKING_P] (qsort_chk_error): New static function.
13303         (qsort_chk): New function.
13304
13305 2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13306
13307         PR tree-optimization/82337
13308         * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
13309         phi definition if the PHI result appears in an abnormal PHI.
13310         (find_basis_for_base_expr): Don't record a basis if the LHS of the
13311         basis appears in an abnormal PHI.
13312
13313 2017-09-29  Richard Biener  <rguenther@suse.de>
13314
13315         * graphite-isl-ast-to-gimple.c
13316         (translate_isl_ast_to_gimple::set_codegen_error): New function.
13317         (binary_op_to_tree): Use it.
13318         (get_rename_from_scev): Likewise.
13319         (copy_loop_phi_nodes): Likewise.
13320         (copy_bb_and_scalar_dependences): Likewise.
13321         (translate_pending_phi_nodes): Likewise.
13322
13323 2017-09-29  Jakub Jelinek  <jakub@redhat.com>
13324
13325         PR target/82339
13326         * config/i386/i386.md (*movdi_internal peephole2): New -Os peephole
13327         for movabsq $(i32 << shift), r64.
13328
13329 2017-09-28  Uros Bizjak  <ubizjak@gmail.com>
13330
13331         * config/i386/i386.c (ix86_print_operand_address_as): Do not check
13332         index when encoding %esp as %rsp to avoid 0x67 prefix.
13333
13334 2017-09-28  Sergey Shalnov  <Sergey.Shalnov@intel.com>
13335
13336         * config/i386/i386.md (*movsf_internal, *movdf_internal):
13337         Return 256-bit AVX modes for TARGET_PREFER_AVX256.
13338
13339 2017-09-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>
13340
13341         * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security
13342         Extensions with more than 16 double VFP registers.
13343         (cmse_nonsecure_entry_clear_before_return): Remove second entry of
13344         to_clear_mask and all code related to it.  Replace the remaining
13345         entry by a sbitmap and adapt code accordingly.
13346
13347 2017-09-28  Henry Linjamäki  <henry.linjamaki@parmance.com>
13348
13349         * brig-builtins.def: Change pure attributes to const.
13350
13351 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
13352
13353         * config.gcc (default_gnu_indirect_function): Default to yes for
13354         sparc*-*-linux* with glibc.
13355
13356 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
13357
13358         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor)
13359         (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section
13360         when creating .init_array and .fini_array sections with priority
13361         specified.
13362
13363 2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>
13364
13365         PR target/71727
13366         * config/aarch64/aarch64.c
13367         (aarch64_builtin_support_vector_misalignment): Always return false
13368         when misalignment is unknown.
13369
13370 2017-09-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
13371
13372         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise
13373         this function to return false if the definition used by the swap
13374         instruction is artificial, or if the memory address from which the
13375         constant value is loaded is not represented by a base address held
13376         in a register or if the base address register is a frame or stack
13377         pointer.  Additionally, return false if the base address of the
13378         loaded constant is a SYMBOL_REF but is not considered to be a
13379         constant.
13380         (replace_swapped_load_constant): New function.
13381         (rs6000_analyze_swaps): Add a new pass to replace a swap of a
13382         loaded constant vector with a load of a swapped constant vector.
13383
13384 2017-09-27  Carl Love  <cel@us.ibm.com>
13385
13386         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
13387         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
13388         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
13389         fctiw instruction.
13390
13391 2017-09-27  Alexander Monakov  <amonakov@ispras.ru>
13392
13393         * haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns
13394         first, always call autopref_rank_data otherwise.
13395
13396 2017-09-27  Richard Biener  <rguenther@suse.de>
13397
13398         * graphite-scop-detection.c (find_scop_parameters): Move
13399         loop bound handling ...
13400         (gather_bbs::before_dom_children): ... here, avoiding the need
13401         to build scop_info->loop_nest.
13402         (record_loop_in_sese): Remove.
13403         * sese.h (sese_info_t::loop_nest): Remove.
13404         * sese.c (new_sese_info): Do not allocate loop_nest.
13405         (free_sese_info): Do not free loop_nest.
13406
13407 2017-09-27  Jakub Jelinek  <jakub@redhat.com>
13408
13409         PR c++/82159
13410         * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
13411         lhs from calls if the lhs has addressable type.
13412
13413 2017-09-27  Richard Biener  <rguenther@suse.de>
13414
13415         * graphite.h (scop::max_alias_set): New member.
13416         * graphite-scop-detection.c: Remove references to non-existing
13417         --param in comments.
13418         (build_alias_sets): Record the maximum alias set used for drs.
13419         (build_scops): Support zero as unlimited for
13420         --param graphite-max-arrays-per-scop.
13421         * graphite-sese-to-poly.c (add_scalar_version_numbers): Remove
13422         and inline into ...
13423         (build_poly_sr_1): ... here.  Compute alias set based on the
13424         maximum alias set used for drs rather than
13425         PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP
13426
13427 2017-09-27  Richard Biener  <rguenther@suse.de>
13428
13429         * graphite-optimize-isl.c (get_schedule_for_node_st): Allow
13430         --param loop-block-tile-size=0 to disable tiling.
13431
13432 2017-09-27  Richard Biener  <rguenther@suse.de>
13433
13434         * doc/invoke.texi (graphite-max-bbs-per-function): Remove.
13435         (graphite-max-nb-scop-params): Document special value zero.
13436         * domwalk.h (dom_walker::STOP): New symbolical constant.
13437         (dom_walker::dom_walker): Add optional parameter for bb to
13438         RPO mapping.
13439         (dom_walker::~dom_walker): Declare.
13440         (dom_walker::before_dom_children): Document STOP return value.
13441         (dom_walker::m_user_bb_to_rpo): New member.
13442         (dom_walker::m_bb_to_rpo): Likewise.
13443         * domwalk.c (dom_walker::dom_walker): Compute bb to RPO
13444         mapping here if not provided by the user.
13445         (dom_walker::~dom_walker): Free bb to RPO mapping if not
13446         provided by the user.
13447         (dom_walker::STOP): Define.
13448         (dom_walker::walk): Do not compute bb to RPO mapping here.
13449         Support STOP return value from before_dom_children to stop
13450         walking.
13451         * graphite-optimize-isl.c (optimize_isl): If the schedule
13452         is the same still generate code if -fgraphite-identity
13453         or -floop-parallelize-all are given.
13454         * graphite-scop-detection.c: Include cfganal.h.
13455         (gather_bbs::gather_bbs): Get and pass through bb to RPO
13456         mapping.
13457         (gather_bbs::before_dom_children): Return STOP for BBs
13458         not in the region.
13459         (build_scops): Compute bb to RPO mapping and pass it to
13460         the domwalk.  Treat --param graphite-max-nb-scop-params=0
13461         as not limiting the number of params.
13462         * graphite.c (graphite_initialize): Remove limit on the
13463         number of basic-blocks in a function.
13464         * params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove.
13465         (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented
13466         default value of 10.
13467
13468 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
13469
13470         * config/rs6000/vsx.md (peephole for optimizing move SF to GPR):
13471         Adjust code to eliminate needing to do the shift right 32-bits
13472         operation after XSCVDPSPN.
13473
13474 2017-09-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
13475
13476         * match.pd ((X / Y) == 0 -> X < Y): New pattern.
13477         ((X / Y) != 0 -> X >= Y): Likewise.
13478
13479 2017-09-26  Carl Love  <cel@us.ibm.com>
13480
13481         * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R,
13482         P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins
13483         vector unsigned char vec_xl_len_r (unsigned char *, size_t);
13484         void vec_xst_len_r (vector unsigned char, unsigned char *, size_t);
13485         * config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines.
13486         * config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add
13487         definitions and overloading.
13488         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case
13489         statement for P9V_BUILTIN_XST_LEN_R.
13490         (altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL.
13491         * config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add
13492         define_expand and define_insn for the instructions and builtins.
13493         * doc/extend.texi: Update the built-in documentation file for the new
13494         built-in functions.
13495         * config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add
13496         define_insn for the instructions
13497
13498 2017-09-26  Krister Walfridsson  <krister.walfridsson@gmail.com>
13499
13500         PR target/39570
13501         * gcc/config/netbsd-protos.h: New file.
13502         * gcc/config/netbsd.c: New file.
13503         * gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define.
13504         * gcc/config/t-netbsd: New file.
13505         * gcc/config.gcc (tm_p_file): Add netbsd-protos.h.
13506         (tmake_file) Add t-netbsd.
13507         (extra_objs) Add netbsd.o.
13508
13509 2017-09-26  Janus Weil  <janus@gcc.gnu.org>
13510
13511         PR fortran/82143
13512         PR fortran/82324
13513         * doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.
13514
13515 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
13516
13517         * config/rs6000/rs6000.md (extendsi<mode>2): Add a splitter to do
13518         sign extension from a vector register to a GPR by doing a 32-bit
13519         direct move and then an EXTSW.
13520         (extendsi<mode>2 splitter): Likewise.
13521         (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift
13522         right or vector extract after doing XSCVDPSPN.  Use
13523         zero_extendsidi2 instead of p8_mfvsrd_4_disf to move the value to
13524         the GPRs.
13525         (movdi_from_sf_zero_ext): Likewise.
13526         (reload_gpr_from_vsxsf): Likewise.
13527         (p8_mfvsrd_4_disf): Delete, no longer used.
13528         (movsi_from_df): Optimize converting a DFmode to a SFmode, and
13529         then needing to move the SFmode to a GPR to use the XSCVDPSP
13530         instruction instead of FRSP and XSCVDPSPN.
13531         * config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that
13532         it is adjacent to the other XSCVSPDP insns.
13533         (vsx_xscvdpsp_scalar): Use "ww" constraint instead of "f" to allow
13534         SFmode to be in traditional Altivec registers.
13535         (vsx_xscvdpspn): Eliminate useless alternative constraint.
13536         (vsx_xscvspdpn): Likewise.
13537         (vsx_xscvspdpn_scalar): Likewise.
13538
13539 2017-09-26  Martin Jambor  <mjambor@suse.cz>
13540
13541         * tree-sra.c (compare_access_positions): Put integral types first,
13542         stabilize sorting of integral types, remove conditions putting
13543         non-full-precision integers last.
13544         (sort_and_splice_var_accesses): Disable scalarization if a
13545         non-integert would be represented by a non-full-precision integer.
13546
13547 2017-09-26  Joseph Myers  <joseph@codesourcery.com>
13548
13549         * config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
13550         * config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
13551         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
13552         * config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
13553         Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
13554         conditionals inside the function instead of around it.  Call
13555         file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
13556         (TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.
13557
13558 2017-09-26  Richard Biener  <rguenther@suse.de>
13559
13560         * graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite,
13561         fold in ...
13562         (scop_detection::build_scop_breadth): ... this.  Removed.
13563         (scop_detection::loop_is_valid_in_scop): Fold into single caller.
13564         (scop_detection::harmful_stmt_in_bb): Likewise.
13565         (scop_detection::graphite_can_represent_stmt): Likewise.
13566         (scop_detection::loop_body_is_valid_scop): Likewise.  Remove recursion.
13567         (scop_detection::can_represent_loop): Remove recursion, fold in ...
13568         (scop_detection::can_represent_loop_1): ... this.  Removed.
13569         (scop_detection::harmful_loop_in_region): Simplify after inlining
13570         the above and remove more quadraticness.
13571         (build_scops): Adjust.
13572         * tree-data-ref.c (loop_nest_has_data_refs): Remove pointless
13573         quadraticness.
13574
13575 2017-09-26  Jakub Jelinek  <jakub@redhat.com>
13576
13577         PR target/82267
13578         * config/i386/i386.c (ix86_print_operand_address_as): Only test
13579         REGNO (base) == SP_REG if base is a REG.
13580
13581         PR middle-end/35691
13582         * tree-ssa-reassoc.c (update_range_test): Dump r->exp each time
13583         if it is different SSA_NAME.
13584         (optimize_range_tests_cmp_bitwise): New function.
13585         (optimize_range_tests): Call it.
13586
13587 2017-09-26  Richard Biener  <rguenther@suse.de>
13588
13589         PR tree-optimization/82321
13590         * graphite.c (canonicalize_loop_closed_ssa): Properly check
13591         for the def being inside the loop.
13592
13593 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13594
13595         * config/s390/vx-builtins.md ("vmslg"): Add missing operand in
13596         assembler output.
13597         * config/s390/s390-builtins.def: Fix constraint on op4.
13598
13599 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13600
13601         * config/s390/s390.c (s390_expand_vec_compare): Use the new mode
13602         independent expanders.
13603         * config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt")
13604         ("vec_ordered", "vec_unordered"): New expanders.
13605
13606 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13607
13608         * config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode
13609         for SFmode.
13610
13611 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13612
13613         * config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to
13614         vec_unpacks_lo_v16qi.
13615         ("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi.
13616
13617 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13618
13619         * config/s390/vector.md ("vec_unpacks_lo_v4sf")
13620         ("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df")
13621         ("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders.
13622
13623 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13624
13625         * config/s390/predicates.md ("const_shift_by_byte_operand"): New
13626         predicate.
13627         * config/s390/vector.md ("*vec_srb<mode>"): Change modes to V_128
13628         and V16QI.
13629         ("*vec_slb<mode>"): New insn pattern.
13630         ("vec_shr_<mode>"): New expander.
13631         * config/s390/vx-builtins.md ("vec_slb<mode>"): Turn into expander
13632         and force the shift count operand to V16QImode.
13633         ("vec_srb<mode>"): Set shift count mode to V16QI.
13634
13635 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13636
13637         * config/s390/vector.md ("vec_widen_umult_lo_<mode>")
13638         ("vec_widen_umult_hi_<mode>", "vec_widen_smult_lo_<mode>")
13639         ("vec_widen_smult_hi_<mode>"): New expander definitions.
13640
13641 2017-09-26  Richard Earnshaw  <rearnsha@arm.com>
13642
13643         PR target/82175
13644         * config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas.
13645
13646 2017-09-26  Richard Biener  <rguenther@suse.de>
13647
13648         PR tree-optimization/82320
13649         * tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef
13650         isn't a change.
13651
13652 2017-09-25  Jeff Law  <law@redhat.com>
13653
13654         * config/rs6000/rs6000-protos.h (output_probe_stack_range): Update
13655         prototype for new argument.
13656         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function,
13657         mostly extracted from rs6000_emit_allocate_stack.
13658         (rs6000_emit_probe_stack_range_stack_clash): New function.
13659         (rs6000_emit_allocate_stack): Call
13660         rs6000_emit_probe_stack_range_stack_clash as needed.
13661         (rs6000_emit_probe_stack_range): Add additional argument
13662         to call to gen_probe_stack_range{si,di}.
13663         (output_probe_stack_range): New.
13664         (output_probe_stack_range_1): Renamed from output_probe_stack_range.
13665         (output_probe_stack_range_stack_clash): New.
13666         (rs6000_emit_prologue): Emit notes into dump file as requested.
13667         * rs6000.md (allocate_stack): Handle -fstack-clash-protection.
13668         (probe_stack_range<P:mode>): Operand 0 is now early-clobbered.
13669         Add additional operand and pass it to output_probe_stack_range.
13670
13671 2017-09-25  Bin Cheng  <bin.cheng@arm.com>
13672
13673         PR tree-optimization/82163
13674         * tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter.
13675         (checking_verify_loop_closed_ssa): New parameter.
13676         * tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete.
13677         (check_loop_closed_ssa_stmt): Delete.
13678         (check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions.
13679         (verify_loop_closed_ssa): Check loop closed ssa form for LOOP.
13680         (tree_transform_and_unroll_loop): Check loop closed ssa form only for
13681         changed loops.
13682
13683 2017-09-25  Pekka Jaaskelainen <pekka@parmance.com>
13684
13685         * brig-builtins.def: Treat HSAIL barrier builtins as
13686         setjmp/longjump style functions.
13687
13688 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
13689
13690         * target.def (constant_alignment): New hook.
13691         * defaults.h (CONSTANT_ALIGNMENT): Delete.
13692         * doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with...
13693         (TARGET_CONSTANT_ALIGNMENT): ...this new hook.
13694         * doc/tm.texi: Regenerate.
13695         * targhooks.h (default_constant_alignment): Declare.
13696         (constant_alignment_word_strings): Likewise.
13697         * targhooks.c (default_constant_alignment): New function.
13698         (constant_alignment_word_strings): Likewise.
13699         * builtins.c (get_object_alignment_2): Use targetm.constant_alignment
13700         instead of CONSTANT_ALIGNMENT.
13701         * varasm.c (align_variable, get_variable_align, build_constant_desc)
13702         (force_const_mem): Likewise.
13703         * config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete.
13704         * config/aarch64/aarch64.c (aarch64_constant_alignment): New function.
13705         (aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT.
13706         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13707         * config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out
13708         definition.
13709         * config/arc/arc.h (CONSTANT_ALIGNMENT): Delete.
13710         * config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13711         constant_alignment_word_strings.
13712         * config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete.
13713         (CONSTANT_ALIGNMENT): Likewise.
13714         * config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13715         (arm_constant_alignment): New function.
13716         * config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete.
13717         * config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13718         constant_alignment_word_strings.
13719         * config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete.
13720         * config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13721         constant_alignment_word_strings.
13722         * config/cris/cris.h (CONSTANT_ALIGNMENT): Delete.
13723         * config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13724         (cris_constant_alignment): New function.
13725         * config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete.
13726         * config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13727         (epiphany_constant_alignment): New function.
13728         * config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete.
13729         * config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13730         constant_alignment_word_strings.
13731         * config/frv/frv.h (CONSTANT_ALIGNMENT): Delete.
13732         * config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13733         constant_alignment_word_strings.
13734         * config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete.
13735         * config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13736         constant_alignment_word_strings.
13737         * config/i386/i386.h (CONSTANT_ALIGNMENT): Delete.
13738         * config/i386/i386-protos.h (ix86_constant_alignment): Delete.
13739         * config/i386/i386.c (ix86_constant_alignment): Make static.
13740         Use the same interface as the target hook.
13741         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13742         * config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete.
13743         * config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13744         constant_alignment_word_strings.
13745         * config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete.
13746         * config/iq2000/iq2000.c (iq2000_constant_alignment): New function.
13747         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13748         * config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete.
13749         * config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13750         constant_alignment_word_strings.
13751         * config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete.
13752         * config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13753         constant_alignment_word_strings.
13754         * config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete.
13755         * config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13756         constant_alignment_word_strings.
13757         * config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete.
13758         * config/microblaze/microblaze.c (microblaze_constant_alignment):
13759         New function.
13760         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13761         * config/mips/mips.h (CONSTANT_ALIGNMENT): Delete.
13762         * config/mips/mips.c (mips_constant_alignment): New function.
13763         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13764         * config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete.
13765         * config/mmix/mmix-protos.h (mmix_constant_alignment): Delete.
13766         * config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13767         (mmix_constant_alignment): Make static.  Use the same interface
13768         as the target hook.
13769         * config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete.
13770         * config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13771         constant_alignment_word_strings.
13772         * config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete.
13773         * config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13774         constant_alignment_word_strings.
13775         * config/pa/pa.h (CONSTANT_ALIGNMENT): Delete.
13776         * config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13777         constant_alignment_word_strings.
13778         * config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete.
13779         * config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13780         (rs6000_constant_alignment): New function.
13781         * config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete.
13782         * config/riscv/riscv.c (riscv_constant_alignment): New function.
13783         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13784         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete.
13785         * config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13786         (rs6000_constant_alignment): New function.
13787         * config/s390/s390.h (CONSTANT_ALIGNMENT): Delete.
13788         * config/s390/s390.c (s390_constant_alignment): New function.
13789         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13790         * config/sh/sh.h (CONSTANT_ALIGNMENT): Delete.
13791         * config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13792         constant_alignment_word_strings.
13793         * config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete.
13794         * config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13795         (sparc_constant_alignment): New function.
13796         * config/spu/spu.h (CONSTANT_ALIGNMENT): Delete.
13797         * config/spu/spu.c (spu_constant_alignment): New function.
13798         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13799         * config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete.
13800         * config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13801         constant_alignment_word_strings.
13802         * config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete.
13803         * config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13804         constant_alignment_word_strings.
13805         * config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete.
13806         * config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13807         constant_alignment_word_strings.
13808         * config/visium/visium.h (CONSTANT_ALIGNMENT): Delete.
13809         * config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13810         (visium_constant_alignment): New function.
13811         * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete.
13812         * config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13813         (xtensa_constant_alignment): New function.
13814         * system.h (CONSTANT_ALIGNMENT): Poison.
13815
13816 2017-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>
13817
13818         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
13819         for early folding of vector stores (ALTIVEC_BUILTIN_ST_*).
13820         (rs6000_builtin_valid_without_lhs): New helper function.
13821         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13822         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST.
13823
13824 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
13825
13826         * target.h (vec_perm_indices): Use unsigned short rather than
13827         unsigned char.
13828         (auto_vec_perm_indices): Likewise.
13829         * config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok):
13830         Use unsigned int rather than unsigned char.
13831         * config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise.
13832
13833 2017-09-25  Richard Biener  <rguenther@suse.de>
13834
13835         * cfgloop.h (sort_sibling_loops): Declare.
13836         * cfgloop.c (sort_sibling_loops_cmp): New helper.
13837         (sort_sibling_loops): New function sorting the sibling loop list
13838         in RPO order.
13839         * graphite.c (graphite_transform_loops): Sort sibling loops.
13840
13841 2017-09-25  Richard Sandiford  <richard.sandifird@linaro.org>
13842
13843         * target.def (vec_perm_const_ok): Change sel parameter to
13844         vec_perm_indices.
13845         * optabs-query.c (can_vec_perm_p): Update accordingly.
13846         * doc/tm.texi: Regenerate.
13847         * config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to
13848         auto_vec_perm_indices and remove separate nelt field.
13849         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
13850         (aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup)
13851         (aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1)
13852         (aarch64_expand_vec_perm_const): Update accordingly.
13853         (aarch64_vectorize_vec_perm_const_ok): Likewise.  Change sel
13854         to vec_perm_indices.
13855         * config/arm/arm.c (expand_vec_perm_d): Change perm to
13856         auto_vec_perm_indices and remove separate nelt field.
13857         (arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev)
13858         (arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl)
13859         (arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update
13860         accordingly.
13861         (arm_vectorize_vec_perm_const_ok): Likewise.  Change sel
13862         to vec_perm_indices.
13863         * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
13864         sel to vec_perm_indices.
13865         * config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise.
13866         * config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise.
13867         * config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok):
13868         Likewise.
13869         * config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok):
13870         Likewise.
13871
13872 2017-09-25  Pierre-Marie de Rodat  <derodat@adacore.com>
13873
13874         PR debug/82155
13875         * dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
13876         on the FUNCTION_DECL function context if it has a DIE that is a
13877         declaration.
13878
13879 2017-09-25  Richard Biener  <rguenther@suse.de>
13880
13881         PR tree-optimization/82285
13882         * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
13883         enumeral types.
13884
13885 2017-09-25  Tom de Vries  <tom@codesourcery.com>
13886
13887         PR target/80035
13888         PR target/81069
13889         * config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to
13890         noreturn function.
13891
13892 2017-09-25  Richard Biener  <rguenther@suse.de>
13893
13894         * graphite-optimize-isl.c (optimize_isl): Fail and dump if
13895         ISL errors other than isl_error_quota happen.  Dump if the
13896         schedule is the same.
13897         * graphite-sese-to-poly.c (build_poly_scop): Fail on ISL
13898         errors instead of aborting inside ISL.
13899
13900 2017-09-25  Iain Sandoe  <iain@codesourcery.com>
13901
13902         PR target/80556
13903         * config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead
13904         of libgcc_eh for m64.
13905         * config/i386/darwin64.h: Likewise.
13906
13907 2017-09-25  Richard Biener  <rguenther@suse.de>
13908
13909         PR middle-end/82144
13910         * dwarf2out.c (gen_enumeration_type_die): Do not add alignment
13911         attribute for incomplete types nor twice for complete ones.
13912
13913 2017-09-24  Uros Bizjak  <ubizjak@gmail.com>
13914
13915         PR target/82267
13916         * config/i386/i386.c (ix86_print_operand_address_as): Encode
13917         %esp as %rsp to avoid 0x67 prefix if there is no index or base
13918         register.
13919
13920 2017-09-23  Uros Bizjak  <ubizjak@gmail.com>
13921
13922         PR bootstrap/82306
13923         * config/i386/i386.opt (mprefer-avx256): Use
13924         ix86_target_flags variable.
13925         * config/i386/i386.c (ix86_target_string): Move
13926         -mprefer-avx256 to flag2_opts.
13927
13928 2017-09-22  Jakub Jelinek  <jakub@redhat.com>
13929
13930         PR middle-end/35691
13931         * match.pd: Simplify x == -1 & y == -1 into (x & y) == -1
13932         and x != -1 | y != -1 into (x & y) != -1.
13933
13934 2017-09-22  Steve Ellcey  <sellcey@cavium.com>
13935
13936         * config.gcc: Add new case statement to set
13937         default_gnu_indirect_function.  Remove it from x86_64-*-linux*,
13938         i[34567]86-*, powerpc*-*-linux*spe*, powerpc*-*-linux*, s390-*-linux*,
13939         s390x-*-linux* case statements.   Added aarch64 to the list of
13940         supported architectures.
13941
13942 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13943
13944         PR tree-optimization/82289
13945         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Check
13946         STMT_VINFO_RELEVANT_P.
13947
13948 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13949             Alan Hayward  <alan.hayward@arm.com>
13950             David Sherwood  <david.sherwood@arm.com>
13951
13952         * tree-vrp.c (extract_range_from_multiplicative_op_1): Assert
13953         for VR_RANGE only; don't allow VR_ANTI_RANGE.
13954         (extract_range_from_binary_expr_1): Don't call
13955         extract_range_from_multiplicative_op_1 if !range_int_cst_p.
13956
13957 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13958             Alan Hayward  <alan.hayward@arm.com>
13959             David Sherwood  <david.sherwood@arm.com>
13960
13961         * target.def (preferred_vector_alignment): New hook.
13962         * doc/tm.texi.in (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New
13963         hook.
13964         * doc/tm.texi: Regenerate.
13965         * targhooks.h (default_preferred_vector_alignment): Declare.
13966         * targhooks.c (default_preferred_vector_alignment): New function.
13967         * tree-vectorizer.h (dataref_aux): Add a target_alignment field.
13968         Expand commentary.
13969         (DR_TARGET_ALIGNMENT): New macro.
13970         (aligned_access_p): Update commentary.
13971         (vect_known_alignment_in_bytes): New function.
13972         * tree-vect-data-refs.c (vect_calculate_required_alignment): New
13973         function.
13974         (vect_compute_data_ref_alignment): Set DR_TARGET_ALIGNMENT.
13975         Calculate the misalignment based on the target alignment rather than
13976         the vector size.
13977         (vect_update_misalignment_for_peel): Use DR_TARGET_ALIGMENT
13978         rather than TYPE_ALIGN / BITS_PER_UNIT to update the misalignment.
13979         (vect_enhance_data_refs_alignment): Mask the byte misalignment with
13980         the target alignment, rather than masking the element misalignment
13981         with the number of elements in a vector.  Also use the target
13982         alignment when calculating the maximum number of peels.
13983         (vect_find_same_alignment_drs): Use vect_calculate_required_alignment
13984         instead of TYPE_ALIGN_UNIT.
13985         (vect_duplicate_ssa_name_ptr_info): Remove stmt_info parameter.
13986         Measure DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT.
13987         (vect_create_addr_base_for_vector_ref): Update call accordingly.
13988         (vect_create_data_ref_ptr): Likewise.
13989         (vect_setup_realignment): Realign by ANDing with
13990         -DR_TARGET_MISALIGNMENT.
13991         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Calculate
13992         the number of peels based on DR_TARGET_ALIGNMENT.
13993         * tree-vect-stmts.c (get_group_load_store_type): Compare the gap
13994         with the guaranteed alignment boundary when deciding whether
13995         overrun is OK.
13996         (vectorizable_mask_load_store): Interpret DR_MISALIGNMENT
13997         relative to DR_TARGET_ALIGNMENT instead of TYPE_ALIGN_UNIT.
13998         (ensure_base_align): Remove stmt_info parameter.  Get the
13999         target base alignment from DR_TARGET_ALIGNMENT.
14000         (vectorizable_store): Update call accordingly.   Interpret
14001         DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT instead of
14002         TYPE_ALIGN_UNIT.
14003         (vectorizable_load): Likewise.
14004
14005 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
14006             Alan Hayward  <alan.hayward@arm.com>
14007             David Sherwood  <david.sherwood@arm.com>
14008
14009         * tree-vectorizer.h (vect_get_scalar_dr_size): New function.
14010         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use it.
14011         (vect_enhance_data_refs_alignment): Likewise.
14012
14013 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
14014
14015         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
14016         error.  Only quit immediately if parsing is complete.
14017         (BEGIN): Initialize fatal_err and parse_done.
14018         (begin fpu, end fpu): Check number of arguments.
14019         (begin arch, end arch): Likewise.
14020         (begin cpu, end cpu): Likewise.
14021         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
14022         (optalias): Likewise.
14023
14024 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
14025
14026         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
14027         * config/arm/arm-isa.h: Delete.  Move definitions to ...
14028         * arm-cpus.in: ... here.  Use new feature and fgroup values.
14029         * config/arm/arm.c (arm_option_override): Use lower case for feature
14030         bit names.
14031         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
14032         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
14033         * config/arm/parsecpu.awk (END): Add new command 'isa'.
14034         (isa_pfx): Delete.
14035         (print_isa_bits_for): New function.
14036         (gen_isa): New function.
14037         (gen_comm_data): Use print_isa_bits_for.
14038         (define feature): New keyword.
14039         (define fgroup): New keyword.
14040         * config/arm/t-arm (TM_H): Remove.
14041         (GTM_H): Add arm-isa.h.
14042         (arm-isa.h): Add rule to generate file.
14043         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
14044         case for feature bit names.
14045
14046 2017-09-22  Richard Biener  <rguenther@suse.de>
14047
14048         * graphite-isl-ast-to-gimple.c (graphite_verify): Inline into
14049         single caller.
14050         (graphite_regenerate_ast_isl): Do not reset SCEV.  Move debug
14051         print of no dependency loops ...
14052         * graphite.c (graphite_transform_loops): ... here.
14053         (canonicalize_loop_closed_ssa_form): Work from inner to outer
14054         loops.
14055         (same_close_phi_node, remove_duplicate_close_phi,
14056         make_close_phi_nodes_unique, defined_in_loop_p): Fold into ...
14057         (canonicalize_loop_closed_ssa): ... here and simplify.
14058         * graphite-optimize-isl.c: Include tree-vectorizer.h.
14059         (optimize_isl): Use dump_printf_loc to tell when we stopped
14060         optimizing because of an ISL timeout.
14061
14062 2017-09-22  Richard Biener  <rguenther@suse.de>
14063
14064         PR tree-optimization/82291
14065         * tree-if-conv.c (predicate_mem_writes): Make sure to
14066         remove writes in blocks predicated with false.
14067
14068 2017-09-22  Richard Biener  <rguenther@suse.de>
14069
14070         * sese.c: Include cfganal.h.
14071         (if_region_set_false_region): Remove.
14072         (create_if_region_on_edge): Likewise.
14073         (move_sese_in_condition): Re-implement without destroying
14074         dominators.
14075
14076 2017-09-22  Richard Biener  <rguenther@suse.de>
14077
14078         * graphite-isl-ast-to-gimple.c (translate_pending_phi_nodes):
14079         Verify both BBs contain loop PHI nodes before dispatching to
14080         copy_loop_phi_args.
14081         (graphite_regenerate_ast_isl): Do not recompute dominators,
14082         do not verify three times.  Restructure for clarity.
14083         * graphite-scop-detection.c (same_close_phi_node,
14084         remove_duplicate_close_phi, make_close_phi_nodes_unique,
14085         defined_in_loop_p, canonicalize_loop_closed_ssa,
14086         canonicalize_loop_closed_ssa_form): Simplify, remove excess
14087         checking and SSA rewrite, move to ...
14088         * graphite.c: ... here.  Include ssa.h and tree-ssa-loop-manip.h.
14089         (graphite_initialize): Do not pass in ctx, do not reset the
14090         SCEV cache, compute only dominators.
14091         (graphite_transform_loops): Allocate ISL ctx after
14092         graphite_initialize.  Call canonicalize_loop_closed_ssa_form.
14093         Maintain post-dominators only around build_scops.
14094         * sese.c (if_region_set_false_region): Make static.  Free
14095         and recompute dominators.
14096         (move_sese_in_condition): Assert we don't get called with
14097         post-dominators computed.
14098         * sese.h (if_region_set_false_region): Remove.
14099
14100 2017-09-22  Sergey Shalnov  <sergey.shalnov@intel.com>
14101
14102         * config/i386/sse.md ("mov<mode>_internal"): Use <sseinsnmode>
14103         mode attribute for TARGET_AVX512VL.
14104
14105 2017-09-21  Sergey Shalnov  <sergey.shalnov@intel.com>
14106
14107         * config/i386/i386.opt (mprefer-avx256): New option.
14108         * config/i386/i386.c (ix86_target_string): Add -mprefer-avx256
14109         to flag_opts.
14110         (ix86_preferred_simd_mode): Return 256-bit AVX modes
14111         for TARGET_PREFER_AVX256.
14112         * doc/invoke.texi (x86 Options): Document -mprefer-avx256.
14113
14114 2017-09-21  Jeff Law  <law@redhat.com>
14115
14116         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash):
14117         Fix dump output if the only stack space is for pushed registers.
14118
14119 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14120
14121         * config/spu/spu.c (spu_sched_adjust_cost): Update after renaming
14122         of insn_cost.
14123
14124 2017-09-21  Martin Sebor  <msebor@redhat.com>
14125
14126         PR c/81882
14127         * doc/extend.texi (attribute ifunc): Avoid relying on ill-formed
14128         code (in C++) or code that triggers warnings.
14129
14130 2017-09-21  Eric Botcazou  <ebotcazou@adacore.com>
14131
14132         * stor-layout.c (bit_from_pos): Do not distribute the conversion.
14133
14134 2017-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
14135
14136         * haifa-sched.c: Rename insn_cost to insn_sched_cost.
14137         * sched-rgn.c: Ditto.
14138         * sel-sched-ir.c: Ditto.
14139
14140 2017-09-21  Alexander Monakov  <amonakov@ispras.ru>
14141
14142         * toplev.h (set_random_seed): Adjust return type.
14143         * toplev.c (init_local_tick): Move eager initialization of random_seed
14144         to get_random_seed.  Adjust comment.
14145         (init_random_seed): Inline to get_random_seed, delete.
14146         (get_random_seed): Initialize random_seed lazily.
14147         (set_random_seed): Do not return previous value.
14148         (print_switch_value): Do not call get_random_seed.
14149
14150 2017-09-21  Evgeny Kudryashov  <kudryashov@ispras.ru>
14151
14152         * cgraph.c (delete_function_version): New, broken out from...
14153         (cgraph_node::delete_function_version): ...here.  Rename to
14154         cgraph_node::delete_function_version_by_decl.  Update all uses.
14155         (cgraph_node::remove): Call delete_function_version.
14156
14157 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
14158
14159         PR sanitizer/81715
14160         * tree-inline.c (expand_call_inline): Emit clobber stmts for
14161         VAR_DECLs to which addressable non-volatile parameters are mapped
14162         and for id->retvar after the return value assignment.  Clear
14163         id->retval and id->retbnd after inlining.
14164
14165 2017-09-21  Richard Biener  <rguenther@suse.de>
14166
14167         PR tree-optimization/82276
14168         PR tree-optimization/82244
14169         * tree-vrp.c (build_assert_expr_for): Set
14170         SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on
14171         has it set.
14172         (remove_range_assertions): Revert earlier change.
14173
14174 2017-09-21  Wilco Dijkstra  <wdijkstr@arm.com>
14175
14176         PR target/71951
14177         * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
14178
14179 2017-09-21  Richard Biener  <rguenther@suse.de>
14180
14181         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
14182         Restore valid IL after code generation errors.
14183         * graphite.c (graphite_transform_loops): Diagnose code
14184         generation issues as MSG_MISSED_OPTIMIZATION and continue
14185         with processing SCOPs.
14186
14187 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14188             Alan Hayward  <alan.hayward@arm.com>
14189             David Sherwood  <david.sherwood@arm.com>
14190
14191         * calls.c (compute_argument_addresses): Use simplify_gen_binary
14192         rather than choosing between plus_constant and gen_rtx_<CODE>.
14193         * expr.c (emit_push_insn): Likewise.
14194         (expand_expr_real_2): Likewise.
14195
14196 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14197             Alan Hayward  <alan.hayward@arm.com>
14198             David Sherwood  <david.sherwood@arm.com>
14199
14200         * loop-unroll.c (split_iv): Call copy_rtx on the step.
14201
14202 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14203             Alan Hayward  <alan.hayward@arm.com>
14204             David Sherwood  <david.sherwood@arm.com>
14205
14206         * tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before
14207         calling tree_to_uhwi.
14208
14209 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14210             Alan Hayward  <alan.hayward@arm.com>
14211             David Sherwood  <david.sherwood@arm.com>
14212
14213         * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for
14214         INTEGER_CST rather than a negative test for ADDR_EXPR.
14215
14216 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14217             Alan Hayward  <alan.hayward@arm.com>
14218             David Sherwood  <david.sherwood@arm.com>
14219
14220         * tree-vrp.c (extract_range_from_binary_expr_1): Check
14221         int_cst_rangeN before calling value_range_constant_singleton (&vrN).
14222
14223 2017-09-21  Richard Biener  <rguenther@suse.de>
14224
14225         PR tree-optimization/71351
14226         * graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple::
14227         graphite_create_new_loop_guard): Remove, fold remaining parts
14228         into caller ...
14229         (translate_isl_ast_node_for): ... here and simplify.
14230
14231 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
14232
14233         PR target/82260
14234         * config/i386/i386.md (*movqi_internal): Replace (=q,q) alternative
14235         with (=Q,Q), (=R,R) and (=r,r) alternatives, only enable the
14236         latter two for 64-bit, renumber alternatives, for -Os imov (=q,n)
14237         alternative always use QI mode, for -Os imov (=R,R) alternative
14238         always use SI mode, for imov (=Q,Q) or (=r,r) alternatives
14239         ignore -Os.
14240
14241 2017-09-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
14242             Jeff Law  <law@redhat.com>
14243
14244         * config/s390/s390.c (MIN_UNROLL_PROBES): Define.
14245         (allocate_stack_space): New function, partially extracted from
14246         s390_emit_prologue.
14247         (s390_emit_prologue): Track offset to most recent stack probe.
14248         Code to allocate space moved into allocate_stack_space.
14249         Dump actions when no stack is allocated.
14250         (s390_prologue_plus_offset): New function.
14251         (s390_emit_stack_probe): Likewise.
14252
14253 2017-09-20  Alexandre Oliva  <aoliva@redhat.com>
14254
14255         * common.opt (Wa, Wl, Wp, g, gz=): Add
14256         RejectNegative.
14257         (gno-column-info): Remove.
14258         (gcolumn-info): Drop RejectNegative.
14259         (gno-): New prefix.
14260         (gno-record-gcc-switches): Remove.
14261         (grecord-gcc-switches): Drop RejectNegative.
14262         (gno-split-dwarf): Remove.
14263         (gsplit-dwarf): Drop RejectNegative.
14264         (gno-strict-dwarf): Remove.
14265         (gstrict-dwarf): Drop RejectNegative.
14266         * config/darwin.opt (gfull, gused): Add RejectNegative.
14267         * dwarf2out.c (gen_producer_string): Drop
14268         gno-record-gcc-switches handler.
14269         * optc-gen.awk: Add g to prefixes with negative forms.
14270         * opts-common.c (remapping_prefix_p): New.
14271         (find_opt): Check it.
14272         (generate_canonical_option): Test g prefix.
14273         (option_map): Add -gno- mapping.
14274         (add_misspelling_candidates): Check remapping_prefix_p.
14275
14276 2017-09-20  Jeff Law  <law@redhat.com>
14277
14278         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix
14279         thinko in stack clash protection support.
14280
14281         * explow.c (compute_stack_clash_protection_loop_data): Use
14282         CONST_INT_P instead of explicit test.  Verify object is a
14283         CONST_INT_P before looking at INTVAL.
14284         (anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P
14285         instead of explicit test.
14286
14287 2017-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
14288
14289         PR target/77687
14290         * config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch
14291         address instead of to r1 and r11.
14292
14293 2017-09-20  Sebastian Peryt  <sebastian.peryt@intel.com>
14294
14295         * config.gcc: Support "knm".
14296         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm".
14297         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
14298         PROCESSOR_KNM.
14299         * config/i386/i386.c (m_KNM): Define.
14300         (processor_target_table): Add "knm".
14301         (PTA_KNM): Define.
14302         (ix86_option_override_internal): Add "knm".
14303         (ix86_issue_rate): Add PROCESSOR_KNM.
14304         (ix86_adjust_cost): Ditto.
14305         (ia32_multipass_dfa_lookahead): Ditto.
14306         (get_builtin_code_for_version): Handle PROCESSOR_KNM.
14307         (fold_builtin_cpu): Add M_INTEL_KNM.
14308         * config/i386/i386.h (processor_costs): Define TARGET_KNM.
14309         (processor_type): Add PROCESSOR_KNM.
14310         * config/i386/x86-tune.def: Add m_KNM.
14311         * doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type.
14312
14313 2017-09-20  Richard Biener  <rguenther@suse.de>
14314
14315         PR tree-optimization/80213
14316         * graphite-scop-detection.c (trivially_empty_bb_p): Labels
14317         are allowed in empty BBs as well.
14318         (canonicalize_loop_closed_ssa): Also look for other complex
14319         edges.
14320         (scop_detection::get_sese): Include the loop-closed PHI block
14321         in loop SESEs.
14322         (scop_detection::merge_sese): Remove code adding extra blocks.
14323         (scop_detection::region_has_one_loop): Adjust for get_sese changes.
14324         (build_scops): Assert the final returned scop is invalid.
14325
14326 2017-09-20  Richard Biener  <rguenther@suse.de>
14327
14328         PR tree-optimization/82264
14329         * tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check
14330         for GIMPLE_CONDs.
14331         (vn_phi_lookup): Likewise.
14332         (vn_phi_insert): Likewise.
14333
14334 2017-09-20  Jakub Jelinek  <jakub@redhat.com>
14335
14336         * dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST
14337         that fits into uhwi or shwi, add DW_AT_const_value regardless
14338         of early_dwarf without going through RTL, using add_AT_unsigned
14339         or add_AT_int.
14340
14341         * dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines.
14342         (DEBUG_LTO_ABBREV_SECTION): Likewise.
14343         (DEBUG_LTO_MACINFO_SECTION): Likewise.
14344         (DEBUG_MACRO_SECTION): Likewise.
14345         (DEBUG_LTO_MACRO_SECTION): Likewise.
14346         (DEBUG_STR_DWO_SECTION): Likewise.
14347         (DEBUG_LTO_STR_DWO_SECTION): Likewise.
14348         (DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name.
14349         (DEBUG_LTO_DWO_LINE_SECTION): Define.
14350         (DEBUG_LTO_LINE_STR_SECTION): Define.
14351         (init_sections_and_labels): Initialize debug_line_str_section
14352         variable.  Initialize debug_loc_section for -gdwarf-5 to
14353         DEBUG_LOCLISTS_SECTION.  Formatting fixes.
14354
14355 2017-09-20  Richard Biener  <rguenther@suse.de>
14356
14357         * graphite-sese-to-poly.c (extract_affine): Properly handle
14358         POINTER_PLUS_EXPR, BIT_NOT_EXPR and conversion to signed.
14359
14360 2017-09-20  Richard Biener  <rguenther@suse.de>
14361
14362         PR tree-optimization/81373
14363         * graphite-scop-detection.c (build_cross_bb_scalars_def):
14364         Force SESE live-out defs to be handled even if they are
14365         scev_analyzable_p.
14366
14367 2017-09-19  Jeff Law  <law@redhat.com>
14368
14369         * combine-stack-adj.c (combine_stack_adjustments_for_block): Do
14370         nothing for stack adjustments with REG_STACK_CHECK.
14371         * sched-deps.c (parse_add_or_inc): Reject insns with
14372         REG_STACK_CHECK from dependency breaking.
14373         * config/i386/i386.c (pro_epilogue_adjust_stack): Return insn.
14374         (ix86_adjust_satck_and_probe_stack_clash): Add REG_STACK_NOTEs.
14375         * reg-notes.def (STACK_CHECK): New note.
14376
14377         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New.
14378         (ix86_expand_prologue): Dump stack clash info as needed.
14379         Call ix86_adjust_stack_and_probe_stack_clash as needed.
14380
14381         * function.c (dump_stack_clash_frame_info): New function.
14382         * function.h (dump_stack_clash_frame_info): Prototype.
14383         (enum stack_clash_probes): New enum.
14384
14385         * config/alpha/alpha.c (alpha_expand_prologue): Also check
14386         flag_stack_clash_protection.
14387         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Likewise.
14388         (arm_expand_prologue, thumb1_expand_prologue): Likewise.
14389         (arm_frame_pointer_required): Likewise.
14390         * config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
14391         (ia64_expand_prologue): Likewise.
14392         * config/mips/mips.c (mips_expand_prologue): Likewise.
14393         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Likewise.
14394         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
14395         (sparc_flat_expand_prologue): Likewise.
14396         * config/spu/spu.c (spu_expand_prologue): Likewise.
14397
14398         * explow.c: Include "params.h".
14399         (anti_adjust_stack_and_probe_stack_clash): New function.
14400         (get_stack_check_protect): Likewise.
14401         (compute_stack_clash_protection_loop_data): Likewise.
14402         (emit_stack_clash_protection_loop_start): Likewise.
14403         (emit_stack_clash_protection_loop_end): Likewise.
14404         (allocate_dynamic_stack_space): Use get_stack_check_protect.
14405         Use anti_adjust_stack_and_probe_stack_clash.
14406         * explow.h (compute_stack_clash_protection_loop_data): Prototype.
14407         (emit_stack_clash_protection_loop_start): Likewise.
14408         (emit_stack_clash_protection_loop_end): Likewise.
14409         * rtl.h (get_stack_check_protect): Prototype.
14410         * target.def (stack_clash_protection_final_dynamic_probe): New hook.
14411         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): New.
14412         * targhooks.h (default_stack_clash_protection_final_dynamic_probe):
14413         Prototype.
14414         * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE):
14415         Add @hook.
14416         * doc/tm.texi: Rebuilt.
14417         * config/aarch64/aarch64.c (aarch64_expand_prologue): Use
14418         get_stack_check_protect.
14419         * config/alpha/alpha.c (alpha_expand_prologue): Likewise.
14420         * config/arm/arm.c (arm_expand_prologue): Likewise.
14421         (arm_frame_pointer_required): Likewise.
14422         * config/i386/i386.c (ix86_expand_prologue): Likewise.
14423         * config/ia64/ia64.c (ia64_expand_prologue): Likewise.
14424         * config/mips/mips.c (mips_expand_prologue): Likewise.
14425         * config/powerpcspe/powerpcspe.c (rs6000_emit_prologue): Likewise.
14426         * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
14427         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
14428         (sparc_flat_expand_prologue): Likewise.
14429
14430         * common.opt (-fstack-clash-protection): New option.
14431         * flag-types.h (enum stack_check_type): Note difference between
14432         -fstack-check= and -fstack-clash-protection.
14433         * params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM.
14434         (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise.
14435         * toplev.c (process_options): Issue warnings/errors for cases
14436         not handled with -fstack-clash-protection.
14437         * doc/invoke.texi (-fstack-clash-protection): Document new option.
14438         (-fstack-check): Note additional problem with -fstack-check=generic.
14439         Note that -fstack-check is primarily for Ada and refer users
14440         to -fstack-clash-protection for stack-clash-protection.
14441         Document new params for stack clash protection.
14442
14443 2017-09-19  Uros Bizjak  <ubizjak@gmail.com>
14444
14445         * config/i386/i386.c (ix86_split_long_move): Do not handle
14446         address used for LEA in a special way.
14447
14448 2017-09-19  Segher Boessenkool  <segher@kernel.crashing.org>
14449
14450         * simplify-rtx.c (simplify_binary_operation_1): Fix typo in comment.
14451
14452 2017-09-19  Martin Sebor  <msebor@redhat.com>
14453
14454         PR c/81854
14455         * cgraphunit.c (handle_alias_pairs): Reject aliases between functions
14456         of incompatible types.
14457
14458 2017-09-19  Will Schmidt  <will_schmidt@vnet.ibm.com>
14459
14460         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
14461         for early folding of vector loads (ALTIVEC_BUILTIN_LVX_*).
14462         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
14463         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_LD.
14464
14465 2017-09-19  Richard Biener  <rguenther@suse.de>
14466
14467         PR tree-optimization/82244
14468         * tree-vrp.c (remove_range_assertions): Do not propagate
14469         a constant to abnormals but replace the assert with a copy.
14470
14471 2017-09-19  Alexander Monakov  <amonakov@ispras.ru>
14472
14473         PR rtl-optimization/57878
14474         PR rtl-optimization/68988
14475         * lra-assigns.c (reload_pseudo_compare_func): Remove fragmentation
14476         avoidance test involving non_reload_pseudos.  Move frequency test
14477         below the general fragmentation avoidance test.
14478
14479 2017-09-19  Richard Biener  <rguenther@suse.de>
14480
14481         PR tree-optimization/69728
14482         * graphite-sese-to-poly.c (schedule_error): New global.
14483         (add_loop_schedule): Handle empty domain by failing the
14484         schedule.
14485         (build_original_schedule): Handle schedule_error.
14486
14487 2017-09-19  Richard Biener  <rguenther@suse.de>
14488
14489         * graphite-scop-detection.c (scop_detection::can_represent_loop):
14490         Do not iterate to sibling loops but only to siblings of inner
14491         loops.
14492
14493 2017-09-18  Andreas Schwab  <schwab@linux-m68k.org>
14494
14495         PR target/81613
14496         * config/m68k/m68k.md (moveq feeding equality comparison): Check
14497         that the registers are different.
14498
14499 2017-09-18  Uros Bizjak  <ubizjak@gmail.com>
14500
14501         * config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H
14502         to processor_model and "amdfam17h" to arch_names_table.
14503         * doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name.
14504
14505 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
14506
14507         PR c/82234
14508         * doc/extend.texi: Add @findex entry for __builtin_shuffle.
14509
14510 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14511             Alan Hayward  <alan.hayward@arm.com>
14512             David Sherwood  <david.sherwood@arm.com>
14513
14514         * tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters
14515         with a vec_info *.
14516         * tree-vect-loop.c (vect_analyze_loop_operations): Update call
14517         accordingly.
14518         * tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info *
14519         parameter.  Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in
14520         vect_schedule_slp_instance.
14521         (vect_slp_analyze_operations): Replace parameters with a vec_info *.
14522         Update call to vect_slp_analyze_node_operations.  Simplify return
14523         value.
14524         (vect_slp_analyze_bb_1): Update call accordingly.
14525         (vect_schedule_slp_instance): Remove vectorization_factor parameter.
14526         Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here.
14527         (vect_schedule_slp): Update call accordingly.
14528
14529 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14530             Alan Hayward  <alan.hayward@arm.com>
14531             David Sherwood  <david.sherwood@arm.com>
14532
14533         * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope
14534         with types that aren't in fact scalar.
14535
14536 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14537
14538         * tree-vect-slp.c (vect_record_max_nunits): New function,
14539         split out from...
14540         (vect_build_slp_tree_1): ...here.
14541         (vect_build_slp_tree_2): Call it for phis too.
14542
14543 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14544
14545         * tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype
14546         to vect_get_vec_def_for_operand when getting the mask operand.
14547
14548 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14549             Alan Hayward  <alan.hayward@arm.com>
14550             David Sherwood  <david.sherwood@arm.com>
14551
14552         * tree-vect-loop.c (vectorizable_live_operation): Fix type of
14553         bitstart.
14554
14555 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14556             Alan Hayward  <alan.hayward@arm.com>
14557             David Sherwood  <david.sherwood@arm.com>
14558
14559         * tree-vect-loop.c (vectorizable_live_operation): Fix element size
14560         calculation for vector booleans.
14561
14562 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14563             Alan Hayward  <alan.hayward@arm.com>
14564             David Sherwood  <david.sherwood@arm.com>
14565
14566         * tree-vect-stmts.c (can_vectorize_live_stmts): New function,
14567         split out from...
14568         (vect_transform_stmt): ...here.
14569         (vect_analyze_stmt): Use it instead of calling
14570         vectorizable_live_operation directly.
14571
14572 2017-09-18  Cesar Philippidis  <cesar@codesourcery.com>
14573
14574         * omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on
14575         non-SIMT targets in acc vector loops.
14576
14577 2017-09-18  Claudiu Zissulescu  <claziss@synopsys.com>
14578
14579         * configure.ac: Add arc and check if assembler supports gdwarf2.
14580         * configure: Regenerate.
14581
14582 2017-09-18  Richard Biener  <rguenther@suse.de>
14583
14584         PR tree-optimization/82220
14585         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude
14586         epilogue niters from the min_profitable_iters compute.
14587
14588 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
14589
14590         PR target/82145
14591         * config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01
14592         changes.  Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately.
14593         (ix86_init_pic_reg): Revert 2017-09-01 changes.
14594
14595 2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>
14596
14597         PR target/81361
14598         * dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after
14599         switching to a new text section.
14600
14601 2017-09-18  Richard Biener  <rguenther@suse.de>
14602
14603         * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
14604         Simplify.
14605         (build_alias_set): Reject aliases with no access function.
14606
14607 2017-09-18  Richard Biener  <rguenther@suse.de>
14608
14609         PR tree-optimization/79622
14610         * graphite-scop-detection.c (build_cross_bb_scalars_def): Properly
14611         handle PHIs.
14612         (build_cross_bb_scalars_use): Likewise.
14613
14614 2017-09-18  Pierre-Marie de Rodat  <derodat@adacore.com>
14615
14616         * cgraph.h (cgraph_thunk_info): Fix a typo in a comment.
14617
14618 2017-09-18  Alan Modra  <amodra@gmail.com>
14619
14620         PR target/81996
14621         * gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
14622         stack_pointer_rtx for count 0.  Update comments.  Break up
14623         large rtl expression.
14624
14625 2017-09-17  Daniel Santos  <daniel.santos@pobox.com>
14626
14627         * config/i386/i386.c (xlogue_layout::STUB_NAME_MAX_LEN):
14628         Increase to 20 bytes.
14629         (xlogue_layout::s_stub_names): Add an additional size-2 diminsion.
14630         (xlogue_layout::get_stub_name): Modify to select the appropairate sse
14631         or avx version of the stub.
14632
14633 2017-09-17  H.J. Lu  <hongjiu.lu@intel.com>
14634
14635         PR target/82166
14636         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly
14637         compute the minimum stack alignment.  Also update preferred stack
14638         boundary for leaf functions.
14639
14640 2017-09-16  Richard Sandiford  <richard.sandiford@linaro.org>
14641
14642         PR tree-optimization/82228
14643         * tree-vect-loop.c (vectorizable_live_operation): Move initialization
14644         of ncopies.
14645
14646 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
14647
14648         * common/config/nds32/nds32-common.c
14649         (nds32_option_optimization_table): Refine formatting.
14650         (nds32_option_optimization_table): Use -fsched-pressure and
14651         -fomit-frame-pointer for specific optimization level.
14652
14653 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
14654
14655         * config/nds32/nds32.c: Refine formatting and comments.
14656         * config/nds32/nds32.h: Likewise.
14657         * config/nds32/nds32.md: Likewise.
14658         * config/nds32/nds32-cost.c: Likewise.
14659         * config/nds32/nds32-isr.c: Likewise.
14660         * config/nds32/nds32-md-auxiliary.c: Likewise.
14661         * config/nds32/nds32-multiple.md: Likewise.
14662         * config/nds32/nds32-predicates.c: Likewise.
14663
14664 2017-09-15  Andrew Sutton  <andrew.n.sutton@gmail.com>
14665             Jakub Jelinek  <jakub@redhat.com>
14666
14667         Add support for -std=c++2a.
14668         * doc/cpp.texi (__cplusplus): Document value for -std=c++2a
14669         or -std=gnu+2a.
14670         * doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.
14671
14672 2017-09-15  Steve Ellcey  <sellcey@cavium.com>
14673
14674         PR target/82066
14675         * doc/extend.texi (Common Function Attributes): Add 
14676         references to ARM, AArch64, and S/390 specific attributes.
14677         (Function Specific Option Pragmas): Add AArch64 and S/390
14678         to list of back ends that support the target pragma.
14679
14680 2017-09-15  Nathan Sidwell  <nathan@acm.org>
14681
14682         * doc/standards.texi: Fix C++17 description.  Update URLs for
14683         C++11 & 14.
14684
14685 2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
14686
14687         * common.opt (Wcast-align=strict): New warning option.
14688         * doc/invoke.texi: Document -Wcast-align=strict. 
14689
14690 2017-09-15  Pierre-Marie de Rodat  <derodat@adacore.com>
14691
14692         * cgraph.h (cgraph_thunk_info): Add comments.
14693         * cgraph.c (cgraph_node::create_thunk): Adjust comment, make
14694         assert for VIRTUAL_* arguments stricter.
14695
14696 2017-09-15  Jackson Woodruff  <jackson.woodruff@arm.com>
14697
14698         PR tree-optimization/71026
14699         * match.pd: Move RDIV patterns from fold-const.c
14700         * fold-const.c (distribute_real_division): Removed.
14701         (fold_binary_loc): Remove calls to distribute_real_divison.
14702
14703 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14704
14705         * doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
14706         c++1z and gnu++1z as deprecated.  Change other references to
14707         -std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
14708         Change -Wc++1z-compat to -Wc++17-compat.
14709         * doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
14710         * dwarf2out.c (highest_c_language): Handle C++17.
14711         (gen_compile_unit_die): Likewise.
14712
14713 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14714
14715         PR rtl-optimization/82192
14716         * combine.c (make_extraction): Don't look through non-paradoxical
14717         SUBREGs or TRUNCATE if pos + len is or might be bigger than
14718         inner's mode.
14719
14720 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14721             Alan Hayward  <alan.hayward@arm.com>
14722             David Sherwood  <david.sherwood@arm.com>
14723
14724         * target.def (function_arg_offset): New hook.
14725         * targhooks.h (default_function_arg_offset): Declare.
14726         * targhooks.c (default_function_arg_offset): New function.
14727         * function.c (locate_and_pad_parm): Use
14728         targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET.
14729         * doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with...
14730         (TARGET_FUNCTION_ARG_OFFSET): ...this.
14731         * doc/tm.texi: Regenerate.
14732         * config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete.
14733         * config/spu/spu.c (spu_function_arg_offset): New function.
14734         (TARGET_FUNCTION_ARG_OFFSET): Redefine.
14735         * system.h (FUNCTION_ARG_OFFSET): Poison.
14736
14737 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14738             Alan Hayard  <alan.hayward@arm.com>
14739             David Sherwood  <david.sherwood@arm.com>
14740
14741         * target.def (truly_noop_truncation): New hook.
14742         (mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather
14743         than TRULY_NOOP_TRUNCATION.
14744         * hooks.h (hook_bool_uint_uint_true): Declare.
14745         * hooks.c (hook_bool_uint_uint_true): New function.
14746         * doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with...
14747         (TARGET_TRULY_NOOP_TRUNCATION): ...this.
14748         * doc/tm.texi: Regenerate.
14749         * combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION
14750         rather than TRULY_NOOP_TRUNCATION in comments.
14751         (simplify_comparison): Likewise.
14752         (record_truncated_value): Likewise.
14753         * expmed.c (extract_bit_field_1): Likewise.
14754         (extract_split_bit_field): Likewise.
14755         * convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation
14756         instead of TRULY_NOOP_TRUNCATION.
14757         * function.c (assign_parm_setup_block): Likewise.
14758         * machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise.
14759         * rtlhooks.c: Include target.h.
14760         * config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete.
14761         * config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete.
14762         * config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete.
14763         * config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete.
14764         * config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete.
14765         * config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete.
14766         * config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete.
14767         * config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete.
14768         * config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete.
14769         * config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete.
14770         * config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete.
14771         * config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete.
14772         * config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete.
14773         * config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete.
14774         * config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete.
14775         * config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete.
14776         * config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete.
14777         * config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete.
14778         * config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete.
14779         * config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete.
14780         * config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete.
14781         * config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete.
14782         * config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete.
14783         * config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete.
14784         * config/mips/mips.c (mips_truly_noop_truncation): New function.
14785         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14786         * config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14787         rather than TRULY_NOOP_TRUNCATION in comments.
14788         * config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete.
14789         * config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete.
14790         * config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete.
14791         * config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete.
14792         * config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete.
14793         * config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete.
14794         * config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete.
14795         * config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete.
14796         * config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete.
14797         * config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete.
14798         * config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete.
14799         * config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14800         rather than TRULY_NOOP_TRUNCATION in comments.
14801         * config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete.
14802         * config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete.
14803         * config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete.
14804         * config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete.
14805         * config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove
14806         TRULY_NOOP_TRUNCATION condition.
14807         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14808         (TRULY_NOOP_TRUNCATION): Delete.
14809         * config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete.
14810         * config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete.
14811         * config/spu/spu.c (spu_truly_noop_truncation): New function.
14812         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14813         * config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete.
14814         * config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete.
14815         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction.
14816         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14817         * config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14818         rather than TRULY_NOOP_TRUNCATION in comments.
14819         * config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete.
14820         * config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete.
14821         * config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete.
14822         * config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete.
14823         * config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete.
14824         * system.h (TRULY_NOOP_TRUNCATION): Poison.
14825
14826 2017-09-15  Christophe Lyon  <christophe.lyon@linaro.org>
14827
14828         PR target/67591
14829         * config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute.
14830         (*cmp_ior): Likewise.
14831         (*ior_scc_scc): Add alternative for enabled_for_depr_it attribute.
14832         (*ior_scc_scc_cmp): Likewise.
14833         (*and_scc_scc): Likewise.
14834         (*and_scc_scc_cmp): Likewise.
14835
14836 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14837             Alan Hayard  <alan.hayward@arm.com>
14838             David Sherwood  <david.sherwood@arm.com>
14839
14840         * target.def (can_change_mode_class): New hook.
14841         (mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS.
14842         (hard_regno_nregs): Likewise.
14843         * hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare.
14844         * hooks.c (hook_bool_mode_mode_reg_class_t_true): New function.
14845         * doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with...
14846         (TARGET_CAN_CHANGE_MODE_CLASS): ...this.
14847         (LOAD_EXTEND_OP): Update accordingly.
14848         * doc/tm.texi: Regenerate.
14849         * doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of
14850         CANNOT_CHANGE_MODE_CLASS.
14851         * hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with...
14852         (REG_CAN_CHANGE_MODE_P): ...this new macro.
14853         * combine.c (simplify_set): Update accordingly.
14854         * emit-rtl.c (validate_subreg): Likewise.
14855         * recog.c (general_operand): Likewise.
14856         * regcprop.c (mode_change_ok): Likewise.
14857         * reload1.c (choose_reload_regs): Likewise.
14858         (inherit_piecemeal_p): Likewise.
14859         * rtlanal.c (simplify_subreg_regno): Likewise.
14860         * postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P
14861         instead of CANNOT_CHANGE_MODE_CLASS.
14862         (reload_cse_simplify_operands): Likewise.
14863         * reload.c (push_reload): Use targetm.can_change_mode_class
14864         instead of CANNOT_CHANGE_MODE_CLASS.
14865         (push_reload): Likewise.  Also use REG_CAN_CHANGE_MODE_P instead of
14866         REG_CANNOT_CHANGE_MODE_P.
14867         * config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14868         * config/alpha/alpha.c (alpha_can_change_mode_class): New function.
14869         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14870         * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14871         * config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14872         (arm_can_change_mode_class): New function.
14873         * config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
14874         than CANNOT_CHANGE_MODE_CLASS in comments.
14875         * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14876         * config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete.
14877         * config/i386/i386.c (ix86_cannot_change_mode_class): Replace with...
14878         (ix86_can_change_mode_class): ...this new function, inverting the
14879         sense of the return value.
14880         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14881         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14882         * config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14883         (ia64_can_change_mode_class): New function.
14884         * config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14885         * config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete.
14886         * config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with...
14887         (m32c_can_change_mode_class): ...this new function, inverting the
14888         sense of the return value.
14889         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14890         * config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14891         * config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete.
14892         * config/mips/mips.c (mips_cannot_change_mode_class): Replace with...
14893         (mips_can_change_mode_class): ...this new function, inverting the
14894         sense of the return value.
14895         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14896         * config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14897         * config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14898         (msp430_can_change_mode_class): New function.
14899         * config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14900         * config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function.
14901         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14902         * config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14903         * config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14904         * config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete.
14905         * config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14906         (pa_cannot_change_mode_class): Replace with...
14907         (pa_can_change_mode_class): ...this new function, inverting the
14908         sense of the return value.
14909         (pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
14910         than CANNOT_CHANGE_MODE_CLASS in comments.
14911         * config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14912         * config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete.
14913         * config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14914         (pdp11_cannot_change_mode_class): Replace with...
14915         (pdp11_can_change_mode_class): ...this new function, inverting the
14916         sense of the return value.
14917         * config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14918         * config/powerpcspe/powerpcspe-protos.h
14919         (rs6000_cannot_change_mode_class_ptr): Delete.
14920         * config/powerpcspe/powerpcspe.c
14921         (rs6000_cannot_change_mode_class_ptr): Delete.
14922         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14923         (rs6000_option_override_internal): Assign to
14924         targetm.can_change_mode_class instead of
14925         rs6000_cannot_change_mode_class_ptr.
14926         (rs6000_cannot_change_mode_class): Replace with...
14927         (rs6000_can_change_mode_class): ...this new function, inverting the
14928         sense of the return value.
14929         (rs6000_debug_cannot_change_mode_class): Replace with...
14930         (rs6000_debug_can_change_mode_class): ...this new function.
14931         * config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14932         * config/riscv/riscv.c (riscv_can_change_mode_class): New function.
14933         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14934         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14935         * config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr):
14936         Delete.
14937         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete.
14938         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14939         (rs6000_option_override_internal): Assign to
14940         targetm.can_change_mode_class instead of
14941         rs6000_cannot_change_mode_class_ptr.
14942         (rs6000_cannot_change_mode_class): Replace with...
14943         (rs6000_can_change_mode_class): ...this new function, inverting the
14944         sense of the return value.
14945         (rs6000_debug_cannot_change_mode_class): Replace with...
14946         (rs6000_debug_can_change_mode_class): ...this new function.
14947         * config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14948         * config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete.
14949         * config/s390/s390.c (s390_cannot_change_mode_class): Replace with...
14950         (s390_can_change_mode_class): ...this new function, inverting the
14951         sense of the return value.
14952         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14953         * config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14954         * config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete.
14955         * config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14956         (sh_cannot_change_mode_class): Replace with...
14957         (sh_can_change_mode_class): ...this new function, inverting the
14958         sense of the return value.
14959         * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14960         * config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14961         (sparc_can_change_mode_class): New function.
14962         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14963         * config/spu/spu.c (spu_can_change_mode_class): New function.
14964         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14965         * config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14966         * config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14967         (visium_can_change_mode_class): New function.
14968         * system.h (CANNOT_CHANGE_MODE_CLASS): Poison.
14969
14970 2017-09-15  Richard Biener  <rguenther@suse.de>
14971
14972         PR tree-optimization/82217
14973         * tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP
14974         but not undefined case.
14975
14976 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14977
14978         PR target/82145
14979         * postreload.c (reload_cse_simplify_operands): Skip
14980         NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.
14981
14982 2017-09-15  Richard Biener  <rguenther@suse.de>
14983
14984         PR tree-optimization/68823
14985         * graphite-scop-detection.c (build_alias_set): If we have a
14986         possible dependence check whether we can handle them by just
14987         looking at the DRs DR_ACCESS_FNs.
14988         (build_scops): If build_alias_set fails, fail the SCOP.
14989
14990 2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
14991
14992         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros
14993         to support float128 built-in functions that require the ISA 3.0
14994         hardware.
14995         (BU_FLOAT128_3_HW): Likewise.
14996         (SQRTF128): Add support for the IEEE 128-bit square root and fma
14997         built-in functions.
14998         (FMAF128): Likewise.
14999         (FMAQ): Likewise.
15000         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
15001         support for built-in functions that need the ISA 3.0 IEEE 128-bit
15002         floating point instructions.
15003         (rs6000_invalid_builtin): Likewise.
15004         (rs6000_builtin_mask_names): Likewise.
15005         * config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise.
15006         (RS6000_BTM_FLOAT128_HW): Likewise.
15007         (RS6000_BTM_COMMON): Likewise.
15008         * config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator
15009         function.
15010         * doc/extend.texi (RS/6000 built-in functions): Document the
15011         IEEE 128-bit floating point square root and fused multiply-add
15012         built-in functions.
15013
15014 2017-09-14  Pat Haugen  <pthaugen@us.ibm.com>
15015
15016         * config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
15017         reg (r2) isn't in the set of registers defined in the prologue.
15018
15019 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15020             Alan Hayward  <alan.hayward@arm.com>
15021             David Sherwood  <david.sherwood@arm.com>
15022
15023         * tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
15024         (LOOP_VINFO_MAX_VECT_FACTOR): New macro.
15025         (LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
15026         (LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
15027         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
15028         accordingly.
15029         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
15030         max_vectorization_factor.
15031         (vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.
15032
15033 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15034             Alan Hayward  <alan.hayward@arm.com>
15035             David Sherwood  <david.sherwood@arm.com>
15036
15037         * tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
15038         (vect_worthwhile_without_simd_p): Declare.
15039         * tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
15040         (vectorizable_reduction): Use it.
15041         * tree-vect-stmts.c (vectorizable_shift): Likewise.
15042         (vectorizable_operation): Likewise.
15043
15044 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15045             Alan Hayward  <alan.hayward@arm.com>
15046             David Sherwood  <david.sherwood@arm.com>
15047
15048         * tree-vectorizer.h (vect_get_num_copies): New function.
15049         * tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
15050         * tree-vect-loop.c (vectorizable_reduction): Likewise.
15051         (vectorizable_induction): Likewise.
15052         (vectorizable_live_operation): Likewise.
15053         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
15054         (vectorizable_bswap): Likewise.
15055         (vectorizable_call): Likewise.
15056         (vectorizable_conversion): Likewise.
15057         (vectorizable_assignment): Likewise.
15058         (vectorizable_shift): Likewise.
15059         (vectorizable_operation): Likewise.
15060         (vectorizable_store): Likewise.
15061         (vectorizable_load): Likewise.
15062         (vectorizable_condition): Likewise.
15063         (vectorizable_comparison): Likewise.
15064         (vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.
15065
15066 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15067             Alan Hayward  <alan.hayward@arm.com>
15068             David Sherwood  <david.sherwood@arm.com>
15069
15070         * tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
15071         of vect_init_vector.
15072
15073 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15074             Alan Hayward  <alan.hayward@arm.com>
15075             David Sherwood  <david.sherwood@arm.com>
15076
15077         * gimple-fold.h (gimple_build_vector_from_val): Declare, and provide
15078         an inline wrapper that provides a location.
15079         (gimple_build_vector): Likewise.
15080         * gimple-fold.c (gimple_build_vector_from_val): New function.
15081         (gimple_build_vector): Likewise.
15082         * tree-vect-loop.c (get_initial_def_for_reduction): Use the new
15083         functions to build the initial value.  Always return a gimple value.
15084         (get_initial_defs_for_reduction): Likewise.  Only compute
15085         neutral_vec once.
15086         (vect_create_epilog_for_reduction): Don't call force_gimple_operand or
15087         vect_init_vector on the results from get_initial_def(s)_for_reduction.
15088         (vectorizable_induction): Use gimple_build_vector rather than
15089         vect_init_vector.
15090
15091 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15092             Alan Hayward  <alan.hayward@arm.com>
15093             David Sherwood  <david.sherwood@arm.com>
15094
15095         * target.h (vec_perm_indices): New typedef.
15096         (auto_vec_perm_indices): Likewise.
15097         * optabs-query.h: Include target.h
15098         (can_vec_perm_p): Take a vec_perm_indices *.
15099         * optabs-query.c (can_vec_perm_p): Likewise.
15100         (can_mult_highpart_p): Update accordingly.  Use auto_vec_perm_indices.
15101         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15102         * tree-vect-generic.c (lower_vec_perm): Likewise.
15103         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15104         (vect_grouped_load_supported): Likewise.
15105         (vect_shift_permute_load_chain): Likewise.
15106         (vect_permute_store_chain): Use auto_vec_perm_indices.
15107         (vect_permute_load_chain): Likewise.
15108         * fold-const.c (fold_vec_perm): Take vec_perm_indices.
15109         (fold_ternary_loc): Update accordingly.  Use auto_vec_perm_indices.
15110         Update uses of can_vec_perm_p.
15111         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the
15112         mode with a number of elements.  Take a vec_perm_indices *.
15113         (vect_create_epilog_for_reduction): Update accordingly.
15114         Use auto_vec_perm_indices.
15115         (have_whole_vector_shift): Likewise.  Update call to can_vec_perm_p.
15116         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
15117         (vect_transform_slp_perm_load): Likewise.
15118         (vect_schedule_slp_instance): Use auto_vec_perm_indices.
15119         * tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices.
15120         (vect_gen_perm_mask_checked): Likewise.
15121         * tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices.
15122         (vect_gen_perm_mask_checked): Likewise.
15123         (vectorizable_mask_load_store): Use auto_vec_perm_indices.
15124         (vectorizable_store): Likewise.
15125         (vectorizable_load): Likewise.
15126         (perm_mask_for_reverse): Likewise.  Update call to can_vec_perm_p.
15127         (vectorizable_bswap): Likewise.
15128
15129 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15130             Alan Hayward  <alan.hayward@arm.com>
15131             David Sherwood  <david.sherwood@arm.com>
15132
15133         * tree.h (build_vector): Take a vec<tree> instead of a tree *.
15134         * tree.c (build_vector): Likewise.
15135         (build_vector_from_ctor): Update accordingly.
15136         (build_vector_from_val): Likewise.
15137         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
15138         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15139         * tree-vect-generic.c (add_rshift): Likewise.
15140         (expand_vector_divmod): Likewise.
15141         (optimize_vector_constructor): Likewise.
15142         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
15143         (vect_transform_slp_perm_load): Likewise.
15144         (vect_schedule_slp_instance): Likewise.
15145         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
15146         (vectorizable_call): Likewise.
15147         (vect_gen_perm_mask_any): Likewise.  Add elements in order.
15148         * expmed.c (make_tree): Likewise.
15149         * fold-const.c (fold_negate_expr_1): Use auto_vec<tree> when building
15150         a vector passed to build_vector.
15151         (fold_convert_const): Likewise.
15152         (exact_inverse): Likewise.
15153         (fold_ternary_loc): Likewise.
15154         (fold_relational_const): Likewise.
15155         (const_binop): Likewise.  Use VECTOR_CST_ELT directly when operating
15156         on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array.
15157         (const_unop): Likewise.  Store the reduction accumulator in a
15158         variable rather than an array.
15159         (vec_cst_ctor_to_array): Take the number of elements as a parameter.
15160         (fold_vec_perm): Update calls accordingly.  Use auto_vec<tree> for
15161         the new vector, rather than constructing it after the input arrays.
15162         (native_interpret_vector): Use auto_vec<tree> when building
15163         a vector passed to build_vector.  Add elements in order.
15164         * tree-vect-loop.c (get_initial_defs_for_reduction): Use
15165         auto_vec<tree> when building a vector passed to build_vector.
15166         (vect_create_epilog_for_reduction): Likewise.
15167         (vectorizable_induction): Likewise.
15168         (get_initial_def_for_reduction): Likewise.  Fix indentation of
15169         case statements.
15170         * config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts
15171         to a vec<tree> *.
15172         (sparc_fold_builtin): Use auto_vec<tree> when building a vector
15173         passed to build_vector.
15174
15175 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15176             Alan Hayward  <alan.hayward@arm.com>
15177             David Sherwood  <david.sherwood@arm.com>
15178
15179         * tree-core.h (tree_base::u): Add an "nelts" field.
15180         (tree_vector): Use VECTOR_CST_NELTS as the length.
15181         * tree.c (tree_size): Likewise.
15182         (make_vector): Initialize VECTOR_CST_NELTS.
15183         * tree.h (VECTOR_CST_NELTS): Use the u.nelts field.
15184         * cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of
15185         TYPE_VECTOR_SUBPARTS.
15186         * expr.c (const_vector_mask_from_tree): Consistently use "units"
15187         as the number of units, setting it from VECTOR_CST_NELTS.
15188         (const_vector_from_tree): Likewise.
15189         * fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of
15190         TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST.
15191         (fold_negate_expr_1): Likewise.
15192         (fold_convert_const): Likewise.
15193         (const_binop): Likewise.  Differentiate the number of output and
15194         input elements.
15195         (const_unop): Likewise.
15196         (fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements
15197         in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS
15198         in cases that did the opposite.
15199
15200 2017-09-14  Richard Biener  <rguenther@suse.de>
15201
15202         * tree-ssa-sccvn.c (visit_phi): Merge undefined values similar
15203         to VN_TOP.
15204
15205 2017-09-14  Eric Botcazou  <ebotcazou@adacore.com>
15206
15207         * dwarf2out.c (dwarf2out_source_line): Remove superfluous test.
15208
15209 2017-09-14  Jakub Jelinek  <jakub@redhat.com>
15210
15211         PR target/81325
15212         * cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
15213         if and where to split a bb, except for splitting before debug insn
15214         sequences followed by non-label real insn.  Delete debug insns
15215         in between basic blocks.
15216
15217         * combine.c (make_compound_operation_int): Formatting fixes.
15218
15219         * config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support.
15220         * config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15221         * config/netbsd.h (LINK_EH_SPEC): Likewise.
15222         * config/sol2.h (LINK_EH_SPEC): Likewise.
15223         * config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15224         * config/s390/linux.h (LINK_SPEC): Likewise.
15225         * config/freebsd.h (LINK_EH_SPEC): Likewise.
15226         * config/openbsd.h (LINK_EH_SPEC): Likewise.
15227         * config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15228         * config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise.
15229         * config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise.
15230         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15231         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo.
15232         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix.
15233
15234 2017-09-13  Jakub Jelinek  <jakub@redhat.com>
15235
15236         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie
15237         support.
15238         (ENDFILE_LINUX_SPEC): Likewise.
15239         (LINK_EH_SPEC): Likewise.
15240         * config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise.
15241         (LINK_OS_LINUX_SPEC32): Likewise.
15242         (LINK_OS_LINUX_SPEC64): Likewise.
15243         * config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise.
15244         (LINK_OS_LINUX_SPEC): Likewise.
15245
15246 2017-09-13  Martin Liska  <mliska@suse.cz>
15247
15248         PR middle-end/82154
15249         * stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when
15250         CASE_HIGH is NULL_TREE.
15251
15252 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
15253             Alan Hayward  <alan.hayward@arm.com>
15254             David Sherwood  <david.sherwood@arm.com>
15255
15256         * target.def (secondary_memory_needed): New hook.
15257         (secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED
15258         instead of SECONDARY_MEMORY_NEEDED.
15259         (secondary_memory_needed_mode): Likewise.
15260         * hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare.
15261         * hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function.
15262         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with...
15263         (TARGET_SECONDARY_MEMORY_NEEDED): ...this.
15264         (SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly.
15265         * doc/tm.texi: Regenerate.
15266         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete.
15267         * config/alpha/alpha.c (alpha_secondary_memory_needed): New function.
15268         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15269         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete.
15270         * config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete.
15271         * config/i386/i386.c (inline_secondary_memory_needed): Put the
15272         mode argument first and change the reg_class arguments to reg_class_t.
15273         (ix86_secondary_memory_needed): Likewise.  Remove the strict parameter.
15274         Make static.  Update the call to inline_secondary_memory_needed.
15275         (ix86_register_move_cost): Update the call to
15276         inline_secondary_memory_needed.
15277         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15278         * config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out
15279         definition.
15280         * config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to
15281         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
15282         in comment.
15283         * config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete.
15284         * config/mips/mips-protos.h (mips_secondary_memory_needed): Delete.
15285         * config/mips/mips.c (mips_secondary_memory_needed): Make static
15286         and match hook interface.  Add comment from mips.h.
15287         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15288         * config/mmix/mmix.md (truncdfsf2): Refer to
15289         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
15290         in comment.
15291         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to...
15292         (PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first.
15293         * config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15294         (pa_secondary_memory_needed): New function.
15295         * config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete.
15296         * config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete.
15297         * config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15298         (pdp11_secondary_memory_needed): Make static and match hook interface.
15299         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete.
15300         * config/powerpcspe/powerpcspe-protos.h
15301         (rs6000_secondary_memory_needed_ptr): Delete.
15302         * config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr):
15303         Delete.
15304         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15305         (rs6000_option_override_internal): Assign to
15306         targetm.secondary_memory_needed rather than
15307         rs6000_secondary_memory_needed_ptr.
15308         (rs6000_secondary_memory_needed): Match hook interface.
15309         (rs6000_debug_secondary_memory_needed): Likewise.
15310         * config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete.
15311         * config/riscv/riscv.c (riscv_secondary_memory_needed): New function.
15312         (riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED.
15313         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15314         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete.
15315         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr):
15316         Delete.
15317         * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete.
15318         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15319         (rs6000_option_override_internal): Assign to
15320         targetm.secondary_memory_needed rather than
15321         rs6000_secondary_memory_needed_ptr.
15322         (rs6000_secondary_memory_needed): Match hook interface.
15323         (rs6000_debug_secondary_memory_needed): Likewise.
15324         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete.
15325         * config/s390/s390.c (s390_secondary_memory_needed): New function.
15326         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15327         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete.
15328         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15329         (sparc_secondary_memory_needed): New function.
15330         * lra-constraints.c (check_and_process_move): Refer to
15331         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
15332         in comment.
15333         (curr_insn_transform): Likewise.
15334         (process_alt_operands): Use targetm.secondary_memory_needed
15335         instead of TARGET_SECONDARY_MEMORY_NEEDED.
15336         (check_secondary_memory_needed_p): Likewise.
15337         (choose_split_class): Likewise.
15338         * reload.c: Unconditionally include code that was previously
15339         conditional on SECONDARY_MEMORY_NEEDED.
15340         (push_secondary_reload): Use targetm.secondary_memory_needed
15341         instead of TARGET_SECONDARY_MEMORY_NEEDED.
15342         (push_reload): Likewise.
15343         * reload1.c: Unconditionally include code that was previously
15344         conditional on SECONDARY_MEMORY_NEEDED.
15345         (choose_reload_regs): Use targetm.secondary_memory_needed
15346         instead of TARGET_SECONDARY_MEMORY_NEEDED.
15347         (gen_reload): Likewise.
15348         * system.h (SECONDARY_MEMORY_NEEDED): Poison.
15349
15350 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
15351             Alan Hayward  <alan.hayward@arm.com>
15352             David Sherwood  <david.sherwood@arm.com>
15353
15354         * target.def (secondary_memory_needed_mode): New hook:
15355         * targhooks.c (default_secondary_memory_needed_mode): Declare.
15356         * targhooks.h (default_secondary_memory_needed_mode): New function.
15357         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with...
15358         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this.
15359         * doc/tm.texi: Regenerate.
15360         * lra-constraints.c (check_and_process_move): Use
15361         targetm.secondary_memory_needed_mode instead of
15362         TARGET_SECONDARY_MEMORY_NEEDED_MODE.
15363         (curr_insn_transform): Likewise.
15364         * reload.c (get_secondary_mem): Likewise.
15365         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15366         * config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New
15367         function.
15368         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
15369         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15370         * config/i386/i386.c (ix86_secondary_memory_needed_mode): New function.
15371         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
15372         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE):
15373         Delete.
15374         * config/powerpcspe/powerpcspe-protos.h
15375         (rs6000_secondary_memory_needed_mode): Delete.
15376         * config/powerpcspe/powerpcspe.c
15377         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
15378         (rs6000_secondary_memory_needed_mode): Make static.
15379         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15380         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode):
15381         Delete.
15382         * config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
15383         Redefine.
15384         (rs6000_secondary_memory_needed_mode): Make static.
15385         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15386         * config/s390/s390.c (s390_secondary_memory_needed_mode): New function.
15387         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
15388         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15389         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
15390         Redefine.
15391         (sparc_secondary_memory_needed_mode): New function.
15392         * system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison.
15393
15394 2017-09-13  Jackson Woodruff  <jackson.woodruff@arm.com>
15395
15396         * config/aarch64/constraints.md (Umq): New constraint.
15397         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>):
15398         Change to use Umq.
15399         (mov<mode>): Update condition.
15400
15401 2017-09-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15402
15403         * gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order
15404         when bitposition is the same.
15405
15406 2017-09-13  Richard Biener  <rguenther@suse.de>
15407
15408         * dwarf2out.c (output_die_symbol): Remove.
15409         (output_die): Do not output a DIEs symbol.
15410
15411 2017-09-13  Richard Biener  <rguenther@suse.de>
15412
15413         PR middle-end/82128
15414         * gimple-fold.c (gimple_fold_call): Update SSA name in-place to
15415         default-def to avoid breaking iterator update with the weird
15416         interaction with cgraph_update_edges_for_call_stmt_node.
15417
15418 2017-09-13  Richard Biener  <rguenther@suse.de>
15419
15420         * tree-cfg.c (verify_gimple_assign_binary): Add verification
15421         for WIDEN_SUM_EXPR, VEC_WIDEN_MULT_{HI,LO,EVEN,ODD}_EXPR,
15422         VEC_PACK_{TRUNC,SAT,FIX_TRUNC}_EXPR.
15423         (verify_gimple_assign_ternary): Add verification for DOT_PROD_EXPR.
15424
15425 2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
15426
15427         * config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
15428         Disable pc relative literal load irrespective of
15429         TARGET_FIX_ERR_A53_84341 for default.
15430
15431 2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
15432
15433         * config/sparc/sparc.c (output_return): Output the source location of
15434         the insn in the delay slot, if any.
15435         (output_sibcall): Likewise.
15436
15437 2017-09-12  H.J. Lu  <hongjiu.lu@intel.com>
15438
15439         PR driver/81498
15440         * common.opt (-static-pie): New alias.
15441         (shared): Negate static-pie.
15442         (-no-pie): Update help text.
15443         (-pie): Likewise.
15444         (static-pie): New option.
15445         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
15446         -static-pie support.
15447         (GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
15448         (LINK_EH_SPEC): Likewise.
15449         (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15450         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
15451         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
15452         * gcc.c (LINK_COMMAND_SPEC): Likewise.
15453         (init_gcc_specs): Likewise.
15454         (init_spec): Likewise.
15455         (display_help): Update help message for -pie.
15456         * doc/invoke.texi: Update -pie, -no-pie and -static.  Document
15457         -static-pie.
15458
15459 2017-09-12  Wilco Dijkstra  <wdijkstr@arm.com>
15460
15461         * config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'.
15462         (movdi_aarch64): Likewise.
15463         (movti_aarch64): Likewise.
15464
15465 2017-09-12 Simon Wright <simon@pushface.org>
15466
15467         PR target/80204
15468         * config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate
15469         calculation of the minor version, always output as 0.
15470
15471 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
15472
15473         PR target/82112
15474         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
15475         ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
15476         on it early, rather than manual conversion late.  For
15477         ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
15478         instead of performing manual conversion.
15479
15480 2017-09-12  Carl Love  <cel@us.ibm.com>
15481
15482         * config/rs6000/altivec.md (vec_widen_umult_even_v4si,
15483         vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw,
15484         vmulouw, vmulosw.
15485         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
15486         VMULOSW): Add definitions.
15487         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
15488         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
15489         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
15490         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
15491         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
15492
15493 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
15494
15495         * config/aarch64/aarch64.md (movdi_aarch64): Set load/store
15496         types correctly.
15497         (movti_aarch64): Likewise.
15498         (movdf_aarch64): Likewise.
15499         (movtf_aarch64): Likewise.
15500         (load_pairdi): Likewise.
15501         (store_pairdi): Likewise.
15502         (load_pairdf): Likewise.
15503         (store_pairdf): Likewise.
15504         (loadwb_pair<GPI:mode>_<P:mode>): Likewise.
15505         (storewb_pair<GPI:mode>_<P:mode>): Likewise.
15506         (ldr_got_small_<mode>): Likewise.
15507         (ldr_got_small_28k_<mode>): Likewise.
15508         (ldr_got_tiny): Likewise.
15509         * config/aarch64/iterators.md (ldst_sz): New.
15510         (ldpstp_sz): Likewise.
15511         * config/aarch64/thunderx.md (thunderx_storepair): Split store_8
15512         to store_16.
15513         (thunderx_load): Split load_8 to load_16.
15514         * config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split
15515         load_8 to load_16.
15516         (thunderx2t99_storepair_basic): Split store_8 to store_16.
15517         * config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16.
15518         (xgene1_store_pair): Split store_8 to store_16.
15519         * config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16.
15520         (falkor_st_0_st_sd): Split store_8 to store_16.
15521
15522 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
15523
15524         * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16
15525         and store1/2/3/4 to store_4/8/12/16.
15526         * config/aarch64/aarch64.md: Update for rename.
15527         * config/arm/arm.md: Likewise.: Likewise.
15528         * config/arm/arm.c: Likewise.
15529         * config/arm/thumb1.md: Likewise.
15530         * config/arm/thumb2.md: Likewise.
15531         * config/arm/vfp.md: Likewise.
15532         * config/arm/arm-generic.md: Likewise.
15533         * config/arm/arm1020e.md: Likewise.
15534         * config/arm/arm1026ejs.md: Likewise.
15535         * config/arm/arm1136jfs.md: Likewise.
15536         * config/arm/arm926ejs.md: Likewise.
15537         * config/arm/cortex-a15.md: Likewise.
15538         * config/arm/cortex-a17.md: Likewise.
15539         * config/arm/cortex-a5.md: Likewise.
15540         * config/arm/cortex-a53.md: Likewise.
15541         * config/arm/cortex-a57.md: Likewise.
15542         * config/arm/cortex-a7.md: Likewise.
15543         * config/arm/cortex-a8.md: Likewise.
15544         * config/arm/cortex-a9.md: Likewise.
15545         * config/arm/cortex-m4.md: Likewise.
15546         * config/arm/cortex-m7.md: Likewise.
15547         * config/arm/cortex-r4.md: Likewise.
15548         * config/arm/exynos-m1.md: Likewise.
15549         * config/arm/fa526.md: Likewise.
15550         * config/arm/fa606te.md: Likewise.
15551         * config/arm/fa626te.md: Likewise.
15552         * config/arm/fa726te.md: Likewise.
15553         * config/arm/fmp626.md: Likewise.
15554         * config/arm/iwmmxt.md: Likewise.
15555         * config/arm/ldmstm.md: Likewise.
15556         * config/arm/marvell-pj4.md: Likewise.
15557         * config/arm/xgene1.md: Likewise.
15558         * config/aarch64/thunderx.md: Likewise.
15559         * config/aarch64/thunderx2t99.md: Likewise.
15560         * config/aarch64/falkor.md: Likewise.
15561
15562 2017-09-12  Martin Liska  <mliska@suse.cz>
15563
15564         * attribs.c (private_lookup_attribute): New function.
15565         * attribs.h (private_lookup_attribute): Declared here.
15566         (lookup_attribute): Called from this place.
15567
15568 2017-09-12  Richard Biener  <rguenther@suse.de>
15569
15570         PR tree-optimization/82157
15571         * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
15572         stmts with side-effects.
15573
15574 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15575             Alan Hayward  <alan.hayward@arm.com>
15576             David Sherwood <david.sherwood@arm.com>
15577
15578         * target.def (hard_regno_nregs): New hook.
15579         (class_max_nregs): Refer to it instead of HARD_REGNO_NREGS.
15580         * targhooks.h (default_hard_regno_nregs): Declare.
15581         * targhooks.c (default_hard_regno_nregs): New function.
15582         * doc/tm.texi.in (HARD_REGNO_NREGS): Replace with...
15583         (TARGET_HARD_REGNO_NREGS): ...this hook.
15584         (HARD_REGNO_NREGS_HAS_PADDING): Update accordingly.
15585         (CLASS_MAX_NREGS): Likewise.
15586         * doc/tm.texi: Regenerate.
15587         * reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs
15588         instead of HARD_REGNO_NREGS.
15589         * rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than
15590         HARD_REGNO_NREGS in the comment.
15591         * config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete.
15592         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete.
15593         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static.
15594         Return an unsigned int.
15595         (TARGET_HARD_REGNO_NREGS): Redefine.
15596         * config/alpha/alpha.h (HARD_REGNO_NREGS): Delete.
15597         * config/arc/arc.h (HARD_REGNO_NREGS): Delete.
15598         * config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine.
15599         (arc_hard_regno_nregs): New function.
15600         * config/arm/arm.h (HARD_REGNO_NREGS): Delete.
15601         * config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine.
15602         (arm_hard_regno_nregs): New function.
15603         * config/avr/avr.h (HARD_REGNO_NREGS): Delete.
15604         * config/bfin/bfin.h (HARD_REGNO_NREGS): Delete.
15605         * config/bfin/bfin.c (bfin_hard_regno_nregs): New function.
15606         (TARGET_HARD_REGNO_NREGS): Redefine.
15607         * config/c6x/c6x.h (HARD_REGNO_NREGS): Delete.
15608         * config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs.
15609         (HARD_REGNO_NREGS): Delete.
15610         * config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine.
15611         (cr16_hard_regno_nregs): New function.
15612         (cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS.
15613         * config/cris/cris.h (HARD_REGNO_NREGS): Delete.
15614         * config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine.
15615         (cris_hard_regno_nregs): New function.
15616         * config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete.
15617         * config/fr30/fr30.h (HARD_REGNO_NREGS): Delete.
15618         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
15619         * config/frv/frv.h (HARD_REGNO_NREGS): Delete.
15620         (CLASS_MAX_NREGS): Remove outdated copy of documentation.
15621         * config/frv/frv-protos.h (frv_hard_regno_nregs): Delete.
15622         * config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine.
15623         (frv_hard_regno_nregs): Make static.  Take and return an
15624         unsigned int.
15625         (frv_class_max_nregs): Remove outdated copy of documentation.
15626         * config/ft32/ft32.h (HARD_REGNO_NREGS): Delete.
15627         * config/h8300/h8300.h (HARD_REGNO_NREGS): Delete.
15628         * config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete.
15629         * config/h8300/h8300.c (h8300_hard_regno_nregs): Delete.
15630         * config/i386/i386.h (HARD_REGNO_NREGS): Delete.
15631         * config/i386/i386.c (ix86_hard_regno_nregs): New function.
15632         (TARGET_HARD_REGNO_NREGS): Redefine.
15633         * config/ia64/ia64.h (HARD_REGNO_NREGS): Delete.
15634         (CLASS_MAX_NREGS): Update comment.
15635         * config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine.
15636         (ia64_hard_regno_nregs): New function.
15637         * config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete.
15638         * config/lm32/lm32.h (HARD_REGNO_NREGS): Delete.
15639         * config/m32c/m32c.h (HARD_REGNO_NREGS): Delete.
15640         * config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete.
15641         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return
15642         an unsigned int.
15643         (m32c_hard_regno_nregs): Likewise.  Make static.
15644         (TARGET_HARD_REGNO_NREGS): Redefine.
15645         * config/m32r/m32r.h (HARD_REGNO_NREGS): Delete.
15646         * config/m68k/m68k.h (HARD_REGNO_NREGS): Delete.
15647         * config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine.
15648         (m68k_hard_regno_nregs): New function.
15649         * config/mcore/mcore.h (HARD_REGNO_NREGS): Delete.
15650         * config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete.
15651         * config/mips/mips.h (HARD_REGNO_NREGS): Delete.
15652         * config/mips/mips-protos.h (mips_hard_regno_nregs): Delete.
15653         * config/mips/mips.c (mips_hard_regno_nregs): Make static.
15654         Take and return an unsigned int.
15655         (TARGET_HARD_REGNO_NREGS): Redefine.
15656         * config/mmix/mmix.h (HARD_REGNO_NREGS): Delete.
15657         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
15658         * config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete.
15659         * config/moxie/moxie.h (HARD_REGNO_NREGS): Delete.
15660         * config/msp430/msp430.h (HARD_REGNO_NREGS): Delete.
15661         * config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete.
15662         * config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine.
15663         (msp430_hard_regno_nregs): Make static.  Take and return an
15664         unsigned int.
15665         * config/nds32/nds32.h (HARD_REGNO_NREGS): Delete.
15666         * config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete.
15667         * config/nds32/nds32.c (nds32_hard_regno_nregs): Delete.
15668         (nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs.
15669         * config/nios2/nios2.h (HARD_REGNO_NREGS): Delete.
15670         * config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete.
15671         * config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function.
15672         (TARGET_HARD_REGNO_NREGS): Redefine.
15673         * config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to...
15674         (PA_HARD_REGNO_NREGS): ...this.
15675         * config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to...
15676         (PA_HARD_REGNO_NREGS): ...this.
15677         * config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine.
15678         (pa_hard_regno_nregs): New function.
15679         * config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete.
15680         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine.
15681         (pdp11_hard_regno_nregs): New function.
15682         * config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete.
15683         * config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine.
15684         (rs6000_hard_regno_nregs_hook): New function.
15685         * config/riscv/riscv.h (HARD_REGNO_NREGS): Delete.
15686         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
15687         * config/riscv/riscv.c (riscv_hard_regno_nregs): Make static.
15688         Take and return an unsigned int.  Move earlier in file.
15689         (TARGET_HARD_REGNO_NREGS): Redefine.
15690         * config/rl78/rl78.h (HARD_REGNO_NREGS): Delete.
15691         * config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete.
15692         * config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine.
15693         (rl78_hard_regno_nregs): Make static.  Take and return an
15694         unsigned int.
15695         * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete.
15696         * config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine.
15697         (rs6000_hard_regno_nregs_hook): New function.
15698         * config/rx/rx.h (HARD_REGNO_NREGS): Delete.
15699         * config/rx/rx.c (rx_hard_regno_nregs): New function.
15700         (TARGET_HARD_REGNO_NREGS): Redefine.
15701         * config/s390/s390.h (HARD_REGNO_NREGS): Delete.
15702         * config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs
15703         instead of HARD_REGNO_NREGS.
15704         (s390_hard_regno_nregs): New function.
15705         (s390_hard_regno_mode_ok): Add comment from s390.h.
15706         (TARGET_HARD_REGNO_NREGS): Redefine.
15707         * config/sh/sh.h (HARD_REGNO_NREGS): Delete.
15708         * config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine.
15709         (sh_hard_regno_nregs): New function.
15710         (sh_pass_in_reg_p): Use it.
15711         * config/sparc/sparc.h (HARD_REGNO_NREGS): Delete.
15712         * config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine.
15713         (sparc_hard_regno_nregs): New function.
15714         * config/spu/spu.h (HARD_REGNO_NREGS): Delete.
15715         * config/spu/spu.c (spu_hard_regno_nregs): New function.
15716         (spu_function_arg_advance): Use it, supplying a valid register number.
15717         (TARGET_HARD_REGNO_NREGS): Redefine.
15718         * config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete.
15719         * config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete.
15720         * config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete.
15721         * config/v850/v850.h (HARD_REGNO_NREGS): Delete.
15722         * config/vax/vax.h (HARD_REGNO_NREGS): Delete.
15723         * config/visium/visium.h (HARD_REGNO_NREGS): Delete.
15724         (CLASS_MAX_NREGS): Remove copy of old documentation.
15725         * config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine.
15726         (visium_hard_regno_nregs): New function.
15727         (visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS.
15728         * config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete.
15729         * config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine.
15730         xtensa_hard_regno_nregs): New function.
15731         * system.h (HARD_REGNO_NREGS): Poison.
15732
15733 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15734
15735         * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use
15736         hard_regno_nregs instead of HARD_REGNO_NREGS.
15737         (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
15738         * config/c6x/c6x.c (c6x_expand_prologue): Likewise.
15739         (c6x_expand_epilogue): Likewise.
15740         * config/frv/frv.c (frv_alloc_temp_reg): Likewise.
15741         (frv_read_iacc_argument): Likewise.
15742         * config/sh/sh.c: Include regs.h.
15743         (sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
15744         (regs_used): Likewise.
15745         (output_stack_adjust): Likewise.
15746         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise.
15747         * expmed.c: Include regs.h.
15748         (store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
15749         * ree.c: Include regs.h.
15750         (combine_reaching_defs): Use hard_regno_nregs instead of
15751         HARD_REGNO_NREGS.
15752         (add_removable_extension): Likewise.
15753
15754 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15755
15756         * regs.h (hard_regno_nregs): Turn into a function.
15757         (end_hard_regno): Update accordingly.
15758         * caller-save.c (setup_save_areas): Likewise.
15759         (save_call_clobbered_regs): Likewise.
15760         (replace_reg_with_saved_mem): Likewise.
15761         (insert_restore): Likewise.
15762         (insert_save): Likewise.
15763         * combine.c (can_change_dest_mode): Likewise.
15764         (move_deaths): Likewise.
15765         (distribute_notes): Likewise.
15766         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
15767         * config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
15768         (rs6000_split_multireg_move): Likewise.
15769         (rs6000_register_move_cost): Likewise.
15770         (rs6000_memory_move_cost): Likewise.
15771         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
15772         (rs6000_split_multireg_move): Likewise.
15773         (rs6000_register_move_cost): Likewise.
15774         (rs6000_memory_move_cost): Likewise.
15775         * cselib.c (cselib_reset_table): Likewise.
15776         (cselib_lookup_1): Likewise.
15777         * emit-rtl.c (set_mode_and_regno): Likewise.
15778         * function.c (aggregate_value_p): Likewise.
15779         * ira-color.c (setup_profitable_hard_regs): Likewise.
15780         (check_hard_reg_p): Likewise.
15781         (calculate_saved_nregs): Likewise.
15782         (assign_hard_reg): Likewise.
15783         (improve_allocation): Likewise.
15784         (calculate_spill_cost): Likewise.
15785         * ira-emit.c (modify_move_list): Likewise.
15786         * ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
15787         (ira_hard_reg_in_set_p): Likewise.
15788         * ira.c (setup_reg_mode_hard_regset): Likewise.
15789         (clarify_prohibited_class_mode_regs): Likewise.
15790         (check_allocation): Likewise.
15791         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15792         (lra_setup_reg_renumber): Likewise.
15793         (setup_try_hard_regno_pseudos): Likewise.
15794         (spill_for): Likewise.
15795         (assign_hard_regno): Likewise.
15796         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
15797         * lra-constraints.c (in_class_p): Likewise.
15798         (lra_constraint_offset): Likewise.
15799         (simplify_operand_subreg): Likewise.
15800         (lra_constraints): Likewise.
15801         (split_reg): Likewise.
15802         (split_if_necessary): Likewise.
15803         (invariant_p): Likewise.
15804         (inherit_in_ebb): Likewise.
15805         * lra-lives.c (process_bb_lives): Likewise.
15806         * lra-remat.c (reg_overlap_for_remat_p): Likewise.
15807         (get_hard_regs): Likewise.
15808         (do_remat): Likewise.
15809         * lra-spills.c (assign_spill_hard_regs): Likewise.
15810         * mode-switching.c (create_pre_exit): Likewise.
15811         * postreload.c (reload_combine_recognize_pattern): Likewise.
15812         * recog.c (peep2_find_free_register): Likewise.
15813         * regcprop.c (kill_value_regno): Likewise.
15814         (set_value_regno): Likewise.
15815         (copy_value): Likewise.
15816         (maybe_mode_change): Likewise.
15817         (find_oldest_value_reg): Likewise.
15818         (copyprop_hardreg_forward_1): Likewise.
15819         * regrename.c (check_new_reg_p): Likewise.
15820         (regrename_do_replace): Likewise.
15821         * reload.c (push_reload): Likewise.
15822         (combine_reloads): Likewise.
15823         (find_dummy_reload): Likewise.
15824         (operands_match_p): Likewise.
15825         (find_reloads): Likewise.
15826         (find_equiv_reg): Likewise.
15827         (reload_adjust_reg_for_mode): Likewise.
15828         * reload1.c (count_pseudo): Likewise.
15829         (count_spilled_pseudo): Likewise.
15830         (find_reg): Likewise.
15831         (clear_reload_reg_in_use): Likewise.
15832         (free_for_value_p): Likewise.
15833         (allocate_reload_reg): Likewise.
15834         (choose_reload_regs): Likewise.
15835         (reload_adjust_reg_for_temp): Likewise.
15836         (emit_reload_insns): Likewise.
15837         (delete_output_reload): Likewise.
15838         * rtlanal.c (subreg_get_info): Likewise.
15839         * sched-deps.c (sched_analyze_reg): Likewise.
15840         * sel-sched.c (init_regs_for_mode): Likewise.
15841         (mark_unavailable_hard_regs): Likewise.
15842         (choose_best_reg_1): Likewise.
15843         (verify_target_availability): Likewise.
15844         * valtrack.c (dead_debug_insert_temp): Likewise.
15845         * var-tracking.c (track_loc_p): Likewise.
15846         (emit_note_insn_var_location): Likewise.
15847         * varasm.c (make_decl_rtl): Likewise.
15848         * reginfo.c (choose_hard_reg_mode): Likewise.
15849         (init_reg_modes_target): Refer directly to
15850         this_target_regs->x_hard_regno_nregs.
15851
15852 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15853
15854         * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
15855         instead of hard_regno_nregs.
15856
15857 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15858
15859         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
15860         end_hard_regno instead of hard_regno_nregs.
15861         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
15862         * config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise.
15863         * config/visium/visium.c (visium_hard_regno_mode_ok): Likewise.
15864         * ira-color.c (improve_allocation): Likewise.
15865         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15866         * lra-lives.c (mark_regno_live): Likewise.
15867         (mark_regno_dead): Likewise.
15868         * lra-remat.c (operand_to_remat): Likewise.
15869         * lra.c (collect_non_operand_hard_regs): Likewise.
15870         * postreload.c (reload_combine_note_store): Likewise.
15871         (move2add_valid_value_p): Likewise.
15872         * reload.c (regno_clobbered_p): Likewise.
15873
15874 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15875
15876         * config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of
15877         hard_regno_nregs.
15878         * config/v850/v850.c (v850_reorg): Likewise.
15879         * reload.c (refers_to_regno_for_reload_p): Likewise.
15880         (find_equiv_reg): Likewise.
15881         * reload1.c (reload_reg_reaches_end_p): Likewise.
15882
15883 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15884
15885         * caller-save.c (add_used_regs): Use REG_NREGS instead of
15886         hard_regno_nregs.
15887         * config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise.
15888         * config/arm/arm.c (output_move_neon): Likewise.
15889         (arm_attr_length_move_neon): Likewise.
15890         (neon_split_vcombine): Likewise.
15891         * config/c6x/c6x.c (c6x_mark_reg_read): Likewise.
15892         (c6x_mark_reg_written): Likewise.
15893         (c6x_dwarf_register_span): Likewise.
15894         * config/i386/i386.c (ix86_save_reg): Likewise.
15895         * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
15896         (rws_access_reg): Likewise.
15897         * config/s390/s390.c (s390_call_saved_register_used): Likewise.
15898         * mode-switching.c (create_pre_exit): Likewise.
15899         * ree.c (combine_reaching_defs): Likewise.
15900         (add_removable_extension): Likewise.
15901         * regcprop.c (find_oldest_value_reg): Likewise.
15902         (copyprop_hardreg_forward_1): Likewise.
15903         * reload.c (reload_inner_reg_of_subreg): Likewise.
15904         (push_reload): Likewise.
15905         (combine_reloads): Likewise.
15906         (find_dummy_reload): Likewise.
15907         (reload_adjust_reg_for_mode): Likewise.
15908         * reload1.c (find_reload_regs): Likewise.
15909         (forget_old_reloads_1): Likewise.
15910         (reload_reg_free_for_value_p): Likewise.
15911         (reload_adjust_reg_for_temp): Likewise.
15912         (emit_reload_insns): Likewise.
15913         (delete_output_reload): Likewise.
15914         * sel-sched.c (choose_best_reg_1): Likewise.
15915         (choose_best_pseudo_reg): Likewise.
15916
15917 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15918             Alan Hayward  <alan.hayward@arm.com>
15919             David Sherwood <david.sherwood@arm.com>
15920
15921         * defaults.h (SLOW_UNALIGNED_ACCESS): Delete.
15922         * target.def (slow_unaligned_access): New hook.
15923         * targhooks.h (default_slow_unaligned_access): Declare.
15924         * targhooks.c (default_slow_unaligned_access): New function.
15925         * doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with...
15926         (TARGET_SLOW_UNALIGNED_ACCESS): ...this.
15927         * doc/tm.texi: Regenerate.
15928         * config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete.
15929         * config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete.
15930         * config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out
15931         definition.
15932         * config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete.
15933         * config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS):
15934         Redefine.
15935         (rs6000_slow_unaligned_access): New function.
15936         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
15937         (expand_block_compare): Likewise.
15938         (expand_strn_compare): Likewise.
15939         (rs6000_rtx_costs): Likewise.
15940         * config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete.
15941         (riscv_slow_unaligned_access): Likewise.
15942         * config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to...
15943         (riscv_slow_unaligned_access_p): ...this and make static.
15944         (riscv_option_override): Update accordingly.
15945         (riscv_slow_unaligned_access): New function.
15946         (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
15947         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete.
15948         * config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
15949         (rs6000_slow_unaligned_access): New function.
15950         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
15951         (rs6000_rtx_costs): Likewise.
15952         * config/rs6000/rs6000-string.c (expand_block_compare)
15953         (expand_strn_compare): Use targetm.slow_unaligned_access instead
15954         of SLOW_UNALIGNED_ACCESS.
15955         * config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete.
15956         * config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete.
15957         * calls.c (expand_call): Use targetm.slow_unaligned_access instead
15958         of SLOW_UNALIGNED_ACCESS.
15959         * expmed.c (simple_mem_bitfield_p): Likewise.
15960         * expr.c (alignment_for_piecewise_move): Likewise.
15961         (emit_group_load_1): Likewise.
15962         (emit_group_store): Likewise.
15963         (copy_blkmode_from_reg): Likewise.
15964         (emit_push_insn): Likewise.
15965         (expand_assignment): Likewise.
15966         (store_field): Likewise.
15967         (expand_expr_real_1): Likewise.
15968         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
15969         * lra-constraints.c (simplify_operand_subreg): Likewise.
15970         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
15971         * gimple-ssa-store-merging.c: Likewise in block comment at start
15972         of file.
15973         * tree-ssa-strlen.c: Include target.h.
15974         (handle_builtin_memcmp): Use targetm.slow_unaligned_access instead
15975         of SLOW_UNALIGNED_ACCESS.
15976         * system.h (SLOW_UNALIGNED_ACCESS): Poison.
15977
15978 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15979
15980         PR rtl-optimization/82185
15981         * expmed.c (emit_store_flag_int): Only test tem if it has been
15982         initialized.
15983
15984 2017-09-12  Richard Biener  <rguenther@suse.de>
15985
15986         PR middle-end/82149
15987         * match.pd ((FTYPE) N CMP CST): Fix typo.
15988
15989 2017-09-12  Simon Atanasyan  <simon.atanasyan@imgtec.com>
15990
15991         * config/mips/mips.c (mips_attribute_table): Add 'short_call'
15992         attribute.
15993         (mips_near_type_p): Add 'short_call' attribute as a synonym
15994         for 'near'.
15995         * doc/extend.texi (short_call): Document new function attribute.
15996
15997 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
15998
15999         PR target/82112
16000         * c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
16001         assertion check that in the condition.
16002         (get_atomic_generic_size): Likewise.  Before testing if parameter
16003         has pointer type, if it has array type, call for C++
16004         default_conversion to perform array-to-pointer conversion.
16005
16006 2017-09-12  Richard Biener  <rguenther@suse.de>
16007
16008         * tree-vect-generic.c (expand_vector_operations_1): Do nothing
16009         for operations we cannot scalarize.
16010
16011 2017-09-12  Aldy Hernandez  <aldyh@redhat.com>
16012
16013         * tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
16014         vectors heap vectors.  Clean up comments.
16015         Make visited_bbs a reference.
16016         (profitable_jump_thread_path): Make GC
16017         vectors heap vectors.  Clean up comments.
16018         Misc cleanups.
16019         (convert_and_register_jump_thread_path): Make GC vectors heap
16020         vectors.
16021         (check_subpath_and_update_thread_path): Same.  Clean up comments.
16022         Make visited_bbs a reference.
16023         (handle_phi): Abstract common code to to
16024         register_jump_thread_path_if_profitable.
16025         Rename VAR_BB to DEF_BB.
16026         Update comments.
16027         Make GC vectors heap vectors.
16028         Make visited_bbs a reference.
16029         (handle_assignment): Same.
16030         (register_jump_thread_path_if_profitable): New.
16031         (fsm_find_control_statement_thread_paths): Rename VAR_BB to
16032         DEF_BB.
16033         Make GC vectors heap vectors.  Clean up comments.
16034         Make visited_bbs a reference.
16035         (find_jump_threads_backwards): Make visited_bbs live in the stack.
16036         * tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in
16037         comment.
16038
16039 2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
16040
16041         PR target/82181
16042         * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
16043         words of E_DImode object are reachable by xtensa_uimm8x4 access.
16044
16045 2017-09-11  Vidya Praveen  <vidyapraveen@arm.com>
16046
16047         Revert r251800 and r251799.
16048
16049 2017-09-11  Martin Jambor  <mjambor@suse.cz>
16050
16051         PR hsa/82119
16052         * hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in
16053         arguments in advance.
16054         * hsa-regalloc.c (naive_process_phi): New parameter predecessors,
16055         use it to find predecessor edges.
16056         (naive_outof_ssa): Collect vector of predecessors.
16057
16058 2017-09-08  Jason Merrill  <jason@redhat.com>
16059
16060         PR c++/70029 - ICE with ref-qualifier and -flto
16061         * langhooks.h (struct lang_hooks_for_types): Add
16062         copy_lang_qualifiers.
16063         * attribs.c (build_type_attribute_qual_variant): Use it.
16064         * langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to
16065         NULL.
16066         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
16067         * tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check.
16068
16069 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
16070
16071         PR target/81988
16072         * config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32.
16073         (*mulsi3_sp64): New instruction.
16074         (mulsi3): New expander.
16075
16076 2017-09-08  Uros Bizjak  <ubizjak@gmail.com>
16077
16078         * config/alpha/alpha.c (alpha_print_operand) <case 'S'>: Remove.
16079
16080 2017-09-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
16081
16082         * sancov.c: Include memmodel.h.
16083
16084 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
16085
16086         PR target/80897
16087         * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Deal with too
16088         large offsets.
16089
16090 2017-09-07  Carl Love  <cel@us.ibm.com>
16091
16092         * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to
16093         the sldi instruction.
16094
16095 2017-09-07  David Edelsohn  <dje.gcc@gmail.com>
16096
16097         * sancov.c: Include tm_p.h.
16098
16099 2017-09-07  Jakub Jelinek  <jakub@redhat.com>
16100
16101         PR target/81979
16102         * output.h (switch_to_other_text_partition): New declaration.
16103         * varasm.c (switch_to_other_text_partition): New function.
16104         * config/rs6000/rs6000.c (uses_TOC): Return 2 if
16105         NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn.
16106         (rs6000_elf_declare_function_name): If uses_TOC returned 2, switch
16107         to the other text partition before emitting LCL label and switch back
16108         after emitting the word after it.
16109
16110 2017-09-07  Richard Biener  <rguenther@suse.de>
16111
16112         * passes.def (pass_split_crit_edges): Remove instance before PRE.
16113         * tree-ssa-pre.c (pass_pre::execute): Instead manually split
16114         critical edges here, after loop init.
16115         (pass_data_pre): Remove PROP_no_crit_edges flags.
16116         * tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize
16117         for valueization of call args to avoid leaking VN_TOP.
16118         (visit_use): Assert we do not visit default defs.
16119         (init_scc_vn): Use build_decl for VN_TOP to make name nicer.
16120         Use error_mark_node to more easily detect leaking VN_TOP.
16121         All default-defs are varying, not VN_TOP.  Mark them visited.
16122         (run_scc_vn): Make code match comment.
16123
16124 2017-09-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
16125
16126         * config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete
16127         OPTION_MASK_FLOAT128_KEYWORD.
16128         (POWERPC_MASKS): Likewise.
16129         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete
16130         support for the -mfloat128-type option, and make -mfloat128
16131         default on PowerPC Linux systems.  Define or undefine
16132         __FLOAT128__ and  __FLOAT128_HARDWARE__ for the current options.
16133         Define __float128 to be __ieee128 if IEEE 128-bit support is
16134         enabled, or undefine it.
16135         (rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here.
16136         Delete defining __FLOAT128_TYPE__.
16137         * config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the
16138         -mfloat128-type option and make -mfloat128 default on PowerPC
16139         Linux systems.
16140         (TARGET_FLOAT128_TYPE): Likewise.
16141         (-mfloat128-type): Likewise.
16142         * config/rs6000/rs6000.c (rs6000_option_override_internal):
16143         Delete the -mfloat128-type option and make -mfloat128 default on
16144         PowerPC Linux systems.  Always use __ieee128 to be the keyword for
16145         the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE
16146         128-bit floating point is enabled.  Change tests from using
16147         -mfloat128-type to -mfloat128.
16148         (rs6000_mangle_type): Use the correct mangling for the __float128
16149         type even if normal long double is restricted to 64-bits.
16150         (floatn_mode): Enable the _Float128 type by default on VSX Linux
16151         systems.
16152         * config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete.
16153         (MASK_FLOAT128_KEYWORD): Define new shortcut macro.
16154         (RS6000BTM_FLOAT128): Define in terms of -mfloat128, not
16155         -mfloat128-type.
16156         * doc/invoke.texi (RS/6000 and PowerPC Options): Update
16157         documentation for -mfloat128.
16158
16159 2017-09-06  Olivier Hainque  <hainque@adacore.com>
16160
16161         * config.gcc (powerpc-wrs-vxworksspe): Now match as vxworks*spe.
16162
16163 2017-09-06  Wish Wu  <wishwu007@gmail.com>
16164             Jakub Jelinek  <jakub@redhat.com>
16165
16166         * asan.c (initialize_sanitizer_builtins): Add
16167         BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16,
16168         BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64,
16169         BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and
16170         BT_FN_VOID_UINT64_PTR variables.
16171         * builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type.
16172         (BT_FN_VOID_UINT16_UINT16): Likewise.
16173         (BT_FN_VOID_UINT32_UINT32): Likewise.
16174         (BT_FN_VOID_FLOAT_FLOAT): Likewise.
16175         (BT_FN_VOID_DOUBLE_DOUBLE): Likewise.
16176         (BT_FN_VOID_UINT64_PTR): Likewise.
16177         * common.opt (flag_sanitize_coverage): New variable.
16178         (fsanitize-coverage=trace-pc): Remove.
16179         (fsanitize-coverage=): Add.
16180         * flag-types.h (enum sanitize_coverage_code): New enum.
16181         * fold-const.c (fold_range_test): Disable non-short-circuit
16182         optimization if flag_sanitize_coverage.
16183         (fold_truth_andor): Likewise.
16184         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
16185         * opts.c (COVERAGE_SANITIZER_OPT): Define.
16186         (coverage_sanitizer_opts): New array.
16187         (get_closest_sanitizer_option): Add OPTS argument, handle also
16188         OPT_fsanitize_coverage_.
16189         (parse_sanitizer_options): Adjusted to also handle
16190         OPT_fsanitize_coverage_.
16191         (common_handle_option): Add OPT_fsanitize_coverage_.
16192         * sancov.c (instrument_comparison, instrument_switch): New function.
16193         (sancov_pass): Add trace-cmp support.
16194         * sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1,
16195         BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4,
16196         BUILT_IN_SANITIZER_COV_TRACE_CMP8,
16197         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1,
16198         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2,
16199         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4,
16200         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8,
16201         BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD,
16202         BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins.
16203         * doc/invoke.texi: Document -fsanitize-coverage=trace-cmp.
16204
16205 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
16206
16207         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
16208         error.  Only quit immediately if parsing is complete.
16209         (BEGIN): Initialize fatal_err and parse_done.
16210         (begin fpu, end fpu): Check number of arguments.
16211         (begin arch, end arch): Likewise.
16212         (begin cpu, end cpu): Likewise.
16213         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
16214         (optalias): Likewise.
16215
16216 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
16217
16218         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
16219         * config/arm/arm-isa.h: Delete.  Move definitions to ...
16220         * arm-cpus.in: ... here.  Use new feature and fgroup values.
16221         * config/arm/arm.c (arm_option_override): Use lower case for feature
16222         bit names.
16223         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
16224         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
16225         * config/arm/parsecpu.awk (END): Add new command 'isa'.
16226         (isa_pfx): Delete.
16227         (print_isa_bits_for): New function.
16228         (gen_isa): New function.
16229         (gen_comm_data): Use print_isa_bits_for.
16230         (define feature): New keyword.
16231         (define fgroup): New keyword.
16232         * config/arm/t-arm (OPTIONS_H_EXTRA): Add arm-isa.h
16233         (arm-isa.h): Add rule to generate file.
16234         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
16235         case for feature bit names.
16236
16237 2017-09-06  Richard Biener  <rguenther@suse.de>
16238
16239         * tree-ssa-pre.c (NECESSARY): Remove.
16240         (create_expression_by_pieces): Do not touch pass-local flags.
16241         (insert_into_preds_of_block): Likewise.
16242         (do_pre_regular_insertion): Likewise.
16243         (eliminate_insert): Likewise.
16244         (eliminate_dom_walker::before_dom_children): Likewise.
16245         (fini_eliminate): Do not look at inserted_exprs.
16246         (mark_operand_necessary): Remove.
16247         (remove_dead_inserted_code): Replace with simple work-list
16248         algorithm based on inserted_exprs and SSA uses.
16249         (pass_pre::execute): Re-order fini_eliminate and
16250         remove_dead_inserted_code.
16251
16252 2017-09-06  Olivier Hainque  <hainque@adacore.com>
16253
16254         * config/powerpcspe/vxworks.h (VXCPU_FOR_8548): Correct definition
16255         for VxWorks 7.  Adjust surrounding comments.
16256
16257 2017-09-06  Richard Biener  <rguenther@suse.de>
16258
16259         * gimple-ssa-strength-reduction.c
16260         (find_candidates_dom_walker::before_dom_children): Also allow
16261         pointer types.
16262
16263 2017-09-06  Richard Biener  <rguenther@suse.de>
16264
16265         PR tree-optimization/82108
16266         * tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment
16267         for gap in the non-permutation SLP case.
16268
16269 2017-09-06  Martin Jambor  <mjambor@suse.cz>
16270
16271         PR tree-optimization/82078
16272         * tree-sra.c (sort_and_splice_var_accesses): Move call to
16273         add_access_to_work_queue...
16274         (build_accesses_from_assign): ...here.
16275         (propagate_all_subaccesses): Make sure racc is the group
16276         representative, if there is one.
16277
16278 2017-09-06  Jakub Jelinek  <jakub@redhat.com>
16279
16280         PR middle-end/82095
16281         * varasm.c (categorize_decl_for_section): Use SECCAT_TBSS for TLS vars with
16282         NULL DECL_INITIAL.
16283
16284 2017-09-06  Richard Biener  <rguenther@suse.de>
16285
16286         * gimple-ssa-strength-reduction.c
16287         (find_candidates_dom_walker::before_doom_children): Use a
16288         type and not a mode check.
16289
16290 2017-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
16291
16292         PR target/77308
16293         * config/arm/predicates.md (arm_general_adddi_operand): Create new
16294         non-vfp predicate.
16295         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Use new predicates.
16296
16297 2017-09-05  Jeff Law  <law@redhat.com>
16298
16299         PR tree-optimization/64910
16300         * tree-ssa-reassoc.c (reassociate_bb): Restrict last change to
16301         cases where we have 3 or more operands.
16302
16303 2017-09-05  Jakub Jelinek  <jakub@redhat.com>
16304
16305         PR middle-end/81768
16306         * omp-low.c (lower_omp_for): Recompute tree invariant if
16307         gimple_omp_for_initial/final is ADDR_EXPR.
16308
16309         PR middle-end/81768
16310         * omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR
16311         into gimple val before gimplification fo the COND_EXPR.
16312
16313 2017-09-05  Aldy Hernandez  <aldyh@redhat.com>
16314
16315         * tree-ssa-threadupdate.c (duplicate_thread_path): Remove unused
16316         REGION_COPY argument.
16317         (thread_through_all_blocks): Remove unused argument to
16318         duplicate_thread_path.
16319
16320 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16321             Alan Hayward  <alan.hayward@arm.com>
16322             David Sherwood  <david.sherwood@arm.com>
16323
16324         * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
16325         Take a scalar_mode rather than a machine_mode.
16326         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
16327         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Likewise.
16328         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
16329         (aarch64_gen_adjusted_ldpstp): Likewise.
16330         (aarch64_expand_vector_init): Use scalar_mode instead of machine_mode.
16331
16332 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16333             Alan Hayward  <alan.hayward@arm.com>
16334             David Sherwood  <david.sherwood@arm.com>
16335
16336         * config/aarch64/aarch64-protos.h (aarch64_is_extend_from_extract):
16337         Take a scalar_int_mode instead of a machine_mode.
16338         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
16339         (aarch64_output_scalar_simd_mov_immediate): Likewise.
16340         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
16341         (aarch64_simd_attr_length_rglist): Delete.
16342         * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Take
16343         a scalar_int_mode instead of a machine_mode.
16344         (aarch64_add_offset): Likewise.
16345         (aarch64_internal_mov_immediate): Likewise
16346         (aarch64_add_constant_internal): Likewise.
16347         (aarch64_add_constant): Likewise.
16348         (aarch64_movw_imm): Likewise.
16349         (aarch64_rtx_arith_op_extract_p): Likewise.
16350         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
16351         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
16352         Remove assert that the mode isn't a vector.
16353         (aarch64_output_scalar_simd_mov_immediate): Likewise.
16354         (aarch64_expand_mov_immediate): Update calls after above changes.
16355         (aarch64_output_casesi): Use as_a <scalar_int_mode>.
16356         (aarch64_and_bitmask_imm): Check for scalar integer modes.
16357         (aarch64_move_imm): Likewise.
16358         (aarch64_can_const_movi_rtx_p): Likewise.
16359         (aarch64_strip_extend): Likewise.
16360         (aarch64_extr_rtx_p): Likewise.
16361         (aarch64_rtx_costs): Likewise, using wode_mode as the mode of
16362         a CONST_INT when the mode parameter is VOIDmode.
16363         (aarch64_float_const_rtx_p): Use scalar_int_mode for a temporary.
16364
16365 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16366
16367         * machmode.h (bitwise_mode_for_mode): Return opt_mode.
16368         * stor-layout.c (bitwise_mode_for_mode): Likewise.
16369         (bitwise_type_for_mode): Update accordingly.
16370
16371 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16372
16373         * stor-layout.h (mode_for_size_tree): Return an opt_mode.
16374         * stor-layout.c (mode_for_size_tree): Likewise.
16375         (mode_for_array): Update accordingly.
16376         (layout_decl): Likewise.
16377         (compute_record_mode): Likewise.  Only set the mode once.
16378
16379 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16380
16381         * target.def (get_mask_mode): Change return type to opt_mode.
16382         Expand commentary.
16383         * doc/tm.texi: Regenerate.
16384         * targhooks.h (default_get_mask_mode): Return an opt_mode.
16385         * targhooks.c (default_get_mask_mode): Likewise.
16386         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
16387         * optabs-query.c (can_vec_mask_load_store_p): Update use of
16388         targetm.get_mask_mode.
16389         * tree.c (build_truth_vector_type): Likewise.
16390
16391 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16392
16393         * machmode.h (mode_for_vector): Return an opt_mode.
16394         * stor-layout.c (mode_for_vector): Likewise.
16395         (mode_for_int_vector): Update accordingly.
16396         (layout_type): Likewise.
16397         * config/i386/i386.c (emit_memmov): Likewise.
16398         (ix86_expand_set_or_movmem): Likewise.
16399         (ix86_expand_vector_init): Likewise.
16400         (ix86_get_mask_mode): Likewise.
16401         * config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1):
16402         Likewise.
16403         * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise.
16404         * expmed.c (extract_bit_field_1): Likewise.
16405         * expr.c (expand_expr_real_2): Likewise.
16406         * optabs-query.c (can_vec_perm_p): Likewise.
16407         (can_vec_mask_load_store_p): Likewise.
16408         * optabs.c (expand_vec_perm): Likewise.
16409         * targhooks.c (default_get_mask_mode): Likewise.
16410         * tree-vect-stmts.c (vectorizable_store): Likewise.
16411         (vectorizable_load): Likewise.
16412         (get_vectype_for_scalar_type_and_size): Likewise.
16413
16414 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16415
16416         * machmode.h (mode_for_int_vector): New function.
16417         * stor-layout.c (mode_for_int_vector): Likewise.
16418         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use it.
16419         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Likewise.
16420         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
16421         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
16422         (s390_expand_vcond): Likewise.
16423
16424 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16425
16426         * machmode.h (opt_machine_mode): New type.
16427         (opt_mode<T>): Allow construction from anything that can be
16428         converted to a T.
16429         (is_a, as_a, dyn_cast): Add overloads for opt_mode.
16430         (mode_for_size): Return an opt_machine_mode.
16431         * stor-layout.c (mode_for_size): Likewise.
16432         (mode_for_size_tree): Update call accordingly.
16433         (bitwise_mode_for_mode): Likewise.
16434         (make_fract_type): Likewise.
16435         (make_accum_type): Likewise.
16436         * caller-save.c (replace_reg_with_saved_mem): Update call
16437         accordingly.
16438         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
16439         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
16440         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
16441         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
16442         * expmed.c (extract_bit_field_1): Likewise.
16443         * reload.c (get_secondary_mem): Likewise.
16444         * varasm.c (assemble_integer): Likewise.
16445         * lower-subreg.c (simplify_subreg_concatn): Likewise.  Move
16446         early-out.
16447
16448 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16449
16450         * machmode.h (decimal_float_mode_for_size): New function.
16451         * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size.
16452         (REAL_VALUE_TO_TARGET_DOUBLE): Likewise.
16453         (REAL_VALUE_TO_TARGET_SINGLE): Likewise.
16454         (REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size.
16455         (REAL_VALUE_TO_TARGET_DECIMAL64): Likewise.
16456         (REAL_VALUE_TO_TARGET_DECIMAL32): Likewise.
16457
16458 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16459
16460         * builtins.c (expand_builtin_powi): Use int_mode_for_size.
16461         (get_builtin_sync_mode): Likewise.
16462         (expand_ifn_atomic_compare_exchange): Likewise.
16463         (expand_builtin_atomic_clear): Likewise.
16464         (expand_builtin_atomic_test_and_set): Likewise.
16465         (fold_builtin_atomic_always_lock_free): Likewise.
16466         * calls.c (compute_argument_addresses): Likewise.
16467         (emit_library_call_value_1): Likewise.
16468         (store_one_arg): Likewise.
16469         * combine.c (combine_instructions): Likewise.
16470         * config/aarch64/aarch64.c (aarch64_function_value): Likewise.
16471         * config/arm/arm.c (arm_function_value): Likewise.
16472         (aapcs_allocate_return_reg): Likewise.
16473         * config/c6x/c6x.c (c6x_expand_movmem): Likewise.
16474         * config/i386/i386.c (construct_container): Likewise.
16475         (ix86_gimplify_va_arg): Likewise.
16476         (ix86_expand_sse_cmp): Likewise.
16477         (emit_memmov): Likewise.
16478         (emit_memset): Likewise.
16479         (expand_small_movmem_or_setmem): Likewise.
16480         (ix86_expand_pextr): Likewise.
16481         (ix86_expand_pinsr): Likewise.
16482         * config/lm32/lm32.c (lm32_block_move_inline): Likewise.
16483         * config/microblaze/microblaze.c (microblaze_block_move_straight):
16484         Likewise.
16485         * config/mips/mips.c (mips_function_value_1) Likewise.
16486         (mips_block_move_straight): Likewise.
16487         (mips_expand_ins_as_unaligned_store): Likewise.
16488         * config/powerpcspe/powerpcspe.c
16489         (rs6000_darwin64_record_arg_advance_flush): Likewise.
16490         (rs6000_darwin64_record_arg_flush): Likewise.
16491         * config/rs6000/rs6000.c
16492         (rs6000_darwin64_record_arg_advance_flush): Likewise.
16493         (rs6000_darwin64_record_arg_flush): Likewise.
16494         * config/sparc/sparc.c (sparc_function_arg_1): Likewise.
16495         (sparc_function_value_1): Likewise.
16496         * config/spu/spu.c (adjust_operand): Likewise.
16497         (spu_emit_branch_or_set): Likewise.
16498         (arith_immediate_p): Likewise.
16499         * emit-rtl.c (gen_lowpart_common): Likewise.
16500         * expr.c (expand_expr_real_1): Likewise.
16501         * function.c (assign_parm_setup_block): Likewise.
16502         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
16503         * reload1.c (alter_reg): Likewise.
16504         * stor-layout.c (mode_for_vector): Likewise.
16505         (layout_type): Likewise.
16506
16507 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16508
16509         * config/spu/spu.c (exp2_immediate_p): Use int_mode_for_mode.
16510         (spu_convert_move): Likewise.
16511         * lower-subreg.c (resolve_simple_move): Likewise.
16512
16513 2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
16514
16515         PR target/81833
16516         * config/rs6000/altivec.md (altivec_vsum2sws): Convert from a
16517         define_insn to a define_expand.
16518         (altivec_vsum2sws_direct): New define_insn.
16519         (altivec_vsumsws): Convert from a define_insn to a define_expand.
16520
16521 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
16522
16523         * config/arm/arm.c (arm_option_params_internal): Improve setting of
16524         max_insns_skipped.
16525
16526 2017-09-05  H.J. Lu  <hongjiu.lu@intel.com>
16527
16528         PR target/59501
16529         PR target/81624
16530         PR target/81769
16531         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
16532         realign stack if stack alignment needed is less than incoming
16533         stack boundary.
16534
16535 2017-09-05  Marek Polacek  <polacek@redhat.com>
16536
16537         PR sanitizer/82072
16538         * convert.c (convert_to_integer_1) <case NEGATE_EXPR>: Move the ubsan
16539         check earlier.
16540
16541 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
16542
16543         * explow.c (get_dynamic_stack_size): Improve dynamic alignment.
16544
16545 2017-09-05  Richard Biener  <rguenther@suse.de>
16546
16547         PR tree-optimization/82084
16548         * fold-const.c (can_native_encode_string_p): Handle wide characters.
16549
16550 2017-09-05  Richard Biener  <rguenther@suse.de>
16551
16552         PR tree-optimization/82102
16553         * tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL.
16554
16555 2017-09-05  Martin Liska  <mliska@suse.cz>
16556
16557         PR tree-optimization/82032
16558         * tree-cfg.c (generate_range_test): New function.
16559         * tree-cfg.h (generate_range_test): Declared here.
16560         * tree-cfgcleanup.c (convert_single_case_switch): New function.
16561         (cleanup_control_expr_graph): Use it.
16562         * tree-switch-conversion.c (try_switch_expansion): Remove
16563         assert.
16564         (emit_case_nodes): Use generate_range_test.
16565
16566 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
16567
16568         PR target/82098
16569         * config/i386/i386.md (*<btsc><mode>_mask): Add
16570         TARGET_USE_BT to insn constraint.
16571         (*btr<mode>_mask): Ditto.
16572
16573 2017-09-04  Wilco Dijkstra  <wdijkstr@arm.com>
16574
16575         * config/arm/arm.c (arm_legitimate_index_p): Add comment.
16576         (thumb2_legitimate_index_p): Use correct range for DI/DF mode.
16577
16578 2017-09-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
16579
16580         PR target/77308
16581         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Split early except for
16582         TARGET_NEON and TARGET_IWMMXT.
16583         (anddi3, iordi3, xordi3, one_cmpldi2): Split while expanding except for
16584         TARGET_NEON and TARGET_IWMMXT.
16585         (*one_cmpldi2_insn): Moved the body of one_cmpldi2 here.
16586
16587 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
16588
16589         * config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype.
16590         (ix86_rewrite_tls_address): Ditto.
16591         * config/i386/i386.c (ix86_tls_address_pattern_p) New function.
16592         (ix86_rewrite_tls_address_1): Ditto.
16593         (ix86_rewrite_tls_address): Ditto.
16594         * config/i386/predicates.md (tls_address_pattern): New predicate.
16595         * config/i386/i386.md (TLS address splitter): New splitter.
16596
16597 2017-09-04  Richard Biener  <rguenther@suse.de>
16598
16599         PR tree-optimization/82084
16600         * fold-const.h (can_native_encode_string_p): Declare.
16601         * fold-const.c (can_native_encode_string_p): Factor out from ...
16602         (native_encode_string): ... here.
16603         * tree-vect-stmts.c (vectorizable_store): Call it to avoid
16604         vectorizing stores from constants we later cannot handle.
16605
16606 2017-09-04  Marek Polacek  <polacek@redhat.com>
16607
16608         PR c/81783
16609         * doc/invoke.texi: Update -Wtautological-compare documentation.
16610
16611 2017-09-04  Jeff Law  <law@redhat.com>
16612
16613         PR tree-optimization/64910
16614         * tree-ssa-reassoc.c (reassociate_bb): For bitwise binary ops,
16615         swap the first and last operand if the last is a constant.
16616
16617 2017-09-04  Marek Polacek  <polacek@redhat.com>
16618
16619         PR sanitizer/82072
16620         * convert.c (do_narrow): When sanitizing signed integer overflows,
16621         bail out for signed types.
16622         (convert_to_integer_1) <case NEGATE_EXPR>: Likewise.
16623
16624 2017-09-04  Richard Biener  <rguenther@suse.de>
16625
16626         PR tree-optimization/82060
16627         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
16628         Move devirtualization after stmt folding and before EH/AB/noreturn
16629         cleanup to get the stmt refs canonicalized.  Use a bool instead
16630         of gimple_modified_p since that doesn't work for NOPs.  Schedule
16631         NOPs generated by folding for removal.
16632
16633 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16634             Alan Hayward  <alan.hayward@arm.com>
16635             David Sherwood  <david.sherwood@arm.com>
16636
16637         * coretypes.h (pad_direction): New enum.
16638         * defaults.h (DEFAULT_FUNCTION_ARG_PADDING): Delete.
16639         (FUNCTION_ARG_PADDING): Likewise.
16640         * target.def (function_arg_padding): New hook.
16641         * targhooks.h (default_function_arg_padding): Declare.
16642         * targhooks.c (default_function_arg_padding): New function.
16643         * doc/tm.texi.in (FUNCTION_ARG_PADDING): Replace with...
16644         (TARGET_FUNCTION_ARG_PADDING): ...this.
16645         * doc/tm.texi: Regenerate.
16646         * calls.c (store_unaligned_arguments_into_pseudos): Use pad_direction
16647         instead of direction.
16648         (compute_argument_addresses): Likewise.
16649         (load_register_parameters): Likewise.
16650         (emit_library_call_value_1): Likewise.
16651         (store_one_arg): Use targetm.calls.function_arg_padding instead
16652         of FUNCTION_ARG_PADDING.
16653         (must_pass_in_stack_var_size_or_pad): Likewise.
16654         * expr.c (emit_group_load_1): Use pad_direction instead of direction.
16655         (emit_group_store): Likewise.
16656         (emit_single_push_insn_1): Use targetm.calls.function_arg_padding
16657         instead of FUNCTION_ARG_PADDING.
16658         (emit_push_insn): Likewise, and propagate enum change throughout
16659         function.
16660         * function.h (direction): Delete.
16661         (locate_and_pad_arg_data::where_pad): Use pad_direction instead
16662         of direction.
16663         * function.c (assign_parm_find_stack_rtl): Likewise.
16664         (assign_parm_setup_block_p): Likewise.
16665         (assign_parm_setup_block): Likewise.
16666         (gimplify_parameters): Likewise.
16667         (locate_and_pad_parm): Use targetm.calls.function_arg_padding
16668         instead of FUNCTION_ARG_PADDING, and propagate enum change throughout
16669         function.
16670         * config/aarch64/aarch64.h (FUNCTION_ARG_PADDING): Delete.
16671         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16672         * config/aarch64/aarch64-protos.h (aarch64_pad_arg_upward): Delete.
16673         * config/aarch64/aarch64.c (aarch64_pad_arg_upward): Replace with...
16674         (aarch64_function_arg_padding): ...this new function.
16675         (aarch64_gimplify_va_arg_expr): Use pad_direction instead of direction.
16676         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16677         * config/arm/arm.h (FUNCTION_ARG_PADDING): Delete.
16678         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16679         * config/arm/arm-protos.h (arm_pad_arg_upward): Delete.
16680         * config/arm/arm.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16681         (arm_pad_arg_upward): Replace with...
16682         (arm_function_arg_padding): ...this new function.
16683         * config/c6x/c6x.h (BLOCK_REG_PADDING): Use pad_direction instead
16684         of direction.
16685         * config/ia64/hpux.h (FUNCTION_ARG_PADDING): Delete.
16686         * config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): Delete.
16687         * config/ia64/ia64.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16688         (ia64_hpux_function_arg_padding): Replace with...
16689         (ia64_function_arg_padding): ...this new function.  Use pad_direction
16690         instead of direction.  Check for TARGET_HPUX.
16691         * config/iq2000/iq2000.h (FUNCTION_ARG_PADDING): Delete.
16692         * config/iq2000/iq2000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16693         (iq2000_function_arg_padding): New function.
16694         * config/mips/mips-protos.h (mips_pad_arg_upward): Delete.
16695         * config/mips/mips.c (mips_pad_arg_upward): Replace with...
16696         (mips_function_arg_padding): ...this new function.
16697         (mips_pad_reg_upward): Update accordingly.
16698         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16699         * config/mips/mips.h (PAD_VARARGS_DOWN): Use
16700         targetm.calls.function_arg_padding.
16701         (FUNCTION_ARG_PADDING): Delete.
16702         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16703         * config/nios2/nios2.h (FUNCTION_ARG_PADDING): Delete.
16704         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16705         * config/nios2/nios2-protos.h (nios2_function_arg_padding): Delete.
16706         (nios2_block_reg_padding): Return pad_direction instead of direction.
16707         * config/nios2/nios2.c (nios2_block_reg_padding): Return pad_direction
16708         instead of direction.
16709         (nios2_function_arg_padding): Likewise.  Make static.
16710         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16711         * config/pa/pa.h (FUNCTION_ARG_PADDING): Delete.
16712         (BLOCK_REG_PADDING): Use targetm.calls.function_arg_padding.
16713         * config/pa/pa-protos.h (pa_function_arg_padding): Delete.
16714         * config/pa/pa.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16715         (pa_function_arg_padding): Make static.  Return pad_direction instead
16716         of direction.
16717         * config/powerpcspe/powerpcspe.h (FUNCTION_ARG_PADDING): Delete.
16718         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16719         * config/powerpcspe/aix.h (BLOCK_REG_PADDING): Use pad_direction
16720         instead of direction.  Use targetm.calls.function_arg_padding.
16721         * config/powerpcspe/darwin.h (BLOCK_REG_PADDING): Likewise.
16722         * config/powerpcspe/freebsd64.h (BLOCK_REG_PADDING): Likewise.
16723         * config/powerpcspe/linux64.h (BLOCK_REG_PADDING): Likewise.
16724         * config/powerpcspe/powerpcspe-protos.h (function_arg_padding): Delete.
16725         * config/powerpcspe/powerpcspe.c (TARGET_FUNCTION_ARG_PADDING):
16726         Redefine.
16727         (function_arg_padding): Rename to...
16728         (rs6000_function_arg_padding): ...this.  Make static.  Return
16729         pad_direction instead of direction.
16730         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
16731         * config/rs6000/rs6000.h (FUNCTION_ARG_PADDING): Delete.
16732         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16733         * config/rs6000/aix.h (BLOCK_REG_PADDING): Use pad_direction
16734         instead of direction.  Use targetm.calls.function_arg_padding.
16735         * config/rs6000/darwin.h (BLOCK_REG_PADDING): Likewise.
16736         * config/rs6000/freebsd64.h (BLOCK_REG_PADDING): Likewise.
16737         * config/rs6000/linux64.h (BLOCK_REG_PADDING): Likewise.
16738         * config/rs6000/rs6000-protos.h (function_arg_padding): Delete.
16739         * config/rs6000/rs6000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16740         (function_arg_padding): Rename to...
16741         (rs6000_function_arg_padding): ...this.  Make static.  Return
16742         pad_direction instead of direction.
16743         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
16744         * config/s390/s390.h (FUNCTION_ARG_PADDING): Delete.
16745         * config/s390/s390.c (s390_function_arg_padding): New function.
16746         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16747         * config/sparc/sparc.h (FUNCTION_ARG_PADDING): Delete.
16748         * config/sparc/sparc-protos.h (function_arg_padding): Delete.
16749         * config/sparc/sparc.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16750         (function_arg_padding): Rename to...
16751         (sparc_function_arg_padding): ...this.  Make static.  Return
16752         pad_direction instead of direction.
16753         * config/spu/spu.h (FUNCTION_ARG_PADDING): Delete.
16754         * config/spu/spu.c (spu_function_arg_padding): New function.
16755         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16756         * system.h (FUNCTION_ARG_PADDING): Poison.
16757
16758 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16759             Alan Hayward  <alan.hayward@arm.com>
16760             David Sherwood  <david.sherwood@arm.com>
16761
16762         * target.def (modes_tieable_p): New hook.
16763         * doc/tm.texi (MODES_TIEABLE_P): Replace with...
16764         (TARGET_MODES_TIEABLE_P): ...this.
16765         * doc/tm.texi.in: Regenerate.
16766         * hooks.h (hook_bool_mode_mode_true): Declare.
16767         * hooks.c (hook_bool_mode_mode_true): New function.
16768         * combine.c (subst): Use targetm.modes_tieable_p instead of
16769         MODES_TIEABLE_P.
16770         * dse.c (find_shift_sequence): Likewise.
16771         * expmed.c (extract_low_bits): Likewise.
16772         * lower-subreg.c: Include target.h.
16773         (find_decomposable_subregs): Use targetm.modes_tieable_p instead of
16774         MODES_TIEABLE_P.
16775         * rtlanal.c (rtx_cost): Likewise.
16776         * config/aarch64/aarch64.h (MODES_TIEABLE_P): Delete.
16777         * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): Delete.
16778         * config/aarch64/aarch64.c (aarch64_modes_tieable_p): Make static.
16779         (TARGET_MODES_TIEABLE_P): Redefine.
16780         * config/alpha/alpha.h (MODES_TIEABLE_P): Delete.
16781         * config/alpha/alpha.c (alpha_modes_tieable_p): New function.
16782         (TARGET_MODES_TIEABLE_P): Redefine.
16783         * config/arc/arc.h (MODES_TIEABLE_P): Delete.
16784         * config/arc/arc.c (TARGET_MODES_TIEABLE_P): Redefine.
16785         (arc_modes_tieable_p): New function.
16786         * config/arm/arm.h (MODES_TIEABLE_P): Delete.
16787         * config/arm/arm-protos.h (arm_modes_tieable_p): Delete.
16788         * config/arm/arm.c (TARGET_MODES_TIEABLE_P): Redefine.
16789         (arm_modes_tieable_p): Make static.
16790         * config/avr/avr.h (MODES_TIEABLE_P): Delete.
16791         * config/bfin/bfin.h (MODES_TIEABLE_P): Delete.
16792         * config/bfin/bfin.c (bfin_modes_tieable_p): New function.
16793         (TARGET_MODES_TIEABLE_P): Redefine.
16794         * config/c6x/c6x.h (MODES_TIEABLE_P): Delete.
16795         * config/c6x/c6x.c (c6x_modes_tieable_p): New function.
16796         (TARGET_MODES_TIEABLE_P): Redefine.
16797         * config/cr16/cr16.h (MODES_TIEABLE_P): Delete.
16798         * config/cr16/cr16.c (TARGET_MODES_TIEABLE_P): Redefine.
16799         (cr16_modes_tieable_p): New function.
16800         * config/cris/cris.h (MODES_TIEABLE_P): Delete.
16801         * config/epiphany/epiphany.h (MODES_TIEABLE_P): Delete.
16802         * config/fr30/fr30.h (MODES_TIEABLE_P): Delete.
16803         (TRULY_NOOP_TRUNCATION): Update comment.
16804         * config/frv/frv.h (MODES_TIEABLE_P): Delete.
16805         (TRULY_NOOP_TRUNCATION): Update comment.
16806         * config/frv/frv.c (TARGET_MODES_TIEABLE_P): Redefine.
16807         (frv_modes_tieable_p): New function.
16808         * config/ft32/ft32.h (MODES_TIEABLE_P): Delete.
16809         * config/h8300/h8300.h (MODES_TIEABLE_P): Delete.
16810         * config/h8300/h8300.c (h8300_modes_tieable_p): New function.
16811         (TARGET_MODES_TIEABLE_P): Redefine.
16812         * config/i386/i386.h (MODES_TIEABLE_P): Delete.
16813         * config/i386/i386-protos.h (ix86_modes_tieable_p): Delete.
16814         * config/i386/i386.c (ix86_modes_tieable_p): Make static.
16815         (TARGET_MODES_TIEABLE_P): Redefine.
16816         * config/ia64/ia64.h (MODES_TIEABLE_P): Delete.
16817         * config/ia64/ia64.c (TARGET_MODES_TIEABLE_P): Redefine.
16818         (ia64_modes_tieable_p): New function.
16819         * config/iq2000/iq2000.h (MODES_TIEABLE_P): Delete.
16820         * config/iq2000/iq2000.c (TARGET_MODES_TIEABLE_P): Redefine.
16821         (iq2000_modes_tieable_p): New function.
16822         * config/lm32/lm32.h (MODES_TIEABLE_P): Delete.
16823         * config/lm32/lm32.c (TARGET_MODES_TIEABLE_P): Redefine.
16824         (lm32_modes_tieable_p): New function.
16825         * config/m32c/m32c.h (MODES_TIEABLE_P): Delete.
16826         * config/m32c/m32c-protos.h (m32c_modes_tieable_p): Delete.
16827         * config/m32c/m32c.c (m32c_modes_tieable_p): Make static.
16828         (TARGET_MODES_TIEABLE_P): Redefine.
16829         * config/m32r/m32r.h (MODES_TIEABLE_P): Delete.
16830         * config/m32r/m32r.c (TARGET_MODES_TIEABLE_P): Redefine.
16831         (m32r_modes_tieable_p): New function.
16832         * config/m68k/m68k.h (MODES_TIEABLE_P): Delete.
16833         * config/m68k/m68k.c (TARGET_MODES_TIEABLE_P): Redefine.
16834         (m68k_modes_tieable_p): New function.
16835         * config/mcore/mcore.h (MODES_TIEABLE_P): Delete.
16836         * config/mcore/mcore.c (TARGET_MODES_TIEABLE_P): Redefine.
16837         (mcore_modes_tieable_p): New function.
16838         * config/microblaze/microblaze.h (MODES_TIEABLE_P): Delete.
16839         * config/microblaze/microblaze.c (microblaze_modes_tieable_p): New
16840         function.
16841         (TARGET_MODES_TIEABLE_P): Redefine.
16842         * config/mips/mips.h (MODES_TIEABLE_P): Delete.
16843         * config/mips/mips-protos.h (mips_modes_tieable_p): Delete.
16844         * config/mips/mips.c (mips_modes_tieable_p): Make static.
16845         (TARGET_MODES_TIEABLE_P): Redefine.
16846         * config/mmix/mmix.h (MODES_TIEABLE_P): Delete.
16847         * config/mn10300/mn10300.h (MODES_TIEABLE_P): Delete.
16848         * config/mn10300/mn10300-protos.h (mn10300_modes_tieable): Delete.
16849         * config/mn10300/mn10300.c (mn10300_modes_tieable): Rename to...
16850         (mn10300_modes_tieable_p): ...this and make static.
16851         (TARGET_MODES_TIEABLE_P): Redefine.
16852         * config/moxie/moxie.h (MODES_TIEABLE_P): Delete.
16853         * config/msp430/msp430.h (MODES_TIEABLE_P): Delete.
16854         * config/msp430/msp430-protos.h (msp430_modes_tieable_p): Delete.
16855         * config/msp430/msp430.c (TARGET_MODES_TIEABLE_P): Redefine.
16856         (msp430_modes_tieable_p): Make static.
16857         * config/nds32/nds32.h (MODES_TIEABLE_P): Delete.
16858         * config/nds32/nds32.c (nds32_modes_tieable_p): New function.
16859         (TARGET_MODES_TIEABLE_P): Redefine.
16860         * config/nios2/nios2.h (MODES_TIEABLE_P): Delete.
16861         * config/nvptx/nvptx.h (MODES_TIEABLE_P): Delete.
16862         * config/nvptx/nvptx.c (nvptx_modes_tieable_p): New function.
16863         (TARGET_MODES_TIEABLE_P): Redefine.
16864         * config/pa/pa.h (MODES_TIEABLE_P): Delete.
16865         * config/pa/pa-protos.h (pa_modes_tieable_p): Delete.
16866         * config/pa/pa.c (pa_modes_tieable_p): Make static.
16867         (TARGET_MODES_TIEABLE_P): Redefine.
16868         * config/pdp11/pdp11.h (MODES_TIEABLE_P): Delete.
16869         * config/pdp11/pdp11.c (TARGET_MODES_TIEABLE_P): Redefine.
16870         (pdp11_modes_tieable_p): New function.
16871         * config/powerpcspe/powerpcspe.h (MODES_TIEABLE_P): Delete.
16872         * config/powerpcspe/powerpcspe.c (TARGET_MODES_TIEABLE_P): Redefine.
16873         (rs6000_modes_tieable_p): New function.
16874         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
16875         * config/powerpcspe/powerpcspe.md: Update comment.
16876         * config/riscv/riscv.h (MODES_TIEABLE_P): Delete.
16877         * config/riscv/riscv.c (riscv_modes_tieable_p): New function.
16878         (TARGET_MODES_TIEABLE_P): Redefine.
16879         * config/rl78/rl78.h (MODES_TIEABLE_P): Delete.
16880         * config/rl78/rl78.c (TARGET_MODES_TIEABLE_P): Redefine.
16881         (rl78_modes_tieable_p): New function.
16882         * config/rs6000/rs6000.h (MODES_TIEABLE_P): Delete.
16883         * config/rs6000/rs6000.c (TARGET_MODES_TIEABLE_P): Redefine.
16884         (rs6000_modes_tieable_p): New function.
16885         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
16886         * config/rs6000/rs6000.md: Update comment.
16887         * config/rx/rx.h (MODES_TIEABLE_P): Delete.
16888         * config/rx/rx.c (rx_modes_tieable_p): New function.
16889         (TARGET_MODES_TIEABLE_P): Redefine.
16890         * config/s390/s390.h (MODES_TIEABLE_P): Delete.
16891         * config/s390/s390.c (s390_modes_tieable_p): New function.
16892         (TARGET_MODES_TIEABLE_P): Redefine.
16893         * config/sh/sh.h (MODES_TIEABLE_P): Delete.
16894         * config/sh/sh.c (TARGET_MODES_TIEABLE_P): Redefine.
16895         (sh_modes_tieable_p): New function.
16896         * config/sparc/sparc.h (MODES_TIEABLE_P): Delete.
16897         * config/sparc/sparc-protos.h (sparc_modes_tieable_p): Delete.
16898         * config/sparc/sparc.c (TARGET_MODES_TIEABLE_P): Redefine.
16899         (sparc_modes_tieable_p): Make static.
16900         * config/spu/spu.h (MODES_TIEABLE_P): Delete.
16901         * config/spu/spu.c (spu_modes_tieable_p): New function.
16902         (TARGET_MODES_TIEABLE_P): Redefine.
16903         * config/stormy16/stormy16.h (MODES_TIEABLE_P): Delete.
16904         * config/stormy16/stormy16.c (xstormy16_modes_tieable_p): New function.
16905         (TARGET_MODES_TIEABLE_P): Redefine.
16906         * config/tilegx/tilegx.h (MODES_TIEABLE_P): Delete.
16907         * config/tilepro/tilepro.h (MODES_TIEABLE_P): Delete.
16908         * config/v850/v850.h (MODES_TIEABLE_P): Delete.
16909         * config/v850/v850.c (v850_modes_tieable_p): New function.
16910         (TARGET_MODES_TIEABLE_P): Redefine.
16911         * config/vax/vax.h (MODES_TIEABLE_P): Delete.
16912         * config/visium/visium.h (MODES_TIEABLE_P): Delete.
16913         * config/visium/visium.c (TARGET_MODES_TIEABLE_P): Redefine.
16914         (visium_modes_tieable_p): New function.
16915         * config/xtensa/xtensa.h (MODES_TIEABLE_P): Delete.
16916         * config/xtensa/xtensa.c (TARGET_MODES_TIEABLE_P): Redefine.
16917         (xtensa_modes_tieable_p): New function.
16918         * system.h (MODES_TIEABLE_P): Poison.
16919
16920 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16921             Alan Hayward  <alan.hayward@arm.com>
16922             David Sherwood  <david.sherwood@arm.com>
16923
16924         * target.def (hard_regno_mode_ok): New hook.
16925         * doc/tm.texi (HARD_REGNO_MODE_OK): Replace with...
16926         (TARGET_HARD_REGNO_MODE_OK): ...this.
16927         * doc/tm.texi.in: Regenerate.
16928         * hooks.h (hook_bool_uint_mode_true): Declare.
16929         * hooks.c (hook_bool_uint_mode_true): New function.
16930         * doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of
16931         HARD_REGNO_MODE_OK.
16932         * genpreds.c (write_insn_preds_c): Add an include of target.h.
16933         * alias.c (init_alias_target): Use targetm.hard_regno_mode_ok
16934         instead of HARD_REGNO_MODE_OK.
16935         * caller-save.c: Include target.h.
16936         (reg_save_code): Use targetm.hard_regno_mode_ok instead of
16937         HARD_REGNO_MODE_OK.
16938         * combine.c (can_combine_p): Likewise.
16939         (combinable_i3pat): Likewise.
16940         (can_change_dest_mode): Likewise.
16941         * expr.c (init_expr_target): Likewise.
16942         (convert_move): Likewise.
16943         (convert_modes): Likewise.
16944         * ira.c (setup_prohibited_class_mode_regs): Likewise.
16945         (setup_prohibited_mode_move_regs): Likewise.
16946         * ira.h (target_ira): Likewise.
16947         * lra-assigns.c (find_hard_regno_for_1): Likewise.
16948         * lra-constraints.c (process_alt_operands): Likewise.
16949         (split_reg): Likewise.
16950         * recog.c (peep2_find_free_register): Likewise.
16951         * ree.c (combine_reaching_defs): Likewise.
16952         * regcprop.c (maybe_mode_change): Likewise.
16953         * reginfo.c (init_reg_sets_1): Likewise.
16954         (choose_hard_reg_mode): Likewise.
16955         (simplifiable_subregs): Likewise.
16956         * regrename.c (check_new_reg_p): Likewise.
16957         * reload.c (find_valid_class): Likewise.
16958         (find_valid_class_1): Likewise.
16959         (reload_inner_reg_of_subreg): Likewise.
16960         (push_reload): Likewise.
16961         (combine_reloads): Likewise.
16962         (find_dummy_reload): Likewise.
16963         (find_reloads): Likewise.
16964         * reload1.c (find_reg): Likewise.
16965         (set_reload_reg): Likewise.
16966         (allocate_reload_reg): Likewise.
16967         (choose_reload_regs): Likewise.
16968         (reload_adjust_reg_for_temp): Likewise.
16969         * rtlanal.c (subreg_size_offset_from_lsb): Likewise.
16970         (simplify_subreg_regno): Likewise.
16971         * sel-sched.c (init_regs_for_mode): Likewise.
16972         * varasm.c (make_decl_rtl): Likewise.
16973         * config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete.
16974         (MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of
16975         HARD_REGNO_MODE_OK.
16976         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete.
16977         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static.
16978         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16979         * config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete.
16980         * config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function.
16981         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16982         * config/arc/arc.h (arc_hard_regno_mode_ok): Delete.
16983         (arc_mode_class): Delete.
16984         (HARD_REGNO_MODE_OK): Delete.
16985         * config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16986         (arc_hard_regno_mode_ok): Rename old array to...
16987         (arc_hard_regno_mode_ok_modes): ...this.
16988         (arc_conditional_register_usage): Update accordingly.
16989         (arc_mode_class): Make static.
16990         (arc_hard_regno_mode_ok): New function.
16991         * config/arm/arm.h (HARD_REGNO_MODE_OK): Delete.
16992         * config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete.
16993         * config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16994         (arm_hard_regno_mode_ok): Make static.
16995         * config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of
16996         HARD_REGNO_MODE_OK.
16997         * config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete.
16998         * config/avr/avr.h (HARD_REGNO_MODE_OK): Delete.
16999         * config/avr/avr.c (avr_hard_regno_mode_ok): Make static and
17000         return a bool.
17001         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17002         * config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete.
17003         * config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete.
17004         * config/bfin/bfin.c (hard_regno_mode_ok): Rename to...
17005         (bfin_hard_regno_mode_ok): ...this.  Make static and return a bool.
17006         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17007         * config/bfin/predicates.md (valid_reg_operand): Use
17008         targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK.
17009         * config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete.
17010         * config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function.
17011         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17012         * config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete.
17013         * config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete.
17014         * config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17015         (cr16_hard_regno_mode_ok): Make static and return a bool.
17016         * config/cris/cris.h (HARD_REGNO_MODE_OK): Delete.
17017         * config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17018         (cris_hard_regno_mode_ok): New function.
17019         * config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete.
17020         (epiphany_mode_class): Delete.
17021         (HARD_REGNO_MODE_OK): Delete.
17022         * config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete.
17023         * config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17024         (hard_regno_mode_ok): Rename to...
17025         (epiphany_hard_regno_mode_ok): ...this.  Make static and return a bool.
17026         * config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete.
17027         * config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of
17028         HARD_REGNO_MODE_OK.
17029         * config/frv/frv.h (HARD_REGNO_MODE_OK): Delete.
17030         * config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete.
17031         * config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17032         (frv_hard_regno_mode_ok): Make static and return a bool.
17033         * config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of
17034         HARD_REGNO_MODE_OK.
17035         * config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete.
17036         * config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete.
17037         * config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete.
17038         * config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static
17039         and return a bool.
17040         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17041         * config/i386/i386.h (HARD_REGNO_MODE_OK): Delete.
17042         * config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete.
17043         * config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and
17044         return a bool.
17045         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17046         * config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete.
17047         * config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17048         (ia64_hard_regno_mode_ok): New function.
17049         * config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete.
17050         * config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17051         (iq2000_hard_regno_mode_ok): New function.
17052         * config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete.
17053         * config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17054         (lm32_hard_regno_mode_ok): New function.
17055         * config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete.
17056         * config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete.
17057         * config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok
17058         instead of HARD_REGNO_MODE_OK.
17059         (m32c_hard_regno_ok): Rename to...
17060         (m32c_hard_regno_mode_ok): ...this.  Make static and return a bool.
17061         (m32c_cannot_change_mode_class): Update accordingly.
17062         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17063         * config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete.
17064         (m32r_mode_class): Delete.
17065         (HARD_REGNO_MODE_OK): Delete.
17066         * config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17067         (m32r_hard_regno_mode_ok): Rename to...
17068         (m32r_hard_regno_modes): ...this.
17069         (m32r_mode_class): Make static.
17070         (m32r_hard_regno_mode_ok): New function.
17071         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete.
17072         * config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete.
17073         * config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17074         (m68k_hard_regno_mode_ok): Make static.
17075         * config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete.
17076         * config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17077         (mcore_hard_regno_mode_ok): New function.
17078         * config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok)
17079         (HARD_REGNO_MODE_OK): Delete.
17080         * config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok):
17081         Rename to...
17082         (microblaze_hard_regno_mode_ok_p): ...this and make static.
17083         (microblaze_hard_regno_mode_ok): New function.
17084         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17085         * config/mips/mips.h (HARD_REGNO_MODE_OK): Delete.
17086         (mips_hard_regno_mode_ok): Delete.
17087         * config/mips/mips.c (mips_hard_regno_mode_ok): Rename to...
17088         (mips_hard_regno_mode_ok_p): ...this and make static.
17089         (mips_hard_regno_mode_ok_p): Rename to...
17090         (mips_hard_regno_mode_ok_uncached): ...this.
17091         (mips_hard_regno_mode_ok): New function.
17092         (mips_class_max_nregs): Use mips_hard_regno_mode_ok instead
17093         of HARD_REGNO_MODE_OK.
17094         (mips_option_override): Update after above name changes.
17095         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17096         * config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete.
17097         * config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete.
17098         * config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete.
17099         * config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static.
17100         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17101         * config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete.
17102         * config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete.
17103         * config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete.
17104         * config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17105         (msp430_hard_regno_mode_ok): Make static and return a bool.
17106         * config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete.
17107         * config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete.
17108         * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static
17109         and return a bool.
17110         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17111         * config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete.
17112         * config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete.
17113         * config/pa/pa.h (MODES_TIEABLE_P): Update commentary.
17114         * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to...
17115         (PA_HARD_REGNO_MODE_OK): ...this
17116         * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to...
17117         (PA_HARD_REGNO_MODE_OK): ...this.
17118         * config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17119         (pa_hard_regno_mode_ok): New function.
17120         * config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete.
17121         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17122         (pdp11_hard_regno_mode_ok): New function.
17123         * config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete.
17124         * config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p):
17125         Delete.
17126         * config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p):
17127         Make static.
17128         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17129         (rs6000_hard_regno_mode_ok): Rename to...
17130         (rs6000_hard_regno_mode_ok_uncached): ...this.
17131         (rs6000_init_hard_regno_mode_ok): Update accordingly.
17132         (rs6000_hard_regno_mode_ok): New function.
17133         * config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete.
17134         * config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete.
17135         * config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to...
17136         (riscv_hard_regno_mode_ok): ...this and make static.
17137         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17138         * config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete.
17139         * config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete.
17140         * config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17141         (rl78_hard_regno_mode_ok): Make static and return bool.
17142         * config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete.
17143         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
17144         Delete.
17145         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static.
17146         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17147         (rs6000_hard_regno_mode_ok): Rename to...
17148         (rs6000_hard_regno_mode_ok_uncached): ...this.
17149         (rs6000_init_hard_regno_mode_ok): Update accordingly.
17150         (rs6000_hard_regno_mode_ok): New function.
17151         * config/rx/rx.h (HARD_REGNO_MODE_OK): Delete.
17152         * config/rx/rx.c (rx_hard_regno_mode_ok): New function.
17153         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17154         * config/s390/s390.h (HARD_REGNO_MODE_OK): Delete.
17155         * config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete.
17156         * config/s390/s390.c (s390_hard_regno_mode_ok): Make static.
17157         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17158         * config/sh/sh.h (HARD_REGNO_MODE_OK): Delete.
17159         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete.
17160         * config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17161         (sh_hard_regno_mode_ok): Make static.
17162         * config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok
17163         instead of HARD_REGNO_MODE_OK.
17164         * config/sparc/sparc.h (hard_regno_mode_classes): Delete.
17165         (sparc_mode_class): Delete.
17166         (HARD_REGNO_MODE_OK): Delete.
17167         * config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17168         (hard_regno_mode_classes): Make static.
17169         (sparc_mode_class): Likewise.
17170         (sparc_hard_regno_mode_ok): New function.
17171         * config/spu/spu.h (HARD_REGNO_MODE_OK): Delete.
17172         * config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete.
17173         * config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New
17174         function.
17175         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17176         * config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete.
17177         * config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete.
17178         * config/v850/v850.h (HARD_REGNO_MODE_OK): Delete.
17179         * config/v850/v850.c (v850_hard_regno_mode_ok): New function.
17180         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17181         * config/vax/vax.h (HARD_REGNO_MODE_OK): Delete.
17182         * config/visium/visium.h (HARD_REGNO_MODE_OK): Delete.
17183         * config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17184         (visium_hard_regno_mode_ok): New function.
17185         * config/visium/visium.md: Refer to targetm.hard_regno_mode_ok
17186         instead of HARD_REGNO_MODE_OK.
17187         * config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete.
17188         (HARD_REGNO_MODE_OK): Delete.
17189         * config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to...
17190         (xtensa_hard_regno_mode_ok_p): ...this and make static.
17191         (xtensa_option_override): Update accordingly.
17192         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17193         (xtensa_hard_regno_mode_ok): New function.
17194         * system.h (HARD_REGNO_MODE_OK): Poison.
17195
17196 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
17197             Alan Hayward  <alan.hayward@arm.com>
17198             David Sherwood  <david.sherwood@arm.com>
17199
17200         * target.def (hard_regno_call_part_clobbered): New hook.
17201         * doc/tm.texi.in (HARD_REGNO_CALL_PART_CLOBBERED): Replace with...
17202         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): ...this hook.
17203         * doc/tm.texi: Regenerate.
17204         * hooks.h (hook_bool_uint_mode_false): Declare.
17205         * hooks.c (hook_bool_uint_mode_false): New function.
17206         * regs.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17207         * cselib.c (cselib_process_insn): Use
17208         targetm.hard_regno_call_part_clobbered instead of
17209         HARD_REGNO_CALL_PART_CLOBBERED.
17210         * ira-conflicts.c (ira_build_conflicts): Likewise.
17211         * ira-costs.c (ira_tune_allocno_costs): Likewise.
17212         * lra-constraints.c (need_for_call_save_p): Likewise.
17213         * lra-lives.c: Include target.h.
17214         (check_pseudos_live_through_calls): Use
17215         targetm.hard_regno_call_part_clobbered instead of
17216         HARD_REGNO_CALL_PART_CLOBBERED.
17217         * regcprop.c: Include target.h.
17218         (copyprop_hardreg_forward_1): Use
17219         targetm.hard_regno_call_part_clobbered instead of
17220         HARD_REGNO_CALL_PART_CLOBBERED.
17221         * reginfo.c (choose_hard_reg_mode): Likewise.
17222         * regrename.c (check_new_reg_p): Likewise.
17223         * reload.c (find_equiv_reg): Likewise.
17224         * reload1.c (emit_reload_insns): Likewise.
17225         * sched-deps.c (deps_analyze_insn): Likewise.
17226         * sel-sched.c (init_regs_for_mode): Likewise.
17227         (mark_unavailable_hard_regs): Likewise.
17228         * targhooks.c (default_dwarf_frame_reg_mode): Likewise.
17229         * config/aarch64/aarch64.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17230         * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
17231         New function.
17232         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17233         * config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17234         * config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered):
17235         Delete.
17236         * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Make static
17237         and return a bool.
17238         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17239         * config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17240         * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): New
17241         function.
17242         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17243         * config/mips/mips.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17244         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): New
17245         function.
17246         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17247         * config/powerpcspe/powerpcspe.h (HARD_REGNO_CALL_PART_CLOBBERED):
17248         Delete.
17249         * config/powerpcspe/powerpcspe.c
17250         (rs6000_hard_regno_call_part_clobbered): New function.
17251         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17252         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17253         * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
17254         New function.
17255         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17256         * config/s390/s390.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17257         * config/s390/s390.c (s390_hard_regno_call_part_clobbered): New
17258         function.
17259         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17260         * config/sh/sh.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17261         * system.h (HARD_REGNO_CALL_PART_CLOBBERED): Poison.
17262
17263 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
17264             Alan Hayward  <alan.hayward@arm.com>
17265             David Sherwood  <david.sherwood@arm.com>
17266
17267         * rtl.h (subreg_memory_offset): Declare.
17268         * emit-rtl.c (subreg_memory_offset): New function.
17269         * expmed.c (store_bit_field_1): Use it.
17270         * expr.c (undefined_operand_subword_p): Likewise.
17271         * simplify-rtx.c (simplify_subreg): Likewise.
17272
17273 2017-09-04  Alexander Monakov  <amonakov@ispras.ru>
17274
17275         PR rtl-optimization/57448
17276         PR target/67458
17277         PR target/81316
17278         * optabs.c (expand_atomic_load): Place compiler memory barriers if
17279         using atomic_load pattern.
17280         (expand_atomic_store): Likewise.
17281
17282 2017-09-04  Jakub Jelinek  <jakub@redhat.com>
17283
17284         PR sanitizer/81981
17285         * gimple-fold.c (gimple_fold_call): Optimize away useless UBSAN_PTR
17286         and UBSAN_BOUNDS internal calls.  Clean up IFN_UBSAN_OBJECT_SIZE
17287         handling.  Use replace_call_with_value with NULL instead of
17288         gsi_replace, unlink_stmt_vdef and release_defs.
17289
17290         * gdbhooks.py (OptMachineModePrinter.to_string): Use 8 spaces
17291         instead of tab.
17292
17293         * lra-remat.c (reg_overlap_for_remat_p): Fix a pasto.
17294
17295 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
17296
17297         PR bootstrap/82045
17298         * rtl.h (emit_library_call_value_1): Declare.
17299         (emit_library_call): Replace declaration with a series of overloads.
17300         Remove the parameter count argument.
17301         (emit_library_call_value): Likewise.
17302         * calls.c (emit_library_call_value_1): Make global.  Replace varargs
17303         with an "rtx_mode_t *".
17304         (emit_library_call_value): Delete.
17305         (emit_library_call): Likewise.
17306         * asan.c (asan_emit_stack_protection): Update calls accordingly.
17307         (asan_emit_allocas_unpoison): Likewise.
17308         * builtins.c (expand_builtin_powi): Likewise.
17309         (expand_asan_emit_allocas_unpoison): Likewise.
17310         * cfgexpand.c (expand_main_function): Likewise.
17311         * config/aarch64/aarch64.c (aarch64_trampoline_init): Likewise.
17312         * config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
17313         * config/alpha/alpha.c (alpha_trampoline_init): Likewise.
17314         * config/arm/arm.c (arm_trampoline_init): Likewise.
17315         (arm_call_tls_get_addr): Likewise.
17316         (arm_expand_divmod_libfunc): Likewise.
17317         * config/bfin/bfin.md (umulsi3_highpart): Likewise.
17318         (smulsi3_highpart): Likewise.
17319         * config/c6x/c6x.c (c6x_initialize_trampoline): Likewise.
17320         (c6x_expand_compare): Likewise.
17321         (c6x_expand_movmem): Likewise.
17322         * config/frv/frv.c (frv_trampoline_init): Likewise.
17323         * config/i386/i386.c (ix86_trampoline_init): Likewise.
17324         (ix86_expand_divmod_libfunc): Likewise.
17325         * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
17326         (ia64_expand_compare): Likewise.
17327         (ia64_profile_hook): Likewise.
17328         * config/ia64/ia64.md (save_stack_nonlocal): Likewise.
17329         (nonlocal_goto): Likewise.
17330         (restore_stack_nonlocal): Likewise.
17331         * config/m32r/m32r.c (block_move_call): Likewise.
17332         (m32r_trampoline_init): Likewise.
17333         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise.
17334         * config/m68k/m68k.c (m68k_call_tls_get_addr): Likewise.
17335         (m68k_call_m68k_read_tp): Likewise.
17336         * config/microblaze/microblaze.c (microblaze_call_tls_get_addr)
17337         (microblaze_expand_divide): Likewise.
17338         * config/mips/mips.h (mips_args): Likewise.
17339         * config/mips/sdemtk.h (mips_sync_icache): Likewise.
17340         (MIPS_ICACHE_SYNC): Likewise.
17341         * config/nios2/nios2.c (nios2_emit_expensive_div): Likewise.
17342         (nios2_trampoline_init): Likewise.
17343         * config/pa/pa.c (hppa_tls_call): Likewise.
17344         (pa_trampoline_init): Likewise.
17345         * config/pa/pa.md (canonicalize_funcptr_for_compare): Likewise.
17346         * config/powerpcspe/powerpcspe.c (rs6000_legitimize_tls_address)
17347         (expand_strn_compare): Likewise.
17348         (rs6000_generate_compare): Likewise.
17349         (rs6000_expand_float128_convert): Likewise.
17350         (output_profile_hook): Likewise.
17351         (rs6000_trampoline_init): Likewise.
17352         * config/powerpcspe/powerpcspe.md (neg<mode>2): Likewise.
17353         * config/riscv/riscv.h (PROFILE_HOOK): Likewise.
17354         * config/rs6000/rs6000-string.c (expand_strn_compare): Likewise.
17355         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
17356         (rs6000_generate_compare): Likewise.
17357         (rs6000_expand_float128_convert): Likewise.
17358         (output_profile_hook): Likewise.
17359         (rs6000_trampoline_init): Likewise.
17360         * config/rs6000/rs6000.md (neg<mode>2): Likewise.
17361         * config/sh/sh.c (sh_trampoline_init): Likewise.
17362         * config/sparc/sparc.c (emit_soft_tfmode_libcall): Likewise.
17363         (sparc_emit_float_lib_cmp): Likewise.
17364         (sparc32_initialize_trampoline): Likewise.
17365         (sparc64_initialize_trampoline): Likewise.
17366         (sparc_profile_hook): Likewise.
17367         * config/spu/spu.c (ea_load_store): Likewise.
17368         * config/spu/spu.md (floatunssidf2): Likewise.
17369         * config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise.
17370         * config/tilepro/tilepro.c (tilepro_trampoline_init): Likewise.
17371         * config/visium/visium.c (expand_block_move_4): Likewise.
17372         (expand_block_move_2): Likewise.
17373         (expand_block_move_1): Likewise.
17374         (expand_block_set_4): Likewise.
17375         (expand_block_set_2): Likewise.
17376         (expand_block_set_1): Likewise.
17377         (visium_trampoline_init): Likewise.
17378         (visium_profile_hook): Likewise.
17379         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Likewise.
17380         (xtensa_setup_frame_addresses): Likewise.
17381         (xtensa_trampoline_init): Likewise.
17382         * except.c (sjlj_emit_function_enter): Likewise.
17383         (sjlj_emit_function_exit): Likewise.
17384         * explow.c (allocate_dynamic_stack_space): Likewise.
17385         (probe_stack_range): Likewise.
17386         * expr.c (convert_mode_scalar): Likewise.
17387         * optabs.c (expand_binop): Likewise.
17388         (expand_twoval_binop_libfunc): Likewise.
17389         (expand_unop): Likewise.
17390         (prepare_cmp_insn): Likewise.
17391         (prepare_float_lib_cmp): Likewise.
17392         (expand_float): Likewise.
17393         (expand_fix): Likewise.
17394         (expand_fixed_convert): Likewise.
17395         (maybe_emit_sync_lock_test_and_set): Likewise.
17396         (expand_atomic_compare_and_swap): Likewise.
17397         (expand_mem_thread_fence): Likewise.
17398         (expand_atomic_fetch_op): Likewise.
17399
17400 2017-09-03  Gerald Pfeifer  <gerald@pfeifer.com>
17401
17402         * doc/generic.texi (OpenACC): Adjust URL.
17403         * doc/invoke.texi (C Dialect Options): Ditto.
17404
17405 2017-09-03  Uros Bizjak  <ubizjak@gmail.com>
17406
17407         * config/i386/i386.md (*bt<mode>): Use nonimmediate_operand
17408         predicate for operand 1.  Add (m,<S>) constraint.
17409         (*jcc_bt<mode>): Use nonimmediate_operand predicate for operand 1.
17410         Prevent memory operand 1 with register operand 2.
17411
17412 2017-09-01  Segher Boessenkool  <segher@kernel.crashing.org>
17413
17414         PR rtl-optimization/82024
17415         * combine.c (try_combine): If the combination result is a PARALLEL,
17416         and we only need to retain the SET in there that would be placed
17417         at I2, check that we can place that at I3 instead, before doing so.
17418
17419 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
17420
17421         PR target/81766
17422         * config/i386/i386.c (ix86_init_large_pic_reg): Return label
17423         instead of void.
17424         (ix86_init_pic_reg): Remember label from ix86_init_large_pic_reg,
17425         if non-NULL and preceded by NOTE_INSN_BASIC_BLOCK, swap the note
17426         and label.
17427
17428 2017-09-01  Joerg Sonnenberger  <joerg@bec.de>
17429             Jeff Law  <law@redhat.com>
17430
17431         * varasm.c (bss_initializer_p): Do not put constants into .bss
17432         (categorize_decl_for_section): Handle bss_initializer_p returning
17433         false when DECL_INITIAL is NULL.
17434
17435 2017-09-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
17436
17437         PR target/82012
17438         * config/s390/s390.c (s390_can_inline_p): New function.
17439
17440 2017-09-01  Jeff Law  <law@redhat.com>
17441
17442         PR tree-optimization/82052
17443         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
17444         Always initialize the returned slot after a hash table miss
17445         when INSERT is true.
17446
17447 2017-09-01  Alexander Monakov  <amonakov@ispras.ru>
17448
17449         * config/s390/s390.md (mem_signal_fence): Remove.
17450         * doc/md.texi (mem_signal_fence): Remove.
17451         * optabs.c (expand_mem_signal_fence): Remove uses of mem_signal_fence.
17452         Update comments.
17453         * target-insns.def (mem_signal_fence): Remove.
17454
17455 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
17456
17457         PR sanitizer/81902
17458         * doc/invoke.texi: Document -fsanitize=pointer-overflow.
17459
17460         PR sanitizer/81923
17461         * asan.c (create_odr_indicator): Strip name encoding from assembler
17462         name before appending it after __odr_asan_.
17463
17464 2017-09-01  Martin Liska  <mliska@suse.cz>
17465
17466         PR tree-optimization/82059
17467         * gimple-ssa-isolate-paths.c (isolate_path): Add profile and
17468         frequency only when an edge is redirected.
17469
17470 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17471
17472         * config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define.
17473         * config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define.
17474         (arc_conditional_register_usage): Remove ARC600 lp_count
17475         exception.
17476         (arc_file_start): Emit Tag_ARC_CPU_variation.
17477         (arc_can_use_doloop_p): New conditions to use ZOLs.
17478         (hwloop_fail): New function.
17479         (hwloop_optimize): Likewise.
17480         (hwloop_pattern_reg): Likewise.
17481         (arc_doloop_hooks): New struct, to be used with reorg_loops.
17482         (arc_reorg_loops): New function, calls reorg_loops.
17483         (arc_reorg): Call arc_reorg_loops.  Remove old ZOL handling.
17484         (arc600_corereg_hazard): Remove ZOL checking, case handled by
17485         hwloop_optimize.
17486         (arc_loop_hazard): Remove function, functionality moved into
17487         hwloop_optimize.
17488         (arc_hazard): Remove arc_loop_hazard call.
17489         (arc_adjust_insn_length): Remove ZOL handling, functionality moved
17490         into hwloop_optimize.
17491         (arc_label_align): Remove ZOL handling.
17492         * config/arc/arc.h (LOOP_ALIGN): Changed to 0.
17493         * config/arc/arc.md (doloop_begin): Remove pattern.
17494         (doloop_begin_i): Likewise.
17495         (doloop_end_i): Likewise.
17496         (doloop_fallback): Likewise.
17497         (doloop_fallback_m): Likewise.
17498         (doloop_end): Reimplement expand.
17499         (arc_lp): New pattern for LP instruction.
17500         (loop_end): New pattern.
17501         (loop_fail): Likewise.
17502         (decrement_and_branch_until_zero): Likewise.
17503         * config/arc/arc.opt (mlpc-width): New option.
17504         * doc/invoke.texi (mlpc-width): Document option.
17505
17506 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17507
17508         * config/arc/arc.c (arc_ifcvt): Remove use of merge_blocks call.
17509         (arc_ccfsm_advance): Fix checking for delay slots.
17510         (arc_reorg): Add rtl dump after each call to arc_ifcvt.
17511
17512 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17513
17514         * config/arc/arc.md (movqi_insn): Add stores to save constant long
17515         immediates.
17516         (movhi_insn): Update store instruction constraint which are saving
17517         6-bit short immediates.
17518         (movsi_insn): Consider also short scaled load operations.
17519         (zero_extendhisi2_i): Use Usd constraint instead of T.
17520         (extendhisi2_i): Add q constraint.
17521         (arc_clzsi2): Add type and length attributes.
17522         (arc_ctzsi2): Likewise.
17523         * config/arc/constraints.md (Usc): Update constraint, the
17524         assembler can parse two relocations for a single instruction.
17525
17526 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17527
17528         * config/arc/arc.c (arc_use_anchors_for_symbol_p): New function.
17529         (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define.
17530
17531 2017-08-31  Olivier Hainque  <hainque@adacore.com>
17532
17533         * config.gcc (powerpc-wrs-vxworks|vxworksae|vxworksmils): Now
17534         match as powerpc-wrs-vxworks*.
17535
17536 2017-08-31  James Greenhalgh  <james.greenhalgh@arm.com>
17537
17538         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): Fix
17539         register constraint for by-element operand.
17540         (aarch64_mls_elt_merge<mode>): Likewise.
17541
17542 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17543
17544         * config/arc/arc.c (arc_can_follow_jump): Check for short
17545         branches.
17546
17547 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17548
17549         * config.gcc: Use g.opt for arc.
17550         * config/arc/arc.c (LEGITIMATE_SCALED_ADDRESS_P): Deleted,
17551         functionality moved to ...
17552         (legitimate_scaled_address_p): New function, ...here.
17553         (LEGITIMATE_SMALL_DATA_OFFSET_P): New define.
17554         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Use the above define.
17555         (legitimate_offset_address_p): Delete TARGET_NO_SDATA_SET
17556         condition.
17557         (arc_override_options): Handle G option.
17558         (arc_output_pic_addr_const): Correct function definition.
17559         (arc_legitimate_address_p): Use legitimate_scaled_address_p.
17560         (arc_decl_anon_ns_mem_p): Delete.
17561         (arc_in_small_data_p): Overhaul this function to take into
17562         consideration the value given via G option.
17563         (arc_rewrite_small_data_1): Renamed and corrected old
17564         arc_rewrite_small_data function.
17565         (arc_rewrite_small_data): New function.
17566         (small_data_pattern): Don't use pic_offset_table_rtx.
17567         * config/arc/arc.h (CC1_SPEC): Recognize G option.
17568         * config/arc/simdext.md (movmisalignv2hi): Use
17569         prepare_move_operands function.
17570         (mov*): Likewise.
17571         (movmisalign*): Likewise.
17572         * doc/invoke.texi (ARC options): Document -G option.
17573
17574 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17575
17576         * config/arc/arc-protos.h (compact_sda_memory_operand): Update
17577         prototype.
17578         * config/arc/arc.c (arc_print_operand): Output scalled address for
17579         sdata whenever is possible.
17580         (arc_in_small_data_p): Allow sdata for 64bit datum when double
17581         load/stores are available.
17582         (compact_sda_memory_operand): Check for the alignment required by
17583         code density instructions.
17584         * config/arc/arc.md (movsi_insn): Use newly introduced Us0
17585         constraint.
17586         * config/arc/constraints.md (Usd): Update constraint.
17587         (Us0): New constraint.
17588         (Usc): Update constraint.
17589
17590 2017-08-31  Richard Biener  <rguenther@suse.de>
17591
17592         PR middle-end/82054
17593         * dwarf2out.c (dwarf2out_early_global_decl): Process each
17594         function only once.
17595
17596 2017-08-31  Tamar Christina  <tamar.christina@arm.com>
17597
17598         * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
17599         Resize type_signature.
17600
17601 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17602             Alan Hayward  <alan.hayward@arm.com>
17603             David Sherwood  <david.sherwood@arm.com>
17604
17605         * config/aarch64/aarch64.c (aarch64_base_register_rtx_p): Only allow
17606         subregs whose inner modes can be stored in GPRs.
17607         (aarch64_classify_index): Likewise.
17608
17609 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17610             Alan Hayward  <alan.hayward@arm.com>
17611             David Sherwood  <david.sherwood@arm.com>
17612
17613         * config/aarch64/iterators.md (V_cmp_result): Rename to...
17614         (V_INT_EQUIV): ...this.
17615         (v_cmp_result): Rename to...
17616         (v_int_equiv): ...this.
17617         * config/aarch64/aarch64.md (xorsign<mode>3): Update accordingly.
17618         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Likewise.
17619         (copysign<mode>3): Likewise.
17620         (aarch64_simd_bsl<mode>_internal): Likewise.
17621         (aarch64_simd_bsl<mode>): Likewise.
17622         (vec_cmp<mode><mode>): Likewise.
17623         (vcond<mode><mode>): Likewise.
17624         (vcond<v_cmp_mixed><mode>): Likewise.
17625         (vcondu<mode><v_cmp_mixed>): Likewise.
17626         (aarch64_cm<optab><mode>): Likewise.
17627         (aarch64_cmtst<mode>): Likewise.
17628         (aarch64_fac<optab><mode>): Likewise.
17629         (vec_perm_const<mode>): Likewise.
17630         (vcond_mask_<mode><v_cmp_result>): Rename to...
17631         (vcond_mask_<mode><v_int_equiv>): ...this.
17632         (vec_cmp<mode><v_cmp_result>): Rename to...
17633         (vec_cmp<mode><v_int_equiv>): ...this.
17634
17635 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17636             Alan Hayward  <alan.hayward@arm.com>
17637             David Sherwood  <david.sherwood@arm.com>
17638
17639         * config/aarch64/aarch64-modes.def: Remove 32-, 48- and 64-byte
17640         vector modes.
17641         * config/aarch64/iterators.md (VRL2, VRL3, VRL4): Delete.
17642         * config/aarch64/aarch64.md (UNSPEC_LD2_DREG, UNSPEC_LD3_DREG)
17643         (UNSPEC_LD4_DREG): New unspecs.
17644         * config/aarch64/aarch64-simd.md (aarch64_ld2<mode>_dreg_le)
17645         (aarch64_ld2<mode>_dreg_be): Replace with...
17646         (aarch64_ld2<mode>_dreg): ...this pattern and use the new DREG
17647         unspec.
17648         (aarch64_ld3<mode>_dreg_le)
17649         (aarch64_ld3<mode>_dreg_be): Replace with...
17650         (aarch64_ld3<mode>_dreg): ...this pattern and use the new DREG
17651         unspec.
17652         (aarch64_ld4<mode>_dreg_le)
17653         (aarch64_ld4<mode>_dreg_be): Replace with...
17654         (aarch64_ld4<mode>_dreg): ...this pattern and use the new DREG
17655         unspec.
17656
17657 2017-08-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
17658
17659         PR tree-optimization/81987
17660         * gimple-ssa-strength-reduction.c (insert_initializers): Don't
17661         insert an initializer in a location not dominated by the stride
17662         definition.
17663
17664 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
17665
17666         * tree-eh.c (lower_try_finally_switch): Set the location of the finally
17667         on the entire header of the finally block in the fallthru case.
17668
17669 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
17670
17671         * varasm.c (decode_addr_const): Deal with INDIRECT_REF <INTEGER_CST>.
17672
17673 2017-08-30  Pat Haugen  <pthaugen@us.ibm.com>
17674
17675         * config/rs6000/rs6000.c (rs6000_emit_prologue_move_from_cr): Rename from
17676         rs6000_emit_move_from_cr and call renamed function.
17677         (rs6000_emit_prologue): Call renamed functions.
17678         * config/rs6000/rs6000.md (prologue_movesi_from_cr): Rename from
17679         movesi_from_cr, remove volatile CRs.
17680
17681 2017-08-30  Jon Beniston  <jon@beniston.com>
17682             Richard Biener  <rguenther@suse.de>
17683
17684         * tree-vect-patterns.c (vect_pattern_recog_1): Use VECTOR_TYPE_P instead
17685         of VECTOR_MODE_P check.
17686         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Allow single
17687         element vector types.
17688
17689 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17690
17691         * df.h (df_read_modify_subreg_p): Remove in favor of...
17692         * rtl.h (read_modify_subreg_p): ...this new function.  Take a
17693         const_rtx instead of an rtx.
17694         * cprop.c (local_cprop_find_used_regs): Update accordingly.
17695         * df-problems.c (df_word_lr_mark_ref): Likewise.
17696         * ira-lives.c (mark_pseudo_reg_live): Likewise.
17697         (mark_pseudo_reg_dead): Likewise.
17698         (mark_ref_dead): Likewise.
17699         * reginfo.c (init_subregs_of_mode): Likewise.
17700         * sched-deps.c (sched_analyze_1): Likewise.
17701         * df-scan.c (df_def_record_1): Likewise.
17702         (df_uses_record): Likewise.
17703         (df_read_modify_subreg_p): Remove in favor of...
17704         * rtlanal.c (read_modify_subreg_p): ...this new function.  Take a
17705         const_rtx instead of an rtx.
17706
17707 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17708             Alan Hayward  <alan.hayward@arm.com>
17709             David Sherwood  <david.sherwood@arm.com>
17710
17711         * rtl.h (partial_subreg_p): New function.
17712         * caller-save.c (save_call_clobbered_regs): Use it.
17713         * calls.c (expand_call): Likewise.
17714         * combine.c (combinable_i3pat): Likewise.
17715         (simplify_set): Likewise.
17716         (make_extraction): Likewise.
17717         (make_compound_operation_int): Likewise.
17718         (gen_lowpart_or_truncate): Likewise.
17719         (force_to_mode): Likewise.
17720         (make_field_assignment): Likewise.
17721         (reg_truncated_to_mode): Likewise.
17722         (record_truncated_value): Likewise.
17723         (move_deaths): Likewise.
17724         * cse.c (record_jump_cond): Likewise.
17725         (cse_insn): Likewise.
17726         * cselib.c (cselib_lookup_1): Likewise.
17727         * expmed.c (extract_bit_field_using_extv): Likewise.
17728         * function.c (assign_parm_setup_reg): Likewise.
17729         * ifcvt.c (noce_convert_multiple_sets): Likewise.
17730         * ira-build.c (create_insn_allocnos): Likewise.
17731         * lra-coalesce.c (merge_pseudos): Likewise.
17732         * lra-constraints.c (match_reload): Likewise.
17733         (simplify_operand_subreg): Likewise.
17734         (curr_insn_transform): Likewise.
17735         * lra-lives.c (process_bb_lives): Likewise.
17736         * lra.c (new_insn_reg): Likewise.
17737         (lra_substitute_pseudo): Likewise.
17738         * regcprop.c (mode_change_ok): Likewise.
17739         (maybe_mode_change): Likewise.
17740         (copyprop_hardreg_forward_1): Likewise.
17741         * reload.c (push_reload): Likewise.
17742         (find_reloads): Likewise.
17743         (find_reloads_subreg_address): Likewise.
17744         * reload1.c (alter_reg): Likewise.
17745         (eliminate_regs_1): Likewise.
17746         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17747
17748 2017-08-30  David Edelsohn  <dje.gcc@gmail.com>
17749
17750         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert
17751         back to if statements, including unpack.
17752
17753 2017-08-30  Martin Liska  <mliska@suse.cz>
17754
17755         PR inline-asm/82001
17756         * ipa-icf-gimple.c (func_checker::compare_tree_list_operand):
17757         Rename to ...
17758         (func_checker::compare_asm_inputs_outputs): ... this function.
17759         (func_checker::compare_gimple_asm): Use the function to compare
17760         also ASM constrains.
17761         * ipa-icf-gimple.h: Rename the function.
17762
17763 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17764             Alan Hayward  <alan.hayward@arm.com>
17765             David Sherwood  <david.sherwood@arm.com>
17766
17767         * coretypes.h (complex_mode): New type.
17768         * gdbhooks.py (build_pretty_printer): Handle it.
17769         * machmode.h (complex_mode): New class.
17770         (complex_mode::includes_p): New function.
17771         (is_complex_int_mode): Likewise.
17772         (is_complex_float_mode): Likewise.
17773         * genmodes.c (get_mode_class): Handle complex mode classes.
17774         * function.c (expand_function_end): Use is_complex_int_mode.
17775
17776 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17777             Alan Hayward  <alan.hayward@arm.com>
17778             David Sherwood  <david.sherwood@arm.com>
17779
17780         * coretypes.h (scalar_mode_pod): New typedef.
17781         * gdbhooks.py (build_pretty_printer): Handle it.
17782         * machmode.h (gt_ggc_mx, gt_pch_nx): New functions.
17783         * fixed-value.h (fixed_value::mode): Change type to scalar_mode_pod.
17784         * fold-const.c (fold_convert_const_int_from_fixed): Use scalar_mode.
17785         * tree-streamer-in.c (unpack_ts_fixed_cst_value_fields): Use
17786         as_a <scalar_mode>.
17787
17788 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17789             Alan Hayward  <alan.hayward@arm.com>
17790             David Sherwood  <david.sherwood@arm.com>
17791
17792         * machmode.h (mode_for_vector): Take a scalar_mode instead
17793         of a machine_mode.
17794         * stor-layout.c (mode_for_vector): Likewise.
17795         * explow.c (promote_mode): Use as_a <scalar_mode>.
17796         * sdbout.c (sdbout_parms): Use is_a <scalar_mode>.
17797
17798 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17799             Alan Hayward  <alan.hayward@arm.com>
17800             David Sherwood  <david.sherwood@arm.com>
17801
17802         * target.def (preferred_simd_mode): Take a scalar_mode
17803         instead of a machine_mode.
17804         * targhooks.h (default_preferred_simd_mode): Likewise.
17805         * targhooks.c (default_preferred_simd_mode): Likewise.
17806         * config/arc/arc.c (arc_preferred_simd_mode): Likewise.
17807         * config/arm/arm.c (arm_preferred_simd_mode): Likewise.
17808         * config/c6x/c6x.c (c6x_preferred_simd_mode): Likewise.
17809         * config/epiphany/epiphany.c (epiphany_preferred_simd_mode): Likewise.
17810         * config/i386/i386.c (ix86_preferred_simd_mode): Likewise.
17811         * config/mips/mips.c (mips_preferred_simd_mode): Likewise.
17812         * config/nvptx/nvptx.c (nvptx_preferred_simd_mode): Likewise.
17813         * config/powerpcspe/powerpcspe.c (rs6000_preferred_simd_mode):
17814         Likewise.
17815         * config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Likewise.
17816         * config/s390/s390.c (s390_preferred_simd_mode): Likewise.
17817         * config/sparc/sparc.c (sparc_preferred_simd_mode): Likewise.
17818         * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Likewise.
17819         (aarch64_simd_scalar_immediate_valid_for_move): Update accordingly.
17820         * doc/tm.texi: Regenerate.
17821         * optabs-query.c (can_vec_mask_load_store_p): Return false for
17822         non-scalar modes.
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         * target.def (scalar_mode_supported_p): Take a scalar_mode
17829         instead of a machine_mode.
17830         * targhooks.h (default_scalar_mode_supported_p): Likewise.
17831         * targhooks.c (default_scalar_mode_supported_p): Likewise.
17832         * config/aarch64/aarch64.c (aarch64_scalar_mode_supported_p): Likewise.
17833         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
17834         * config/arm/arm.c (arm_scalar_mode_supported_p): Likewise.
17835         * config/avr/avr.c (avr_scalar_mode_supported_p): Likewise.
17836         * config/c6x/c6x.c (c6x_scalar_mode_supported_p): Likewise.
17837         * config/i386/i386.c (ix86_scalar_mode_supported_p): Likewise.
17838         * config/ia64/ia64.c (ia64_scalar_mode_supported_p): Likewise.
17839         * config/mips/mips.c (mips_scalar_mode_supported_p): Likewise.
17840         * config/msp430/msp430.c (msp430_scalar_mode_supported_p): Likewise.
17841         * config/pa/pa.c (pa_scalar_mode_supported_p): Likewise.
17842         * config/pdp11/pdp11.c (pdp11_scalar_mode_supported_p): Likewise.
17843         * config/powerpcspe/powerpcspe.c (rs6000_scalar_mode_supported_p):
17844         Likewise.
17845         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Likewise.
17846         * config/s390/s390.c (s390_scalar_mode_supported_p): Likewise.
17847         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
17848         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
17849         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p):
17850         Likewise.
17851         * doc/tm.texi: Regenerate.
17852
17853 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17854             Alan Hayward  <alan.hayward@arm.com>
17855             David Sherwood  <david.sherwood@arm.com>
17856
17857         * coretypes.h (opt_scalar_mode): New typedef.
17858         * gdbhooks.py (build_pretty_printers): Handle it.
17859         * machmode.h (mode_iterator::get_2xwider): Add overload for
17860         opt_mode<T>.
17861         * emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating
17862         over scalar modes.
17863         * expr.c (convert_mode_scalar): Likewise.
17864         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17865         * optabs.c (expand_float): Likewise.
17866         (expand_fix): Likewise.
17867         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17868
17869 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17870             Alan Hayward  <alan.hayward@arm.com>
17871             David Sherwood  <david.sherwood@arm.com>
17872
17873         * optabs.c (expand_float): Explicitly check for scalars before
17874         using a branching expansion.
17875         (expand_fix): Likewise.
17876
17877 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17878             Alan Hayward  <alan.hayward@arm.com>
17879             David Sherwood  <david.sherwood@arm.com>
17880
17881         * expr.c (convert_mode): Split scalar handling out into...
17882         (convert_mode_scalar): ...this new function.  Treat the modes
17883         as scalar_modes.
17884
17885 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17886             Alan Hayward  <alan.hayward@arm.com>
17887             David Sherwood  <david.sherwood@arm.com>
17888
17889         * omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode
17890         and scalar_mode.
17891         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise.
17892
17893 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17894             Alan Hayward  <alan.hayward@arm.com>
17895             David Sherwood  <david.sherwood@arm.com>
17896
17897         * fixed-value.h (fixed_from_double_int): Take a scalar_mode
17898         rather than a machine_mode.
17899         (fixed_from_string): Likewise.
17900         (fixed_convert): Likewise.
17901         (fixed_convert_from_int): Likewise.
17902         (fixed_convert_from_real): Likewise.
17903         (real_convert_from_fixed): Likewise.
17904         * fixed-value.c (fixed_from_double_int): Likewise.
17905         (fixed_from_string): Likewise.
17906         (fixed_convert): Likewise.
17907         (fixed_convert_from_int): Likewise.
17908         (fixed_convert_from_real): Likewise.
17909         (real_convert_from_fixed): Likewise.
17910         * config/avr/avr.c (avr_out_round): Use as_a <scalar_mode>.
17911
17912 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17913             Alan Hayward  <alan.hayward@arm.com>
17914             David Sherwood  <david.sherwood@arm.com>
17915
17916         * emit-rtl.c (immed_double_const): Use is_a <scalar_mode> instead
17917         of separate mode class checks.  Do not allow vector modes here.
17918         (immed_wide_int_const): Use as_a <scalar_mode>.
17919         * explow.c (trunc_int_for_mode): Likewise.
17920         * rtl.h (wi::int_traits<rtx_mode_t>::get_precision): Likewise.
17921         (wi::shwi): Likewise.
17922         (wi::min_value): Likewise.
17923         (wi::max_value): Likewise.
17924         * dwarf2out.c (loc_descriptor): Likewise.
17925         * simplify-rtx.c (simplify_immed_subreg): Fix rtx_mode_t argument
17926         for CONST_WIDE_INT.
17927
17928 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17929             Alan Hayward  <alan.hayward@arm.com>
17930             David Sherwood  <david.sherwood@arm.com>
17931
17932         * tree.h (SCALAR_TYPE_MODE): New macro.
17933         * expr.c (expand_expr_addr_expr_1): Use it.
17934         (expand_expr_real_2): Likewise.
17935         * fold-const.c (fold_convert_const_fixed_from_fixed): Likeise.
17936         (fold_convert_const_fixed_from_int): Likewise.
17937         (fold_convert_const_fixed_from_real): Likewise.
17938         (native_encode_fixed): Likewise
17939         (native_encode_complex): Likewise
17940         (native_encode_vector): Likewise.
17941         (native_interpret_fixed): Likewise.
17942         (native_interpret_real): Likewise.
17943         (native_interpret_complex): Likewise.
17944         (native_interpret_vector): Likewise.
17945         * omp-simd-clone.c (simd_clone_adjust_return_type): Likewise.
17946         (simd_clone_adjust_argument_types): Likewise.
17947         (simd_clone_init_simd_arrays): Likewise.
17948         (simd_clone_adjust): Likewise.
17949         * stor-layout.c (layout_type): Likewise.
17950         * tree.c (build_minus_one_cst): Likewise.
17951         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
17952         * tree-inline.c (estimate_move_cost): Likewise.
17953         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise.
17954         * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
17955         (vectorizable_reduction): Likewise.
17956         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
17957         (vect_recog_mixed_size_cond_pattern): Likewise.
17958         (check_bool_pattern): Likewise.
17959         (adjust_bool_pattern): Likewise.
17960         (search_type_for_mask_1): Likewise.
17961         * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
17962         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17963         (vectorizable_load): Likewise.
17964         (vectorizable_store): Likewise.
17965         * ubsan.c (ubsan_encode_value): Likewise.
17966         * varasm.c (output_constant): Likewise.
17967
17968 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17969             Alan Hayward  <alan.hayward@arm.com>
17970             David Sherwood  <david.sherwood@arm.com>
17971
17972         * coretypes.h (scalar_mode): New class.
17973         * machmode.h (scalar_mode): Likewise.
17974         (scalar_mode::includes_p): New function.
17975         (mode_to_inner): Return a scalar_mode rather than a machine_mode.
17976         * gdbhooks.py (build_pretty_printers): Handle scalar_mode.
17977         * genmodes.c (get_mode_class): Handle remaining scalar modes.
17978         * cfgexpand.c (expand_debug_expr): Use scalar_mode.
17979         * expmed.c (store_bit_field_1): Likewise.
17980         (extract_bit_field_1): Likewise.
17981         * expr.c (write_complex_part): Likewise.
17982         (read_complex_part): Likewise.
17983         (emit_move_complex_push): Likewise.
17984         (expand_expr_real_2): Likewise.
17985         * function.c (assign_parm_setup_reg): Likewise.
17986         (assign_parms_unsplit_complex): Likewise.
17987         * optabs.c (expand_binop): Likewise.
17988         * rtlanal.c (subreg_get_info): Likewise.
17989         * simplify-rtx.c (simplify_immed_subreg): Likewise.
17990         * varasm.c (output_constant_pool_2): Likewise.
17991
17992 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17993             Alan Hayward  <alan.hayward@arm.com>
17994             David Sherwood  <david.sherwood@arm.com>
17995
17996         * expmed.c (extract_high_half): Use scalar_int_mode and remove
17997         assertion.
17998         (expmed_mult_highpart_optab): Likewise.
17999         (expmed_mult_highpart): Likewise.
18000
18001 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18002             Alan Hayward  <alan.hayward@arm.com>
18003             David Sherwood  <david.sherwood@arm.com>
18004
18005         * builtins.h (builtin_strncpy_read_str): Take a scalar_int_mode
18006         instead of a machine_mode.
18007         (builtin_memset_read_str): Likewise.
18008         * builtins.c (c_readstr): Likewise.
18009         (builtin_memcpy_read_str): Likewise.
18010         (builtin_strncpy_read_str): Likewise.
18011         (builtin_memset_read_str): Likewise.
18012         (builtin_memset_gen_str): Likewise.
18013         (expand_builtin_signbit): Use scalar_int_mode for local variables.
18014         * cfgexpand.c (convert_debug_memory_address): Take a scalar_int_mode
18015         instead of a machine_mode.
18016         * combine.c (simplify_if_then_else): Use scalar_int_mode for local
18017         variables.
18018         (make_extraction): Likewise.
18019         (try_widen_shift_mode): Take and return scalar_int_modes instead
18020         of machine_modes.
18021         * config/aarch64/aarch64.c (aarch64_libgcc_cmp_return_mode): Return
18022         a scalar_int_mode instead of a machine_mode.
18023         * config/avr/avr.c (avr_addr_space_address_mode): Likewise.
18024         (avr_addr_space_pointer_mode): Likewise.
18025         * config/cr16/cr16.c (cr16_unwind_word_mode): Likewise.
18026         * config/msp430/msp430.c (msp430_addr_space_pointer_mode): Likewise.
18027         (msp430_unwind_word_mode): Likewise.
18028         * config/spu/spu.c (spu_unwind_word_mode): Likewise.
18029         (spu_addr_space_pointer_mode): Likewise.
18030         (spu_addr_space_address_mode): Likewise.
18031         (spu_libgcc_cmp_return_mode): Likewise.
18032         (spu_libgcc_shift_count_mode): Likewise.
18033         * config/rl78/rl78.c (rl78_addr_space_address_mode): Likewise.
18034         (rl78_addr_space_pointer_mode): Likewise.
18035         (fl78_unwind_word_mode): Likewise.
18036         (rl78_valid_pointer_mode): Take a scalar_int_mode instead of a
18037         machine_mode.
18038         * config/alpha/alpha.c (vms_valid_pointer_mode): Likewise.
18039         * config/ia64/ia64.c (ia64_vms_valid_pointer_mode): Likewise.
18040         * config/mips/mips.c (mips_mode_rep_extended): Likewise.
18041         (mips_valid_pointer_mode): Likewise.
18042         * config/tilegx/tilegx.c (tilegx_mode_rep_extended): Likewise.
18043         * config/ft32/ft32.c (ft32_valid_pointer_mode): Likewise.
18044         (ft32_addr_space_pointer_mode): Return a scalar_int_mode instead
18045         of a machine_mode.
18046         (ft32_addr_space_address_mode): Likewise.
18047         * config/m32c/m32c.c (m32c_valid_pointer_mode): Take a
18048         scalar_int_mode instead of a machine_mode.
18049         (m32c_addr_space_pointer_mode): Return a scalar_int_mode instead
18050         of a machine_mode.
18051         (m32c_addr_space_address_mode): Likewise.
18052         * config/powerpcspe/powerpcspe.c (rs6000_abi_word_mode): Likewise.
18053         (rs6000_eh_return_filter_mode): Likewise.
18054         * config/rs6000/rs6000.c (rs6000_abi_word_mode): Likewise.
18055         (rs6000_eh_return_filter_mode): Likewise.
18056         * config/s390/s390.c (s390_libgcc_cmp_return_mode): Likewise.
18057         (s390_libgcc_shift_count_mode): Likewise.
18058         (s390_unwind_word_mode): Likewise.
18059         (s390_valid_pointer_mode): Take a scalar_int_mode rather than a
18060         machine_mode.
18061         * target.def (mode_rep_extended): Likewise.
18062         (valid_pointer_mode): Likewise.
18063         (addr_space.valid_pointer_mode): Likewise.
18064         (eh_return_filter_mode): Return a scalar_int_mode rather than
18065         a machine_mode.
18066         (libgcc_cmp_return_mode): Likewise.
18067         (libgcc_shift_count_mode): Likewise.
18068         (unwind_word_mode): Likewise.
18069         (addr_space.pointer_mode): Likewise.
18070         (addr_space.address_mode): Likewise.
18071         * doc/tm.texi: Regenerate.
18072         * dojump.c (prefer_and_bit_test): Take a scalar_int_mode rather than
18073         a machine_mode.
18074         (do_jump): Use scalar_int_mode for local variables.
18075         * dwarf2cfi.c (init_return_column_size): Take a scalar_int_mode
18076         rather than a machine_mode.
18077         * dwarf2out.c (convert_descriptor_to_mode): Likewise.
18078         (scompare_loc_descriptor_wide): Likewise.
18079         (scompare_loc_descriptor_narrow): Likewise.
18080         * emit-rtl.c (adjust_address_1): Use scalar_int_mode for local
18081         variables.
18082         * except.c (sjlj_emit_dispatch_table): Likewise.
18083         (expand_builtin_eh_copy_values): Likewise.
18084         * explow.c (convert_memory_address_addr_space_1): Likewise.
18085         Take a scalar_int_mode rather than a machine_mode.
18086         (convert_memory_address_addr_space): Take a scalar_int_mode rather
18087         than a machine_mode.
18088         (memory_address_addr_space): Use scalar_int_mode for local variables.
18089         * expmed.h (expand_mult_highpart_adjust): Take a scalar_int_mode
18090         rather than a machine_mode.
18091         * expmed.c (mask_rtx): Likewise.
18092         (init_expmed_one_conv): Likewise.
18093         (expand_mult_highpart_adjust): Likewise.
18094         (extract_high_half): Likewise.
18095         (expmed_mult_highpart_optab): Likewise.
18096         (expmed_mult_highpart): Likewise.
18097         (expand_smod_pow2): Likewise.
18098         (expand_sdiv_pow2): Likewise.
18099         (emit_store_flag_int): Likewise.
18100         (adjust_bit_field_mem_for_reg): Use scalar_int_mode for local
18101         variables.
18102         (extract_low_bits): Likewise.
18103         * expr.h (by_pieces_constfn): Take a scalar_int_mode rather than
18104         a machine_mode.
18105         * expr.c (pieces_addr::adjust):  Likewise.
18106         (can_store_by_pieces): Likewise.
18107         (store_by_pieces): Likewise.
18108         (clear_by_pieces_1): Likewise.
18109         (expand_expr_addr_expr_1): Likewise.
18110         (expand_expr_addr_expr): Use scalar_int_mode for local variables.
18111         (expand_expr_real_1): Likewise.
18112         (try_casesi): Likewise.
18113         * final.c (shorten_branches): Likewise.
18114         * fold-const.c (fold_convert_const_int_from_fixed): Change the
18115         type of "mode" to machine_mode.
18116         * internal-fn.c (expand_arith_overflow_result_store): Take a
18117         scalar_int_mode rather than a machine_mode.
18118         (expand_mul_overflow): Use scalar_int_mode for local variables.
18119         * loop-doloop.c (doloop_modify): Likewise.
18120         (doloop_optimize): Likewise.
18121         * optabs.c (expand_subword_shift): Take a scalar_int_mode rather
18122         than a machine_mode.
18123         (expand_doubleword_shift_condmove): Likewise.
18124         (expand_doubleword_shift): Likewise.
18125         (expand_doubleword_clz): Likewise.
18126         (expand_doubleword_popcount): Likewise.
18127         (expand_doubleword_parity): Likewise.
18128         (expand_absneg_bit): Use scalar_int_mode for local variables.
18129         (prepare_float_lib_cmp): Likewise.
18130         * rtl.h (convert_memory_address_addr_space_1): Take a scalar_int_mode
18131         rather than a machine_mode.
18132         (convert_memory_address_addr_space): Likewise.
18133         (get_mode_bounds): Likewise.
18134         (get_address_mode): Return a scalar_int_mode rather than a
18135         machine_mode.
18136         * rtlanal.c (get_address_mode): Likewise.
18137         * stor-layout.c (get_mode_bounds): Take a scalar_int_mode rather
18138         than a machine_mode.
18139         * targhooks.c (default_mode_rep_extended): Likewise.
18140         (default_valid_pointer_mode): Likewise.
18141         (default_addr_space_valid_pointer_mode): Likewise.
18142         (default_eh_return_filter_mode): Return a scalar_int_mode rather
18143         than a machine_mode.
18144         (default_libgcc_cmp_return_mode): Likewise.
18145         (default_libgcc_shift_count_mode): Likewise.
18146         (default_unwind_word_mode): Likewise.
18147         (default_addr_space_pointer_mode): Likewise.
18148         (default_addr_space_address_mode): Likewise.
18149         * targhooks.h (default_eh_return_filter_mode): Likewise.
18150         (default_libgcc_cmp_return_mode): Likewise.
18151         (default_libgcc_shift_count_mode): Likewise.
18152         (default_unwind_word_mode): Likewise.
18153         (default_addr_space_pointer_mode): Likewise.
18154         (default_addr_space_address_mode): Likewise.
18155         (default_mode_rep_extended): Take a scalar_int_mode rather than
18156         a machine_mode.
18157         (default_valid_pointer_mode): Likewise.
18158         (default_addr_space_valid_pointer_mode): Likewise.
18159         * tree-ssa-address.c (addr_for_mem_ref): Use scalar_int_mode for
18160         local variables.
18161         * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Take a scalar_int_mode
18162         rather than a machine_mode.
18163         * tree-switch-conversion.c (array_value_type): Use scalar_int_mode
18164         for local variables.
18165         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18166         * var-tracking.c (use_narrower_mode): Take a scalar_int_mode rather
18167         than a machine_mode.
18168
18169 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18170             Alan Hayward  <alan.hayward@arm.com>
18171             David Sherwood  <david.sherwood@arm.com>
18172
18173         * dojump.c (do_jump_by_parts_greater_rtx): Change the type of
18174         the mode argument to scalar_int_mode.
18175         (do_jump_by_parts_zero_rtx): Likewise.
18176         (do_jump_by_parts_equality_rtx): Likewise.
18177         (do_jump_by_parts_greater): Take a mode argument.
18178         (do_jump_by_parts_equality): Likewise.
18179         (do_jump_1): Update calls accordingly.
18180
18181 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18182             Alan Hayward  <alan.hayward@arm.com>
18183             David Sherwood  <david.sherwood@arm.com>
18184
18185         * is-a.h (safe_dyn_cast): New function.
18186         * rtl.h (rtx_jump_table_data::get_data_mode): New function.
18187         (jump_table_for_label): Likewise.
18188         * final.c (final_addr_vec_align): Take an rtx_jump_table_data *
18189         instead of an rtx_insn *.
18190         (shorten_branches): Use dyn_cast instead of LABEL_P and
18191         JUMP_TABLE_DATA_P.  Use jump_table_for_label and
18192         rtx_jump_table_data::get_data_mode.
18193         (final_scan_insn): Likewise.
18194
18195 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18196             Alan Hayward  <alan.hayward@arm.com>
18197             David Sherwood  <david.sherwood@arm.com>
18198
18199         * combine.c (try_combine): Use is_a <scalar_int_mode> when
18200         trying to combine a full-register integer set with a subreg
18201         integer set.
18202
18203 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18204             Alan Hayward  <alan.hayward@arm.com>
18205             David Sherwood  <david.sherwood@arm.com>
18206
18207         * expr.c (expand_expr_addr_expr): Add a new_tmode local variable
18208         that is always either address_mode or pointer_mode.
18209
18210 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18211             Alan Hayward  <alan.hayward@arm.com>
18212             David Sherwood  <david.sherwood@arm.com>
18213
18214         * expr.c (expand_expr_real_2): Use word_mode instead of innermode
18215         when the two are known to be equal.
18216
18217 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18218             Alan Hayward  <alan.hayward@arm.com>
18219             David Sherwood  <david.sherwood@arm.com>
18220
18221         * simplify-rtx.c (simplify_const_unary_operation): Use
18222         is_a <scalar_int_mode> instead of checking for a nonzero
18223         precision.  Forcibly convert op_mode to a scalar_int_mode
18224         in that case.  More clearly differentiate the operand and
18225         result modes and use the former when deciding what the value
18226         of a count-bits operation should be.  Use is_int_mode instead
18227         of checking for a MODE_INT.  Remove redundant check for whether
18228         this mode has a zero precision.
18229
18230 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18231             Alan Hayward  <alan.hayward@arm.com>
18232             David Sherwood  <david.sherwood@arm.com>
18233
18234         * optabs.c (widen_leading): Change the type of the mode argument
18235         to scalar_int_mode.  Use opt_scalar_int_mode for the mode iterator.
18236         (widen_bswap): Likewise.
18237         (expand_parity): Likewise.
18238         (expand_ctz): Change the type of the mode argument to scalar_int_mode.
18239         (expand_ffs): Likewise.
18240         (epand_unop): Check for scalar integer modes before calling the
18241         above routines.
18242
18243 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18244             Alan Hayward  <alan.hayward@arm.com>
18245             David Sherwood  <david.sherwood@arm.com>
18246
18247         * expr.c (const_scalar_mask_from_tree): Add a mode argument.
18248         Expand commentary.
18249         (expand_expr_real_1): Update call accordingly.
18250
18251 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18252             Alan Hayward  <alan.hayward@arm.com>
18253             David Sherwood  <david.sherwood@arm.com>
18254
18255         * expmed.c (store_bit_field_using_insv): Add op0_mode and
18256         value_mode arguments.  Use scalar_int_mode internally.
18257         (store_bit_field_1): Rename the new integer mode from imode
18258         to op0_mode and use it instead of GET_MODE (op0).  Update calls
18259         to store_split_bit_field, store_bit_field_using_insv and
18260         store_fixed_bit_field.
18261         (store_fixed_bit_field): Add op0_mode and value_mode arguments.
18262         Use scalar_int_mode internally.  Use a bit count rather than a mode
18263         when calculating the largest bit size for get_best_mode.
18264         Update calls to store_split_bit_field and store_fixed_bit_field_1.
18265         (store_fixed_bit_field_1): Add mode and value_mode arguments.
18266         Remove assertion that OP0 has a scalar integer mode.
18267         (store_split_bit_field): Add op0_mode and value_mode arguments.
18268         Update calls to extract_fixed_bit_field.
18269         (extract_bit_field_using_extv): Add an op0_mode argument.
18270         Use scalar_int_mode internally.
18271         (extract_bit_field_1): Rename the new integer mode from imode to
18272         op0_mode and use it instead of GET_MODE (op0).  Update calls to
18273         extract_split_bit_field, extract_bit_field_using_extv and
18274         extract_fixed_bit_field.
18275         (extract_fixed_bit_field): Add an op0_mode argument.  Update calls
18276         to extract_split_bit_field and extract_fixed_bit_field_1.
18277         (extract_fixed_bit_field_1): Add a mode argument.  Remove assertion
18278         that OP0 has a scalar integer mode.  Use as_a <scalar_int_mode>
18279         on the target mode.
18280         (extract_split_bit_field): Add an op0_mode argument.  Update call
18281         to extract_fixed_bit_field.
18282
18283 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18284             Alan Hayward  <alan.hayward@arm.com>
18285             David Sherwood  <david.sherwood@arm.com>
18286
18287         * cse.c (cse_insn): Use opt_scalar_int_mode for the mode iterator.
18288         * explow.c (hard_function_value): Likewise.
18289         * expmed.c (extract_fixed_bit_field_1): Likewise.  Move the
18290         convert_to_mode call outside the loop.
18291         * expr.c (alignment_for_piecewise_move): Use opt_scalar_int_mode
18292         for the mode iterator.  Require the mode specified by max_pieces
18293         to exist.
18294         (emit_block_move_via_movmem): Use opt_scalar_int_mode for the
18295         mode iterator.
18296         (copy_blkmode_to_reg): Likewise.
18297         (set_storage_via_setmem): Likewise.
18298         * optabs.c (prepare_cmp_insn): Likewise.
18299         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
18300         * stor-layout.c (finish_bitfield_representative): Likewise.
18301
18302 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18303             Alan Hayward  <alan.hayward@arm.com>
18304             David Sherwood  <david.sherwood@arm.com>
18305
18306         * rtl.h (subreg_unpromoted_mode, subreg_promoted_mode): New functions.
18307         * expr.c (convert_move): Use them.
18308         (convert_modes): Likewise.
18309         (store_expr_with_bounds): Likewise.
18310
18311 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18312             Alan Hayward  <alan.hayward@arm.com>
18313             David Sherwood  <david.sherwood@arm.com>
18314
18315         * rtl.h (rtl_hooks::reg_nonzero_bits): Add a scalar_int_mode
18316         parameter for the mode of "x".  Remove the "known_x", "known_mode"
18317         and "known_ret" arguments.  Change the type of the mode argument
18318         to scalar_int_mode.
18319         (rtl_hooks:reg_num_sign_bit_copies): Likewise.
18320         * combine.c (reg_nonzero_bits_for_combine): Update accordingly.
18321         (reg_num_sign_bit_copies_for_combine): Likewise.
18322         * rtlanal.c (nonzero_bits1): Likewise.
18323         (num_sign_bit_copies1): Likewise.
18324         * rtlhooks-def.h (reg_nonzero_bits_general): Likewise.
18325         (reg_num_sign_bit_copies_general): Likewise.
18326         * rtlhooks.c (reg_num_sign_bit_copies_general): Likewise.
18327         (reg_nonzero_bits_general): Likewise.
18328
18329 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18330             Alan Hayward  <alan.hayward@arm.com>
18331             David Sherwood  <david.sherwood@arm.com>
18332
18333         * rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather
18334         than in subroutines.  Return 1 for non-integer modes.
18335         (cached_num_sign_bit_copies): Change the type of the mode parameter
18336         to scalar_int_mode.
18337         (num_sign_bit_copies1): Likewise.  Remove early exit for other mode
18338         classes.  Handle CONST_INT_P first and then check whether X also
18339         has a scalar integer mode.  Check the same thing for inner registers
18340         of a SUBREG and for values that are being extended or truncated.
18341
18342 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18343             Alan Hayward  <alan.hayward@arm.com>
18344             David Sherwood  <david.sherwood@arm.com>
18345
18346         * rtlanal.c (nonzero_bits): Handle VOIDmode here rather than
18347         in subroutines.  Return the mode mask for non-integer modes.
18348         (cached_nonzero_bits): Change the type of the mode parameter
18349         to scalar_int_mode.
18350         (nonzero_bits1): Likewise.  Remove early exit for other mode
18351         classes.  Handle CONST_INT_P first and then check whether X
18352         also has a scalar integer mode.
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         * expr.c (widest_int_mode_for_size): Make the comment match the code.
18359         Return a scalar_int_mode and assert that the size is greater than
18360         one byte.
18361         (by_pieces_ninsns): Update accordingly and remove VOIDmode handling.
18362         (op_by_pieces_d::op_by_pieces_d): Likewise.
18363         (op_by_pieces_d::run): Likewise.
18364         (can_store_by_pieces): Likewise.
18365
18366 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18367             Alan Hayward  <alan.hayward@arm.com>
18368             David Sherwood  <david.sherwood@arm.com>
18369
18370         * combine.c (extract_left_shift): Add a mode argument and update
18371         recursive calls.
18372         (make_compound_operation_int): Change the type of the mode parameter
18373         to scalar_int_mode and update the call to extract_left_shift.
18374
18375 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18376             Alan Hayward  <alan.hayward@arm.com>
18377             David Sherwood  <david.sherwood@arm.com>
18378
18379         * combine.c (simplify_and_const_int): Change the type of the mode
18380         parameter to scalar_int_mode.
18381         (simplify_and_const_int_1): Likewise.  Update recursive call.
18382
18383 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18384             Alan Hayward  <alan.hayward@arm.com>
18385             David Sherwood  <david.sherwood@arm.com>
18386
18387         * combine.c (simplify_compare_const): Check that the mode is a
18388         scalar_int_mode (rather than VOIDmode) before testing its
18389         precision.
18390         (simplify_comparison): Move COMPARISON_P handling out of the
18391         loop and restrict the latter part of the loop to scalar_int_modes.
18392         Check is_a <scalar_int_mode> before calling HWI_COMPUTABLE_MODE_P
18393         and when considering SUBREG_REGs.  Use is_int_mode instead of
18394         checking GET_MODE_CLASS against MODE_INT.
18395
18396 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18397             Alan Hayward  <alan.hayward@arm.com>
18398             David Sherwood  <david.sherwood@arm.com>
18399
18400         * combine.c (try_widen_shift_mode): Move check for equal modes to...
18401         (simplify_shift_const_1): ...here.  Use scalar_int_mode for
18402         shift_unit_mode and for modes involved in scalar shifts.
18403
18404 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18405             Alan Hayward  <alan.hayward@arm.com>
18406             David Sherwood  <david.sherwood@arm.com>
18407
18408         * combine.c (force_int_to_mode): New function, split out from...
18409         (force_to_mode): ...here.  Keep xmode up-to-date and use it
18410         instead of GET_MODE (x).
18411
18412 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18413             Alan Hayward  <alan.hayward@arm.com>
18414             David Sherwood  <david.sherwood@arm.com>
18415
18416         * optabs-query.h (extraction_insn::struct_mode): Change type to
18417         opt_scalar_int_mode and update comment.
18418         (extraction_insn::field_mode): Change type to scalar_int_mode.
18419         (extraction_insn::pos_mode): Likewise.
18420         * combine.c (make_extraction): Update accordingly.
18421         * optabs-query.c (get_traditional_extraction_insn): Likewise.
18422         (get_optab_extraction_insn): Likewise.
18423         * recog.c (simplify_while_replacing): Likewise.
18424         * expmed.c (narrow_bit_field_mem): Change the type of the mode
18425         parameter to opt_scalar_int_mode.
18426
18427 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18428             Alan Hayward  <alan.hayward@arm.com>
18429             David Sherwood  <david.sherwood@arm.com>
18430
18431         * machmode.h (bit_field_mode_iterator::next_mode): Take a pointer
18432         to a scalar_int_mode instead of a machine_mode.
18433         (bit_field_mode_iterator::m_mode): Change type to opt_scalar_int_mode.
18434         (get_best_mode): Return a boolean and use a pointer argument to store
18435         the selected mode.  Replace the limit mode parameter with a bit limit.
18436         * expmed.c (adjust_bit_field_mem_for_reg): Use scalar_int_mode
18437         for the values returned by bit_field_mode_iterator::next_mode.
18438         (store_bit_field): Update call to get_best_mode.
18439         (store_fixed_bit_field): Likewise.
18440         (extract_fixed_bit_field): Likewise.
18441         * expr.c (optimize_bitfield_assignment_op): Likewise.
18442         * fold-const.c (optimize_bit_field_compare): Likewise.
18443         (fold_truth_andor_1): Likewise.
18444         * stor-layout.c (bit_field_mode_iterator::next_mode): As above.
18445         Update for new type of m_mode.
18446         (get_best_mode): As above.
18447
18448 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18449             Alan Hayward  <alan.hayward@arm.com>
18450             David Sherwood  <david.sherwood@arm.com>
18451
18452         * expmed.c (strict_volatile_bitfield_p): Change the type of fieldmode
18453         to scalar_int_mode.  Remove check for SCALAR_INT_MODE_P.
18454         (store_bit_field): Check is_a <scalar_int_mode> before calling
18455         strict_volatile_bitfield_p.
18456         (extract_bit_field): Likewise.
18457
18458 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18459             Alan Hayward  <alan.hayward@arm.com>
18460             David Sherwood  <david.sherwood@arm.com>
18461
18462         * target.def (cstore_mode): Return a scalar_int_mode.
18463         * doc/tm.texi: Regenerate.
18464         * config/sparc/sparc.c (sparc_cstore_mode): Return a scalar_int_mode.
18465         * targhooks.h (default_cstore_mode): Likewise.
18466         * targhooks.c (default_cstore_mode): Likewise, using a forced
18467         conversion.
18468         * expmed.c (emit_cstore): Expect the target of the cstore to be
18469         a scalar_int_mode.
18470
18471 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18472             Alan Hayward  <alan.hayward@arm.com>
18473             David Sherwood  <david.sherwood@arm.com>
18474
18475         * cfgloop.h (rtx_iv): Change type of extend_mode and mode to
18476         scalar_int_mode.
18477         (niter_desc): Likewise mode.
18478         (iv_analyze): Add a mode parameter.
18479         (biv_p): Likewise.
18480         (iv_analyze_expr): Pass the mode paraeter before the rtx it describes
18481         and change its type to scalar_int_mode.
18482         * loop-iv.c: Update commentary at head of file.
18483         (iv_constant): Pass the mode paraeter before the rtx it describes
18484         and change its type to scalar_int_mode.  Remove VOIDmode handling.
18485         (iv_subreg): Change the type of the mode parameter to scalar_int_mode.
18486         (iv_extend): Likewise.
18487         (shorten_into_mode): Likewise.
18488         (iv_add): Use scalar_int_mode.
18489         (iv_mult): Likewise.
18490         (iv_shift): Likewise.
18491         (canonicalize_iv_subregs): Likewise.
18492         (get_biv_step_1): Pass the outer_mode parameter before the rtx
18493         it describes and change its mode to scalar_int_mode.   Also change
18494         the type of the returned inner_mode to scalar_int_mode.
18495         (get_biv_step): Likewise, turning outer_mode from a pointer
18496         into a direct parameter.  Update call to get_biv_step_1.
18497         (iv_analyze_biv): Add an outer_mode parameter.  Update calls to
18498         iv_constant and get_biv_step.
18499         (iv_analyze_expr): Pass the mode parameter before the rtx it describes
18500         and change its type to scalar_int_mode.  Don't initialise iv->mode
18501         to VOIDmode and remove later checks for its still being VOIDmode.
18502         Update calls to iv_analyze_op and iv_analyze_expr.  Check
18503         is_a <scalar_int_mode> when changing the mode under consideration.
18504         (iv_analyze_def): Ignore registers that don't have a scalar_int_mode.
18505         Update call to iv_analyze_expr.
18506         (iv_analyze_op): Add a mode parameter.  Reject subregs whose
18507         inner register is not also a scalar_int_mode.  Update call to
18508         iv_analyze_biv.
18509         (iv_analyze): Add a mode parameter.  Update call to iv_analyze_op.
18510         (biv_p): Add a mode parameter.  Update call to iv_analyze_biv.
18511         (iv_number_of_iterations): Use is_a <scalar_int_mode> instead of
18512         separate mode class checks.  Update calls to iv_analyze.  Remove
18513         fix-up of VOIDmodes after iv_analyze_biv.
18514         * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that
18515         don't have a scalar_int_mode.  Update call to biv_p.
18516
18517 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18518             Alan Hayward  <alan.hayward@arm.com>
18519             David Sherwood  <david.sherwood@arm.com>
18520
18521         * cfgexpand.c (convert_debug_memory_address): Use
18522         as_a <scalar_int_mode>.
18523         * combine.c (expand_compound_operation): Likewise.
18524         (make_extraction): Likewise.
18525         (change_zero_ext): Likewise.
18526         (simplify_comparison): Likewise.
18527         * cse.c (cse_insn): Likewise.
18528         * dwarf2out.c (minmax_loc_descriptor): Likewise.
18529         (mem_loc_descriptor): Likewise.
18530         (loc_descriptor): Likewise.
18531         * expmed.c (init_expmed_one_mode): Likewise.
18532         (synth_mult): Likewise.
18533         (emit_store_flag_1): Likewise.
18534         (expand_divmod): Likewise.  Use HWI_COMPUTABLE_MODE_P instead
18535         of a comparison with size.
18536         * expr.c (expand_assignment): Use as_a <scalar_int_mode>.
18537         (reduce_to_bit_field_precision): Likewise.
18538         * function.c (expand_function_end): Likewise.
18539         * internal-fn.c (expand_arith_overflow_result_store): Likewise.
18540         * loop-doloop.c (doloop_modify): Likewise.
18541         * optabs.c (expand_binop): Likewise.
18542         (expand_unop): Likewise.
18543         (expand_copysign_absneg): Likewise.
18544         (prepare_cmp_insn): Likewise.
18545         (maybe_legitimize_operand): Likewise.
18546         * recog.c (const_scalar_int_operand): Likewise.
18547         * rtlanal.c (get_address_mode): Likewise.
18548         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18549         (simplify_cond_clz_ctz): Likewise.
18550         * tree-nested.c (get_nl_goto_field): Likewise.
18551         * tree.c (build_vector_type_for_mode): Likewise.
18552         * var-tracking.c (use_narrower_mode): 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         * tree.h (SCALAR_INT_TYPE_MODE): New macro.
18559         * builtins.c (expand_builtin_signbit): Use it.
18560         * cfgexpand.c (expand_debug_expr): Likewise.
18561         * dojump.c (do_jump): Likewise.
18562         (do_compare_and_jump): Likewise.
18563         * dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Likewise.
18564         * expmed.c (make_tree): Likewise.
18565         * expr.c (expand_expr_real_2): Likewise.
18566         (expand_expr_real_1): Likewise.
18567         (try_casesi): Likewise.
18568         * fold-const-call.c (fold_const_call_ss): Likewise.
18569         * fold-const.c (unextend): Likewise.
18570         (extract_muldiv_1): Likewise.
18571         (fold_single_bit_test): Likewise.
18572         (native_encode_int): Likewise.
18573         (native_encode_string): Likewise.
18574         (native_interpret_int): Likewise.
18575         * gimple-fold.c (gimple_fold_builtin_memset): Likewise.
18576         * internal-fn.c (expand_addsub_overflow): Likewise.
18577         (expand_neg_overflow): Likewise.
18578         (expand_mul_overflow): Likewise.
18579         (expand_arith_overflow): Likewise.
18580         * match.pd: Likewise.
18581         * stor-layout.c (layout_type): Likewise.
18582         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
18583         * tree-ssa-math-opts.c (convert_mult_to_widen): Likewise.
18584         * tree-ssanames.c (get_range_info): Likewise.
18585         * tree-switch-conversion.c (array_value_type) Likewise.
18586         * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise.
18587         (vect_recog_divmod_pattern): Likewise.
18588         (vect_recog_mixed_size_cond_pattern): Likewise.
18589         * tree-vrp.c (extract_range_basic): Likewise.
18590         (simplify_float_conversion_using_ranges): Likewise.
18591         * tree.c (int_fits_type_p): Likewise.
18592         * ubsan.c (instrument_bool_enum_load): Likewise.
18593         * varasm.c (mergeable_string_section): Likewise.
18594         (narrowing_initializer_constant_valid_p): Likewise.
18595         (output_constant): Likewise.
18596
18597 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18598             Alan Hayward  <alan.hayward@arm.com>
18599             David Sherwood  <david.sherwood@arm.com>
18600
18601         * machmode.h (NARROWEST_INT_MODE): New macro.
18602         * expr.c (alignment_for_piecewise_move): Use it instead of
18603         GET_CLASS_NARROWEST_MODE (MODE_INT).
18604         (push_block): Likewise.
18605         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
18606         Likewise.
18607         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18608
18609 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18610             Alan Hayward  <alan.hayward@arm.com>
18611             David Sherwood  <david.sherwood@arm.com>
18612
18613         * postreload.c (move2add_valid_value_p): Change the type of the
18614         mode parameter to scalar_int_mode.
18615         (move2add_use_add2_insn): Add a mode parameter and use it instead
18616         of GET_MODE (reg).
18617         (move2add_use_add3_insn): Likewise.
18618         (reload_cse_move2add): Update accordingly.
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         * expr.c (expand_expr_real_2): Use scalar_int_mode for the
18625         double-word mode.
18626         * lower-subreg.c (resolve_shift_zext): Use is_a <scalar_int_mode>.
18627         * optabs.c (expand_unop): Likewise.
18628
18629 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18630             Alan Hayward  <alan.hayward@arm.com>
18631             David Sherwood  <david.sherwood@arm.com>
18632
18633         * dwarf2out.c (typed_binop): Change mode parameter to scalar_int_mode.
18634         (clz_loc_descriptor): Likewise.  Remove SCALAR_INT_MODE_P check.
18635         (popcount_loc_descriptor): Likewise.
18636         (bswap_loc_descriptor): Likewise.
18637         (rotate_loc_descriptor): Likewise.
18638         (mem_loc_descriptor): Add is_a <scalar_int_mode> checks before
18639         calling the functions above.
18640
18641 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18642             Alan Hayward  <alan.hayward@arm.com>
18643             David Sherwood  <david.sherwood@arm.com>
18644
18645         * combine.c (sign_extend_short_imm): Add is_a <scalar_int_mode>
18646         checks.
18647         (try_combine): Likewise.
18648         (simplify_if_then_else): Likewise.
18649         * cse.c (cse_insn): Likewise.
18650         * dwarf2out.c (mem_loc_descriptor): Likewise.
18651         * emit-rtl.c (gen_lowpart_common): Likewise.
18652         * simplify-rtx.c (simplify_truncation): Likewise.
18653         (simplify_binary_operation_1): Likewise.
18654         (simplify_const_relational_operation): Likewise.
18655         (simplify_ternary_operation): Likewise.
18656         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
18657
18658 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18659             Alan Hayward  <alan.hayward@arm.com>
18660             David Sherwood  <david.sherwood@arm.com>
18661
18662         * cse.c (cse_insn): Add is_a <scalar_int_mode> checks.
18663         * reload.c (push_reload): Likewise.
18664         (find_reloads): Likewise.
18665
18666 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18667             Alan Hayward  <alan.hayward@arm.com>
18668             David Sherwood  <david.sherwood@arm.com>
18669
18670         * combine.c (find_split_point): Add is_a <scalar_int_mode> checks.
18671         (make_compound_operation_int): Likewise.
18672         (change_zero_ext): Likewise.
18673         * expr.c (convert_move): Likewise.
18674         (convert_modes): Likewise.
18675         * fwprop.c (forward_propagate_subreg): Likewise.
18676         * loop-iv.c (get_biv_step_1): Likewise.
18677         * optabs.c (widen_operand): Likewise.
18678         * postreload.c (move2add_valid_value_p): Likewise.
18679         * recog.c (simplify_while_replacing): Likewise.
18680         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18681         (simplify_binary_operation_1): Likewise.  Remove redundant
18682         mode equality check.
18683
18684 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18685             Alan Hayward  <alan.hayward@arm.com>
18686             David Sherwood  <david.sherwood@arm.com>
18687
18688         * combine.c (combine_simplify_rtx): Add checks for
18689         is_a <scalar_int_mode>.
18690         (simplify_if_then_else): Likewise.
18691         (make_field_assignment): Likewise.
18692         (simplify_comparison): Likewise.
18693         * ifcvt.c (noce_try_bitop): Likewise.
18694         * loop-invariant.c (canonicalize_address_mult): Likewise.
18695         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18696
18697 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18698             Alan Hayward  <alan.hayward@arm.com>
18699             David Sherwood  <david.sherwood@arm.com>
18700
18701         * gimple-fold.c (gimple_fold_builtin_memory_op): Use
18702         is_a <scalar_int_mode> instead of != BLKmode.
18703
18704 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18705             Alan Hayward  <alan.hayward@arm.com>
18706             David Sherwood  <david.sherwood@arm.com>
18707
18708         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>
18709         instead of != VOIDmode.
18710         * combine.c (if_then_else_cond): Likewise.
18711         (change_zero_ext): Likewise.
18712         * dwarf2out.c (mem_loc_descriptor): Likewise.
18713         (loc_descriptor): Likewise.
18714         * rtlanal.c (canonicalize_condition): Likewise.
18715         * simplify-rtx.c (simplify_relational_operation_1): Likewise.
18716
18717 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18718             Alan Hayward  <alan.hayward@arm.com>
18719             David Sherwood  <david.sherwood@arm.com>
18720
18721         * simplify-rtx.c (simplify_binary_operation_1): Use
18722         is_a <scalar_int_mode> instead of !VECTOR_MODE_P.
18723
18724 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18725             Alan Hayward  <alan.hayward@arm.com>
18726             David Sherwood  <david.sherwood@arm.com>
18727
18728         * wide-int.h (int_traits<unsigned char>) New class.
18729         (int_traits<unsigned short>) Likewise.
18730         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>.
18731         Use GET_MODE_UNIT_PRECISION and remove redundant test for
18732         SCALAR_INT_MODE_P.
18733         * combine.c (set_nonzero_bits_and_sign_copies): Use
18734         is_a <scalar_int_mode>.
18735         (find_split_point): Likewise.
18736         (combine_simplify_rtx): Likewise.
18737         (simplify_logical): Likewise.
18738         (expand_compound_operation): Likewise.
18739         (expand_field_assignment): Likewise.
18740         (make_compound_operation): Likewise.
18741         (extended_count): Likewise.
18742         (change_zero_ext): Likewise.
18743         (simplify_comparison): Likewise.
18744         * dwarf2out.c (scompare_loc_descriptor): Likewise.
18745         (ucompare_loc_descriptor): Likewise.
18746         (minmax_loc_descriptor): Likewise.
18747         (mem_loc_descriptor): Likewise.
18748         (loc_descriptor): Likewise.
18749         * expmed.c (init_expmed_one_mode): Likewise.
18750         * lra-constraints.c (lra_constraint_offset): Likewise.
18751         * optabs.c (prepare_libcall_arg): Likewise.
18752         * postreload.c (move2add_note_store): Likewise.
18753         * reload.c (operands_match_p): Likewise.
18754         * rtl.h (load_extend_op): Likewise.
18755         * rtlhooks.c (gen_lowpart_general): Likewise.
18756         * simplify-rtx.c (simplify_truncation): Likewise.
18757         (simplify_unary_operation_1): Likewise.
18758         (simplify_binary_operation_1): Likewise.
18759         (simplify_const_binary_operation): Likewise.
18760         (simplify_const_relational_operation): Likewise.
18761         (simplify_subreg): Likewise.
18762         * stor-layout.c (bitwise_mode_for_mode): Likewise.
18763         * var-tracking.c (adjust_mems): Likewise.
18764         (prepare_call_arguments): Likewise.
18765
18766 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18767             Alan Hayward  <alan.hayward@arm.com>
18768             David Sherwood  <david.sherwood@arm.com>
18769
18770         * machmode.h (is_int_mode): New fuction.
18771         * combine.c (find_split_point): Use it.
18772         (combine_simplify_rtx): Likewise.
18773         (simplify_if_then_else): Likewise.
18774         (simplify_set): Likewise.
18775         (simplify_shift_const_1): Likewise.
18776         (simplify_comparison): Likewise.
18777         * config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise.
18778         * cse.c (notreg_cost): Likewise.
18779         (cse_insn): Likewise.
18780         * cselib.c (cselib_lookup_1): Likewise.
18781         * dojump.c (do_jump_1): Likewise.
18782         (do_compare_rtx_and_jump): Likewise.
18783         * dse.c (get_call_args): Likewise.
18784         * dwarf2out.c (rtl_for_decl_init): Likewise.
18785         (native_encode_initializer): Likewise.
18786         * expmed.c (emit_store_flag_1): Likewise.
18787         (emit_store_flag): Likewise.
18788         * expr.c (convert_modes): Likewise.
18789         (store_field): Likewise.
18790         (expand_expr_real_1): Likewise.
18791         * fold-const.c (fold_read_from_constant_string): Likewise.
18792         * gimple-ssa-sprintf.c (get_format_string): Likewise.
18793         * optabs-libfuncs.c (gen_int_libfunc): Likewise.
18794         * optabs.c (expand_binop): Likewise.
18795         (expand_unop): Likewise.
18796         (expand_abs_nojump): Likewise.
18797         (expand_one_cmpl_abs_nojump): Likewise.
18798         * simplify-rtx.c (mode_signbit_p): Likewise.
18799         (val_signbit_p): Likewise.
18800         (val_signbit_known_set_p): Likewise.
18801         (val_signbit_known_clear_p): Likewise.
18802         (simplify_relational_operation_1): Likewise.
18803         * tree.c (vector_type_mode): Likewise.
18804
18805 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18806             Alan Hayward  <alan.hayward@arm.com>
18807             David Sherwood  <david.sherwood@arm.com>
18808
18809         * machmode.h (smallest_mode_for_size): Fix formatting.
18810         (smallest_int_mode_for_size): New function.
18811         * cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size
18812         instead of smallest_mode_for_size.
18813         * combine.c (make_extraction): Likewise.
18814         * config/arc/arc.c (arc_expand_movmem): Likewise.
18815         * config/arm/arm.c (arm_expand_divmod_libfunc): Likewise.
18816         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
18817         * config/s390/s390.c (s390_expand_insv): Likewise.
18818         * config/sparc/sparc.c (assign_int_registers): Likewise.
18819         * config/spu/spu.c (spu_function_value): Likewise.
18820         (spu_function_arg): Likewise.
18821         * coverage.c (get_gcov_type): Likewise.
18822         (get_gcov_unsigned_t): Likewise.
18823         * dse.c (find_shift_sequence): Likewise.
18824         * expmed.c (store_bit_field_1): Likewise.
18825         * expr.c (convert_move): Likewise.
18826         (store_field): Likewise.
18827         * internal-fn.c (expand_arith_overflow): Likewise.
18828         * optabs-query.c (get_best_extraction_insn): Likewise.
18829         * optabs.c (expand_twoval_binop_libfunc): Likewise.
18830         * stor-layout.c (layout_type): Likewise.
18831         (initialize_sizetypes): Likewise.
18832         * targhooks.c (default_get_mask_mode): Likewise.
18833         * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise.
18834
18835 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18836             Alan Hayward  <alan.hayward@arm.com>
18837             David Sherwood  <david.sherwood@arm.com>
18838
18839         * machmode.h (opt_mode::else_blk): New function.
18840         (int_mode_for_mode): Declare.
18841         * stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode.
18842         * builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode
18843         return type.
18844         * cfgexpand.c (expand_debug_expr): Likewise.
18845         * combine.c (gen_lowpart_or_truncate): Likewise.
18846         (gen_lowpart_for_combine): Likewise.
18847         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise.
18848         * config/avr/avr.c (avr_to_int_mode): Likewise.
18849         (avr_out_plus_1): Likewise.
18850         (avr_out_plus): Likewise.
18851         (avr_out_round): Likewise.
18852         * config/i386/i386.c (ix86_split_to_parts): Likewise.
18853         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
18854         (s390_expand_vcond): Likewise.
18855         * config/spu/spu.c (spu_split_immediate): Likewise.
18856         (spu_expand_mov): Likewise.
18857         * dse.c (get_stored_val): Likewise.
18858         * expmed.c (store_bit_field_1): Likewise.
18859         (convert_extracted_bit_field): Use int_mode_for_mode instead of
18860         int_mode_for_size.
18861         (extract_bit_field_1): Adjust for new int_mode_for_mode return type.
18862         (extract_low_bits): Likewise.
18863         * expr.c (emit_group_load_1): Likewise.  Separate out the BLKmode
18864         handling rather than repeating the check.
18865         (emit_group_store): Likewise.
18866         (emit_move_via_integer): Adjust for new int_mode_for_mode return type.
18867         * optabs.c (expand_absneg_bit): Likewise.
18868         (expand_copysign_absneg): Likewise.
18869         (expand_copysign_bit): Likewise.
18870         * tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise.
18871         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
18872         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
18873         * var-tracking.c (prepare_call_arguments):  Likewise.
18874         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use
18875         int_mode_for_mode instead of mode_for_size.
18876         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
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 (int_mode_for_size): New function.
18883         * builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size
18884         instead of mode_for_size.
18885         * calls.c (save_fixed_argument_area): Likewise.  Make use of BLKmode
18886         explicit.
18887         * combine.c (expand_field_assignment): Use int_mode_for_size
18888         instead of mode_for_size.
18889         (make_extraction): Likewise.
18890         (simplify_shift_const_1): Likewise.
18891         (simplify_comparison): Likewise.
18892         * dojump.c (do_jump): Likewise.
18893         * dwarf2out.c (mem_loc_descriptor): Likewise.
18894         * emit-rtl.c (init_derived_machine_modes): Likewise.
18895         * expmed.c (flip_storage_order): Likewise.
18896         (convert_extracted_bit_field): Likewise.
18897         * expr.c (copy_blkmode_from_reg): Likewise.
18898         * graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise.
18899         * internal-fn.c (expand_mul_overflow): Likewise.
18900         * lower-subreg.c (simple_move): Likewise.
18901         * optabs-libfuncs.c (init_optabs): Likewise.
18902         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18903         * tree.c (vector_type_mode): Likewise.
18904         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
18905         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise.
18906         * tree-vect-generic.c (expand_vector_parallel): Likewise.
18907         * tree-vect-stmts.c (vectorizable_load): Likewise.
18908         (vectorizable_store): Likewise.
18909
18910 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18911             Alan Hayward  <alan.hayward@arm.com>
18912             David Sherwood  <david.sherwood@arm.com>
18913
18914         * coretypes.h (pod_mode): New type.
18915         (scalar_int_mode_pod): New typedef.
18916         * machmode.h (pod_mode): New class.
18917         (int_n_data_t::m): Change type to scalar_int_mode_pod.
18918         * genmodes.c (emit_mode_int_n): Update accordingly.
18919         * lower-subreg.h (target_lower_subreg): Change type to
18920         scalar_int_mode_pod.
18921         * gdbhooks.py (build_pretty_printer): Handle pod_mode and
18922         scalar_int_mode_pod.
18923
18924 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18925             Alan Hayward  <alan.hayward@arm.com>
18926             David Sherwood  <david.sherwood@arm.com>
18927
18928         * config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from
18929         machine_mode to scalar_int_mode.
18930         * config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise.
18931         (rs6000_option_override_internal): Remove cast to int.
18932         * config/rs6000/rs6000.h (rs6000_pmode): Change type from
18933         machine_mode to scalar_int_mode.
18934         * config/rs6000/rs6000.c (rs6000_pmode): Likewise.
18935         (rs6000_option_override_internal): Remove cast to int.
18936         * config/s390/s390.h (Pmode): Remove cast to machine_mode.
18937         * config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast
18938         to machine_mode.
18939         * config/s390/s390.c (s390_expand_builtin): Likewise.
18940         * coretypes.h (scalar_int_mode): New type.
18941         (opt_scalar_int_mode): New typedef.
18942         * machmode.h (scalar_int_mode): New class.
18943         (scalar_int_mode::includes_p): New function.
18944         (byte_mode): Change type to scalar_int_mode.
18945         (word_mode): Likewise.
18946         (ptr_mode): Likewise.
18947         * emit-rtl.c (byte_mode): Likewise.
18948         (word_mode): Likewise.
18949         (ptr_mode): Likewise.
18950         (init_derived_machine_modes): Update accordingly.
18951         * genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT
18952         and MODE_PARTIAL_INT.
18953         * gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and
18954         opt_scalar_int_mode.
18955
18956 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18957             Alan Hayward  <alan.hayward@arm.com>
18958             David Sherwood  <david.sherwood@arm.com>
18959
18960         * target.def (libgcc_floating_mode_supported_p): Take a
18961         scalar_float_mode.
18962         * doc/tm.texi: Regenerate.
18963         * targhooks.h (default_libgcc_floating_mode_supported_p): Take a
18964         scalar_float_mode.
18965         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
18966         * config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p):
18967         Likewise.
18968
18969 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18970             Alan Hayward  <alan.hayward@arm.com>
18971             David Sherwood  <david.sherwood@arm.com>
18972
18973         * target.def (default_floatn_mode): Return an opt_scalar_float_mode.
18974         * doc/tm.texi: Regenerate.
18975         * config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode.
18976         * config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise.
18977         * config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise.
18978         * targhooks.h (default_floatn_mode): Likewise.
18979         * targhooks.c (default_floatn_mode): Likewise.
18980         * tree.c (build_common_tree_nodes): Update accordingly.
18981
18982 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18983             Alan Hayward  <alan.hayward@arm.com>
18984             David Sherwood  <david.sherwood@arm.com>
18985
18986         * machmode.h (mode_iterator::start): Provide overload for opt_modes.
18987         (mode_iterator::iterate_p): Likewise.
18988         (mode_iterator::get_wider): Likewise.
18989         * expr.c (init_expr_target): Use opt_scalar_float_mode.
18990
18991 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18992             Alan Hayward  <alan.hayward@arm.com>
18993             David Sherwood  <david.sherwood@arm.com>
18994
18995         * coretypes.h (opt_scalar_float_mode): New typedef.
18996         * machmode.h (float_mode_for_size): New function.
18997         * emit-rtl.c (double_mode): Delete.
18998         (init_emit_once): Use float_mode_for_size.
18999         * stor-layout.c (layout_type): Likewise.
19000         * gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode.
19001
19002 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19003             Alan Hayward  <alan.hayward@arm.com>
19004             David Sherwood  <david.sherwood@arm.com>
19005
19006         * output.h (assemble_real): Take a scalar_float_mode.
19007         * config/arm/arm.c (arm_assemble_integer): Update accordingly.
19008         * config/arm/arm.md (consttable_4): Likewise.
19009         (consttable_8): Likewise.
19010         (consttable_16): Likewise.
19011         * config/mips/mips.md (consttable_float): Likewise.
19012         * config/s390/s390.c (s390_output_pool_entry): Likewise.
19013         * varasm.c (assemble_real): Take a scalar_float_mode.
19014         (output_constant_pool_2): Update accordingly.
19015         (output_constant): Likewise.
19016
19017 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19018             Alan Hayward  <alan.hayward@arm.com>
19019             David Sherwood  <david.sherwood@arm.com>
19020
19021         * tree.h (SCALAR_FLOAT_TYPE_MODE): New macro.
19022         * builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE.
19023         * fold-const.c (fold_convert_const_real_from_fixed): Likewise.
19024         (native_encode_real): Likewise.
19025         (native_interpret_real): Likewise.
19026         * hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise.
19027         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
19028
19029 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19030             Alan Hayward  <alan.hayward@arm.com>
19031             David Sherwood  <david.sherwood@arm.com>
19032
19033         * optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a
19034         <scalar_float_mode>.  Simplify.
19035         (gen_extend_conv_libfunc): Likewise.
19036
19037 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19038             Alan Hayward  <alan.hayward@arm.com>
19039             David Sherwood  <david.sherwood@arm.com>
19040
19041         * coretypes.h (scalar_float_mode): New type.
19042         * machmode.h (mode_traits::from_int): Use machine_mode if
19043         USE_ENUM_MODES is defined.
19044         (is_a): New function.
19045         (as_a): Likewise.
19046         (dyn_cast): Likewise.
19047         (scalar_float_mode): New class.
19048         (scalar_float_mode::includes_p): New function.
19049         (is_float_mode): Likewise.
19050         * gdbhooks.py (MachineModePrinter): New class.
19051         (build_pretty_printer): Use it for scalar_float_mode.
19052         * real.h (FLOAT_MODE_FORMAT): Use as_a <scalar_float_mode>.
19053         (format_helper::format_helper): Turn into a template.
19054         * genmodes.c (get_mode_class): New function.
19055         (emit_insn_modes_h): Give modes the class returned by get_mode_class,
19056         or machine_mode if none.
19057         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use
19058         as_a <scalar_float_mode>.
19059         * dwarf2out.c (mem_loc_descriptor): Likewise.
19060         (insert_float): Likewise.
19061         (add_const_value_attribute): Likewise.
19062         * simplify-rtx.c (simplify_immed_subreg): Likewise.
19063         * optabs.c (expand_absneg_bit): Take a scalar_float_mode.
19064         (expand_unop): Update accordingly.
19065         (expand_abs_nojump): Likewise.
19066         (expand_copysign_absneg): Take a scalar_float_mode.
19067         (expand_copysign_bit): Likewise.
19068         (expand_copysign): Update accordingly.
19069
19070 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19071             Alan Hayward  <alan.hayward@arm.com>
19072             David Sherwood  <david.sherwood@arm.com>
19073
19074         * coretypes.h (opt_mode): New class.
19075         * machmode.h (opt_mode): Likewise.
19076         (opt_mode::else_void): New function.
19077         (opt_mode::require): Likewise.
19078         (opt_mode::exists): Likewise.
19079         (GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode.
19080         (GET_MODE_2XWIDER_MODE): Likewise.
19081         (mode_iterator::get_wider): Update accordingly.
19082         (mode_iterator::get_2xwider): Likewise.
19083         (mode_iterator::get_known_wider): Likewise, turning into a template.
19084         * combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE,
19085         forcing a wider mode to exist.
19086         * config/cr16/cr16.h (LONG_REG_P): Likewise.
19087         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
19088         * config/c6x/c6x.c (c6x_rtx_costs): Update use of
19089         GET_MODE_2XWIDER_MODE, forcing a wider mode to exist.
19090         * lower-subreg.c (init_lower_subreg): Likewise.
19091         * optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not
19092         on the final iteration.
19093         * config/i386/i386.c (ix86_expand_set_or_movmem): Check whether
19094         a wider mode exists before asking for a move pattern.
19095         (get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE,
19096         forcing a wider mode to exist.
19097         (expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE,
19098         returning false if no such mode exists.
19099         * config/ia64/ia64.c (expand_vselect_vconcat): Likewise.
19100         * config/mips/mips.c (mips_expand_vselect_vconcat): Likewise.
19101         * expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE.
19102         Avoid checking for a MODE_INT if we already know the mode is not a
19103         SCALAR_INT_MODE_P.
19104         (extract_high_half): Update use of GET_MODE_WIDER_MODE,
19105         forcing a wider mode to exist.
19106         (expmed_mult_highpart_optab): Likewise.
19107         (expmed_mult_highpart): Likewise.
19108         * expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE,
19109         using else_void.
19110         * lto-streamer-in.c (lto_input_mode_table): Likewise.
19111         * optabs-query.c (find_widening_optab_handler_and_mode): Likewise.
19112         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
19113         * internal-fn.c (expand_mul_overflow): Update use of
19114         GET_MODE_2XWIDER_MODE.
19115         * omp-low.c (omp_clause_aligned_alignment): Likewise.
19116         * tree-ssa-math-opts.c (convert_mult_to_widen): Update use of
19117         GET_MODE_WIDER_MODE.
19118         (convert_plusminus_to_widen): Likewise.
19119         * tree-switch-conversion.c (array_value_type): Likewise.
19120         * var-tracking.c (emit_note_insn_var_location): Likewise.
19121         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
19122         Return false inside rather than outside the loop if no wider mode
19123         exists
19124         * optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE
19125         and GET_MODE_2XWIDER_MODE
19126         (can_compare_p): Use else_void.
19127         * gdbhooks.py (OptMachineModePrinter): New class.
19128         (build_pretty_printer): Use it for opt_mode.
19129
19130 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19131             Alan Hayward  <alan.hayward@arm.com>
19132             David Sherwood  <david.sherwood@arm.com>
19133
19134         * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
19135         once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.
19136
19137 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19138             Alan Hayward  <alan.hayward@arm.com>
19139             David Sherwood  <david.sherwood@arm.com>
19140
19141         * machmode.h (mode_traits): New structure.
19142         (get_narrowest_mode): New function.
19143         (mode_iterator::start): Likewise.
19144         (mode_iterator::iterate_p): Likewise.
19145         (mode_iterator::get_wider): Likewise.
19146         (mode_iterator::get_known_wider): Likewise.
19147         (mode_iterator::get_2xwider): Likewise.
19148         (FOR_EACH_MODE_IN_CLASS): New mode iterator.
19149         (FOR_EACH_MODE): Likewise.
19150         (FOR_EACH_MODE_FROM): Likewise.
19151         (FOR_EACH_MODE_UNTIL): Likewise.
19152         (FOR_EACH_WIDER_MODE): Likewise.
19153         (FOR_EACH_2XWIDER_MODE): Likewise.
19154         * builtins.c (expand_builtin_strlen): Use new mode iterators.
19155         * combine.c (simplify_comparison): Likewise
19156         * config/i386/i386.c (type_natural_mode): Likewise.
19157         * cse.c (cse_insn): Likewise.
19158         * dse.c (find_shift_sequence): Likewise.
19159         * emit-rtl.c (init_derived_machine_modes): Likewise.
19160         (init_emit_once): Likewise.
19161         * explow.c (hard_function_value): Likewise.
19162         * expmed.c (extract_fixed_bit_field_1): Likewise.
19163         (extract_bit_field_1): Likewise.
19164         (expand_divmod): Likewise.
19165         (emit_store_flag_1): Likewise.
19166         * expr.c (init_expr_target): Likewise.
19167         (convert_move): Likewise.
19168         (alignment_for_piecewise_move): Likewise.
19169         (widest_int_mode_for_size): Likewise.
19170         (emit_block_move_via_movmem): Likewise.
19171         (copy_blkmode_to_reg): Likewise.
19172         (set_storage_via_setmem): Likewise.
19173         (compress_float_constant): Likewise.
19174         * omp-low.c (omp_clause_aligned_alignment): Likewise.
19175         * optabs-query.c (get_best_extraction_insn): Likewise.
19176         * optabs.c (expand_binop): Likewise.
19177         (expand_twoval_unop): Likewise.
19178         (expand_twoval_binop): Likewise.
19179         (widen_leading): Likewise.
19180         (widen_bswap): Likewise.
19181         (expand_parity): Likewise.
19182         (expand_unop): Likewise.
19183         (prepare_cmp_insn): Likewise.
19184         (prepare_float_lib_cmp): Likewise.
19185         (expand_float): Likewise.
19186         (expand_fix): Likewise.
19187         (expand_sfix_optab): Likewise.
19188         * postreload.c (move2add_use_add2_insn): Likewise.
19189         * reg-stack.c (reg_to_stack): Likewise.
19190         * reginfo.c (choose_hard_reg_mode): Likewise.
19191         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
19192         * stor-layout.c (mode_for_size): Likewise.
19193         (smallest_mode_for_size): Likewise.
19194         (mode_for_vector): Likewise.
19195         (finish_bitfield_representative): Likewise.
19196         * tree-ssa-math-opts.c (target_supports_divmod_p): Likewise.
19197         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
19198         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
19199         * var-tracking.c (prepare_call_arguments): Likewise.
19200
19201 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19202             Alan Hayward  <alan.hayward@arm.com>
19203             David Sherwood  <david.sherwood@arm.com>
19204
19205         * genconditions.c (write_header): Add a "#define USE_ENUM_MODES".
19206         * genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if
19207         USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise.
19208         * machmode.h (mode_size): Move earlier in file.
19209         (mode_precision): Likewise.
19210         (mode_inner): Likewise.
19211         (mode_nunits): Likewise.
19212         (mode_unit_size): Likewise.
19213         (unit_unit_precision): Likewise.
19214         (mode_wider): Likewise.
19215         (mode_2xwider): Likewise.
19216         (machine_mode): New class.
19217         (mode_to_bytes): New function.
19218         (mode_to_bits): Likewise.
19219         (mode_to_precision): Likewise.
19220         (mode_to_inner): Likewise.
19221         (mode_to_unit_size): Likewise.
19222         (mode_to_unit_precision): Likewise.
19223         (mode_to_nunits): Likewise.
19224         (GET_MODE_SIZE): Use mode_to_bytes.
19225         (GET_MODE_BITSIZE): Use mode_to_bits.
19226         (GET_MODE_PRECISION): Use mode_to_precision.
19227         (GET_MODE_INNER): Use mode_to_inner.
19228         (GET_MODE_UNIT_SIZE): Use mode_to_unit_size.
19229         (GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision.
19230         (GET_MODE_NUNITS): Use mode_to_nunits.
19231         * system.h (ALWAYS_INLINE): New macro.
19232         * config/powerpcspe/powerpcspe-c.c
19233         (altivec_resolve_overloaded_builtin): Use machine_mode instead of
19234         int for arg1_mode and arg2_mode.
19235
19236 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19237             Alan Hayward  <alan.hayward@arm.com>
19238             David Sherwood  <david.sherwood@arm.com>
19239
19240         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
19241         Prefix mode names with E_ in case statements.
19242         * config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19243         * config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise.
19244         (aarch64_split_simd_move): Likewise.
19245         (aarch64_gen_storewb_pair): Likewise.
19246         (aarch64_gen_loadwb_pair): Likewise.
19247         (aarch64_gen_store_pair): Likewise.
19248         (aarch64_gen_load_pair): Likewise.
19249         (aarch64_get_condition_code_1): Likewise.
19250         (aarch64_constant_pool_reload_icode): Likewise.
19251         (get_rsqrte_type): Likewise.
19252         (get_rsqrts_type): Likewise.
19253         (get_recpe_type): Likewise.
19254         (get_recps_type): Likewise.
19255         (aarch64_gimplify_va_arg_expr): Likewise.
19256         (aarch64_simd_container_mode): Likewise.
19257         (aarch64_emit_load_exclusive): Likewise.
19258         (aarch64_emit_store_exclusive): Likewise.
19259         (aarch64_expand_compare_and_swap): Likewise.
19260         (aarch64_gen_atomic_cas): Likewise.
19261         (aarch64_emit_bic): Likewise.
19262         (aarch64_emit_atomic_swap): Likewise.
19263         (aarch64_emit_atomic_load_op): Likewise.
19264         (aarch64_evpc_trn): Likewise.
19265         (aarch64_evpc_uzp): Likewise.
19266         (aarch64_evpc_zip): Likewise.
19267         (aarch64_evpc_ext): Likewise.
19268         (aarch64_evpc_rev): Likewise.
19269         (aarch64_evpc_dup): Likewise.
19270         (aarch64_gen_ccmp_first): Likewise.
19271         (aarch64_gen_ccmp_next): Likewise.
19272         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
19273         (alpha_emit_xfloating_libcall): Likewise.
19274         (emit_insxl): Likewise.
19275         (alpha_arg_type): Likewise.
19276         * config/arc/arc.c (arc_vector_mode_supported_p): Likewise.
19277         (arc_preferred_simd_mode): Likewise.
19278         (arc_secondary_reload): Likewise.
19279         (get_arc_condition_code): Likewise.
19280         (arc_print_operand): Likewise.
19281         (arc_legitimate_constant_p): Likewise.
19282         * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19283         * config/arc/arc.md (casesi_load): Likewise.
19284         (casesi_compact_jump): Likewise.
19285         * config/arc/predicates.md (proper_comparison_operator): Likewise.
19286         (cc_use_register): Likewise.
19287         * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19288         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
19289         (arm_init_iwmmxt_builtins): Likewise.
19290         * config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
19291         (neon_expand_vector_init): Likewise.
19292         (arm_attr_length_move_neon): Likewise.
19293         (maybe_get_arm_condition_code): Likewise.
19294         (arm_emit_vector_const): Likewise.
19295         (arm_preferred_simd_mode): Likewise.
19296         (arm_output_iwmmxt_tinsr): Likewise.
19297         (thumb1_output_casesi): Likewise.
19298         (thumb2_output_casesi): Likewise.
19299         (arm_emit_load_exclusive): Likewise.
19300         (arm_emit_store_exclusive): Likewise.
19301         (arm_expand_compare_and_swap): Likewise.
19302         (arm_evpc_neon_vuzp): Likewise.
19303         (arm_evpc_neon_vzip): Likewise.
19304         (arm_evpc_neon_vrev): Likewise.
19305         (arm_evpc_neon_vtrn): Likewise.
19306         (arm_evpc_neon_vext): Likewise.
19307         (arm_validize_comparison): Likewise.
19308         * config/arm/neon.md (neon_vc<cmp_op><mode>): Likewise.
19309         * config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise.
19310         * config/avr/avr.c (avr_rtx_costs_1): Likewise.
19311         * config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise.
19312         (c6x_preferred_simd_mode): Likewise.
19313         * config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise.
19314         (epiphany_rtx_costs): Likewise.
19315         * config/epiphany/predicates.md (proper_comparison_operator):
19316         Likewise.
19317         * config/frv/frv.c (condexec_memory_operand): Likewise.
19318         (frv_emit_move): Likewise.
19319         (output_move_single): Likewise.
19320         (output_condmove_single): Likewise.
19321         (frv_hard_regno_mode_ok): Likewise.
19322         (frv_matching_accg_mode): Likewise.
19323         * config/h8300/h8300.c (split_adds_subs): Likewise.
19324         (h8300_rtx_costs): Likewise.
19325         (h8300_print_operand): Likewise.
19326         (compute_mov_length): Likewise.
19327         (output_logical_op): Likewise.
19328         (compute_logical_op_length): Likewise.
19329         (compute_logical_op_cc): Likewise.
19330         (h8300_shift_needs_scratch_p): Likewise.
19331         (output_a_shift): Likewise.
19332         (compute_a_shift_length): Likewise.
19333         (compute_a_shift_cc): Likewise.
19334         (expand_a_rotate): Likewise.
19335         (output_a_rotate): Likewise.
19336         * config/i386/i386.c (classify_argument): Likewise.
19337         (function_arg_advance_32): Likewise.
19338         (function_arg_32): Likewise.
19339         (function_arg_64): Likewise.
19340         (function_value_64): Likewise.
19341         (ix86_gimplify_va_arg): Likewise.
19342         (ix86_legitimate_constant_p): Likewise.
19343         (put_condition_code): Likewise.
19344         (split_double_mode): Likewise.
19345         (ix86_avx256_split_vector_move_misalign): Likewise.
19346         (ix86_expand_vector_logical_operator): Likewise.
19347         (ix86_split_idivmod): Likewise.
19348         (ix86_expand_adjust_ufix_to_sfix_si): Likewise.
19349         (ix86_build_const_vector): Likewise.
19350         (ix86_build_signbit_mask): Likewise.
19351         (ix86_match_ccmode): Likewise.
19352         (ix86_cc_modes_compatible): Likewise.
19353         (ix86_expand_branch): Likewise.
19354         (ix86_expand_sse_cmp): Likewise.
19355         (ix86_expand_sse_movcc): Likewise.
19356         (ix86_expand_int_sse_cmp): Likewise.
19357         (ix86_expand_vec_perm_vpermi2): Likewise.
19358         (ix86_expand_vec_perm): Likewise.
19359         (ix86_expand_sse_unpack): Likewise.
19360         (ix86_expand_int_addcc): Likewise.
19361         (ix86_split_to_parts): Likewise.
19362         (ix86_vectorize_builtin_gather): Likewise.
19363         (ix86_vectorize_builtin_scatter): Likewise.
19364         (avx_vpermilp_parallel): Likewise.
19365         (inline_memory_move_cost): Likewise.
19366         (ix86_tieable_integer_mode_p): Likewise.
19367         (x86_maybe_negate_const_int): Likewise.
19368         (ix86_expand_vector_init_duplicate): Likewise.
19369         (ix86_expand_vector_init_one_nonzero): Likewise.
19370         (ix86_expand_vector_init_one_var): Likewise.
19371         (ix86_expand_vector_init_concat): Likewise.
19372         (ix86_expand_vector_init_interleave): Likewise.
19373         (ix86_expand_vector_init_general): Likewise.
19374         (ix86_expand_vector_set): Likewise.
19375         (ix86_expand_vector_extract): Likewise.
19376         (emit_reduc_half): Likewise.
19377         (ix86_emit_i387_round): Likewise.
19378         (ix86_mangle_type): Likewise.
19379         (ix86_expand_round_sse4): Likewise.
19380         (expand_vec_perm_blend): Likewise.
19381         (canonicalize_vector_int_perm): Likewise.
19382         (ix86_expand_vec_one_operand_perm_avx512): Likewise.
19383         (expand_vec_perm_1): Likewise.
19384         (expand_vec_perm_interleave3): Likewise.
19385         (expand_vec_perm_even_odd_pack): Likewise.
19386         (expand_vec_perm_even_odd_1): Likewise.
19387         (expand_vec_perm_broadcast_1): Likewise.
19388         (ix86_vectorize_vec_perm_const_ok): Likewise.
19389         (ix86_expand_vecop_qihi): Likewise.
19390         (ix86_expand_mul_widen_hilo): Likewise.
19391         (ix86_expand_sse2_abs): Likewise.
19392         (ix86_expand_pextr): Likewise.
19393         (ix86_expand_pinsr): Likewise.
19394         (ix86_preferred_simd_mode): Likewise.
19395         (ix86_simd_clone_compute_vecsize_and_simdlen): Likewise.
19396         * config/i386/sse.md (*andnot<mode>3): Likewise.
19397         (<mask_codefor><code><mode>3<mask_name>): Likewise.
19398         (*<code><mode>3): Likewise.
19399         * config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise.
19400         (ia64_expand_atomic_op): Likewise.
19401         (ia64_arg_type): Likewise.
19402         (ia64_mode_to_int): Likewise.
19403         (ia64_scalar_mode_supported_p): Likewise.
19404         (ia64_vector_mode_supported_p): Likewise.
19405         (expand_vec_perm_broadcast): Likewise.
19406         * config/iq2000/iq2000.c (iq2000_move_1word): Likewise.
19407         (iq2000_function_arg_advance): Likewise.
19408         (iq2000_function_arg): Likewise.
19409         * config/m32c/m32c.c (m32c_preferred_reload_class): Likewise.
19410         * config/m68k/m68k.c (output_dbcc_and_branch): Likewise.
19411         (m68k_libcall_value): Likewise.
19412         (m68k_function_value): Likewise.
19413         (sched_attr_op_type): Likewise.
19414         * config/mcore/mcore.c (mcore_output_move): Likewise.
19415         * config/microblaze/microblaze.c (microblaze_function_arg_advance):
19416         Likewise.
19417         (microblaze_function_arg): Likewise.
19418         * config/mips/mips.c (mips16_build_call_stub): Likewise.
19419         (mips_print_operand): Likewise.
19420         (mips_mode_ok_for_mov_fmt_p): Likewise.
19421         (mips_vector_mode_supported_p): Likewise.
19422         (mips_preferred_simd_mode): Likewise.
19423         (mips_expand_vpc_loongson_even_odd): Likewise.
19424         (mips_expand_vec_unpack): Likewise.
19425         (mips_expand_vi_broadcast): Likewise.
19426         (mips_expand_vector_init): Likewise.
19427         (mips_expand_vec_reduc): Likewise.
19428         (mips_expand_msa_cmp): Likewise.
19429         * config/mips/mips.md (casesi_internal_mips16_<mode>): Likewise.
19430         * config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
19431         (cc_flags_for_mode): Likewise.
19432         * config/msp430/msp430.c (msp430_print_operand): Likewise.
19433         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise.
19434         (nds32_output_casesi_pc_relative): Likewise.
19435         * config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19436         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise.
19437         (nvptx_gen_unpack): Likewise.
19438         (nvptx_gen_pack): Likewise.
19439         (nvptx_gen_shuffle): Likewise.
19440         (nvptx_gen_wcast): Likewise.
19441         (nvptx_preferred_simd_mode): Likewise.
19442         * config/pa/pa.c (pa_secondary_reload): Likewise.
19443         * config/pa/predicates.md (base14_operand): Likewise.
19444         * config/powerpcspe/powerpcspe-c.c
19445         (altivec_resolve_overloaded_builtin): Likewise.
19446         * config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks):
19447         Likewise.
19448         (rs6000_preferred_simd_mode): Likewise.
19449         (output_vec_const_move): Likewise.
19450         (rs6000_expand_vector_extract): Likewise.
19451         (rs6000_split_vec_extract_var): Likewise.
19452         (reg_offset_addressing_ok_p): Likewise.
19453         (rs6000_legitimate_offset_address_p): Likewise.
19454         (rs6000_legitimize_address): Likewise.
19455         (rs6000_emit_set_const): Likewise.
19456         (rs6000_const_vec): Likewise.
19457         (rs6000_emit_move): Likewise.
19458         (spe_build_register_parallel): Likewise.
19459         (rs6000_darwin64_record_arg_recurse): Likewise.
19460         (swap_selector_for_mode): Likewise.
19461         (spe_init_builtins): Likewise.
19462         (paired_init_builtins): Likewise.
19463         (altivec_init_builtins): Likewise.
19464         (do_load_for_compare): Likewise.
19465         (rs6000_generate_compare): Likewise.
19466         (rs6000_expand_float128_convert): Likewise.
19467         (emit_load_locked): Likewise.
19468         (emit_store_conditional): Likewise.
19469         (rs6000_output_function_epilogue): Likewise.
19470         (rs6000_handle_altivec_attribute): Likewise.
19471         (rs6000_function_value): Likewise.
19472         (emit_fusion_gpr_load): Likewise.
19473         (emit_fusion_p9_load): Likewise.
19474         (emit_fusion_p9_store): Likewise.
19475         * config/powerpcspe/predicates.md (easy_fp_constant): Likewise.
19476         (fusion_gpr_mem_load): Likewise.
19477         (fusion_addis_mem_combo_load): Likewise.
19478         (fusion_addis_mem_combo_store): Likewise.
19479         * config/rs6000/predicates.md (easy_fp_constant): Likewise.
19480         (fusion_gpr_mem_load): Likewise.
19481         (fusion_addis_mem_combo_load): Likewise.
19482         (fusion_addis_mem_combo_store): Likewise.
19483         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19484         Likewise.
19485         * config/rs6000/rs6000-string.c (do_load_for_compare): Likewise.
19486         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
19487         (rs6000_preferred_simd_mode): Likewise.
19488         (output_vec_const_move): Likewise.
19489         (rs6000_expand_vector_extract): Likewise.
19490         (rs6000_split_vec_extract_var): Likewise.
19491         (reg_offset_addressing_ok_p): Likewise.
19492         (rs6000_legitimate_offset_address_p): Likewise.
19493         (rs6000_legitimize_address): Likewise.
19494         (rs6000_emit_set_const): Likewise.
19495         (rs6000_const_vec): Likewise.
19496         (rs6000_emit_move): Likewise.
19497         (rs6000_darwin64_record_arg_recurse): Likewise.
19498         (swap_selector_for_mode): Likewise.
19499         (paired_init_builtins): Likewise.
19500         (altivec_init_builtins): Likewise.
19501         (rs6000_expand_float128_convert): Likewise.
19502         (emit_load_locked): Likewise.
19503         (emit_store_conditional): Likewise.
19504         (rs6000_output_function_epilogue): Likewise.
19505         (rs6000_handle_altivec_attribute): Likewise.
19506         (rs6000_function_value): Likewise.
19507         (emit_fusion_gpr_load): Likewise.
19508         (emit_fusion_p9_load): Likewise.
19509         (emit_fusion_p9_store): Likewise.
19510         * config/rx/rx.c (rx_gen_move_template): Likewise.
19511         (flags_from_mode): Likewise.
19512         * config/s390/predicates.md (s390_alc_comparison): Likewise.
19513         (s390_slb_comparison): Likewise.
19514         * config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise.
19515         (s390_vector_mode_supported_p): Likewise.
19516         (s390_cc_modes_compatible): Likewise.
19517         (s390_match_ccmode_set): Likewise.
19518         (s390_canonicalize_comparison): Likewise.
19519         (s390_emit_compare_and_swap): Likewise.
19520         (s390_branch_condition_mask): Likewise.
19521         (s390_rtx_costs): Likewise.
19522         (s390_secondary_reload): Likewise.
19523         (__SECONDARY_RELOAD_CASE): Likewise.
19524         (s390_expand_cs): Likewise.
19525         (s390_preferred_simd_mode): Likewise.
19526         * config/s390/vx-builtins.md (vec_packsu_u<mode>): Likewise.
19527         * config/sh/sh.c (sh_print_operand): Likewise.
19528         (dump_table): Likewise.
19529         (sh_secondary_reload): Likewise.
19530         * config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19531         * config/sh/sh.md (casesi_worker_1): Likewise.
19532         (casesi_worker_2): Likewise.
19533         * config/sparc/predicates.md (icc_comparison_operator): Likewise.
19534         (fcc_comparison_operator): Likewise.
19535         * config/sparc/sparc.c (sparc_expand_move): Likewise.
19536         (emit_soft_tfmode_cvt): Likewise.
19537         (sparc_preferred_simd_mode): Likewise.
19538         (output_cbranch): Likewise.
19539         (sparc_print_operand): Likewise.
19540         (sparc_expand_vec_perm_bmask): Likewise.
19541         (vector_init_bshuffle): Likewise.
19542         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
19543         (spu_vector_mode_supported_p): Likewise.
19544         (spu_expand_insv): Likewise.
19545         (spu_emit_branch_or_set): Likewise.
19546         (spu_handle_vector_attribute): Likewise.
19547         (spu_builtin_splats): Likewise.
19548         (spu_builtin_extract): Likewise.
19549         (spu_builtin_promote): Likewise.
19550         (spu_expand_sign_extend): Likewise.
19551         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
19552         (tilegx_simd_int): Likewise.
19553         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise.
19554         (tilepro_simd_int): Likewise.
19555         * config/v850/v850.c (const_double_split): Likewise.
19556         (v850_print_operand): Likewise.
19557         (ep_memory_offset): Likewise.
19558         * config/vax/vax.c (vax_rtx_costs): Likewise.
19559         (vax_output_int_move): Likewise.
19560         (vax_output_int_add): Likewise.
19561         (vax_output_int_subtract): Likewise.
19562         * config/visium/predicates.md (visium_branch_operator): Likewise.
19563         * config/visium/visium.c (rtx_ok_for_offset_p): Likewise.
19564         (visium_print_operand_address): Likewise.
19565         * config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19566         * config/xtensa/xtensa.c (xtensa_mem_offset): Likewise.
19567         (xtensa_expand_conditional_branch): Likewise.
19568         (xtensa_copy_incoming_a7): Likewise.
19569         (xtensa_output_literal): Likewise.
19570         * dfp.c (decimal_real_maxval): Likewise.
19571         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
19572
19573 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19574             Alan Hayward  <alan.hayward@arm.com>
19575             David Sherwood  <david.sherwood@arm.com>
19576
19577         * genmodes.c (mode_size_inline): Add an E_ prefix to mode names.
19578         (mode_nunits_inline): Likewise.
19579         (mode_inner_inline): Likewise.
19580         (mode_unit_size_inline): Likewise.
19581         (mode_unit_precision_inline): Likewise.
19582         (emit_insn_modes_h): Likewise.  Also emit a #define of the
19583         unprefixed name.
19584         (emit_mode_wider): Add an E_ prefix to mode names.
19585         (emit_mode_complex): Likewise.
19586         (emit_mode_inner): Likewise.
19587         (emit_mode_adjustments): Likewise.
19588         (emit_mode_int_n): Likewise.
19589         * config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP)
19590         (v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP)
19591         (v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP)
19592         (si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise.
19593         (CRC32_BUILTIN, ENTRY): Likewise.
19594         * config/aarch64/aarch64.c (aarch64_push_regs): Likewise.
19595         (aarch64_pop_regs): Likewise.
19596         (aarch64_process_components): Likewise.
19597         * config/alpha/alpha.c (alpha_emit_conditional_move): Likewise.
19598         * config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP)
19599         (v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP)
19600         (v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise.
19601         * config/arm/arm.c (arm_init_libfuncs): Likewise.
19602         * config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode):
19603         Likewise.
19604         * config/i386/i386-builtin.def (pcmpestr): Likewise.
19605         (pcmpistr): Likewise.
19606         * config/microblaze/microblaze.c (double_memory_operand): Likewise.
19607         * config/mmix/mmix.c (mmix_output_condition): Likewise.
19608         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
19609         Likewise.
19610         * config/rl78/rl78.c (mduc_regs): Likewise.
19611         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
19612         (htm_expand_builtin): Likewise.
19613         * config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise.
19614         * config/sparc/sparc.c (emit_save_or_restore_regs): Likewise.
19615         * config/xtensa/xtensa.c (print_operand): Likewise.
19616         * expmed.h (NUM_MODE_PARTIAL_INT): Likewise.
19617         (NUM_MODE_VECTOR_INT): Likewise.
19618         * genoutput.c (null_operand): Likewise.
19619         (output_operand_data): Likewise.
19620         * genrecog.c (print_parameter_value): Likewise.
19621         * lra.c (debug_operand_data): Likewise.
19622
19623 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19624
19625         * dwarf2out.c (scompare_loc_descriptor_wide)
19626         (scompare_loc_descriptor_narrow): New functions, split out from...
19627         (scompare_loc_descriptor): ...here.
19628         * expmed.c (emit_store_flag_int): New function, split out from...
19629         (emit_store_flag): ...here.
19630
19631 2017-08-30  Richard Biener  <rguenther@suse.de>
19632
19633         * dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames.
19634         (dwarf2out_early_finish): Move setting of AT_pubnames from
19635         early debug output to early finish.
19636
19637 2017-08-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
19638
19639         * gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker
19640         and -mdata-region to the assembler.
19641
19642 2017-08-30  Richard Biener  <rguenther@suse.de>
19643
19644         * dwarf2out.c (add_dwarf_attr): Check we don't add duplicate
19645         attributes.
19646         (gen_subprogram_die): Add DW_AT_object_pointer only early.
19647         (dwarf2out_early_global_decl): Only generate a DIE for the
19648         abstract origin if it doesn't already exist or is a declaration DIE.
19649         (resolve_addr): Do not add the linkage name twice when
19650         generating a stub DIE for the DW_TAG_GNU_call_site target.
19651
19652 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19653
19654         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19655         Use machine_mode rather than int for arg1_mode.
19656
19657 2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
19658
19659         PR target/82015
19660         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure
19661         that the second argument of the built-in functions to unpack
19662         128-bit scalar types to 64-bit values is 0 or 1.  Change to use a
19663         switch statement instead a lot of if statements.
19664         * config/rs6000/rs6000.md (unpack<mode>, FMOVE128_VSX iterator):
19665         Allow 64-bit values to be in Altivec registers as well as
19666         traditional floating point registers.
19667         (pack<mode>, FMOVE128_VSX iterator): Likewise.
19668
19669 2017-08-29  Alexander Monakov  <amonakov@ispras.ru>
19670
19671         * ira-costs.c (record_address_regs): Handle both operands of PLUS for
19672         MAX_REGS_PER_ADDRESS == 1.
19673
19674 2017-08-29  Uros Bizjak  <ubizjak@gmail.com>
19675
19676         * config/i386/i386.opt (flag_fentry): Do not init to -1.
19677         * config/i386/i386.c (ix86_option_override_internal): Simplify
19678         setting of opts->x_flag_entry.
19679
19680 2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19681             Jakub Jelinek  <jakub@redhat.com>
19682             Richard Biener  <rguenther@suse.de>
19683
19684         PR tree-optimization/81503
19685         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
19686         folded constant fits in the target type; reorder tests for clarity.
19687
19688 2017-08-29  Martin Liska  <mliska@suse.cz>
19689
19690         * passes.def: Include pass_lower_switch.
19691         * stmt.c (dump_case_nodes): Remove and move to
19692         tree-switch-conversion.
19693         (case_values_threshold): Likewise.
19694         (expand_switch_as_decision_tree_p): Likewise.
19695         (emit_case_decision_tree): Likewise.
19696         (expand_case): Likewise.
19697         (balance_case_nodes): Likewise.
19698         (node_has_low_bound): Likewise.
19699         (node_has_high_bound): Likewise.
19700         (node_is_bounded): Likewise.
19701         (emit_case_nodes): Likewise.
19702         (struct simple_case_node): New struct.
19703         (add_case_node): Remove.
19704         (emit_case_dispatch_table): Use vector instead of case_list.
19705         (reset_out_edges_aux): Remove.
19706         (compute_cases_per_edge): Likewise.
19707         (expand_case): Build list of simple_case_node.
19708         (expand_sjlj_dispatch_table): Use it.
19709         * tree-switch-conversion.c (struct case_node): Moved from
19710         stmt.c and adjusted.
19711         (emit_case_nodes): Likewise.
19712         (node_has_low_bound): Likewise.
19713         (node_has_high_bound): Likewise.
19714         (node_is_bounded): Likewise.
19715         (case_values_threshold): Likewise.
19716         (reset_out_edges_aux): Likewise.
19717         (compute_cases_per_edge): Likewise.
19718         (add_case_node): Likewise.
19719         (dump_case_nodes): Likewise.
19720         (balance_case_nodes): Likewise.
19721         (expand_switch_as_decision_tree_p): Likewise.
19722         (emit_jump): Likewise.
19723         (emit_case_decision_tree): Likewise.
19724         (try_switch_expansion): Likewise.
19725         (do_jump_if_equal): Likewise.
19726         (emit_cmp_and_jump_insns): Likewise.
19727         (fix_phi_operands_for_edge): New function.
19728         (record_phi_operand_mapping): Likewise.
19729         (class pass_lower_switch): New pass.
19730         (pass_lower_switch::execute): New function.
19731         (make_pass_lower_switch): Likewise.
19732         (conditional_probability):
19733         * timevar.def: Add TV_TREE_SWITCH_LOWERING.
19734         * tree-pass.h: Add make_pass_lower_switch.
19735
19736 2017-08-29  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
19737
19738         PR target/80993
19739         * gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt
19740         handlers as used.
19741
19742 2017-08-29  Richard Biener  <rguenther@suse.de>
19743
19744         * dwarf2out.c (add_dwarf_attr): When checking is enabled verify
19745         we do not add a DW_AT_inline attribute twice.
19746         (gen_subprogram_die): Remove code setting DW_AT_inline on
19747         DECL_ABSTRACT_P nodes.
19748
19749 2017-08-29  Richard Sandiford  <richard.sandiford@linaro.org>
19750
19751         * gimplify.c (gimplify_call_expr): Copy the nothrow flag to
19752         calls to internal functions.
19753         (gimplify_modify_expr): Likewise.
19754         * tree-call-cdce.c (use_internal_fn): Likewise.
19755         * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
19756         (convert_to_divmod): Set the nothrow flag.
19757         * tree-if-conv.c (predicate_mem_writes):  Likewise.
19758         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
19759         (vectorizable_call): Likewise.
19760         (vectorizable_store): Likewise.
19761         (vectorizable_load): Likewise.
19762         * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
19763         (vect_recog_mask_conversion_pattern): Likewise.
19764
19765 2017-08-29  Martin Liska  <mliska@suse.cz>
19766
19767         PR other/39851
19768         * gcc.c (driver_handle_option): Add new argument.
19769         * opts-common.c (handle_option): Pass
19770         target_option_override_hook.
19771         * opts-global.c (lang_handle_option): Add new option.
19772         (set_default_handlers):  Add new argument.
19773         (decode_options): Likewise.
19774         * opts.c (target_handle_option): Likewise.
19775         (common_handle_option): Call target_option_override_hook.
19776         * opts.h (struct cl_option_handler_func): Add hook for
19777         target option override.
19778         (struct cl_option_handlers): Likewise.
19779         (set_default_handlers): Add new argument.
19780         (decode_options): Likewise.
19781         (common_handle_option): Likewise.
19782         (target_handle_option): Likewise.
19783         * toplev.c (toplev::main): Pass targetm.target_option.override
19784         hook.
19785
19786 2017-08-29  Richard Biener  <rguenther@suse.de>
19787         Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
19788
19789         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine
19790         life to the active subtree.
19791
19792 2017-08-28  Jeff Law  <law@redhat.com>
19793
19794         * tree-ssa-dom.c (edge_info::record_simple_equiv): Call
19795         derive_equivalences.
19796         (derive_equivalences_from_bit_ior, record_temporary_equivalences):
19797         Code moved into....
19798         (edge_info::derive_equivalences): New private member function
19799
19800         * tree-ssa-dom.c (class edge_info): Changed from a struct
19801         to a class.  Add ctor/dtor, methods and data members.
19802         (edge_info::edge_info): Renamed from allocate_edge_info.
19803         Initialize additional members.
19804         (edge_info::~edge_info): New.
19805         (free_dom_edge_info): Delete the edge info.
19806         (record_edge_info): Use new class & associated member functions.
19807         Tighten forms for testing for edge equivalences.
19808         (record_temporary_equivalences): Iterate over the simple
19809         equivalences rather than assuming there's only one per edge.
19810         (cprop_into_successor_phis): Iterate over the simple
19811         equivalences rather than assuming there's only one per edge.
19812         (optimize_stmt): Use operand_equal_p rather than pointer
19813         equality for mini-DSE code.
19814
19815 2017-08-28  Nathan Sidwell  <nathan@acm.org>
19816
19817         * gcc.c (execute): Fold SIGPIPE handling into switch
19818         statement.  Adjust internal error message.
19819
19820 2017-08-28  Richard Biener  <rguenther@suse.de>
19821
19822         PR debug/81993
19823         * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
19824         Do nothing for removed DIEs.
19825
19826 2017-08-28  Richard Biener  <rguenther@suse.de>
19827
19828         PR tree-optimization/81977
19829         * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
19830         memcpy.
19831
19832 2017-08-28  Alexander Monakov  <amonakov@ispras.ru>
19833
19834         PR target/80640
19835         * doc/md.texi (mem_thread_fence): Remove mention of mode.  Rewrite.
19836         * optabs.c (expand_mem_thread_fence): Emit a compiler barrier when
19837         using targetm.gen_mem_thread_fence.
19838
19839 2017-08-27  Uros Bizjak  <ubizjak@gmail.com>
19840
19841         PR target/81995
19842         * config/i386/i386.md (*<btsc><mode>): Change operand 2
19843         predicate to register_operand.  Reorder operands.
19844         (*btr<mode>): Ditto.
19845         (*<btsc><mode>_mask): Change operand 3 predicate to register_operand.
19846         (*btr<mode>_mask): Ditto.
19847
19848 2017-08-25  Steven Munroe  <munroesj@gcc.gnu.org>
19849
19850         * config.gcc (powerpc*-*-*): Add xmmintrin.h and mm_malloc.h.
19851         * config/rs6000/xmmintrin.h: New file.
19852         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include xmmintrin.h.
19853
19854 2017-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19855
19856         PR target/81504
19857         * config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
19858         parameter and_insn and return it.
19859         (recombine_lvx_pattern): Insert a copy to ensure availability of
19860         the base register of the copied masking operation at the point of
19861         the instruction replacement.
19862         (recombine_stvx_pattern): Likewise.
19863
19864 2017-08-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
19865
19866         * config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
19867         undocumented switches.
19868         (-mpower9-dform-vector): Likewise.
19869         (-mpower9-dform): Likewise.
19870         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
19871         comments to delete references to -mpower9-dform* switches.
19872         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
19873         Delete reference to -mpower9-dform* switches, test for
19874         -mpower9-vector instead.
19875         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
19876         (OTHER_P9_VECTOR_MASKS): Likewise.
19877         (POWERPC_MASKS): Likewise.
19878         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
19879         tests against -mpower9-dform* to -mpower9-vector.  Delete code
19880         that checked for -mpower9-dform* consistancy with other options.
19881         Add test for -mpower9-misc to enable other power9 switches.
19882         (rs6000_init_hard_regno_mode_ok): Likewise.
19883         (rs6000_option_override_internal): Likewise.
19884         (rs6000_emit_prologue): Likewise.
19885         (rs6000_emit_epilogue): Likewise.
19886         (rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
19887         (rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
19888         (emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
19889         -mpower9-vector.
19890         (emit_fusion_p9_store): Likewise.
19891         * config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
19892         resetting these macros if the assembler does not support ISA 3.0
19893         instructions.
19894         (TARGET_P9_DFORM_VECTOR): Likewise.
19895         * config/rs6000/rs6000.md (peepholes to optimize altivec memory):
19896         Change to use -mpower9-vector instead of -mpower9-dform-scalar.
19897
19898 2017-08-25  Alan Modra  <amodra@gmail.com>
19899
19900         PR rtl-optimization/81747
19901         * cse.c (cse_extended_basic_block): Don't attempt to record
19902         equivalences for degenerate conditional branches that branch
19903         to their fall-through.
19904
19905 2017-08-24  Martin Sebor  <msebor@redhat.com>
19906
19907         PR middle-end/81908
19908         * gimple-fold.c (size_must_be_zero_p): New function.
19909         (gimple_fold_builtin_memory_op): Call it.
19910
19911 2017-08-24  Steven Munroe  <munroesj@gcc.gnu.org>
19912
19913         * config/rs6000/mm_malloc.h: New file.
19914
19915 2017-08-24  Bin Cheng  <bin.cheng@arm.com>
19916
19917         PR tree-optimization/81913
19918         * tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
19919         analysis when either IVs in condition can wrap.
19920
19921 2017-08-24  Uros Bizjak  <ubizjak@gmail.com>
19922
19923         * dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
19924         * dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.
19925
19926 2017-08-24  Richard Biener  <rguenther@suse.de>
19927
19928         PR target/81921
19929         * targhooks.c (default_target_can_inline_p): Properly
19930         use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
19931         is present and always compare.
19932         * config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
19933         infer -mfpmath=sse from TARGET_SSE_P.
19934         (ix86_can_inline_p): Properly use target_option_default_node when
19935         no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.
19936
19937 2017-08-24  Richard Biener  <rguenther@suse.de>
19938
19939         PR debug/81936
19940         * dwarf2out.c (output_die): Handle flag_generate_offload like
19941         flag_generate_lto.
19942         (output_comp_unit): Likewise.
19943         (gen_array_type_die): Likewise.
19944         (dwarf2out_early_finish): Likewise.
19945         (note_variable_value_in_expr): Likewise.
19946         (dwarf2out_finish): Likewise.  Adjust assert.
19947         * cgraphunit.c (symbol_table::compile): Move setting of
19948         flag_generate_offload earlier ...
19949         (symbol_table::finalize_compilation_unit): ... here, before
19950         early debug finalization.
19951
19952 2017-08-24  Richard Biener  <rguenther@suse.de>
19953
19954         * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
19955         and ipa-fnsummary.h.
19956         (ix86_can_inline_p): When ix86_fpmath flags do not match
19957         check whether the callee uses FP math at all.
19958
19959 2017-08-24  Aldy Hernandez  <aldyh@redhat.com>
19960
19961         PR middle-end/81931
19962         * tree-ssanames.c (get_nonzero_bits): Use element_precision
19963         instead of TYPE_PRECISION.
19964
19965 2017-08-24  Richard Sandiford  <richard.sandiford@linaro.org>
19966             Alan Hayward  <alan.hayward@arm.com>
19967             David Sherwood  <david.sherwood@arm.com>
19968
19969         * combine.c (make_extraction): Use subreg_offset_from_lsb.
19970
19971 2017-08-23  Daniel Santos  <daniel.santos@pobox.com>
19972
19973         * config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
19974         Remove field.
19975         (ix86_frame::stack_realign_allocate): New field.
19976         (struct machine_frame_state): Modify comments.
19977         (machine_frame_state::sp_realigned_fp_end): New field.
19978         * config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
19979         layout calculation.
19980         (sp_valid_at): Add assertion to assure no attempt to access invalid
19981         offset of a realigned stack.
19982         (fp_valid_at): Likewise.
19983         (choose_baseaddr): Modify comments.
19984         (ix86_emit_outlined_ms2sysv_save): Adjust to changes in
19985         ix86_expand_prologue.
19986         (ix86_expand_prologue): Modify stack realignment and allocation.
19987         (ix86_expand_epilogue): Modify comments.
19988         * doc/sourcebuild.texi: Add documentation for target selectors avx2,
19989         avx2_runtime, avx512f, and avx512f_runtime.
19990
19991 2017-08-23  Uros Bizjak  <ubizjak@gmail.com>
19992
19993         * config/i386/i386.opt: Remove unneeded Init(0) initializations.
19994         (mstackrealign): Do not init to -1.
19995         * config/i386/i386.c (ix86_option_override_internal):
19996         Check opts_set, not opts when setting default value of
19997         opts->x_ix86_force_align_arg_pointer.
19998
19999 2017-08-23  Richard Biener  <rguenther@suse.de>
20000
20001         * function.c (fndecl_name): Use verbosity 1 (no arguments) for
20002         lang_hooks.decl_printable_name.
20003         * print-rtl-function.c (print_rtx_function): Likewise.
20004         * tree-pretty-print.c (dump_function_header): Likewise.
20005
20006 2017-08-23  Richard Biener  <rguenther@suse.de>
20007
20008         PR lto/81940
20009         * dwarf2out.c (dwarf2out_abstract_function): Handle LTO with
20010         -g0 at compile-time.
20011
20012 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
20013
20014         PR middle-end/19706
20015         * doc/sourcebuild.texi (Other hardware attributes):
20016         Document xorsign.
20017
20018 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
20019
20020         PR middle-end/19706
20021         * tree-ssa-math-opts.c (convert_expand_mult_copysign):
20022         Fix single-use check.
20023
20024 2017-08-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
20025
20026         * gcc.c (execute): Only test for SIGKILL and SIGQUIT if available.
20027
20028 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
20029
20030         * doc/install.texi: Modify to add more details on running selected
20031         tests.
20032
20033 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
20034
20035         * config/i386/i386.c (ix86_option_override_internal): Error when -mx32
20036         is combined with -mabi=ms.
20037         (ix86_function_type_abi): Limit errors for mixing -mx32 with attribute
20038         ms_abi.
20039
20040 2017-08-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20041
20042         PR tree-optimization/81488
20043         * gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
20044         and cached_basis fields.
20045         (MAX_SPREAD): New constant.
20046         (alloc_cand_and_find_basis): Initialize new fields.
20047         (clear_visited): New function.
20048         (create_phi_basis_1): Rename from create_phi_basis, set visited
20049         and cached_basis fields.
20050         (create_phi_basis): New wrapper function.
20051         (phi_add_costs_1): Rename from phi_add_costs, add spread
20052         parameter, set visited field, short-circuit when limits reached.
20053         (phi_add_costs): New wrapper function.
20054         (record_phi_increments_1): Rename from record_phi_increments, set
20055         visited field.
20056         (record_phi_increments): New wrapper function.
20057         (phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
20058         (phi_incr_cost): New wrapper function.
20059         (all_phi_incrs_profitable_1): Rename from
20060         all_phi_incrs_profitable, set visited field.
20061         (all_phi_incrs_profitable): New wrapper function.
20062
20063 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
20064             Alan Hayward  <alan.hayward@arm.com>
20065             David Sherwood  <david.sherwood@arm.com>
20066
20067         * rtl.h (paradoxical_subreg_p): Define inline, and add a version
20068         that takes the outer and inner modes.
20069         * doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
20070         comparison as the canonical test for a paradoxical subreg.
20071         * combine.c (simplify_set): Use paradoxical_subreg_p.
20072         (make_extraction): Likewise.
20073         (force_to_mode): Likewise.
20074         (rtx_equal_for_field_assignment_p): Likewise.
20075         (gen_lowpart_for_combine): Likewise.
20076         (simplify_comparison): Likewise.
20077         * cse.c (equiv_constant): Likewise.
20078         * expmed.c (store_bit_field_1): Likewise.
20079         * final.c (alter_subreg): Likewise.
20080         * fwprop.c (propagate_rtx): Likewise.
20081         (forward_propagate_subreg): Likewise.
20082         * ira-conflicts.c (ira_build_conflicts): Likewise.
20083         * lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
20084         * lra-constraints.c (curr_insn_transform): Likewise.
20085         (split_reg): Likewise.
20086         * lra-eliminations.c (move_plus_up): Likewise.
20087         (lra_eliminate_regs_1): Likewise.
20088         * recog.c (general_operand): Likewise.
20089         * ree.c (combine_reaching_defs): Likewise.
20090         * reload.c (push_reload): Likewise.
20091         (find_reloads): Likewise.
20092         * reload1.c (elimination_effects): Likewise.
20093         (compute_reload_subreg_offset): Likewise.
20094         (choose_reload_regs): Likewise.
20095         * rtlanal.c (subreg_lsb_1): Likewise.
20096         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
20097         (simplify_subreg): Likewise.
20098         * var-tracking.c (track_loc_p): Likewise.
20099         * emit-rtl.c (byte_lowpart_offset): Likewise.
20100         (paradoxical_subreg_p): Delete out-of-line definition.
20101
20102 2017-08-22  Jeff Law  <law@redhat.com>
20103
20104         PR tree-optimization/81741
20105         PR tree-optimization/71947
20106         * tree-ssa-dom.c: Include tree-inline.h.
20107         (record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
20108         equivalences if one is more expensive to compute than the other.
20109         * tree-ssa-scopedtables.h (class const_or_copies): Make
20110         record_const_or_copy_raw method private.
20111         (class avail_exprs_stack): New method simplify_binary_operation.
20112         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
20113         avail_exprs_stack::simplify_binary_operation as needed.
20114         (avail_exprs_stack::simplify_binary_operation): New function.
20115
20116 2017-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
20117
20118         * config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
20119         * config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
20120         (DOT_SYMBOLS): Likewise.
20121         (MINIMAL_TOC_SECTION_ASM_OP): Likewise.
20122         (RELOCATABLE_NEEDS_FIXUP): Likewise.
20123         (RS6000_ABI_NAME): Likewise.
20124         (TARGET_CMODEL): Likewise.
20125         (TOC_SECTION_ASM_OP): Likewise.
20126         (SET_CMODEL): New macro.
20127         (SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
20128
20129 2017-08-22  Richard Biener  <rguenther@suse.de>
20130
20131         * tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
20132         to allow for free-lang-data replacements similar to verify_type_variant.
20133
20134 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
20135             Alan Hayward  <alan.hayward@arm.com>
20136             David Sherwood  <david.sherwood@arm.com>
20137
20138         * config/aarch64/aarch64.md (casesi): Use DImode rather than
20139         VOIDmode for the LABEL_REF.
20140
20141 2017-08-22  Richard Biener  <rguenther@suse.de>
20142
20143         * tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes.
20144
20145 2017-08-22  Richard Biener  <rguenther@suse.de>
20146
20147         * common.opt (feliminate-dwarf2-dups): Ignore.
20148         * doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
20149         * dwarf2out.c (push_new_compile_unit, pop_compile_unit,
20150         same_die_p_wrap, compute_section_prefix,
20151         is_symbol_die, assign_symbol_names, break_out_includes): Remove.
20152         (comdat_symbol_id, comdat_symbol_number): Likewise.
20153         (cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
20154         Likewise.
20155         (check_duplicate_cu, record_comdat_symbol_number): Likewise.
20156         (output_die): Mark unreachable path unreachable.
20157         (dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
20158         (dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
20159         (dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
20160         (dwarf2out_early_finish): Likewise.
20161
20162 2017-08-22  Aldy Hernandez  <aldyh@redhat.com>
20163
20164         * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
20165
20166 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
20167
20168         PR target/81910
20169         * config/avr/avr.c (avr_handle_addr_attribute): Early return if
20170         not VAR_P. Filter attribute warnings with OPT_Wattributes.
20171         (avr_attribute_table) <io, io_low, address>: Initialize
20172         .decl_required with true.
20173
20174 2017-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
20175
20176         * config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
20177         undocumented debugging options.
20178         (-mvsx-scalar-double): Likewise.
20179         (-mallow-df-permute): Likewise.
20180         (-mvectorize-builtins): Likewise.
20181         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
20182         (rs6000_builtin_vectorized_function): Likewise.
20183         (rs6000_builtin_md_vectorized_function): Likewise.
20184         (rs6000_opt_vars): Likewise.
20185
20186 2017-08-21  Uros Bizjak  <ubizjak@gmail.com>
20187
20188         PR target/46091
20189         * config/i386/i386.md (*btsq_imm): Rename from *btsq.
20190         (*btrq_imm): Rename from *btrq.
20191         (*btcq_imm): Rename from *btcq.
20192         (btsc): New code attribute.
20193         (*<btsc><mode>): New insn pattern.
20194         (*btr<mode>): Ditto.
20195         (*<btsc><mode>_mask): New insn_and_split pattern.
20196         (*btr<mode>_mask): Ditto.
20197
20198 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20199             Alan Hayward  <alan.hayward@arm.com>
20200             David Sherwood  <david.sherwood@arm.com>
20201
20202         * function.c (pad_below): Simplify padding calculation.
20203
20204 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20205             Alan Hayward  <alan.hayward@arm.com>
20206             David Sherwood  <david.sherwood@arm.com>
20207
20208         * target.def (function_prologue): Remove frame size argument.
20209         (function_epilogue): Likewise.
20210         * doc/tm.texi: Regenerate.
20211         * final.c (final_start_function): Update call to function_prologue.
20212         (final_end_function): Update call to function_epilogue.
20213         (default_function_pro_epilogue): Remove frame size argument.
20214         * output.h (default_function_pro_epilogue): Likewise.
20215         * config/arm/arm.c (arm_output_function_epilogue): Likewise.
20216         (arm_output_function_prologue): Likewise.
20217         * config/frv/frv.c (frv_function_prologue): Likewise.
20218         (frv_function_epilogue): Likewise.
20219         * config/i386/i386.c (ix86_output_function_epilogue): Likewise.
20220         * config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
20221         (ia64_output_function_epilogue): Likewise.
20222         * config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
20223         (m32r_output_function_epilogue): Likewise.
20224         * config/microblaze/microblaze.c (microblaze_function_prologue)
20225         (microblaze_function_epilogue): Likewise.
20226         * config/mips/mips.c (mips_output_function_prologue): Likewise.
20227         (mips_output_function_epilogue): Likewise.
20228         * config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
20229         (mmix_target_asm_function_epilogue): Likewise.
20230         * config/msp430/msp430.c (msp430_start_function): Likewise.
20231         * config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
20232         (nds32_asm_function_epilogue): Likewise.
20233         * config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
20234         * config/pa/pa.c (pa_output_function_prologue): Likewise.
20235         (pa_output_function_epilogue): Likewise.
20236         * config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
20237         (rs6000_output_function_epilogue): Likewise.
20238         * config/rl78/rl78.c (rl78_start_function): Likewise.
20239         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
20240         (rs6000_output_function_epilogue): Likewise.
20241         * config/rx/rx.c (rx_output_function_prologue): Likewise.
20242         * config/sh/sh.c (sh_output_function_epilogue): Likewise.
20243         * config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
20244         (sparc_asm_function_epilogue): Likewise.
20245
20246 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20247
20248         * tree.h (type_has_mode_precision_p): New function.
20249         * convert.c (convert_to_integer_1): Use it.
20250         * expr.c (expand_expr_real_2): Likewise.
20251         (expand_expr_real_1): Likewise.
20252         * fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
20253         * match.pd: Likewise.
20254         * tree-ssa-forwprop.c (simplify_rotate): Likewise.
20255         * tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
20256         * tree-tailcall.c (process_assignment): Likewise.
20257         * tree-vect-loop.c (vectorizable_reduction): Likewise.
20258         * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
20259         (vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
20260         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
20261         (vectorizable_assignment): Likewise.
20262         (vectorizable_shift): Likewise.
20263         (vectorizable_operation): Likewise.
20264         * tree-vrp.c (register_edge_assert_for_2): Likewise.
20265
20266 2017-08-21  Wilco Dijkstra  <wdijkstr@arm.com>
20267
20268         * match.pd: Add pow (C, x) simplification.
20269
20270 2017-08-21  Richard Biener  <rguenther@suse.de>
20271
20272         PR tree-optimization/81900
20273         * tree-ssa-pre.c (compute_antic_aux): Properly compute changed
20274         for blocks with abnormal predecessors.
20275         (compute_antic): Do not set visited flag prematurely.
20276
20277 2017-08-21  Georg-Johann Lay  <avr@gjlay.de>
20278
20279         PR target/79883
20280         * config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
20281
20282 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20283
20284         * stor-layout.h (vector_type_mode): Move to...
20285         * tree.h (vector_type_mode): ...here.
20286         * stor-layout.c (vector_type_mode): Move to...
20287         * tree.c (vector_type_mode): ...here.  Include rtl.h and regs.h.
20288
20289 2017-08-21  Richard Biener  <rguenther@suse.de>
20290
20291         * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
20292         register_external_die hooks.
20293         (debug_false_tree_charstarstar_uhwistar): Declare.
20294         (debug_nothing_tree_charstar_uhwi): Likewise.
20295         * debug.c (do_nothing_debug_hooks): Adjust.
20296         (debug_false_tree_charstarstar_uhwistar): New do nothing.
20297         (debug_nothing_tree_charstar_uhwi): Likewise.
20298         * dbxout.c (dbx_debug_hooks): Adjust.
20299         (xcoff_debug_hooks): Likewise.
20300         * sdbout.c (sdb_debug_hooks): Likewise.
20301         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
20302         * dwarf2out.c (macinfo_label_base): New global.
20303         (dwarf2out_register_external_die): New function for the
20304         register_external_die hook.
20305         (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
20306         (dwarf2_debug_hooks): Use them.
20307         (dwarf2_lineno_debug_hooks): Adjust.
20308         (struct die_struct): Add with_offset flag.
20309         (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
20310         DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
20311         DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
20312         DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
20313         DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
20314         DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
20315         defining section names for the early LTO debug variants.
20316         (reset_indirect_string): New helper.
20317         (add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
20318         (print_dw_val): Add support for offsetted symbol references.
20319         (get_ultimate_context): Split out from is_cxx.
20320         (is_cxx): Use get_ultimate_context.
20321         (is_fortran): Add decl overload.
20322         (compute_comp_unit_symbol): Split out worker from
20323         compute_section_prefix.
20324         (compute_section_prefix): Call compute_comp_unit_symbol and
20325         set comdat_type_p here.
20326         (output_die): Skip DIE symbol output for the LTO added one.
20327         Handle DIE symbol references with offset.
20328         (output_comp_unit): Guard section name mangling properly.
20329         For LTO debug sections emit a symbol at the section beginning
20330         which we use to refer to its DIEs.
20331         (add_abstract_origin_attribute): For DIEs registered via
20332         dwarf2out_register_external_die directly refer to the early
20333         DIE rather than indirectly through the shadow one we created.
20334         Remove obsolete call to dwarf2out_abstract_function for
20335         non-function/block origins.
20336         (gen_array_type_die): When generating early LTO debug do
20337         not emit DW_AT_string_length.
20338         (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
20339         late when in LTO.  As suggested place a gcc_unreachable for
20340         the DECL_ABSTRACT_P case.
20341         (gen_subprogram_die): Avoid another specification DIE
20342         for early built declarations/definitions for the late LTO case.
20343         (gen_variable_die): Add type references for late duplicated VLA dies
20344         when in late LTO.
20345         (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
20346         we have the abstract instance already.
20347         (process_scope_var): Adjust decl DIE contexts in LTO which
20348         first puts them in limbo.
20349         (gen_decl_die): Do not generate type DIEs late apart from
20350         types for VLAs or for decls we do not yet have a DIE.  Do not
20351         call dwarf2out_abstract_function late.
20352         (dwarf2out_early_global_decl): Make sure to create DIEs
20353         for abstract instances of a decl first.
20354         (dwarf2out_late_global_decl): Adjust comment.
20355         (output_macinfo_op): With multiple macro sections use
20356         macinfo_label_base to distinguish labels.
20357         (output_macinfo): Likewise.  Update macinfo_label_base.
20358         Pass in the line info label.
20359         (note_variable_value_in_expr): When generating LTO resolve
20360         all variable values here by generating DIEs as needed.
20361         (init_sections_and_labels): Add early LTO debug flag parameter
20362         and generate different sections and names if set.  Add generation
20363         counter for the labels so we can have multiple of them.
20364         (reset_dies): Helper to allow DIEs to be output multiple times.
20365         (dwarf2out_finish): When outputting DIEs to the fat part of an
20366         LTO object first reset DIEs.
20367         (dwarf2out_early_finish): Output early DIEs when generating LTO.
20368         (modified_type_die): Check for decl_ultimate_origin being self
20369         before recursing.
20370         (gen_type_die_with_usage): Likewise.
20371         (gen_typedef_die): Allow decl_ultimate_origin being self.
20372         (set_decl_abstract_flags): Remove.
20373         (set_block_abstract_flags): Likewise.
20374         (dwarf2out_abstract_function): Treat the early generated DIEs
20375         as the abstract copy and only add DW_AT_inline and
20376         DW_AT_artificial here and call set_decl_origin_self.
20377         If the DIE has an abstract origin don't do anything.
20378         * tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
20379         if we have none yet (Go fails to build one, PR78628).
20380         (variably_modified_type_p): Prevent endless recursion for Ada
20381         cyclic pointer types.
20382         * lto-streamer-in.c: Include debug.h.
20383         (dref_queue): New global.
20384         (lto_read_tree_1): Stream in DIE references.
20385         (lto_input_tree): Register DIE references.
20386         (input_function): Stream DECL_DEBUG_ARGS.
20387         * lto-streamer-out.c: Include debug.h.
20388         (lto_write_tree_1): Output DIE references.
20389         (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
20390         Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
20391         (output_function): Stream DECL_DEBUG_ARGS.
20392         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
20393         Stream DECL_ABSTRACT_ORIGIN.
20394         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
20395         (write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
20396         DECL_CONTEXT for file-scope decls.
20397         * lto-streamer.h (struct dref_entry): Declare.
20398         (dref_queue): Likewise.
20399         * cfgexpand.c (pass_expand::execute): Do not call the
20400         outlining_inline_function hook here.
20401         * lto-wrapper.c (debug_obj): New global.
20402         (tool_cleanup): Unlink it if required.
20403         (debug_objcopy): New function.
20404         (run_gcc): Handle early debug sections in the IL files by
20405         extracting them to separate files, partially linkin them and
20406         feeding the result back as result to the linker.
20407         * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
20408         DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
20409         DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
20410         sections into a separate segment.
20411         * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
20412         segments.
20413         (darwin_asm_dwarf_section): Likewise.
20414         (darwin_asm_output_dwarf_offset): Likewise.
20415         * config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
20416
20417 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20418             Alan Hayward  <alan.hayward@arm.com>
20419             David Sherwood  <david.sherwood@arm.com>
20420
20421         * read-md.h (md_reader::record_potential_iterator_use): Replace
20422         pointer argument with an rtx and an index.
20423         * read-rtl.c (iterator_group::apply_iterator): Likewise.
20424         (apply_mode_iterator): Likewise.
20425         (apply_code_iterator): Likewise.
20426         (apply_int_iterator): Likewise.
20427         (apply_subst_iterator): Likewise.
20428         (record_iterator_use): Likewise.
20429         (record_attribute_use): Likewise.
20430         (md_reader::record_potential_iterator_use): Likewise.  Update calls
20431         to record_iterator_use and apply_iterator.
20432         (iterator_use): Replace ptr with x and index.
20433         (attribute_use): Likewise.
20434         (apply_attribute_uses): Update calls to apply_iterator.
20435         (apply_iterators): Likewise.  Update initialization of iterator_use.
20436         (rtx_reader::read_rtx_code): Update calls to record_iterator_use
20437         and record_potential_iterator_use.
20438         (rtx_reader::read_rtx_operand): Likewise.
20439
20440 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20441             Alan Hayward  <alan.hayward@arm.com>
20442             David Sherwood  <david.sherwood@arm.com>
20443
20444         * varasm.c (const_rtx_hash_1): Don't hash in the mode of a
20445         CONST_WIDE_INT.
20446
20447 2017-08-21  Richard Biener  <rguenther@suse.de>
20448
20449         PR middle-end/81884
20450         * tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
20451         at struct end conservatively when comparing common bases.
20452
20453 2017-08-21  Richard Biener  <rguenther@suse.de>
20454
20455         * tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
20456         (mem_ref_in_stmt): Remove.
20457         (determine_max_movement): Use ref index to get at the reference.
20458         (invariantness_dom_walker::before_dom_children): Deal with
20459         lim data already initialized.
20460         (gather_mem_refs_stmt): Initialize lim data and record ref index.
20461
20462 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
20463
20464         * config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove.
20465         (TARGET_ISA_ROUND): Ditto.
20466         (TARGET_ROUND): Ditto.
20467         * config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1.
20468         * config/i386/i386.md: Ditto.
20469         * config/i386/sse.md: Ditto.
20470         * config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND
20471         with OPTION_MASK_ISA_SSE4_1.
20472
20473 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
20474
20475         PR target/81894
20476         * doc/extend.texi (x86 Built-in Functions): Correct the name of
20477         __builtin_ia32_lzcnt_u16.
20478
20479 2017-08-18  Peter Bergner  <bergner@vnet.ibm.com>
20480
20481         PR target/80210
20482         * config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
20483         (rs6000_set_current_function): Rewrite function to use it.
20484
20485 2017-08-18  H.J. Lu  <hongjiu.lu@intel.com>
20486
20487         PR c/53037
20488         * print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN
20489         and TYPE_WARN_IF_NOT_ALIGN.
20490         * stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN.
20491         (handle_warn_if_not_align): New.
20492         (place_union_field): Call handle_warn_if_not_align.
20493         (place_field): Call handle_warn_if_not_align.
20494         Copy TYPE_WARN_IF_NOT_ALIGN.
20495         (finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN.
20496         (layout_type): Likewise.
20497         * tree-core.h (tree_type_common): Add warn_if_not_align.  Set
20498         spare to 18.
20499         (tree_decl_common): Add warn_if_not_align.
20500         * tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN.
20501         * tree.h (TYPE_WARN_IF_NOT_ALIGN): New.
20502         (SET_TYPE_WARN_IF_NOT_ALIGN): Likewise.
20503         (DECL_WARN_IF_NOT_ALIGN): Likewise.
20504         (SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
20505         * doc/extend.texi: Document warn_if_not_aligned attribute.
20506         * doc/invoke.texi: Document -Wif-not-aligned and -Wpacked-not-aligned.
20507
20508 2017-08-17  Martin Liska  <mliska@suse.cz>
20509
20510         PR bootstrap/81864
20511         * tree-loop-distribution.c (ddrs_table): Change type to pointer type.
20512         (get_data_dependence): Use it as pointer type.
20513         (distribute_loop): Likewise.
20514
20515 2017-08-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20516
20517         * config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant.
20518         (p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew_<mode>_direct.
20519         (p8_vmrgow_<mode>_direct): New define_insn.
20520         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly
20521         handle endianness for vmrgew and vmrgow permute patterns.
20522
20523 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
20524
20525         * config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE.
20526         * config/rs6000/rs6000-cpus.def: Remove comment.
20527         (ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE;
20528         (POWERPC_MASKS): Likewise.
20529         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded
20530         use of TARGET_VSX_TIMODE.
20531         (rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX.
20532         (rs6000_init_hard_regno_mode_ok): Remove unneeded uses of
20533         TARGET_VSX_TIMODE.  Change use of TARGET_VSX_TIMODE to TARGET_VSX.
20534         (rs6000_option_override_internal): Remove dead code.
20535         (rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX.
20536         (rs6000_legitimize_reload_address): Likewise.
20537         (rs6000_legitimate_address_p): Likewise.
20538         (rs6000_opt_masks): Delete "vsx-timode".
20539         (rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode
20540         from function comment.
20541         * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete.
20542         * config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE.
20543         (V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty
20544         condition.
20545         * config/rs6000/rs6000.opt (mvsx-timode): Replace with stub.
20546         * config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE.
20547         * config/rs6000/vsx.md (VSX_LE_128): Likewise.
20548         (VSX_TI): Likewise.
20549         (VSX_M): Likewise.
20550         (define_peephole2): Likewise.
20551
20552 2017-08-17  Martin Sebor  <msebor@redhat.com>
20553
20554         PR c/81859
20555         * pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading
20556         past the end of an array.
20557         (test_pp_format): Add test cases.
20558
20559 2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>
20560
20561         * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add
20562         missing ECF_NOTHROW flags.
20563
20564 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
20565
20566         PR target/72804
20567         * config/rs6000/vsx.md (*vsx_le_permute_<mode>): Add support for
20568         operands residing in integer registers.
20569         (*vsx_le_perm_load_<mode>): Likewise.
20570         (*vsx_le_perm_store_<mode>): Likewise.
20571         (define_peephole2): Add peepholes to optimize the above.
20572
20573 2017-08-17  Marek Polacek  <polacek@redhat.com>
20574
20575         PR middle-end/81814
20576         * fold-const.c (operand_equal_for_comparison_p): Remove code that used
20577         to mimic what shorten_compare did.  Change the return type to bool.
20578         (fold_cond_expr_with_comparison): Update call to
20579         operand_equal_for_comparison_p.
20580         (fold_ternary_loc): Likewise.
20581
20582 2017-08-17  Jackson Woodruff  <jackson.woodruff@arm.com>
20583
20584         * aarch64-simd.md (mov<mode>): No longer force zero immediate into
20585         register.
20586         (*aarch64_simd_mov<mode>): Add new case for stp using zero immediate.
20587
20588 2017-08-17  Richard Biener  <rguenther@suse.de>
20589
20590         * tree-ssa-structalias.c (solve_graph): When propagating
20591         to successors update the graphs succ edges and avoid duplicate work.
20592
20593 2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
20594
20595         PR target/81861
20596         * config/i386/i386.c (ix86_option_override_internal): Save target
20597         specific options after ix86_stack_protector_guard_reg was changed.
20598
20599 2017-08-17  Richard Biener  <rguenther@suse.de>
20600
20601         PR tree-optimization/81827
20602         * tree-ssa-structalias.c (struct variable_info): Add is_reg_var flag.
20603         (new_var_info): Initialize it conservatively.
20604         (get_call_vi): Mark register vars.
20605         (new_scalar_tmp_constraint_exp): Likewise.
20606         (handle_rhs_call): Likewise.
20607         (handle_const_call): Likewise.
20608         (create_function_info_for): Likewise.
20609         (solve_constraints): Sort varinfos to separate register from
20610         non-register vars to pack points-to solution bitmaps during
20611         iteration.
20612
20613 2017-08-17  Marek Polacek  <polacek@redhat.com>
20614
20615         * gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1.
20616
20617 2017-08-17  Richard Biener  <rguenther@suse.de>
20618
20619         * tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p
20620         to true when overflow is undefined and we saturated the result.
20621
20622 2017-08-17  Alan Modra  <amodra@gmail.com>
20623
20624         PR target/80938
20625         * config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09.
20626         Don't use store multiple if only one reg needs saving.
20627         (interesting_frame_related_regno): New function.
20628         (rs6000_frame_related): Don't emit frame info for regs that
20629         don't need saving.
20630         (rs6000_emit_epilogue): Likewise.
20631
20632 2017-08-16  Nathan Sidwell  <nathan@acm.org>
20633
20634         * tree-core.h (tree_type_non_common): Rename binfo to lang_1.
20635         * tree.h (TYPE_BINFO): Use type_non_common.maxval.
20636         (TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type.
20637         * tree.c (free_lang_data_in_type): Use else-if chain.  Always
20638         clear TYPE_LANG_1.  Remove obsolete member-function stripping.
20639         (find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW.
20640         (verify_type): Adjust for TYPE_BINFO move.
20641         * lto-streamer-out.c (DFS::DFS_write_tree_body): No need to
20642         process TYPE_BINFO directly.
20643         (hash_tree): Likewise.
20644         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
20645         Likewise.
20646         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
20647         Likewise.
20648
20649 2017-08-16  David Malcolm  <dmalcolm@redhat.com>
20650
20651         * diagnostic-show-locus.c (colorizer::m_caret): Remove unused field.
20652
20653 2017-08-16  Uros Bizjak  <ubizjak@gmail.com>
20654
20655         PR target/46091
20656         * config/i386/i386.md (*anddi_1_btr): Change predicates of
20657         operand 0 and operand 1 to nomimmediate_operand. Add "m" constraint.
20658         Add ix86_binary_operator_ok to insn constraint.
20659         (*iordi_1_bts): Ditto.
20660         (*xordi_1_btc): Ditto.
20661         (*btsq): Change predicate of operand 0 to nonimmediate_operand.
20662         Update corresponding peephole2 pattern.
20663         (*btrq): Ditto.
20664         (*btcq): Ditto.
20665
20666 2017-08-16  Bin Cheng  <bin.cheng@arm.com>
20667
20668         PR tree-optimization/81832
20669         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Don't
20670         copy loop header which has IFN_LOOP_DIST_ALIAS call.
20671
20672 2017-08-16  Marek Polacek  <polacek@redhat.com>
20673
20674         PR middle/81695
20675         * fold-const.c (fold_indirect_ref_1): Restore original behavior
20676         regarding size_zero_node.
20677
20678 2017-08-16  Martin Liska  <mliska@suse.cz>
20679
20680         PR target/81753
20681         * config.gcc: Respect previously set extra_objs in case
20682         of darwin target.
20683
20684 2017-08-16  Richard Sandiford  <richard.sandiford@linaro.org>
20685
20686         PR tree-optimization/81835
20687         * tree-vect-loop.c (vect_is_simple_reduction): Simply checks for
20688         the phi SSA_NAME.  Check that the condition in a COND_EXPR does
20689         not depend on the phi.
20690
20691 2017-08-16  Alan Modra  <amodra@gmail.com>
20692
20693         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Delete
20694         dead code.
20695
20696 2017-08-16  Alan Modra  <amodra@gmail.com>
20697
20698         * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Merge..
20699         (save_reg_p): ..into this.  Update all callers.
20700         (first_reg_to_save): Simplify.
20701
20702 2017-08-16  Alan Modra  <amodra@gmail.com>
20703
20704         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't restore
20705         fixed regs.
20706
20707 2017-08-15  Joseph Myers  <joseph@codesourcery.com>
20708
20709         PR target/78460
20710         PR target/67712
20711         * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for
20712         constant count if that count is less than 32.
20713
20714 2017-08-15  Nathan Sidwell  <nathan@acm.org>
20715
20716         * gcc.c (execute): Emit friendlier message if inferior is killed
20717         by an external cause.
20718
20719 2017-08-15  Richard Biener  <rguenther@suse.de>
20720
20721         PR tree-optimization/81790
20722         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both
20723         CONSTRUCTORs from simplifying and VN.
20724
20725 2017-08-14  Martin Sebor  <msebor@redhat.com>
20726
20727         * builtin-attrs.def: Add comments.
20728
20729 2017-08-14  Martin Sebor  <msebor@redhat.com>
20730
20731         PR c/81117
20732         * doc/extend.texi (attribute nonstring): Document new attribute.
20733
20734 2017-08-14  Martin Sebor  <msebor@redhat.com>
20735
20736         PR c/81117
20737         * tree-diagnostic.c (default_tree_printer): Handle %G.
20738         * gimple-pretty-print.h (percent_G_format): Declare new function.
20739         * gimple-pretty-print.c (percent_G_format): Define.
20740         * tree-pretty-print.c (percent_K_format): Add argument.
20741
20742 2017-08-14  Martin Sebor  <msebor@redhat.com>
20743
20744         PR translation/79998
20745         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call):
20746         Remove a stray space.
20747
20748 2017-08-14  Uros Bizjak  <ubizjak@gmail.com>
20749
20750         PR target/46091
20751         * config/i386/i386.md (*anddi_1_btr): New insn_and_split pattern.
20752         (*iordi_1_bts): Ditto.
20753         (*xordi_1_btc): Ditto.
20754
20755 2017-08-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20756
20757         PR target/79845
20758         * config/rs6000/linux64.h (INVALID_64BIT): Use quoted strings.
20759         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
20760         Likewise.
20761         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Use
20762         quoted strings, and make more translator-friendly.
20763         (darwin_rs6000_override_options): Likewise.
20764         (rs6000_option_override_internal): Likewise.
20765         (rs6000_return_in_memory): Fix overlong line.
20766         (init_cmulative_args): Use quoted strings, and make more
20767         translator-friendly.
20768         (rs6000_pass_by_reference): Fix overlong line.
20769         (def_builtin): Use quoted strings.
20770         (altivec_expand_predicate_builtin): Use quoted strings, and make
20771         more translator-friendly.
20772         (htm_expand_builtin): Use quoted strings.
20773         (cpu_expand_builtin): Use quoted strings, and make more
20774         translator-friendly.
20775         (altivec_expand_builtin): Likewise.
20776         (paired_expand_predicate_builtin): Likewise.
20777         (rs6000_invalid_builtin): Likewise.
20778         (builtin_function_type): Use quoted strings.
20779         (rs6000_expand_split_stack_prologue): Use quoted strings, and make
20780         more translator-friendly.
20781         (rs6000_trampoline_init): Likewise.
20782         (rs6000_handle_altivec_attribute): Likewise.
20783         (rs6000_inner_target_options): Use quoted strings.
20784         (rs6000_disable_incompatible_switches): Likewise.
20785         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Use quoted
20786         strings, and make more translator-friendly.
20787         (SUBSUBTARGET_OVERRIDE_OPTIONS): Use quoted strings.
20788
20789 2017-08-14  Bin Cheng  <bin.cheng@arm.com>
20790
20791         PR tree-optimization/81799
20792         * tree-loop-distribution.c (version_loop_by_alias_check): Force
20793         cond_expr to simple gimple operand.
20794
20795 2017-08-14  Wilco Dijkstra  <wdijkstr@arm.com>
20796
20797         PR middle-end/46932
20798         * doc/sourcebuild.texi (autoincdec): Add autoincdec description.
20799
20800 2017-08-14  Georg-Johann Lay  <avr@gjlay.de>
20801
20802         PR target/81754
20803         PR target/81268
20804         * config/avr/avr.opt (mgas-isr-prologues): New Var avr_gasisr_prologues.
20805         * config/avr/avr.md (gasisr, *gasisr): Use it instead of
20806         TARGET_GASISR_PROLOGUES.
20807         * config/avr/avr.c (avr_option_override): Same.
20808         (avr_pass_pre_proep::execute): Same.
20809
20810 2017-08-13  H.J. Lu  <hongjiu.lu@intel.com>
20811
20812         PR target/81820
20813         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Replace
20814         frame pointer with stack pointer - UNITS_PER_WORD in debug insns.
20815
20816 2017-08-13  Uros Bizjak  <ubizjak@gmail.com>
20817
20818         * config/i386/i386.md (*load_tp_<mode>): Redefine as
20819         define_insn_and_split.  Split to a memory load from 0 in
20820         DEFAULT_TLS_SEG_REG address space.  Merge with *load_tp_x32
20821         using PTR mode iterator.
20822         (*load_tp_x32_zext"): Redefine as define_insn_and_split.
20823         Split to a memory load from 0 in DEFAULT_TLS_SEG_REG address space.
20824         (*add_tp_<mode>): Redefine as define_insn_and_split.
20825         Split to an add with a memory load from 0 in DEFAULT_TLS_SEG_REG
20826         address space.  Merge with *add_tp_x32 using PTR mode iterator.
20827         (*add_tp_x32_zext"): Redefine as define_insn_and_split.
20828         Split to an add with a  memory load from 0 in
20829         DEFAULT_TLS_SEG_REG address space.
20830
20831 2017-08-12  Andrew Pinski  <apinski@cavium.com>
20832
20833         * config/aarch64/aarch64-option-extensions.def (rdma):
20834         Fix feature string to what Linux prints out in /proc/cpuinfo.
20835
20836 2017-08-12  Pierre-Marie de Rodat  <derodat@adacore.com>
20837
20838         PR ada/79542
20839         * dwarf2out.c (modified_type_die): For C typedef types that have
20840         an ultimate origin, process the ultimate origin instead of the
20841         input type.
20842         (gen_typedef_die): Assert that input DECLs have no ultimate
20843         origin.
20844         (gen_type_die_with_usage): For typedef variants that have an
20845         ultimate origin, just call gen_decl_die on the original DECL.
20846         (process_scope_var): Avoid creating DIEs for local typedefs and
20847         concrete static variables.
20848
20849 2017-08-12  Alan Modra  <amodra@gmail.com>
20850
20851         PR target/81170
20852         PR target/81295
20853         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to
20854         match gnu-user.h startfile.
20855         (ENDFILE_LINUX_SPEC): Similarly.
20856
20857 2017-08-11  Thomas Schwinge  <thomas@codesourcery.com>
20858
20859         PR lto/81430
20860         * config/nvptx/nvptx.c (nvptx_override_options_after_change):
20861         Remove function.
20862         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Remove definition.
20863
20864 2017-08-11  Tamar Christina  <tamar.christina@arm.com>
20865         * config/aarch64/aarch64.md (mov<mode>): Change.
20866         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
20867         aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero.
20868         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed.
20869
20870 2017-08-11  Eric Botcazou  <ebotcazou@adacore.com>
20871
20872         * tree-sra.c (build_access_from_expr_1): Use more precise diagnostics
20873         for storage order barriers.
20874
20875 2017-08-11  Martin Liska  <mliska@suse.cz>
20876
20877         PR tree-opt/79987
20878         * tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument
20879         variables of void type.
20880
20881 2017-08-11  Martin Liska  <mliska@suse.cz>
20882
20883         * asan.c (asan_protect_global): Replace ASM_OUTPUT_DEF with
20884         TARGET_SUPPORTS_ALIASES.
20885         * cgraph.c (cgraph_node::create_same_body_alias): Likewise.
20886         * ipa-visibility.c (can_replace_by_local_alias): Likewise.
20887         (optimize_weakref): Likewise.
20888         * symtab.c (symtab_node::noninterposable_alias): Likewise.
20889         * varpool.c (varpool_node::create_extra_name_alias): Likewise.
20890         * defaults.h: Introduce TARGET_SUPPORTS_ALIASES.
20891
20892 2017-08-11  Martin Liska  <mliska@suse.cz>
20893
20894         PR ipa/81213
20895         * config/i386/i386.c (make_resolver_func): Do complete
20896         refactoring of the function.
20897
20898 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
20899
20900         PR target/81708
20901         * config/i386/i386.opt (mstack-protector-guard-symbol=): New option
20902         * config/i386/i386.c (ix86_stack_protect_guard): Use
20903         ix86_stack_protect_guard_symbol_str to generate varible declaration.
20904         * doc/invoke.texi (x86 Options): Document
20905         -mstack-protector-guard-symbol= option.
20906
20907 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
20908
20909         * config/i386/i386-protos.h (ix86_split_stack_guard): New prototype.
20910         * config/i386/i386.c (ix86_split_stack_guard): New function.
20911         (ix86_xpand_split_stack_prologue): Call ix86_split_stack_guard.
20912         (ix86_legitimate_address_p) <case UNSPEC_STACK_CHECK>: Remove.
20913         (i386_asm_output_addr_const_extra) <case UNSPEC_STACK_CHECK>: Ditto.
20914         (optput_pic_addr_const): Remove UNSPEC_STACK_CHECK handling.
20915         * config/i386/i386.md (unspec): Remove UNSPEC_STACK_CHECK.
20916         (split_stack_space_check): Call ix86_split_stack_guard.
20917
20918 2017-08-10  Martin Sebor  <msebor@redhat.com>
20919
20920         * print-tree.c (print_node): Print location using the established
20921         format %s:%i%i.
20922         Replace spaces with colons.
20923         (debug_raw, debug): Ditto.
20924
20925 2017-08-10  Martin Sebor  <msebor@redhat.com>
20926
20927         PR c++/81586
20928         * pretty-print.c (pp_format): Correct the handling of %s precision.
20929
20930 2017-08-10  H.J. Lu  <hongjiu.lu@intel.com>
20931
20932         PR target/81736
20933         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
20934         to ...
20935         (ix86_finalize_stack_frame_flags): This.  Also clear
20936         frame_pointer_needed if -fno-omit-frame-pointer is used without
20937         stack access.
20938         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
20939         with ix86_finalize_stack_frame_flags.
20940         (ix86_expand_epilogue): Likewise.
20941         (ix86_expand_split_stack_prologue): Likewise.
20942         * doc/invoke.texi: Add a note for -fno-omit-frame-pointer.
20943
20944 2017-08-10  Martin Liska  <mliska@suse.cz>
20945
20946         PR c++/81355
20947         * c-attribs.c (handle_target_attribute):
20948         Report warning for an empty string argument of target attribute.
20949
20950 2017-08-09  Jakub Jelinek  <jakub@redhat.com>
20951
20952         PR c/81687
20953         * omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
20954         LABEL_DECLs.
20955         * tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
20956         or DECL_NONLOCAL labels.
20957         (move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
20958         or DECL_NONLOCAL labels here.
20959
20960 2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>
20961
20962         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb
20963         to indicate when early gimple folding has been disabled.
20964         (rs6000_gimple_fold_builtin): Add debug content.
20965         (rs6000_invalid_builtin): Fix whitespace.
20966         (rs6000_expand_builtin): Fix whitespace.
20967         * config/rs6000/rs6000.opt: Add option for -mfold-gimple.
20968
20969 2017-08-09  Segher Boessenkool  <segher@kernel.crashing.org>
20970
20971         PR target/80938
20972         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use
20973         SAVE_MULTIPLE if not all the registers that saves, should be saved.
20974
20975 2017-08-09  Jim Wilson  <jim.wilson@linaro.org>
20976
20977         * config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline.
20978         (qdf24xx): Likewise.
20979         * config/aarch64/aarch64.md: Include falkor.md.
20980         * config/aarch64/falkor.md: New.
20981
20982 2017-08-09  Marek Polacek  <polacek@redhat.com>
20983
20984         PR c/81233
20985         * diagnostic-core.h (emit_diagnostic_valist): Add declaration.
20986         * diagnostic.c (emit_diagnostic): Add a comment.
20987         (emit_diagnostic_valist): New function.
20988
20989 2017-08-09  Marek Polacek  <polacek@redhat.com>
20990
20991         PR c/81417
20992         * input.c (make_location): New overload.
20993         * input.h (make_location): Declare.
20994
20995 2017-08-08  Alan Modra  <amodra@gmail.com>
20996             H.J. Lu  <hongjiu.lu@intel.com>
20997
20998         PR driver/81523
20999         * gcc.c (NO_PIE_SPEC): Delete.
21000         (PIE_SPEC): Define as !no-pie/pie.  Move static|shared|r
21001         exclusion..
21002         (LINK_PIE_SPEC): ..to here.
21003         (LINK_COMMAND_SPEC): Support -no-pie.
21004         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
21005         chain of crtbegin*.o selection, update for PIE_SPEC changes and
21006         format.
21007         (GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
21008         * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
21009         (ENDFILE_CRTEND_SPEC): Similarly.
21010
21011 2017-08-08  Uros Bizjak  <ubizjak@gmail.com>
21012
21013         PR target/81708
21014         * config/i386/i386.opt (mstack-protector-guard-reg=): New option
21015         (mstack-protector-guard-offset=): Ditto.
21016         * config/i386/i386.c (ix86_option_override): Handle
21017         -mstack-protector-guard-reg= and -mstack-protector-guard-offset=
21018         options.
21019         (ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and
21020         ix86_stack_protect_guard_offset variables.
21021         (TARGET_STACK_PROTECT_GUARD): Always define.
21022         * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg=
21023         and -mstack-protector-guard-offset= options.
21024
21025 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
21026
21027         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
21028         boundary case for the last candidate.
21029
21030 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
21031
21032         * doc/invoke.texi: Document -ftree-loop-distribution for O3.
21033         * opts.c (default_options_table): Add OPT_ftree_loop_distribution.
21034
21035 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
21036
21037         PR middle-end/19706
21038         * config/aarch64/aarch64.md (xorsign<mode>3): New optabs.
21039         * config/aarch64/aarch64-builtins.c
21040         (aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN.
21041         * config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP.
21042         * config/aarch64/aarch64-simd.md: Added xorsign<mode>3
21043
21044 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
21045             Andrew Pinski <pinskia@gmail.com>
21046
21047         PR middle-end/19706
21048         * internal-fn.def (XORSIGN): New.
21049         * optabs.def (xorsign_optab): New.
21050         * tree-ssa-math-opts.c (is_copysign_call_with_1): New.
21051         (convert_expand_mult_copysign): New.
21052         (pass_optimize_widening_mul::execute): Call
21053         convert_expand_mult_copysign.
21054
21055 2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
21056
21057         PR tree-optimization/81354
21058         * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
21059         Insert on edges rather than explicitly creating landing pads.
21060         (analyze_candidates_and_replace): Commit edge inserts.
21061
21062 2017-08-08  Richard Biener  <rguenther@suse.de>
21063
21064         PR middle-end/81719
21065         * tree-ssa-loop-niter.c: Include tree-dfa.h.
21066         (expand_simple_operations): Also look through ADDR_EXPRs with
21067         MEM_REF bases treating them as POINTER_PLUS_EXPR.
21068
21069 2017-08-08  Richard Biener  <rguenther@suse.de>
21070
21071         PR tree-optimization/81723
21072         * tree-vect-slp.c (struct bst_traits): New hash traits.
21073         (bst_fail): New global.
21074         (vect_build_slp_tree_2): New worker, split out from ...
21075         (vect_build_slp_tree): ... this now wrapping it with using
21076         bst_fail set to cache SLP tree build fails.  Properly handle
21077         max_tree_size.
21078         (vect_analyze_slp_instance): Allocate and free bst_fail.
21079
21080 2017-08-08  Martin Liska  <mliska@suse.cz>
21081
21082         PR tree-opt/81696
21083         * ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
21084         LABEL_DECLs that can be from a different function.
21085
21086 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
21087
21088         PR tree-optimization/81744
21089         * tree-predcom.c (prepare_finalizers_chain): Deep copy expr of
21090         loop's number of iterations.
21091
21092 2017-08-08  Martin Liska  <mliska@suse.cz>
21093
21094         * asan.c: Include header files.
21095         * attribs.c (build_decl_attribute_variant): New function moved
21096         from tree.[ch].
21097         (build_type_attribute_qual_variant): Likewise.
21098         (cmp_attrib_identifiers): Likewise.
21099         (simple_cst_list_equal): Likewise.
21100         (omp_declare_simd_clauses_equal): Likewise.
21101         (attribute_value_equal): Likewise.
21102         (comp_type_attributes): Likewise.
21103         (build_type_attribute_variant): Likewise.
21104         (lookup_ident_attribute): Likewise.
21105         (remove_attribute): Likewise.
21106         (merge_attributes): Likewise.
21107         (merge_type_attributes): Likewise.
21108         (merge_decl_attributes): Likewise.
21109         (merge_dllimport_decl_attributes): Likewise.
21110         (handle_dll_attribute): Likewise.
21111         (attribute_list_equal): Likewise.
21112         (attribute_list_contained): Likewise.
21113         * attribs.h (lookup_attribute): New function moved from tree.[ch].
21114         (lookup_attribute_by_prefix): Likewise.
21115         * bb-reorder.c: Include header files.
21116         * builtins.c: Likewise.
21117         * calls.c: Likewise.
21118         * cfgexpand.c: Likewise.
21119         * cgraph.c: Likewise.
21120         * cgraphunit.c: Likewise.
21121         * convert.c: Likewise.
21122         * dwarf2out.c: Likewise.
21123         * final.c: Likewise.
21124         * fold-const.c: Likewise.
21125         * function.c: Likewise.
21126         * gimple-expr.c: Likewise.
21127         * gimple-fold.c: Likewise.
21128         * gimple-pretty-print.c: Likewise.
21129         * gimple.c: Likewise.
21130         * gimplify.c: Likewise.
21131         * hsa-common.c: Likewise.
21132         * hsa-gen.c: Likewise.
21133         * internal-fn.c: Likewise.
21134         * ipa-chkp.c: Likewise.
21135         * ipa-cp.c: Likewise.
21136         * ipa-devirt.c: Likewise.
21137         * ipa-fnsummary.c: Likewise.
21138         * ipa-inline.c: Likewise.
21139         * ipa-visibility.c: Likewise.
21140         * ipa.c: Likewise.
21141         * lto-cgraph.c: Likewise.
21142         * omp-expand.c: Likewise.
21143         * omp-general.c: Likewise.
21144         * omp-low.c: Likewise.
21145         * omp-offload.c: Likewise.
21146         * omp-simd-clone.c: Likewise.
21147         * opts-global.c: Likewise.
21148         * passes.c: Likewise.
21149         * predict.c: Likewise.
21150         * sancov.c: Likewise.
21151         * sanopt.c: Likewise.
21152         * symtab.c: Likewise.
21153         * toplev.c: Likewise.
21154         * trans-mem.c: Likewise.
21155         * tree-chkp.c: Likewise.
21156         * tree-eh.c: Likewise.
21157         * tree-into-ssa.c: Likewise.
21158         * tree-object-size.c: Likewise.
21159         * tree-parloops.c: Likewise.
21160         * tree-profile.c: Likewise.
21161         * tree-ssa-ccp.c: Likewise.
21162         * tree-ssa-live.c: Likewise.
21163         * tree-ssa-loop.c: Likewise.
21164         * tree-ssa-sccvn.c: Likewise.
21165         * tree-ssa-structalias.c: Likewise.
21166         * tree-ssa.c: Likewise.
21167         * tree-streamer-in.c: Likewise.
21168         * tree-vectorizer.c: Likewise.
21169         * tree-vrp.c: Likewise.
21170         * tsan.c: Likewise.
21171         * ubsan.c: Likewise.
21172         * varasm.c: Likewise.
21173         * varpool.c: Likewise.
21174         * tree.c: Remove functions moved to attribs.[ch].
21175         * tree.h: Likewise.
21176         * config/aarch64/aarch64.c: Add attrs.h header file.
21177         * config/alpha/alpha.c: Likewise.
21178         * config/arc/arc.c: Likewise.
21179         * config/arm/arm.c: Likewise.
21180         * config/avr/avr.c: Likewise.
21181         * config/bfin/bfin.c: Likewise.
21182         * config/c6x/c6x.c: Likewise.
21183         * config/cr16/cr16.c: Likewise.
21184         * config/cris/cris.c: Likewise.
21185         * config/darwin.c: Likewise.
21186         * config/epiphany/epiphany.c: Likewise.
21187         * config/fr30/fr30.c: Likewise.
21188         * config/frv/frv.c: Likewise.
21189         * config/ft32/ft32.c: Likewise.
21190         * config/h8300/h8300.c: Likewise.
21191         * config/i386/winnt.c: Likewise.
21192         * config/ia64/ia64.c: Likewise.
21193         * config/iq2000/iq2000.c: Likewise.
21194         * config/lm32/lm32.c: Likewise.
21195         * config/m32c/m32c.c: Likewise.
21196         * config/m32r/m32r.c: Likewise.
21197         * config/m68k/m68k.c: Likewise.
21198         * config/mcore/mcore.c: Likewise.
21199         * config/microblaze/microblaze.c: Likewise.
21200         * config/mips/mips.c: Likewise.
21201         * config/mmix/mmix.c: Likewise.
21202         * config/mn10300/mn10300.c: Likewise.
21203         * config/moxie/moxie.c: Likewise.
21204         * config/msp430/msp430.c: Likewise.
21205         * config/nds32/nds32-isr.c: Likewise.
21206         * config/nds32/nds32.c: Likewise.
21207         * config/nios2/nios2.c: Likewise.
21208         * config/nvptx/nvptx.c: Likewise.
21209         * config/pa/pa.c: Likewise.
21210         * config/pdp11/pdp11.c: Likewise.
21211         * config/powerpcspe/powerpcspe.c: Likewise.
21212         * config/riscv/riscv.c: Likewise.
21213         * config/rl78/rl78.c: Likewise.
21214         * config/rx/rx.c: Likewise.
21215         * config/s390/s390.c: Likewise.
21216         * config/sh/sh.c: Likewise.
21217         * config/sol2.c: Likewise.
21218         * config/sparc/sparc.c: Likewise.
21219         * config/spu/spu.c: Likewise.
21220         * config/stormy16/stormy16.c: Likewise.
21221         * config/tilegx/tilegx.c: Likewise.
21222         * config/tilepro/tilepro.c: Likewise.
21223         * config/v850/v850.c: Likewise.
21224         * config/vax/vax.c: Likewise.
21225         * config/visium/visium.c: Likewise.
21226         * config/xtensa/xtensa.c: Likewise.
21227
21228 2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
21229
21230         PR target/81593
21231         * config/rs6000/vsx.md (vsx_concat_<mode>, VSX_D): Cleanup
21232         constraints since the -mupper-regs-* switches have been
21233         eliminated.
21234         (vsx_concat_<mode>_1): New combiner insns to recognize inserting
21235         into a vector from a double word element that was extracted from
21236         another vector, and eliminate extra XXPERMDI instructions.
21237         (vsx_concat_<mode>_2): Likewise.
21238         (vsx_concat_<mode>_3): Likewise.
21239         (vsx_set_<mode>, VSX_D): Rewrite vector set in terms of vector
21240         concat to allow optimizing inserts from previous extracts.
21241
21242 2017-08-07  Uros Bizjak  <ubizjak@gmail.com>
21243
21244         * config/i386/i386.c (ix86_stack_protect_guard): Generate
21245         memory reference to a SSP offset in TLS address space.
21246         (ix86_print_operand) <case '@'>: Remove.
21247         (ix86_print_operand_punct_valid_p): Remove '@' code.
21248         * config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and
21249         UNSPEC_SP_TLS_TEST.
21250         (stack_tls_protect_set_<mode>): Remove.
21251         (stack_protect_set): Do not call gen_stack_tls_protect_set_<mode>.
21252         (stack_tls_protect_test_<mode>): Remove.
21253         (stack_protect_test): Do not call gen_stack_tls_protect_test_<mode>.
21254
21255 2017-08-07  Olivier Hainque  <hainque@adacore.com>
21256
21257         PR target/81755
21258         * config/vxworksae.h (VXWORKS_HAVE_TLS): Define.
21259
21260 2017-08-07  Douglas Rupp  <rupp@adacore.com>
21261
21262         * Makefile.in (install-mkheaders): Fix typo, where the multi_dir
21263         variable was referenced as multidir in command.
21264
21265 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
21266
21267         PR c/69389
21268         * gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and
21269         BIT_FIELD_REF.
21270
21271 2017-08-07  Martin Liska  <mliska@suse.cz>
21272
21273         * config/m32c/m32c.c: Add include of stringpool.h and attribs.h.
21274         * config/rl78/rl78.c: Add include of attribs.h.
21275         * config/sh/sh.c: Likewise.
21276         * config/v850/v850.c: Likewise.
21277
21278 2017-08-07  Tom de Vries  <tom@codesourcery.com>
21279
21280         PR middle-end/78266
21281         * omp-expand.c (expand_oacc_for): Ensure diff_type is large enough.
21282
21283 2017-08-07  Martin Liska  <mliska@suse.cz>
21284
21285         * config/mips/mips.c: Include attribs.h.
21286
21287 2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
21288
21289         PR fortran/68829
21290         * doc/invoke.texi: Document change in behvaior for -Ofast for
21291         Fortran.
21292
21293 2017-08-07  Wilco Dijkstra  <wdijkstr@arm.com>
21294
21295         * config/aarch64/aarch64.c (aarch64_pushwb_single_reg):
21296         Use gen_frame_mem.
21297         (aarch64_pop_regs): Likewise.
21298         (aarch64_gen_load_pair): Likewise.
21299         (aarch64_save_callee_saves): Likewise.
21300         (aarch64_restore_callee_saves): Likewise.
21301
21302 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
21303
21304         * config/i386/i386.c: Revert the last change.
21305
21306 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
21307
21308         PR target/81736
21309         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
21310         to ...
21311         (ix86_finalize_stack_frame_flags): This.  Also clear
21312         frame_pointer_needed if -fno-omit-frame-pointer is used without
21313         stack access.
21314         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
21315         with ix86_finalize_stack_frame_flags.
21316         (ix86_expand_epilogue): Likewise.
21317         (ix86_expand_split_stack_prologue): Likewise.
21318
21319 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
21320
21321         PR target/81743
21322         * config/i386/i386.c (get_builtin_code_for_version): Set priority
21323         to P_AES for Westmere.
21324
21325 2017-08-07  Jonathan Yong  <10walls@gmail.com>
21326
21327         * config/i386/mingw.opt (fset-stack-executable): Removed.
21328         * config/i386/cygming.opt (fset-stack-executable): Moved
21329         from mingw.opt.
21330         * config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED.
21331
21332 2017-08-07  Segher Boessenkool  <segher@kernel.crashing.org>
21333
21334         * print-rtl.c (print_exp): Print NOT as "~" instead of as "!".
21335
21336 2017-08-07  Marek Polacek  <polacek@redhat.com>
21337
21338         PR middle-end/81737
21339         * fold-const.c (fold_indirect_ref_1): Check type_domain.
21340
21341 2017-08-07  Martin Liska  <mliska@suse.cz>
21342
21343         * attribs.h (canonicalize_attr_name): New function.
21344         (cmp_attribs): Move from c-format.c and adjusted.
21345         (is_attribute_p): Moved from tree.h.
21346         * tree-inline.c: Add new includes.
21347         * tree.c (cmp_attrib_identifiers): Use cmp_attribs.
21348         (private_is_attribute_p): Remove.
21349         (private_lookup_attribute): Likewise.
21350         (private_lookup_attribute_by_prefix): Simplify.
21351         (remove_attribute): Use is_attribute_p.
21352         * tree.h: Remove removed declarations.
21353
21354 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
21355
21356         PR middle-end/81698
21357         * stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument,
21358         instead of computing it in the function.  Formatting fix.
21359         (expand_case): Don't rely on default_edge being the first edge,
21360         clear it if removing it, pass default_edge to
21361         emit_case_dispatch_table.
21362         (expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting
21363         fix.
21364
21365 2017-08-06  Uros Bizjak  <ubizjak@gmail.com>
21366
21367         * config/alpha/alpha.c (alpha_reorg): If trap is the last active
21368         insn in the function, emit NOP after the insn.
21369
21370 2017-08-06  Tom de Vries  <tom@codesourcery.com>
21371
21372         * omp-expand.c (expand_oacc_for): Add missing edge probability for tile
21373         and element loops.
21374
21375 2017-08-06  Tom de Vries  <tom@codesourcery.com>
21376
21377         * omp-expand.c (expand_oacc_for): Add missing edge probability for chunk
21378         loop.
21379
21380 2017-08-04  Yury Gribov  <tetra2005@gmail.com>
21381
21382         PR tree-optimization/57371
21383         * match.pd: New pattern.
21384
21385 2017-08-04  Marek Polacek  <polacek@redhat.com>
21386
21387         PR middle-end/81695
21388         * fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1],
21389         perform the computation in offset_int.
21390
21391 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
21392
21393         PR tree-optimization/81136
21394         * tree-vectorizer.h: Include tree-hash-traits.h.
21395         (vec_base_alignments): New typedef.
21396         (vec_info): Add a base_alignments field.
21397         (vect_record_base_alignments): Declare.
21398         * tree-data-ref.h (data_reference): Add an is_conditional_in_stmt
21399         field.
21400         (DR_IS_CONDITIONAL_IN_STMT): New macro.
21401         (create_data_ref): Add an is_conditional_in_stmt argument.
21402         * tree-data-ref.c (create_data_ref): Likewise.  Use it to initialize
21403         the is_conditional_in_stmt field.
21404         (data_ref_loc): Add an is_conditional_in_stmt field.
21405         (get_references_in_stmt): Set the is_conditional_in_stmt field.
21406         (find_data_references_in_stmt): Update call to create_data_ref.
21407         (graphite_find_data_references_in_stmt): Likewise.
21408         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
21409         * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
21410         (vect_record_base_alignment): New function.
21411         (vect_record_base_alignments): Likewise.
21412         (vect_compute_data_ref_alignment): Adjust base_addr and aligned_to
21413         for nested statements even if we fail to compute a misalignment.
21414         Use pooled base alignments for unconditional references.
21415         (vect_find_same_alignment_drs): Compare base addresses instead
21416         of base objects.
21417         (vect_analyze_data_refs_alignment): Call vect_record_base_alignments.
21418         * tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise.
21419
21420 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
21421
21422         * tree-vectorizer.h (vec_info): Add a constructor and destructor.
21423         Add an explicit name for the enum.  Use auto_vec for slp_instances
21424         and grouped_stores.
21425         (_loop_vec_info): Add a constructor and destructor.  Use auto_vec
21426         for all vectors.
21427         (_bb_vec_info): Add a constructor and destructor.
21428         (vinfo_for_stmt): Return NULL for uids of -1 as well.
21429         (destroy_loop_vec_info): Delete.
21430         (vect_destroy_datarefs): Likewise.
21431         * tree-vectorizer.c (vect_destroy_datarefs): Delete.
21432         (vec_info::vec_info): New function.
21433         (vec_info::~vec_info): Likewise.
21434         (vectorize_loops): Use delete instead of destroy_loop_vec_info.
21435         * tree-parloops.c (gather_scalar_reductions): Use delete instead of
21436         destroy_loop_vec_info.
21437         * tree-vect-loop.c (new_loop_vec_info): Replace with...
21438         (_loop_vec_info::_loop_vec_info): ...this.
21439         (destroy_loop_vec_info): Replace with...
21440         (_loop_vec_info::~_loop_vec_info): ...this.  Unconditionally delete
21441         the stmt_vec_infos.  Leave handling of vec_info information to its
21442         destructor.  Remove explicit vector releases.
21443         (vect_analyze_loop_form): Use new instead of new_loop_vec_info.
21444         (vect_analyze_loop): Use delete instead of destroy_loop_vec_info.
21445         * tree-vect-slp.c (new_bb_vec_info): Replace with...
21446         (_bb_vec_info::_bb_vec_info): ...this.  Don't reserve space in
21447         BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES.
21448         (destroy_bb_vec_info): Replace with...
21449         (_bb_vec_info::~_bb_vec_info): ...this.  Leave handling of vec_info
21450         information to its destructor.
21451         (vect_slp_analyze_bb_1): Use new and delete instead of
21452         new_bb_vec_info and destroy_bb_vec_info.
21453         (vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a
21454         single delete.
21455
21456 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
21457
21458         * tree-data-ref.h (subscript): Add access_fn field.
21459         (data_dependence_relation): Add could_be_independent_p.
21460         (SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros.
21461         (same_access_functions): Move to tree-data-ref.c.
21462         * tree-data-ref.c (ref_contains_union_access_p): New function.
21463         (access_fn_component_p): Likewise.
21464         (access_fn_components_comparable_p): Likewise.
21465         (dr_analyze_indices): Add a reference to access_fn_component_p.
21466         (dump_data_dependence_relation): Use SUB_ACCESS_FN instead of
21467         DR_ACCESS_FN.
21468         (constant_access_functions): Likewise.
21469         (add_other_self_distances): Likewise.
21470         (same_access_functions): Likewise.  (Moved from tree-data-ref.h.)
21471         (initialize_data_dependence_relation): Use XCNEW and remove
21472         explicit zeroing of DDR_REVERSED_P.  Look for a subsequence
21473         of access functions that have the same type.  Allow the
21474         subsequence to end with different bases in some circumstances.
21475         Record the chosen access functions in SUB_ACCESS_FN.
21476         (build_classic_dist_vector_1): Replace ddr_a and ddr_b with
21477         a_index and b_index.  Use SUB_ACCESS_FN instead of DR_ACCESS_FN.
21478         (subscript_dependence_tester_1): Likewise dra and drb.
21479         (build_classic_dist_vector): Update calls accordingly.
21480         (subscript_dependence_tester): Likewise.
21481         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check
21482         DDR_COULD_BE_INDEPENDENT_P.
21483         * tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test
21484         comp_alias_ddrs instead of may_alias_ddrs.
21485         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
21486         New function.
21487         (vect_analyze_data_ref_dependence): Use it if
21488         DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded
21489         distance vectors if that fails.
21490         (dependence_distance_ge_vf): New function.
21491         (vect_prune_runtime_alias_test_list): Use it.  Don't clear
21492         LOOP_VINFO_MAY_ALIAS_DDRS.
21493
21494 2017-08-04  Richard Biener  <rguenther@suse.de>
21495
21496         PR middle-end/81705
21497         * fold-const.c (fold_binary_loc): Properly restrict
21498         minus_var0 && minus_var1 case when associating undefined overflow
21499         entities.
21500
21501 2017-08-04  Tom de Vries  <tom@codesourcery.com>
21502
21503         * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability.
21504
21505 2017-08-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
21506
21507         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21508         Don't start diagnostic messages with a capital letter.
21509         * config/rs6000/rs6000.c (rs6000_option_override_internal):
21510         Likewise.
21511         (rs6000_invalid_builtin): Likewise.
21512         (rs6000_trampoline_init): Likewise.
21513
21514 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
21515
21516         PR target/81621
21517         * bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
21518         after setting changeable df flags.
21519
21520 2017-08-03  Richard Biener  <rguenther@suse.de>
21521
21522         * tree-ssa-reassoc.c (should_break_up_subtract): Also break
21523         up if the use is in USE - X.
21524
21525 2017-08-03  Alexander Monakov  <amonakov@ispras.ru>
21526
21527         * toplev.c (dumpfile.h): New include.
21528         (internal_error_reentered): New static function.  Use it...
21529         (internal_error_function): ...here to handle reentered internal_error.
21530
21531 2017-08-03  Richard Biener  <rguenther@suse.de>
21532
21533         PR middle-end/81148
21534         * fold-const.c (split_tree): Add minus_var and minus_con
21535         arguments, remove unused loc arg.  Never generate NEGATE_EXPRs
21536         here but always use minus_*.
21537         (associate_trees): Assert we never associate with MINUS_EXPR
21538         and NULL first operand.  Do not recurse for PLUS_EXPR operands
21539         when associating as MINUS_EXPR either.
21540         (fold_binary_loc): Track minus_var and minus_con.
21541
21542 2017-08-03  Tom de Vries  <tom@codesourcery.com>
21543
21544         PR lto/81430
21545         * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If
21546         ACCEL_COMPILER, apply finish_options on
21547         DECL_FUNCTION_SPECIFIC_OPTIMIZATION.
21548
21549 2017-08-03  Tom de Vries  <tom@codesourcery.com>
21550
21551         PR target/81662
21552         * config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if
21553         function_entry_patch_area_size > 0.
21554
21555 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
21556
21557         PR driver/81650
21558         * calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??)
21559         instead of 10??LU, perform unit multiplication in wide_int,
21560         don't change alloc_object_size_limit if the limit is larger
21561         than SSIZE_MAX.
21562
21563         PR tree-optimization/81655
21564         PR tree-optimization/81588
21565         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also
21566         the case when ranges[i].low and high are 1 for unsigned type with
21567         precision 1.
21568
21569         PR middle-end/81052
21570         * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
21571         (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
21572
21573 2017-08-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
21574
21575         * tree-vrp.h: Add include guard.
21576
21577 2017-08-02  Uros Bizjak  <ubizjak@gmail.com>
21578
21579         PR target/81644
21580         * config/i386/i386.md (unspecv): Add UNSPECV_UD2.
21581         (ud2): New insn pattern.
21582         * config/i386/i386.c (ix86_expand_epilogue):
21583         For naked functions, generate ud2 instead of trap insn.
21584
21585 2017-08-02  Marek Polacek  <polacek@redhat.com>
21586
21587         PR other/81667
21588         * alloc-pool.h (base_pool_allocator): Initialize m_elt_size.
21589
21590 2017-08-02  Tom de Vries  <tom@codesourcery.com>
21591             Cesar Philippidis  <cesar@codesourcery.com>
21592
21593         * config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update):
21594         Add missing edge probabilities.
21595
21596 2017-08-02  Tamar Christina  <tamar.christina@arm.com>
21597
21598         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
21599         Correct endianness.
21600
21601 2017-08-02  Jakub Jelinek  <jakub@redhat.com>
21602
21603         PR middle-end/79499
21604         * function.c (thread_prologue_and_epilogue_insns): Determine blocks
21605         for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
21606         of first NONDEBUG_INSN_P in each of the split_prologue_seq and
21607         prologue_seq sequences - if any.
21608
21609 2017-08-02  Richard Biener  <rguenther@suse.de>
21610
21611         * tree-vect-stmts.c (vectorizable_store): Perform vector extracts
21612         via vectors if supported, integer extracts via punning if supported
21613         or otherwise vector extracts.
21614
21615 2017-08-02  Richard Biener  <rguenther@suse.de>
21616
21617         * tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline
21618         into ...
21619         (bitmap_insert_into_set): ... this.
21620
21621 2017-08-02  Richard Biener  <rguenther@suse.de>
21622
21623         PR tree-optimization/81633
21624         Revert
21625         2015-08-17  Alan Hayward  <alan.hayward@arm.com>
21626
21627         PR tree-optimization/71752
21628         * tree-vect-slp.c (vect_get_slp_defs): Handle null operands.
21629
21630 2017-08-01  Daniel Santos  <daniel.santos@pobox.com>
21631
21632         * config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field.
21633         (machine_function::call_ms2sysv_pad_out): Remove field.
21634         * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify.
21635         (ix86_compute_frame_layout): Likewise.
21636
21637 2017-08-01  H.J. Lu  <hongjiu.lu@intel.com>
21638
21639         PR target/81654
21640         * config/i386/i386.c (ix86_set_func_type): Disallow naked
21641         attribute with interrupt attribute.
21642
21643 2017-08-01  Andrew Pinski  <apinski@cavium.com>
21644
21645         * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check
21646         BIT_INSERT_EXPR's operand 1
21647         to see if the types precision matches.
21648
21649 2017-08-01  Martin Liska  <mliska@suse.cz>
21650
21651         PR middle-end/70140
21652         * builtins.c (expand_builtin_memcpy_args): Remove.
21653         (expand_builtin_memcpy): Call newly added function
21654         expand_builtin_memory_copy_args.
21655         (expand_builtin_memcpy_with_bounds): Likewise.
21656         (expand_builtin_mempcpy): Remove last argument.
21657         (expand_builtin_mempcpy_with_bounds): Likewise.
21658         (expand_builtin_memory_copy_args): New function created from
21659         expand_builtin_mempcpy_args with small modifications.
21660         (expand_builtin_mempcpy_args): Remove.
21661         (expand_builtin_stpcpy): Remove unused argument.
21662         (expand_builtin): Likewise.
21663         (expand_builtin_with_bounds): Likewise.
21664
21665 2017-08-01  Martin Liska  <mliska@suse.cz>
21666
21667         Revert r250771
21668         Make mempcpy more optimal (PR middle-end/70140).
21669
21670 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
21671
21672         PR target/81622
21673         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
21674         __builtin_vec_cmpne verify both arguments are compatible vectors
21675         before looking at TYPE_MODE on the element type.  For __builtin_vec_ld
21676         verify arg1_type is a pointer or array type.  For __builtin_vec_st,
21677         move computation of aligned to after checking the argument types.
21678         Formatting fixes.
21679
21680         PR target/80846
21681         * config/rs6000/vsx.md (vextract_fp_from_shorth,
21682         vextract_fp_from_shortl): Add element mode after mode in gen_vec_init*
21683         calls.
21684
21685 2017-08-01  Jerome Lambourg  <lambourg@adacore.com>
21686             Doug Rupp  <rupp@adacore.com>
21687             Olivier Hainque  <hainque@adacore.com>
21688
21689         * config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as
21690         well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to
21691         arm8 (arch v4).
21692         * config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper
21693         for TARGET_OS_CPP_BUILTIN.
21694         (TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(),
21695         refine CPU definitions for arm_arch5 and add those for arm_arch6 and
21696         arm_arch7.
21697         (MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC,
21698         passing required abi options to the assembler for EABI configurations.
21699         (EXTRA_CC1_SPEC): New macro, to help prevent the implicit production
21700         of .text.hot and .text.unlikely sections for kernel modules when
21701         using ARM style exceptions.
21702         (CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain
21703         options. Add EXTRA_CC1_SPEC.
21704         (VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab
21705         toolchain options.
21706         (DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7
21707         transition.
21708         (ARM_TARGET2_DWARF_FORMAT): Define.
21709         * config/arm/t-vxworks: Adjust multilib control to removal of the
21710         Diab command line options.
21711
21712 2017-08-01  Martin Liska  <mliska@suse.cz>
21713
21714         PR gcov-profile/81561
21715         * gcov.c (unblock): Make unblocking safe as we need to preserve
21716         index correspondence of blocks and block_lists.
21717
21718 2017-08-01  Richard Biener  <rguenther@suse.de>
21719
21720         PR tree-optimization/81181
21721         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
21722         (compute_antic): ... end of iteration here.
21723
21724 2017-08-01  James Greenhalgh  <james.greenhalgh@arm.com>
21725
21726         * common.opt (ftree-vectorize): No longer set flag_tree_vectorize.
21727         (ftree-loop-vectorize): Set as EnabledBy ftree-vectorize.
21728         (ftree-slp-vectorize): Likewise.
21729         * omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it
21730         can no longer be set independent of flag_tree_loop_vectorize.
21731         * omp-general.c (emp_max_vf): Likewise.
21732         * opts.c (enable_fdo_optimizations): Remove references to
21733         flag_tree_vectorize, these are now implicit.
21734         (common_handle_option): Remove handling for OPT_ftree_vectorize,
21735         and leave it for the options machinery.
21736
21737 2017-08-01  Martin Liska  <mliska@suse.cz>
21738
21739         PR middle-end/70140
21740         * builtins.c (expand_builtin_memcpy_args): Remove.
21741         (expand_builtin_memcpy): Call newly added function
21742         expand_builtin_memory_copy_args.
21743         (expand_builtin_memcpy_with_bounds): Likewise.
21744         (expand_builtin_mempcpy): Remove last argument.
21745         (expand_builtin_mempcpy_with_bounds): Likewise.
21746         (expand_builtin_memory_copy_args): New function created from
21747         expand_builtin_mempcpy_args with small modifications.
21748         (expand_builtin_mempcpy_args): Remove.
21749         (expand_builtin_stpcpy): Remove unused argument.
21750         (expand_builtin): Likewise.
21751         (expand_builtin_with_bounds): Likewise.
21752
21753 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
21754
21755         PR target/81641
21756         * config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel
21757         print "ds:" only for immediates in generic address space.
21758
21759 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
21760
21761         PR target/81639
21762         * config/i386/i386.c (ix86_funciton_naked): New prototype.
21763         (ix86_function_ok_for_sibcall): Return false for naked functions.
21764
21765 2017-08-01  Richard Biener  <rguenther@suse.de>
21766
21767         * tree-ssa-pre.c (print_pre_expr): Handle NULL expr.
21768         (compute_antic): Seed worklist with exit block predecessors.
21769         * cfganal.c (dfs_find_deadend): For a cycle return the source
21770         of the edge closing it.
21771
21772 2017-08-01  Tamar Christina  <tamar.christina@arm.com>
21773
21774         * config/aarch64/aarch64.c
21775         (aarch64_can_const_movi_rtx_p): Move 0 check.
21776
21777 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21778
21779         * tree.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Delete.
21780         * fold-const.c (fold_comparison, fold_binary_loc): Delete use of
21781         above macro.
21782         * match.pd: Ditto in address comparison pattern.
21783
21784 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21785
21786         PR tree-optimization/81627
21787         * tree-predcom.c (prepare_finalizers): Always rewrite into loop
21788         closed ssa form for store-store chain.
21789
21790 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21791
21792         PR tree-optimization/81620
21793         * tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after
21794         for store-store chain.
21795
21796 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
21797
21798         PR tree-optimization/81588
21799         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If
21800         ranges[i].in_p, invert comparison code ccode.  For >/>=,
21801         swap rhs1 and rhs2 and comparison code unconditionally,
21802         for </<= don't do that.  Don't swap rhs1/rhs2 again if
21803         ranges[i].in_p, instead invert comparison code ccode if
21804         opcode or oe->rank is BIT_IOR_EXPR.
21805
21806         PR target/80846
21807         * optabs.def (vec_extract_optab, vec_init_optab): Change from
21808         a direct optab to conversion optab.
21809         * optabs.c (expand_vector_broadcast): Use convert_optab_handler
21810         with GET_MODE_INNER as last argument instead of optab_handler.
21811         * expmed.c (extract_bit_field_1): Likewise.  Use vector from
21812         vector extraction if possible and optab is available.
21813         * expr.c (store_constructor): Use convert_optab_handler instead
21814         of optab_handler.  Use vector initialization from smaller
21815         vectors if possible and optab is available.
21816         * tree-vect-stmts.c (vectorizable_load): Likewise.
21817         * doc/md.texi (vec_extract, vec_init): Document that the optabs
21818         now have two modes.
21819         * config/i386/i386.c (ix86_expand_vector_init): Handle expansion
21820         of vec_init from half-sized vectors with the same element mode.
21821         * config/i386/sse.md (ssehalfvecmode): Add V4TI case.
21822         (ssehalfvecmodelower, ssescalarmodelower): New mode attributes.
21823         (reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df,
21824         reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf,
21825         reduc_<code>_scal_<mode>, reduc_umin_scal_v8hi): Add element mode
21826         after mode in gen_vec_extract* calls.
21827         (vec_extract<mode>): Renamed to ...
21828         (vec_extract<mode><ssescalarmodelower>): ... this.
21829         (vec_extract<mode><ssehalfvecmodelower>): New expander.
21830         (rotl<mode>3, rotr<mode>3, <shift_insn><mode>3, ashrv2di3): Add
21831         element mode after mode in gen_vec_init* calls.
21832         (VEC_INIT_HALF_MODE): New mode iterator.
21833         (vec_init<mode>): Renamed to ...
21834         (vec_init<mode><ssescalarmodelower>): ... this.
21835         (vec_init<mode><ssehalfvecmodelower>): New expander.
21836         * config/i386/mmx.md (vec_extractv2sf): Renamed to ...
21837         (vec_extractv2sfsf): ... this.
21838         (vec_initv2sf): Renamed to ...
21839         (vec_initv2sfsf): ... this.
21840         (vec_extractv2si): Renamed to ...
21841         (vec_extractv2sisi): ... this.
21842         (vec_initv2si): Renamed to ...
21843         (vec_initv2sisi): ... this.
21844         (vec_extractv4hi): Renamed to ...
21845         (vec_extractv4hihi): ... this.
21846         (vec_initv4hi): Renamed to ...
21847         (vec_initv4hihi): ... this.
21848         (vec_extractv8qi): Renamed to ...
21849         (vec_extractv8qiqi): ... this.
21850         (vec_initv8qi): Renamed to ...
21851         (vec_initv8qiqi): ... this.
21852         * config/rs6000/vector.md (VEC_base_l): New mode attribute.
21853         (vec_init<mode>): Renamed to ...
21854         (vec_init<mode><VEC_base_l>): ... this.
21855         (vec_extract<mode>): Renamed to ...
21856         (vec_extract<mode><VEC_base_l>): ... this.
21857         * config/rs6000/paired.md (vec_initv2sf): Renamed to ...
21858         (vec_initv2sfsf): ... this.
21859         * config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3,
21860         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
21861         vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve<mode>2): Add
21862         element mode after mode in gen_vec_init* calls.
21863         * config/aarch64/aarch64-simd.md (vec_init<mode>): Renamed to ...
21864         (vec_init<mode><Vel>): ... this.
21865         (vec_extract<mode>): Renamed to ...
21866         (vec_extract<mode><Vel>): ... this.
21867         * config/aarch64/iterators.md (Vel): New mode attribute.
21868         * config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr):
21869         Add element mode after mode in gen_vec_extract* calls.
21870         * config/s390/vector.md (non_vec_l): New mode attribute.
21871         (vec_extract<mode>): Renamed to ...
21872         (vec_extract<mode><non_vec_l>): ... this.
21873         (vec_init<mode>): Renamed to ...
21874         (vec_init<mode><non_vec_l>): ... this.
21875         * config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf,
21876         s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after
21877         vec_extract mode.
21878         * config/arm/iterators.md (V_elem_l): New mode attribute.
21879         * config/arm/neon.md (vec_extract<mode>): Renamed to ...
21880         (vec_extract<mode><V_elem_l>): ... this.
21881         (vec_extractv2di): Renamed to ...
21882         (vec_extractv2didi): ... this.
21883         (vec_init<mode>): Renamed to ...
21884         (vec_init<mode><V_elem_l>): ... this.
21885         (reduc_plus_scal_<mode>, reduc_plus_scal_v2di, reduc_smin_scal_<mode>,
21886         reduc_smax_scal_<mode>, reduc_umin_scal_<mode>,
21887         reduc_umax_scal_<mode>, neon_vget_lane<mode>, neon_vget_laneu<mode>):
21888         Add element mode after gen_vec_extract* calls.
21889         * config/mips/mips-msa.md (vec_init<mode>): Renamed to ...
21890         (vec_init<mode><unitmode>): ... this.
21891         (vec_extract<mode>): Renamed to ...
21892         (vec_extract<mode><unitmode>): ... this.
21893         * config/mips/loongson.md (vec_init<mode>): Renamed to ...
21894         (vec_init<mode><unitmode>): ... this.
21895         * config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ...
21896         (vec_initv2sfsf): ... this.
21897         (vec_extractv2sf): Renamed to ...
21898         (vec_extractv2sfsf): ... this.
21899         (reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf):
21900         Add element mode after gen_vec_extract* calls.
21901         * config/mips/mips.md (unitmode): New mode iterator.
21902         * config/spu/spu.c (spu_expand_prologue, spu_allocate_stack,
21903         spu_builtin_extract): Add element mode after gen_vec_extract* calls.
21904         * config/spu/spu.md (inner_l): New mode attribute.
21905         (vec_init<mode>): Renamed to ...
21906         (vec_init<mode><inner_l>): ... this.
21907         (vec_extract<mode>): Renamed to ...
21908         (vec_extract<mode><inner_l>): ... this.
21909         * config/sparc/sparc.md (veltmode): New mode iterator.
21910         (vec_init<VMALL:mode>): Renamed to ...
21911         (vec_init<VMALL:mode><VMALL:veltmode>): ... this.
21912         * config/ia64/vect.md (vec_initv2si): Renamed to ...
21913         (vec_initv2sisi): ... this.
21914         (vec_initv2sf): Renamed to ...
21915         (vec_initv2sfsf): ... this.
21916         (vec_extractv2sf): Renamed to ...
21917         (vec_extractv2sfsf): ... this.
21918         * config/powerpcspe/vector.md (VEC_base_l): New mode attribute.
21919         (vec_init<mode>): Renamed to ...
21920         (vec_init<mode><VEC_base_l>): ... this.
21921         (vec_extract<mode>): Renamed to ...
21922         (vec_extract<mode><VEC_base_l>): ... this.
21923         * config/powerpcspe/paired.md (vec_initv2sf): Renamed to ...
21924         (vec_initv2sfsf): ... this.
21925         * config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3,
21926         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
21927         vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in
21928         gen_vec_init* calls.
21929
21930 2017-08-01  Richard Biener  <rguenther@suse.de>
21931
21932         PR tree-optimization/81297
21933         * tree-vrp.c (get_single_symbol): Remove assert, instead drop
21934         TREE_OVERFLOW from INTEGER_CSTs.
21935
21936 2017-07-31  Segher Boessenkool  <segher@kernel.crashing.org>
21937
21938         * config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma.
21939
21940 2017-07-31  Carl Love  <cel@us.ibm.com>
21941
21942         * config/rs6000/rs6000-c: Add support for built-in functions
21943         vector signed char vec_xl_be (signed long long, signed char *);
21944         vector unsigned char vec_xl_be (signed long long, unsigned char *);
21945         vector signed int vec_xl_be (signed long long, signed int *);
21946         vector unsigned int vec_xl_be (signed long long, unsigned int *);
21947         vector signed long long vec_xl_be (signed long long, signed long long *);
21948         vector unsigned long long vec_xl_be (signed long long, unsigned long long *);
21949         vector signed short vec_xl_be (signed long long, signed short *);
21950         vector unsigned short vec_xl_be (signed long long, unsigned short *);
21951         vector double vec_xl_be (signed long long, double *);
21952         vector float vec_xl_be (signed long long, float *);
21953         * config/rs6000/altivec.h (vec_xl_be): Add #define.
21954         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI, XL_BE_V8HI, XL_BE_V4SI)
21955         XL_BE_V2DI, XL_BE_V4SF, XL_BE_V2DF, XL_BE): Add definitions
21956         for the builtins.
21957         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Add function.
21958         (altivec_expand_builtin): Add switch statement to call
21959         altivec_expand_xl_be for each builtin.
21960         (altivec_init_builtins): Add def_builtin for _builtin_vsx_le_be_v8hi,
21961         __builtin_vsx_le_be_v4si, __builtin_vsx_le_be_v2di,
21962         __builtin_vsx_le_be_v4sf, __builtin_vsx_le_be_v2df,
21963         __builtin_vsx_le_be_v16qi.
21964         * doc/extend.texi: Update the built-in documentation file for the
21965         new built-in functions.
21966
21967 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
21968
21969         PR target/25967
21970         * config/i386/i386.c (ix86_allocate_stack_slots_for_args):
21971         New function.
21972         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
21973
21974 2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
21975
21976         * config.gcc: Add z14.
21977         * config/s390/driver-native.c (s390_host_detect_local_cpu): Add
21978         CPU model numbers for z13s and z14.
21979         * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace
21980         arch12 with z14.
21981         * config/s390/s390-opts.h (enum processor_type): Rename
21982         PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
21983         * config/s390/s390.c (processor_table): Add field for CPU name to
21984         be passed to Binutils.
21985         (s390_asm_output_machine_for_arch): Use the new field in
21986         processor_table for Binutils.
21987         (s390_expand_builtin): Replace arch12 with z14.
21988         (s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
21989         (s390_get_sched_attrmask): Likewise.
21990         (s390_get_unit_mask): Likewise.
21991         * config/s390/s390.opt: Add z14 to processor_type enum.
21992
21993 2017-07-31  Martin Jambor  <mjambor@suse.cz>
21994
21995         PR hsa/81477
21996         * ipa-fnsummary.c (ipa_fn_summary_generate): Set versionable
21997         regardless of optimization level.
21998
21999 2017-07-31  Jan Hubicka <hubicka@ucw.cz>
22000             Martin Liska  <mliska@suse.cz>
22001
22002         * predict.def: Remove old comment and adjust probability.
22003         * gimplify.c (should_warn_for_implicit_fallthrough): Ignore
22004         PREDICT statements.
22005
22006 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
22007
22008         PR target/25967
22009         * config/i386/i386.c (ix86_function_naked): New function.
22010         (ix86_can_use_return_insn_p): Return false for naked functions.
22011         (ix86_expand_prologue): Skip prologue for naked functions.
22012         (ix86_expand_epilogue): Skip epilogue for naked functions
22013         and emit trap instruction.
22014         (ix86_warn_func_return): New function.
22015         (ix86_attribute_table): Add "naked" attribute specification.
22016         (TARGET_WARN_FUNC_RETURN): Define.
22017         * doc/extend.texi (x86 Function Attributes) <naked>: Document it.
22018
22019 2017-07-31  Martin Liska  <mliska@suse.cz>
22020
22021         * gimple-pretty-print.c (dump_gimple_label): Never dump BB info.
22022         (dump_gimple_bb_header): Always dump BB info.
22023         (pp_cfg_jump): Do not append info about BB when dumping a jump.
22024
22025 2017-07-31  Martin Liska  <mliska@suse.cz>
22026
22027         PR sanitize/81530
22028         * convert.c (convert_to_integer_1): Guard condition with flag_sanitize_p
22029         also with current_function_decl non-null equality.
22030
22031 2017-07-31  Jakub Jelinek  <jakub@redhat.com>
22032
22033         PR sanitizer/81604
22034         * ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't
22035         change type to the element type, instead add eltype variable and
22036         use it where we are interested in the element type.
22037
22038         PR tree-optimization/81603
22039         * ipa-polymorphic-call.c
22040         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Perform
22041         offset arithmetic in offset_int, bail out if the resulting bit offset
22042         doesn't fit into shwi.
22043
22044 2017-07-31  Martin Liska  <mliska@suse.cz>
22045
22046         * gimplify.c (mostly_copy_tree_r): Remove Java specific hunk.
22047         (gimplify_save_expr): Fix comment.
22048
22049 2017-07-30  H.J. Lu  <hongjiu.lu@intel.com>
22050
22051         PR target/79793
22052         * config/i386/i386.c (ix86_function_arg): Update arguments for
22053         exception handler.
22054         (ix86_compute_frame_layout): Set the initial stack offset to
22055         INCOMING_FRAME_SP_OFFSET.  Update red-zone offset with
22056         INCOMING_FRAME_SP_OFFSET.
22057         (ix86_expand_epilogue): Don't pop the 'ERROR_CODE' off the
22058         stack before exception handler returns.
22059         * config/i386/i386.h (INCOMING_FRAME_SP_OFFSET): Add the
22060         the 'ERROR_CODE' for exception handler.
22061
22062 2017-07-30  Uros Bizjak  <ubizjak@gmail.com>
22063
22064         * config/i386/i386.h (ASM_PRINTF_EXTENSIONS): New macro.
22065         (ASM_OUTPUT_REG_PUSH): Rewrite with new operand modifiers.
22066         (ASM_OUTPUT_REG_POP): Ditto.
22067         * config/i386/i386.c (ix86_asm_output_function_label): Use fputs
22068         instead of asm_fprintf to output pure string.
22069
22070 2017-07-29  Jakub Jelinek  <jakub@redhat.com>
22071
22072         * debug.h (struct gcc_debug_hooks): Add IMPLICIT argument
22073         to imported_module_or_decl hook.
22074         (debug_nothing_tree_tree_tree_bool): Remove.
22075         (debug_nothing_tree_tree_tree_bool_bool): New declaration.
22076         * debug.c (do_nothing_debug_hooks): Use
22077         debug_nothing_tree_tree_tree_bool_bool instead of
22078         debug_nothing_tree_tree_tree_bool.
22079         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
22080         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
22081         * sdbout.c (sdb_debug_hooks): Likewise.
22082         * dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise.
22083         (gen_namespace_die): Add DW_AT_export_symbols attribute if
22084         langhook wants it.
22085         (dwarf2out_imported_module_or_decl): Add IMPLICIT argument,
22086         if true, -gdwarf-5 and decl will have DW_AT_export_symbols
22087         attribute, don't add anything.
22088
22089 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22090
22091         * fold-const.c (fold_build1_stat_loc): Remove _stat from name.
22092         (fold_build2_stat_loc): Likewise.
22093         (fold_build3_stat_loc): Likewise.
22094         * fold-const.h (fold_build1, fold_build2, fold_build3): Adjust.
22095         (fold_build1_loc): Remove macro.
22096         (fold_build2_loc): Likewise.
22097         (fold_build3_loc): Likewise.
22098
22099 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22100
22101         * gimple.c (gimple_build_debug_bind_stat): Remove _stat from name.
22102         (gimple_build_debug_bind_source_stat): Likewise.
22103         * gimple.h (gimple_build_debug_bind): Remove macro.
22104         (gimple_build_debug_bind_source): Likewise.
22105
22106 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22107
22108         * bitmap.c (bitmap_alloc): Adjust.
22109         (bitmap_gc_alloc): Likewise.
22110         * bitmap.h (bitmap_initialize_stat): Remove _stat from name.
22111
22112 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22113
22114         * bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc.
22115         (bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc.
22116         * bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype.
22117         (bitmap_gc_alloc_stat): Likewise.
22118         (BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust.
22119
22120 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22121
22122         * rtl.c (shallow_copy_rtx_stat): Remove _stat from name.
22123         * rtl.h (shallow_copy_rtx): Remove macro.
22124
22125 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22126
22127         * emit-rtl.c (gen_raw_REG): Adjust.
22128         * gengenrtl.c (gendef): Likewise.
22129         * rtl.c (rtx_alloc_stat): Remove _stat from name.
22130         * rtl.h (rtx_alloc): Remove macro.
22131
22132 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22133
22134         * tree.c (build_tree_list_vec_stat): Remove _stat from name.
22135         (build_tree_list_stat): Likewise.
22136         * tree.h (build_tree_list): Remove macro.
22137         (build_tree_list_vec): Likewise.
22138
22139 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22140
22141         * tree.c (make_vector_stat): Remove _stat from name.
22142         (build_vector_stat): Likewise.
22143         * tree.h (make_vector_stat): Remove macro.
22144         (build_vector_stat): Likewise.
22145
22146 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22147
22148         * tree.h (build_var_debug_value): Remove prototype.
22149
22150 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22151
22152         * tree.c (tree_cons_stat): Remove _stat from name.
22153         * tree.h (tree_cons): Remove macro.
22154
22155 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22156
22157         * tree.c (build_vl_exp_stat): Remove _stat from name.
22158         * tree.h (build_vl_exp): Remove macro.
22159
22160 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22161
22162         * tree.c (build_decl_stat): Remove _stat from name.
22163         * tree.h (build_decl): Remove macro.
22164
22165 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22166
22167         * gimple.c (gimple_build_with_ops_stat): Adjust.
22168         (gimple_alloc_stat): Remove _stat from name.
22169         * gimple.h (gimple_alloc): Remove macro.
22170
22171 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22172
22173         * tree.c (make_tree_vec_stat): Remove _stat from name.
22174         (grow_tree_vec_stat): Likewise.
22175         * tree.h (make_tree_vec_stat): Adjust prototype.
22176         (grow_tree_vec_stat): Likewise.
22177         (make_tree_vec): Remove macro.
22178         (grow_tree_vec): Likewise.
22179
22180 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22181
22182         * fold-const.c (fold_build1_stat_loc): Adjust.
22183         (fold_build2_stat_loc): Likewise.
22184         (fold_build3_stat_loc): Likewise.
22185         * tree.c (build0_stat): Remove _stat from name.
22186         (build1_stat): Likewise.
22187         (build2_stat): Likewise.
22188         (build3_stat): Likewise.
22189         (build4_stat): Likewise.
22190         (build5_stat): Likewise.
22191         * tree.h (build1_loc): Remove macro, and rename _stat function
22192         to this.
22193         (build2_loc): Likewise.
22194         (build3_loc): Likewise.
22195         (build4_loc): Likewise.
22196         (build5_loc): Likewise.
22197
22198 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22199
22200         * tree.c (make_int_cst_stat): Remove _stat from name.
22201         * tree.h (make_int_cst_stat): Adjust prototype.
22202         (make_int_cst): Remove macro.
22203
22204 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22205
22206         * tree.c (make_tre_binfo_stat): Remove _stat from name.
22207         * tree.h (make_tree_binfo_stat): Adjust prototype.
22208         (make_tree_binfo): Remove.
22209
22210 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22211
22212         * tree.c (copy_node_stat): Rename to copy_node.
22213         (build_distinct_type_copy): Adjust.
22214         * tree.h (copy_node_stat): Adjust prototype.
22215         (copy_node): Remove macro.
22216
22217 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22218
22219         * tree.c (make_node_stat): rename to make_node.
22220         (build_tree_list_stat): Adjust.
22221         (build0_stat): Likewise.
22222         (build2_stat): Likewise.
22223         (build3_stat): Likewise.
22224         (build4_stat): Likewise.
22225         (build5_stat): Likewise.
22226         (build_decl_stat): Likewise.
22227         * tree.h (make_node_stat): Adjust prototype.
22228         (make_node): remove macro.
22229
22230 2017-07-28  Peter Bergner  <bergner@vnet.ibm.com>
22231
22232         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define.
22233         (PPC_FEATURE2_SCV): Likewise.
22234         * config/rs6000/rs6000.c (cpu_supports_info): Use them.
22235
22236 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
22237
22238         * config/aarch64/aarch64.c
22239         (aarch64_internal_mov_immediate): Add new special pattern.
22240         * config/aarch64/aarch64.md (*movdi_aarch64):
22241         Add reg/32bit const mov case.
22242
22243 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
22244             Richard Sandiford <richard.sandiford@linaro.org>
22245
22246         * config/aarch64/aarch64.md (mov<mode>): Generalize.
22247         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
22248         Add integer and movi cases.
22249         (movi-split-hf-df-sf split, fp16): New.
22250         (enabled): Added TARGET_FP_F16INST.
22251         * config/aarch64/iterators.md (GPF_HF): New.
22252         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): New.
22253
22254 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
22255
22256         * config/aarch64/aarch64.c
22257         (aarch64_simd_container_mode): Add prototype.
22258         (aarch64_expand_mov_immediate): Add HI support.
22259         (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New.
22260         (aarch64_can_const_movi_rtx_p): New.
22261         (aarch64_preferred_reload_class):
22262         Remove restrictions of using FP registers for certain SIMD operations.
22263         (aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves.
22264         (aarch64_valid_floating_const): Add integer move validation.
22265         (aarch64_simd_imm_scalar_p): Remove.
22266         (aarch64_output_scalar_simd_mov_immediate): Generalize function.
22267         (aarch64_legitimate_constant_p): Expand list of supported cases.
22268         * config/aarch64/aarch64-protos.h
22269         (aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New.
22270         (aarch64_reinterpret_float_as_int): New.
22271         (aarch64_simd_imm_scalar_p): Remove.
22272         * config/aarch64/constraints.md (Uvi): New.
22273         (Dd): Split into Ds and new Dd.
22274         * config/aarch64/aarch64.md (*movsi_aarch64):
22275         Add SIMD mov case.
22276         (*movdi_aarch64): Add SIMD mov case.
22277
22278 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22279
22280         * tree-predcom.c: (struct chain): Handle store-store chain in which
22281         stores for elimination only store loop invariant values.
22282         (execute_pred_commoning_chain): Ditto.
22283         (prepare_initializers_chain_store_elim): Ditto.
22284         (prepare_finalizers): Ditto.
22285         (is_inv_store_elimination_chain): New function.
22286         (initialize_root_vars_store_elim_1): New function.
22287
22288 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22289
22290         * tree-predcom.c: Revise general description of the pass.
22291         (enum chain_type): New enum type for store elimination.
22292         (struct chain): New field supporting store elimination.
22293         (struct component): Ditto.
22294         (dump_chain): Dump store-stores chain.
22295         (release_chain): Release resources.
22296         (split_data_refs_to_components): Compute and create component
22297         contains only stores for elimination.
22298         (get_chain_last_ref_at): New function.
22299         (make_invariant_chain): Initialization.
22300         (make_rooted_chain): Specify chain type in parameter and record it.
22301         (add_looparound_copies): Skip for store-stores chain.
22302         (determine_roots_comp): Compute type of chain and pass it to
22303         make_rooted_chain.
22304         (initialize_root_vars_store_elim_2): New function.
22305         (finalize_eliminated_stores): New function.
22306         (remove_stmt): Handle store for elimination.
22307         (execute_pred_commoning_chain): Execute predictive commoning on
22308         store-store chains.
22309         (determine_unroll_factor): Skip unroll for store-stores chain.
22310         (prepare_initializers_chain_store_elim): New function.
22311         (prepare_initializers_chain): Hanlde store-store chain.
22312         (prepare_finalizers_chain, prepare_finalizers): New function.
22313         (tree_predictive_commoning_loop): Return integer value indicating
22314         if loop is unrolled or lcssa form is corrupted.
22315         (tree_predictive_commoning): Rewrite for lcssa form if necessary.
22316
22317 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22318
22319         * tree-predcom.c (initialize_root): Delete.
22320         (execute_pred_commoning_chain): Initialize root vars and replace
22321         reference of non-combined chain directly, rather than call above
22322         function.
22323
22324 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22325
22326         * tree-predcom.c (ref_at_iteration): Add parameter NITERS.  Compute
22327         memory reference to DR at (NITERS + ITERS)-th iteration of loop.
22328
22329 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22330
22331         * tree-predcom.c (struct chain): New field init_seq.
22332         (release_chain): Release init_seq.
22333         (prepare_initializers_chain): Record intialization stmts in above
22334         field.
22335         (insert_init_seqs): New function.
22336         (tree_predictive_commoning_loop): Call insert_init_seqs.
22337
22338 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22339
22340         * tree-predcom.c (determine_roots_comp): Skip trivial components.
22341
22342 2017-07-28  Richard Biener  <rguenther@suse.de>
22343
22344         * match.pd: Remove superfluous :c.
22345         * genmatch.c (simplify::id): Add member.
22346         (lower_commutative, lower_opt_convert, lower_cond, lower_for):
22347         Copy id.
22348         (current_id): New global.
22349         (dt_node::parent): Move from ...
22350         (dt_operand::parent): ... here.  Add for_id member.
22351         (is_a_helper <dt_operand *>::test): DT_TRUE is also a dt_operand.
22352         (decision_tree::find_node): Relax order requirement when
22353         merging DT_TRUE nodes to ones inbetween the current simplify
22354         and the one we try to merge with.  Add diagnostic whenever
22355         we need to enforce pattern order by not merging.
22356         (decision_tree::insert): Set current_id.
22357         (decision_tree::print_node): Dump parent node and for_id.
22358         (parser::last_id): Add member.
22359         (parser::push_simplify): Assign unique id.
22360         (parser::parser): Initialize last_id.
22361
22362 2017-07-28  Martin Liska  <mliska@suse.cz>
22363
22364         PR sanitizer/81340
22365         * sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after
22366         gimple_build_debug_bind.
22367
22368 2017-07-28  Richard Biener  <rguenther@suse.de>
22369
22370         PR tree-optimization/81502
22371         * match.pd: Add pattern combining BIT_INSERT_EXPR with
22372         BIT_FIELD_REF.
22373         * tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF
22374         size/pos operands.
22375         (verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos.
22376         * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype
22377         for BIT_FIELD_REF args.
22378         * fold-const.c (make_bit_field_ref): Likewise.
22379         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
22380
22381 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
22382
22383         PR sanitizer/80998
22384         * sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR.
22385         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.
22386         * flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW.
22387         Or it into SANITIZER_UNDEFINED.
22388         * ubsan.c: Include gimple-fold.h and varasm.h.
22389         (ubsan_expand_ptr_ifn): New function.
22390         (instrument_pointer_overflow): New function.
22391         (maybe_instrument_pointer_overflow): New function.
22392         (instrument_object_size): Formatting fix.
22393         (pass_ubsan::execute): Call instrument_pointer_overflow
22394         and maybe_instrument_pointer_overflow.
22395         * internal-fn.c (expand_UBSAN_PTR): New function.
22396         * ubsan.h (ubsan_expand_ptr_ifn): Declare.
22397         * sanitizer.def (__ubsan_handle_pointer_overflow,
22398         __ubsan_handle_pointer_overflow_abort): New builtins.
22399         * tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR.
22400         * internal-fn.def (UBSAN_PTR): New internal function.
22401         * opts.c (sanitizer_opts): Add pointer-overflow.
22402         * lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR.
22403         * fold-const.c (build_range_check): Compute pointer range check in
22404         integral type if pointer arithmetics would be needed.  Formatting
22405         fixes.
22406
22407 2017-07-28  Martin Liska  <mliska@suse.cz>
22408
22409         PR sanitizer/81460
22410         * sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite
22411         parameters that are of a variable-length.
22412
22413 2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22414
22415         * config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h.  Add
22416         rs6000/biarch64.h.
22417         * config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
22418         (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
22419         (CRT_CALL_STATIC_FUNCTION): Likewise.
22420         (ASM_DEFAULT_SPEC): New define.
22421         (ASM_SPEC32): Likewise.
22422         (ASM_SPEC64): Likewise.
22423         (ASM_SPEC_COMMON): Likewise.
22424         (ASM_SPEC): Likewise.
22425         (INVALID_64BIT): Likewise.
22426         (LINK_OS_DEFAULT_SPEC): Likewise.
22427         (LINK_OS_SPEC32): Likewise.
22428         (LINK_OS_SPEC64): Likewise.
22429         (POWERPC_LINUX): Likewise.
22430         (PTRDIFF_TYPE): Likewise.
22431         (RESTORE_FP_PREFIX): Likewise.
22432         (RESTORE_FP_SUFFIX): Likewise.
22433         (SAVE_FP_PREFIX): Likewise.
22434         (SAVE_FP_SUFFIX): Likewise.
22435         (SIZE_TYPE): Likewise.
22436         (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
22437         (TARGET_64BIT): Likewise.
22438         (TARGET_64BIT): Likewise.
22439         (TARGET_AIX): Likewise.
22440         (WCHAR_TYPE_SIZE): Likewise.
22441         (WCHAR_TYPE): Undefine.
22442         (TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines.
22443         (CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC.
22444         (CPP_OS_RTEMS_SPEC): Delete.
22445         (SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems.  Add
22446         asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and
22447         link_os_spec64.
22448         * config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs.
22449
22450 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
22451
22452         PR tree-optimization/81578
22453         * tree-parloops.c (build_new_reduction): Bail out if
22454         reduction_code isn't one of the standard OpenMP reductions.
22455         Move the details printing after that decision.
22456
22457 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22458
22459         * config/rs6000/predicates.md (volatile_mem_operand): Remove code
22460         related to reload_in_progress.
22461         (splat_input_operand): Likewise.
22462         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
22463         Delete prototype.
22464         * config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot
22465         field.
22466         (TARGET_EXPAND_TO_RTL_HOOK): Delete.
22467         (TARGET_INSTANTIATE_DECLS): Likewise.
22468         (legitimate_indexed_address_p): Delete reload_in_progress code.
22469         (rs6000_debug_legitimate_address_p): Likewise.
22470         (rs6000_eliminate_indexed_memrefs): Likewise.
22471         (rs6000_emit_le_vsx_store): Likewise.
22472         (rs6000_emit_move_si_sf_subreg): Likewise.
22473         (rs6000_emit_move): Likewise.
22474         (register_to_reg_type): Likewise.
22475         (rs6000_pre_atomic_barrier): Likewise.
22476         (rs6000_machopic_legitimize_pic_address): Likewise.
22477         (rs6000_allocate_stack_temp): Likewise.
22478         (rs6000_address_for_fpconvert): Likewise.
22479         (rs6000_address_for_altivec): Likewise.
22480         (rs6000_secondary_memory_needed_rtx): Delete function.
22481         (rs6000_check_sdmode): Likewise.
22482         (rs6000_alloc_sdmode_stack_slot): Likewise.
22483         (rs6000_instantiate_decls): Likewise.
22484         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
22485         * config/rs6000/rs6000.md (splitter for *movsi_got_internal):
22486         Delete reload_in_progress.
22487         (*vec_reload_and_plus_<mptrsize>): Likewise.
22488         * config/rs6000/vsx.md (vsx_mul_v2di): Likewise.
22489         (vsx_div_v2di): Likewise.
22490         (vsx_udiv_v2di): Likewise.
22491
22492 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22493
22494         * config/rs6000/rs6000.opt (mlra): Replace with stub.
22495         * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA.
22496         * config/rs6000/rs6000.c (TARGET_LRA_P): Delete.
22497         (rs6000_debug_reg_global): Delete print of LRA status.
22498         (rs6000_option_override_internal): Delete dead LRA related code.
22499         (rs6000_lra_p): Delete function.
22500         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra.
22501
22502 2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22503
22504         * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
22505         * config/riscv/rtems.h: New file.
22506
22507 2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22508             Sudakshina Das  <sudi.das@arm.com>
22509
22510         * config/aarch64/aarch64.md
22511         (define_split for and<mode>3nr_compare): Move
22512         non aarch64_logical_operand to a register.
22513         (define_split for and_<SHIFT:optab><mode>3nr_compare0): Move non
22514         register immediate operand to a register.
22515         * config/aarch64/predicates.md (aarch64_mov_imm_operand): New.
22516
22517 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22518
22519         PR middle-end/81564
22520         * tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks.
22521
22522 2017-07-27  Richard Biener  <rguenther@suse.de>
22523
22524         PR tree-optimization/81573
22525         PR tree-optimization/81494
22526         * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
22527         multi defuse cycle case.
22528
22529 2017-07-27  Richard Biener  <rguenther@suse.de>
22530
22531         PR tree-optimization/81571
22532         * tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
22533         PHIs.
22534
22535 2017-07-27  Eric Botcazou  <ebotcazou@adacore.com>
22536
22537         * config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
22538         earlier and only if MASK_FPU is set.  Adjust formatting.
22539
22540 2017-07-27  Martin Liska  <mliska@suse.cz>
22541
22542         * opt-functions.awk: Add validation of value of Init.
22543         * optc-gen.awk: Pass new argument.
22544
22545 2017-07-27  Martin Liska  <mliska@suse.cz>
22546
22547         * auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
22548         Fix wrong condition.
22549
22550 2017-07-27  Martin Liska  <mliska@suse.cz>
22551
22552         * auto-profile.c (afdo_annotate_cfg): Assign zero counts to
22553         BBs and edges seen by autoFDO.
22554
22555 2017-07-27  Richard Biener  <rguenther@suse.de>
22556
22557         PR tree-optimization/81502
22558         * tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR
22559         with incompatible but same sized type.
22560         (execute_update_addresses_taken): Likewise.
22561
22562 2017-07-27  James Greenhalgh  <james.greenhalgh@arm.com>
22563
22564         * tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on
22565         flag_tree_loop_vectorize rather than flag_tree_vectorize.
22566
22567 2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
22568
22569         PR target/81534
22570         * config/s390/s390.md ("*atomic_compare_and_swap<mode>_1")
22571         ("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"):
22572         Change s_operand to memory_operand.
22573
22574 2017-07-27  Richard Sandiford  <richard.sandiford@linaro.org>
22575
22576         * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare.
22577         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with...
22578         (rs6000_emit_le_vsx_permute): ...this.  Take the destination as input.
22579         Emit instructions rather than returning an expression.  Handle TFmode
22580         and KFmode by casting to TImode.
22581         (rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute.
22582         (rs6000_emit_le_vsx_store): Likewise.
22583         * config/rs6000/vsx.md (VSX_TI): New iterator.
22584         (*vsx_le_permute_<mode>): Use it instead of VSX_LE_128.
22585         (*vsx_le_undo_permute_<mode>): Likewise.
22586         (*vsx_le_perm_load_<mode>): Use rs6000_emit_le_vsx_permute to
22587         emit the split sequence.
22588         (*vsx_le_perm_store_<mode>): Likewise.
22589
22590 2017-07-27  Jakub Jelinek  <jakub@redhat.com>
22591
22592         PR tree-optimization/81555
22593         PR tree-optimization/81556
22594         * tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
22595         if true, force CHANGED for the recursive invocation.
22596         (reassociate_bb): Remember original length of ops array, pass
22597         len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
22598
22599         * attribs.c (decl_attributes): Imply noinline, noclone and no_icf
22600         attributes for noipa attribute.  For naked attribute use
22601         lookup_attribute first before lookup_attribute_spec.
22602         * final.c (rest_of_handle_final): Disable IPA RA for functions with
22603         noipa attribute.
22604         * ipa-visibility.c (non_local_p): Fix comment typos.  Return true
22605         for functions with noipa attribute.
22606         (cgraph_externally_visible_p): Return true for functions with noipa
22607         attribute.
22608         * cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE
22609         for functions with noipa attribute.
22610         * doc/extend.texi: Document noipa function attribute.
22611         * tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p
22612         also for functions with noipa attribute.
22613         (ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute.
22614
22615 2017-07-26  Andrew Pinski  <apinski@cavium.com>
22616
22617         * config/aarch64/aarch64.c (thunderx_vector_cost): Decrease cost of
22618         vec_unalign_load_cost and vec_unalign_store_cost.
22619
22620 2017-07-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
22621
22622         * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete
22623         -mvsx-small-integer option.
22624         (ISA_3_0_MASKS_IEEE): Likewise.
22625         (OTHER_VSX_VECTOR_MASKS): Likewise.
22626         (POWERPC_MASKS): Likewise.
22627         * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise.
22628         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify
22629         code, only testing for DImode being allowed in non-VSX floating
22630         point registers.
22631         (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER
22632         to TARGET_P8_VECTOR test.  Remove redundant VSX test inside of
22633         another VSX test.
22634         (rs6000_option_override_internal): Delete -mvsx-small-integer.
22635         (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to
22636         TARGET_P8_VECTOR test.
22637         (rs6000_secondary_reload_simple_move): Likewise.
22638         (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER,
22639         since TARGET_P9_VECTOR was already tested.
22640         (rs6000_opt_masks): Remove -mvsx-small-integer.
22641         * config/rs6000/vsx.md (vsx_extract_<mode>): Delete
22642         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22643         used.
22644         (vsx_extract_<mode>_p9): Delete TARGET_VSX_SMALL_INTEGER, since a
22645         test for TARGET_VEXTRACTUB was used, and that uses
22646         TARGET_P9_VECTOR.
22647         (p9 extract splitter): Likewise.
22648         (vsx_extract_<mode>_di_p9): Likewise.
22649         (vsx_extract_<mode>_store_p9): Likewise.
22650         (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test
22651         for TARGET_P9_VECTOR was used.  Delete code that is now dead with
22652         the elimination of TARGET_VSX_SMALL_INTEGER.
22653         (vsx_extract_<mode>_p8): Likewise.
22654         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Likewise.
22655         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
22656         (vsx_set_<mode>_p9): Likewise.
22657         (vsx_set_v4sf_p9): Likewise.
22658         (vsx_set_v4sf_p9_zero): Likewise.
22659         (vsx_insert_extract_v4sf_p9): Likewise.
22660         (vsx_insert_extract_v4sf_p9_2): Likewise.
22661         * config/rs6000/rs6000.md (sign extend splitter): Change
22662         TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test.
22663         (floatsi<mode>2_lfiwax_mem): Likewise.
22664         (floatunssi<mode>2_lfiwzx_mem): Likewise.
22665         (float<QHI:mode><FP_ISA3:mode>2): Delete TARGET_VSX_SMALL_INTEGER,
22666         since a test for TARGET_P9_VECTOR was used.
22667         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22668         (floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
22669         (floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22670         (fix_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
22671         TARGET_P8_VECTOR test.
22672         (fix_trunc<mode>si2_stfiwx): Likewise.
22673         (fix_trunc<mode>si2_internal): Likewise.
22674         (fix_trunc<SFDF:mode><QHI:mode>2): Delete
22675         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22676         used.
22677         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
22678         (fixuns_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
22679         TARGET_P8_VECTOR test.
22680         (fixuns_trunc<mode>si2_stfiwx): Likewise.
22681         (fixuns_trunc<SFDF:mode><QHI:mode>2): Delete
22682         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22683         used.
22684         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
22685         (fctiw<u>z_<mode>_smallint): Delete TARGET_VSX_SMALL_INTEGER,
22686         since a test for TARGET_P9_VECTOR was used.
22687         (splitter for loading small constants): Likewise.
22688
22689 2017-07-26  Andrew Pinski  <apinski@cavium.com>
22690
22691         * config/aarch64/aarch64.c (thunderx_vector_cost): Fix
22692         vec_fp_stmt_cost.
22693
22694 2017-07-26  H.J. Lu  <hongjiu.lu@intel.com>
22695
22696         PR target/81563
22697         * config/i386/i386.c (sp_valid_at): Properly check CFA offset.
22698         (fp_valid_at): Likewise.
22699
22700 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
22701
22702         * config/aarch64/aarch64.c (cortexa57_addrcost_table): Remove.
22703         (qdf24xx_addrcost_table): Likewise.
22704         (cortexa57_tunings): Update to use generic_branch_cost.
22705         (cortexa72_tunings): Likewise.
22706         (cortexa73_tunings): Likewise.
22707         (qdf24xx_tunings): Likewise.
22708
22709 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
22710
22711         * config/aarch64/aarch64.c (cortexa57_branch_cost): Remove.
22712         (thunderx2t99_branch_cost): Likewise.
22713         (cortexa35_tunings): Update to use generic_branch_cost.
22714         (cortexa53_tunings): Likewise.
22715         (cortexa57_tunings): Likewise.
22716         (cortexa72_tunings): Likewise.
22717         (cortexa73_tunings): Likewise.
22718         (thunderx2t99_tunings): Likewise.
22719
22720 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22721
22722         * config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD.
22723         (sparc_option_override): Honour MASK_FSMULD.
22724         * config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD.
22725         * config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD.
22726         * config/sparc/sparc.opt (mfsmuld): New option.
22727         * doc/invoke.texi (mfsmuld): Document option.
22728
22729 2017-07-26  Marek Polacek  <polacek@redhat.com>
22730
22731         PR middle-end/70992
22732         * tree.c (build2_stat): Don't set TREE_CONSTANT on divisions by zero.
22733
22734 2017-07-26  Richard Biener  <rguenther@suse.de>
22735
22736         * gimple-match-head.c (do_valueize): Return OP if valueize
22737         returns NULL_TREE.
22738         (get_def): New helper to get at the def stmt of a SSA name
22739         if valueize allows.
22740         * genmatch.c (dt_node::gen_kids_1): Use get_def instead of
22741         do_valueize to get at the def stmt.
22742         (dt_operand::gen_gimple_expr): Simplify do_valueize calls.
22743
22744 2017-07-26  Wilco Dijkstra  <wdijkstr@arm.com>
22745
22746         PR middle-end/46932
22747         * auto-inc-dec.c (parse_add_or_inc): Block autoinc on sfp.
22748
22749 2017-07-26  Martin Liska  <mliska@suse.cz>
22750
22751         PR sanitize/81186
22752         * function.c (expand_function_start): Make expansion of
22753         nonlocal_goto_save_area after parm_birth_insn.
22754
22755 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22756
22757         * config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU
22758         from all CPU target flags enable members.
22759
22760 2017-07-26  Richard Biener  <rguenther@suse.de>
22761
22762         * genmatch.c (dt_simplify::gen): Make iterator vars const.
22763         (decision_tree::gen): Make 'type' const.
22764         (write_predicate): Likewise.
22765
22766 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
22767
22768         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
22769         Eliminate TARGET_UPPER_REGS_{DF,DI,SF} usage.
22770         (rs6000_option_override_internal): Likewise.
22771         (rs6000_expand_vector_set): Likewise.
22772         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Delete.
22773         (TARGET_UPPER_REGS_SF): Likewise.
22774         (TARGET_UPPER_REGS_DI): Likewise.
22775         (TARGET_VEXTRACTUB): Eliminate TARGET_UPPER_REGS_{DF,DI,SF}.
22776         (TARGET_DIRECT_MOVE_64BIT): Likewise.
22777         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Likewise.
22778         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22779         (Splitters for DI constants in Altivec registers): Likewise.
22780         * config/rs6000/vsx.md (vsx_set_<mode>_p9): Likewise.
22781         (vsx_set_v4sf_p9): Likewise.
22782         (vsx_set_v4sf_p9_zero): Likewise.
22783         (vsx_insert_extract_v4sf_p9): Likewise.
22784         (vsx_insert_extract_v4sf_p9_2): Likewise.
22785
22786 2017-07-25  Carl Love  <cel@us.ibm.com>
22787
22788         * doc/extend.texi: Update the built-in documentation file for the
22789         existing built-in functions
22790         vector signed char vec_cnttz (vector signed char);
22791         vector unsigned char vec_cnttz (vector unsigned char);
22792         vector signed short vec_cnttz (vector signed short);
22793         vector unsigned short vec_cnttz (vector unsigned short);
22794         vector signed int vec_cnttz (vector signed int);
22795         vector unsigned int vec_cnttz (vector unsigned int);
22796         vector signed long long vec_cnttz (vector signed long long);
22797         vector unsigned long long vec_cnttz (vector unsigned long long);
22798
22799 2017-07-25  Andrew Pinski  <apinski@cavium.com>
22800
22801         * tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory
22802         accesses where the use is for the first operand of a BIT_INSERT.
22803
22804 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
22805
22806         PR bootstrap/81521
22807         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
22808         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
22809
22810 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
22811
22812         * config/i386/gstabs.h: Delete.
22813         * config/i386/openbsd.h, config/i386/t-openbsd: Likewise.
22814
22815 2017-07-25  Uros Bizjak  <ubizjak@gmail.com>
22816
22817         * config/i386/i386.c (ix86_decompose_address): Do not check for
22818         register RTX when looking at index_reg or base_reg.
22819         * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx.
22820
22821 2017-07-25  Eric Botcazou  <ebotcazou@adacore.com>
22822
22823         * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace
22824         to update EH info here.
22825
22826 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22827
22828         * match.pd ((X * CST1) * CST2): Simplify to X * (CST1 * CST2).
22829
22830 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22831
22832         * match.pd ((X * CST) * Y): Reassociate to (X * Y) * CST.
22833
22834 2017-07-25  Torsten Duwe  <duwe@suse.de>
22835
22836         * common.opt: Introduce -fpatchable-function-entry
22837         command line option, and its variables function_entry_patch_area_size
22838         and function_entry_patch_area_start.
22839         * opts.c (common_handle_option): Add -fpatchable_function_entry_ case,
22840         including a two-value parser.
22841         * target.def (print_patchable_function_entry): New target hook.
22842         * targhooks.h (default_print_patchable_function_entry): New function.
22843         * targhooks.c (default_print_patchable_function_entry): Likewise.
22844         * toplev.c (process_options): Switch off IPA-RA if
22845         patchable function entries are being generated.
22846         * varasm.c (assemble_start_function): Look at the
22847         patchable-function-entry command line switch and current
22848         function attributes and maybe generate NOP instructions by
22849         calling the print_patchable_function_entry hook.
22850         * doc/extend.texi: Document patchable_function_entry attribute.
22851         * doc/invoke.texi: Document -fpatchable_function_entry
22852         command line option.
22853         * doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
22854         New target hook.
22855         * doc/tm.texi: Re-generate.
22856
22857 2017-07-25  Jakub Jelinek  <jakub@redhat.com>
22858
22859         PR target/81532
22860         * config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for
22861         TARGET_AVX512DQ rather than TARGET_AVX512BW.
22862
22863 2017-07-25  Tamar Christina  <tamar.christina@arm.com>
22864
22865         * config/arm/parsecpu.awk (all_cores): Remove duplicates.
22866
22867 2017-07-25  Richard Biener  <rguenther@suse.de>
22868
22869         PR tree-optimization/81455
22870         * tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to
22871         not walk in cycles when looking for guards.
22872
22873 2017-07-25  Richard Biener  <rguenther@suse.de>
22874
22875         PR tree-optimization/81529
22876         * tree-vect-stmts.c (process_use): Disregard live induction PHIs
22877         when optimizing backedge uses.
22878
22879 2017-07-25  David Edelsohn  <dje.gcc@gmail.com>
22880
22881         * dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
22882         character for AIX.
22883         * dwarf2out.c (output_macinfo): Copy debug_line_section_label
22884         to dl_section_ref.  On AIX, append an expression to subtract
22885         the size of the section length to dl_section_ref.
22886
22887 2017-07-25  Segher Boessenkool  <segher@kernel.crashing.org>
22888
22889         * configure.ac: If any of the config.* scripts fail, exit 1.
22890         * configure: Regenerate.
22891
22892 2017-07-25  Richard Biener  <rguenther@suse.de>
22893
22894         PR middle-end/81546
22895         * tree-ssa-operands.c (verify_imm_links): Remove cap on number
22896         of immediate uses, be more verbose on errors.
22897
22898 2017-07-25  Richard Biener  <rguenther@suse.de>
22899
22900         PR tree-optimization/81510
22901         * tree-vect-loop.c (vect_is_simple_reduction): When the
22902         reduction stmt is not inside the loop bail out.
22903
22904 2017-07-25  Richard Biener  <rguenther@suse.de>
22905
22906         PR tree-optimization/81303
22907         * tree-vect-loop-manip.c (vect_loop_versioning): Build
22908         profitability check against LOOP_VINFO_NITERSM1.
22909
22910 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22911
22912         * domwalk.c (cmp_bb_postorder): Simplify.
22913         (sort_bbs_postorder): New function.  Use it...
22914         (dom_walker::walk): ...here to optimize common cases.
22915
22916 2017-07-25  Martin Liska  <mliska@suse.cz>
22917
22918         PR ipa/81520
22919         * ipa-visibility.c (function_and_variable_visibility): Make the
22920         redirection just on target that supports aliasing.
22921         Fix GNU coding style.
22922
22923 2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22924
22925         PR libgcc/61152
22926         * config/aarch64/rtems.h: Add GCC Runtime Library Exception.
22927         Format changes.
22928         * config/arm/rtems.h: Likewise.
22929         * config/bfin/rtems.h: Likewise.
22930         * config/i386/rtemself.h: Likewise.
22931         * config/lm32/rtems.h: Likewise.
22932         * config/m32c/rtems.h: Likewise.
22933         * config/m68k/rtemself.h: Likewise.
22934         * config/microblaze/rtems.h: Likewise.
22935         * config/mips/rtems.h: Likewise.
22936         * config/moxie/rtems.h: Likewise.
22937         * config/nios2/rtems.h: Likewise.
22938         * config/powerpcspe/rtems.h: Likewise.
22939         * config/rs6000/rtems.h: Likewise.
22940         * config/rtems.h: Likewise.
22941         * config/sh/rtems.h: Likewise.
22942         * config/sh/rtemself.h: Likewise.
22943         * config/sparc/rtemself.h: Likewise.
22944
22945 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
22946
22947         PR 81487
22948         * hsa-brig.c (brig_init): Use xasprintf instead of asprintf.
22949         * gimple-pretty-print.c (dump_profile, dump_probability): Same.
22950         * tree-ssa-structalias.c (alias_get_name): Same.
22951
22952 2017-07-25  Bin Cheng  <bin.cheng@arm.com>
22953
22954         PR target/81414
22955         * config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac
22956         instructions if no du chain is found.
22957
22958 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
22959
22960         * config/avr/avr-log.c (avr_log_vadump) ['T']: Print NULL-TREE.
22961
22962 2017-07-25  Richard Biener  <rguenther@suse.de>
22963
22964         PR middle-end/81505
22965         * fold-const.c (fold_negate_const): TREE_OVERFLOW should be
22966         sticky.
22967
22968 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
22969
22970         * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Delete
22971         upper-regs options.
22972         (ISA_2_7_MASKS_SERVER): Likewise.
22973         (ISA_3_0_MASKS_IEEE): Likewise.
22974         (OTHER_P8_VECTOR_MASKS): Likewise.
22975         (OTHER_VSX_VECTOR_MASKS): Likewise.
22976         (POWERPC_MASKS): Likewise.
22977         (power7 cpu): Use ISA_2_6_MASKS_SERVER instead of using a
22978         duplicate list of options.
22979         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove
22980         explicit -mupper-regs options.
22981         * config/rs6000/rs6000.opt (-mvsx-scalar-memory): Delete
22982         -mupper-regs* options.  Delete -mvsx-scalar-memory, which was an
22983         alias for -mupper-regs-df.
22984         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
22985         (rs6000_init_hard_regno_mode_ok): Likewise.
22986         (rs6000_option_override_internal): Likewise.
22987         (rs6000_opt_masks): Likewise.
22988         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Define upper regs
22989         options in terms of whether -mvsx or -mpower8-vector was used.
22990         (TARGET_UPPER_REGS_DI): Likewise.
22991         (TARGET_UPPER_REGS_SF): Likewise.
22992         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete the
22993         -mupper-regs-* options.
22994
22995 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
22996
22997         * passes.c (emergency_dump_function): Print some empty lines and a
22998         header before the RTL dump.
22999
23000 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
23001
23002         * cfgrtl.c (rtl_dump_bb): Don't call NEXT_INSN on NULL.
23003
23004 2017-07-24  Wilco Dijkstra  <wdijkstr@arm.com>
23005
23006         PR target/79041
23007         * config/aarch64/aarch64.c (aarch64_classify_symbol):
23008         Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals.
23009
23010 2017-07-24  Carl Love  <cel@us.ibm.com>
23011
23012         * config/rs6000/rs6000-c.c: Add support for built-in functions
23013         vector float vec_extract_fp32_from_shorth (vector unsigned short);
23014         vector float vec_extract_fp32_from_shortl (vector unsigned short);
23015         * config/rs6000/altivec.h (vec_extract_fp_from_shorth,
23016         vec_extract_fp_from_shortl): Add defines for the two builtins.
23017         * config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH,
23018         VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1
23019         new builtins.
23020         * config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn.
23021         (vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands.
23022         * doc/extend.texi: Update the built-in documentation file for the
23023         new built-in function.
23024
23025 2017-07-24  Jakub Jelinek  <jakub@redhat.com>
23026
23027         PR bootstrap/81521
23028         * tree.def: Remove TYPE_METHODS documentation, adjust TYPE_FIELDS
23029         documentation.
23030         * doc/generic.texi: Likewise.
23031         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
23032         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
23033
23034 2017-07-24  Jackson Woodruff  <jackson.woodruff@arm.com>
23035
23036         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): New.
23037         (aarch64_mls_elt_merge<mode>): Likewise.
23038
23039 2017-07-23  Krister Walfridsson  <krister.walfridsson@gmail.com>
23040
23041         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
23042         having __cxa_atexit.
23043
23044 2017-07-23  Michael Collison  <michael.collison@arm.com>
23045
23046         * config/arm/arm.c (arm_option_override): Deprecate
23047         use of -mstructure-size-boundary.
23048         * config/arm/arm.opt: Deprecate -mstructure-size-boundary.
23049         * doc/invoke.texi: Deprecate -mstructure-size-boundary.
23050
23051 2017-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
23052
23053         PR target/80695
23054         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
23055         Reduce cost estimate for direct moves.
23056
23057 2017-07-23  Uros Bizjak  <ubizjak@gmail.com>
23058
23059         PR target/80569
23060         * config/i386/i386.c (ix86_option_override_internal): Disable
23061         BMI, BMI2 and TBM instructions for -m16.
23062
23063 2017-07-21  Carl Love  <cel@us.ibm.com>
23064
23065         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23066         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
23067         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
23068         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
23069         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
23070         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
23071         VMULOSW): New enum "unspec" values.
23072         (altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
23073         altivec_vmulosw): New patterns.
23074         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
23075         VMULOSW): Add definitions.
23076
23077 2017-07-21  Jim Wilson  <jim.wilson@linaro.org>
23078
23079         * config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA.
23080         (qdf24xx): Likewise.
23081         * config/aarch64/aarch64-options-extensions.def (rdma); New.
23082         * config/aarch64/aarch64.h (AARCH64_FL_RDMA): New.
23083         (AARCH64_FL_V8_1): Renumber.
23084         (AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA.
23085         (AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA.
23086         * config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a.
23087         * doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs.  Add
23088         rdma to feature modifiers list.
23089
23090 2017-07-21  Yury Gribov  <tetra2005@gmail.com>
23091
23092         PR middle-end/56727
23093         * ipa-visibility (function_and_variable_visibility): Convert
23094         recursive PLT call to direct call if appropriate.
23095
23096 2017-07-21  Andrew Pinski  <apinski@cavium.com>
23097
23098         * tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's
23099         operand 1 to see if the types precision matches.
23100         * fold-const.c (operand_equal_p): Likewise.
23101
23102 2017-07-21  Richard Biener  <rguenther@suse.de>
23103
23104         PR tree-optimization/81303
23105         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass
23106         in datarefs vector.  Allow NULL dr0 for no peeling cost estimate.
23107         (vect_peeling_hash_get_lowest_cost): Adjust.
23108         (vect_enhance_data_refs_alignment): Likewise.  Use
23109         vect_get_peeling_costs_all_drs to compute the penalty for no
23110         peeling to match up costs.
23111
23112 2017-07-21  Richard Biener  <rguenther@suse.de>
23113
23114         PR tree-optimization/81500
23115         * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if
23116         we didn't identify a reduction path.
23117
23118 2017-07-21  Tom de Vries  <tom@codesourcery.com>
23119             Cesar Philippidis  <cesar@codesourcery.com>
23120
23121         PR gcov-profile/81442
23122         * config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge
23123         probabilities.
23124
23125 2017-07-21  Tom de Vries  <tom@codesourcery.com>
23126
23127         PR lto/81430
23128         * config/nvptx/nvptx.c (nvptx_override_options_after_change): New
23129         function.
23130         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
23131         nvptx_override_options_after_change.
23132
23133 2017-07-21  Ulrich Drepper  <drepper@redhat.com>
23134
23135         * dwarf2out.c (output_file_names): Avoid double testing for
23136         dwarf_version >= 5.
23137
23138 2017-07-21  Georg-Johann Lay  <avr@gjlay.de>
23139
23140         * doc/invoke.texi (AVR Built-in Functions): Re-layout section.
23141
23142 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
23143
23144         * cfgcleanup.c (flow_find_cross_jump): Do not crossjump across
23145         hot/cold regions.
23146         (try_crossjump_to_edge): Do not punt on partitioned functions.
23147
23148 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
23149
23150         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
23151         Put all BBs reachable only via paths crossing cold region to cold
23152         region.
23153         * cfgrtl.c (find_bbs_reachable_by_hot_paths): New function.
23154
23155 2016-07-21  Richard Biener  <rguenther@suse.de>
23156
23157         PR tree-optimization/81303
23158         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Take
23159         into account prologue and epilogue iterations when raising
23160         min_profitable_iters to sth at least covering one vector iteration.
23161
23162 2017-07-21  Tamar Christina  <tamar.christina@arm.com>
23163
23164         * config/arm/arm.c (arm_test_cpu_arch_dat):
23165         Check for overlap.
23166
23167 2017-07-20  Nathan Sidwell  <nathan@acm.org>
23168
23169         Remove TYPE_METHODS.
23170         * tree.h (TYPE_METHODS): Delete.
23171         * dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
23172         * dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
23173         (dbxout_type_methods): Scan TYPE_FIELDS.
23174         (dbxout_type): Don't check TYPE_METHODS here.
23175         * function.c (use_register_for_decl): Always ignore register for
23176         class types when not optimizing.
23177         * ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
23178         * tree.c (free_lang_data_in_type): Stitch out member functions and
23179         templates from TYPE_FIELDS.
23180         (build_distinct_type_copy, verify_type_variant,
23181         verify_type): Member fns are on TYPE_FIELDS.
23182         * tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
23183         * tree-pretty-print.c (dump_generic_node): Likewise.
23184
23185 2017-07-20  Jakub Jelinek  <jakub@redhat.com>
23186
23187         PR target/80846
23188         * config/i386/i386.c (ix86_expand_vector_init_general): Handle
23189         V2TImode and V4TImode.
23190         (ix86_expand_vector_extract): Likewise.
23191         * config/i386/sse.md (VMOVE): Enable V4TImode even for just
23192         TARGET_AVX512F, instead of only for TARGET_AVX512BW.
23193         (ssescalarmode): Handle V4TImode and V2TImode.
23194         (VEC_EXTRACT_MODE): Add V4TImode and V2TImode.
23195         (*vec_extractv2ti, *vec_extractv4ti): New insns.
23196         (VEXTRACTI128_MODE): New mode iterator.
23197         (splitter for *vec_extractv?ti first element): New.
23198         (VEC_INIT_MODE): New mode iterator.
23199         (vec_init<mode>): Consolidate 3 expanders into one using
23200         VEC_INIT_MODE mode iterator.
23201
23202 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
23203
23204         * lra-assigns.c (pseudo_compare_func): Fix comparison step based on
23205         non_spilled_static_chain_regno_p.
23206
23207 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
23208
23209         * gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.
23210
23211 2017-07-20  Jan Hubicka  <hubicka@ucw.cz>
23212
23213         * bb-reorder.c (connect_traces): Allow copying of blocks within
23214         single partition.
23215
23216 2017-07-20  Richard Biener  <rguenther@suse.de>
23217
23218         * gimple.h (gimple_phi_result): Add gphi * overload.
23219         (gimple_phi_result_ptr): Likewise.
23220         (gimple_phi_arg): Likewise.  Adjust index assert to only
23221         allow actual argument accesses rather than all slots available
23222         by capacity.
23223         (gimple_phi_arg_def): Add gphi * overload.
23224         * tree-phinodes.c (make_phi_node): Initialize only actual
23225         arguments.
23226         (resize_phi_node): Clear memory not covered by old node,
23227         do not initialize excess argument slots.
23228         (reserve_phi_args_for_new_edge): Initialize new argument slot
23229         completely.
23230
23231 2017-07-20  Bin Cheng  <bin.cheng@arm.com>
23232
23233         PR tree-optimization/81388
23234         Revert r238585:
23235         2016-07-21  Bin Cheng  <bin.cheng@arm.com>
23236
23237         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
23238         by removing computation of may_be_zero.
23239
23240 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
23241             Tom de Vries  <tom@codesourcery.com>
23242
23243         PR middle-end/81030
23244         * cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note
23245         when gimple level profile disagrees with what RTL expander did.
23246
23247 2017-07-20  Richard Biener  <rguenther@suse.de>
23248
23249         PR tree-optimization/61171
23250         * tree-vectorizer.h (slp_instance): Add reduc_phis member.
23251         (vect_analyze_stmt): Add slp instance parameter.
23252         (vectorizable_reduction): Likewise.
23253         * tree-vect-loop.c (vect_analyze_loop_operations): Adjust.
23254         (vect_is_simple_reduction): Deal with chains not detected
23255         as SLP reduction chain, specifically not properly associated
23256         chains containing a mix of plus/minus.
23257         (get_reduction_op): Remove.
23258         (get_initial_defs_for_reduction): Simplify, pass in whether
23259         this is a reduction chain, pass in the SLP node for the PHIs.
23260         (vect_create_epilog_for_reduction): Get the SLP instance as
23261         arg and adjust.
23262         (vectorizable_reduction): Get the SLP instance as arg.
23263         During analysis remember the SLP node with the PHIs in the
23264         instance.  Simplify getting at the vectorized reduction PHIs.
23265         * tree-vect-slp.c (vect_slp_analyze_node_operations): Pass
23266         through SLP instance.
23267         (vect_slp_analyze_operations): Likewise.
23268         * tree-vect-stms.c (vect_analyze_stmt): Likewise.
23269         (vect_transform_stmt): Likewise.
23270
23271 2017-07-20  Tom de Vries  <tom@codesourcery.com>
23272
23273         PR tree-optimization/81489
23274         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move
23275         read of phi arg location to before loop that modifies phi.
23276
23277 2017-07-20  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
23278
23279         * match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0):
23280         New pattern.
23281
23282 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
23283
23284         PR middle-end/81331
23285         * except.c (execute): Fix ordering issue.
23286
23287 2018-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
23288
23289         PR rtl-optimization/81423
23290         * combine.c (make_compound_operation_int): Don't try to optimize
23291         the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical.
23292
23293 2017-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
23294
23295         PR rtl-optimization/81423
23296         * simplify-rtx.c (simplify_truncation): Handle truncating an IOR
23297         with a constant that is -1 in the truncated to mode.
23298
23299 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
23300
23301         * predict.c (propagate_unlikely_bbs_forward): Break out from ...
23302         (determine_unlikely_bbs): ... here.
23303         * predict.h (propagate_unlikely_bbs_forward): Declare.
23304         * cfgexpand.c (pass_expand::execute): Use it.
23305         * bb-reorder.c (sanitize_hot_paths): Do not consider known to be
23306         unlikely edges.
23307         (find_rarely_executed_basic_blocks_and_crossing_edges): Use
23308         propagate_unlikely_bbs_forward.
23309
23310 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
23311
23312         PR middle-end/81331
23313         * except.c (maybe_add_nop_after_section_switch): New function.
23314         (execute): Use it.
23315
23316 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23317
23318         * gimple.h (gimple_phi_set_arg): Make assert more strict.
23319
23320 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23321
23322         * gimple.h (gimple_phi_arg): Make assert more strict.
23323
23324 2017-07-19  Steven Munroe  <munroesj@gcc.gnu.org>
23325
23326         * config.gcc (powerpc*-*-*): Add mmintrin.h.
23327         * config/rs6000/mmintrin.h: New file.
23328         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h.
23329
23330 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
23331
23332         PR tree-optimization/81346
23333         * match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0.
23334
23335 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23336
23337         * config/nvptx/nvptx.md (VECIM): Add V2DI.
23338
23339 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23340
23341         * config/nvptx/nvptx-modes.def: Add V2DImode.
23342         * config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare.
23343         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode.
23344         (nvptx_output_mov_insn): Handle lack of mov.b128.
23345         (nvptx_print_operand): Handle 'H' and 'L' codes.
23346         (nvptx_vector_mode_supported): Allow V2DImode.
23347         (nvptx_preferred_simd_mode): New function.
23348         (nvptx_data_alignment): New function.
23349         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to
23350         nvptx_preferred_simd_mode.
23351         * config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from
23352         64 to 128 bits.
23353         (DATA_ALIGNMENT): Define.  Set to nvptx_data_alignment.
23354
23355 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23356
23357         * config/nvptx/nvptx-modes.def: New file.  Add V2SImode.
23358         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode.
23359         (nvptx_vector_mode_supported): New function.  Allow V2SImode.
23360         (TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported.
23361         * config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI.
23362         (mov<VECIM>_insn): New define_insn.
23363         (define_expand "mov<VECIM>): New define_expand.
23364
23365 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23366
23367         * config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode.
23368
23369 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
23370
23371         PR tree-optimization/81346
23372         * fold-const.h (fold_div_compare, range_check_type): Declare.
23373         * fold-const.c (range_check_type): New function.
23374         (build_range_check): Use range_check_type.
23375         (fold_div_compare): No longer static, rewritten into
23376         a match.pd helper function.
23377         (fold_comparison): Don't call fold_div_compare here.
23378         * match.pd (X / C1 op C2): New optimization using fold_div_compare
23379         as helper function.
23380
23381 2017-07-19  Nathan Sidwell  <nathan@acm.org>
23382
23383         * tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
23384         (TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these.
23385         * tree.c (find_decls_types_r, verify_type): Use
23386         TYPE_{MIN,MAX}_VALUE_RAW.
23387         * lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise.
23388         (hash_tree): Likewise.
23389         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
23390         Likewise.
23391         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
23392         Likewise.
23393
23394 2017-07-18  Tom de Vries  <tom@codesourcery.com>
23395
23396         PR middle-end/81464
23397         * omp-expand.c (expand_omp_for_static_chunk): Handle
23398         equal-argument loop exit phi.
23399
23400 2017-07-18  Uros Bizjak  <ubizjak@gmail.com>
23401
23402         PR target/81471
23403         * config/i386/i386.md (rorx_immediate_operand): New mode attribute.
23404         (*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
23405         operand 2 predicate.
23406         (*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
23407         operand 2 predicate.
23408         (ror,rol -> rorx splitters): Use const_int_operand as
23409         operand 2 predicate.
23410
23411 2017-06-18  Richard Biener  <rguenther@suse.de>
23412
23413         PR tree-optimization/81410
23414         * tree-vect-stmts.c (vectorizable_load): Properly adjust for
23415         the gap in the ! slp_perm SLP case after each group.
23416
23417 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
23418
23419         PR middle-end/81463
23420         * cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency
23421         again.
23422
23423 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
23424
23425         PR middle-end/81462
23426         * predict.c (set_even_probabilities): Cleanup; do not affect
23427         probabilities that are already known.
23428         (combine_predictions_for_bb): Call even when count is set.
23429
23430 2017-07-18  Nathan Sidwell  <nathan@acm.org>
23431
23432         * tree-parloops.c (try_transform_to_exit_first_loop_alt): Use
23433         TYPE_MAX_VALUE.
23434
23435 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
23436
23437         PR target/81408
23438         * tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed
23439         optimization for loop niter analysis.
23440
23441 2017-07-18  Georg-Johann Lay  <avr@gjlay.de>
23442
23443         PR target/81473
23444         * config/avr/avr.c (avr_optimize_casesi): Don't use
23445         INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX.
23446
23447 2017-07-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
23448
23449         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove
23450         body_cost_vec from _vect_peel_extended_info.
23451         (vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec.
23452         (vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and
23453         npeel.
23454
23455 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
23456
23457         * config/arm/arm.c (emit_unlikely_jump): Remove unused var.
23458
23459 2017-07-18  Richard Biener  <rguenther@suse.de>
23460
23461         PR tree-optimization/80620
23462         PR tree-optimization/81403
23463         * tree-ssa-pre.c (phi_translate_1): Clear range and points-to
23464         info when re-using a VN table entry.
23465
23466 2017-07-18  Richard Biener  <rguenther@suse.de>
23467
23468         PR tree-optimization/81418
23469         * tree-vect-loop.c (vectorizable_reduction): Properly compute
23470         vectype_in.  Verify that with lane-reducing reduction operations
23471         we have a single def-use cycle.
23472
23473 2017-07-17  Carl Love  <cel@us.ibm.com>
23474
23475         Revert commit r249424   2017-06-20  Carl Love  <cel@us.ibm.com>
23476
23477         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23478         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
23479         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
23480         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
23481         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
23482         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
23483         VMULOSW): New enum "unspec" values.
23484         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
23485         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
23486         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
23487         altivec_vmulosw): New patterns.
23488         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
23489         VMULOSW): Add definitions.
23490
23491 2017-07-17  Uros Bizjak  <ubizjak@gmail.com>
23492
23493         * config/alpha/alpha.c: Include predict.h.
23494
23495 2017-07-17  Yury Gribov  <tetra2005@gmail.com>
23496
23497         * tree-vrp.c (compare_assert_loc): Fix comparison function
23498         to return predictable results.
23499
23500 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23501
23502         * config/arc/arc.md (adddi3): Remove support for mexpand-adddi
23503         option.
23504         (subdi3): Likewise.
23505         * config/arc/arc.opt (mexpand-adddi): Deprecate it.
23506         * doc/invoke.texi (mexpand-adddi): Update text.
23507
23508 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23509
23510         * config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction
23511         that also clobbers the CC register. The old expand code is moved
23512         to ...
23513         (*arc_clzsi2): ... here.
23514         (ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers
23515         the CC register. The old expand code is moved to ...
23516         (arc_ctzsi2): ... here.
23517
23518 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23519
23520         * config/arc/arc.opt (mindexed-loads): Use initial value
23521         TARGET_INDEXED_LOADS_DEFAULT.
23522         (mauto-modify-reg): Use initial value
23523         TARGET_AUTO_MODIFY_REG_DEFAULT.
23524         * config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
23525         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
23526         * config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
23527         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
23528
23529 2017-07-17  Martin Liska  <mliska@suse.cz>
23530
23531         PR sanitizer/81302
23532         * opts.c (finish_options): Do not allow -fgnu-tm
23533         w/ -fsanitize={kernel-,}address.  Say sorry.
23534
23535 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23536
23537         PR target/81369
23538         * tree-loop-distribution.c (classify_partition): Only assert on
23539         numer of iterations.
23540         (merge_dep_scc_partitions): Delete prameter.  Update function call.
23541         (distribute_loop): Remove code handling loop with unknown niters.
23542         (pass_loop_distribution::execute): Skip loop with unknown niters.
23543
23544 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23545
23546         PR target/81369
23547         * tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to
23548         function sort_partitions_by_post_order.
23549
23550 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23551
23552         PR tree-optimization/81374
23553         * tree-loop-distribution.c (pass_loop_distribution::execute): Record
23554         the max index of basic blocks, rather than number of basic blocks.
23555
23556 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23557
23558         * config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove
23559         proto.
23560         (arc_legitimate_pic_operand_p): Likewise.
23561         * config/arc/arc.c (arc_legitimate_pic_operand_p): Remove
23562         function.
23563         (arc_needs_pcl_p): Likewise.
23564         (arc_legitimate_pc_offset_p): Likewise.
23565         (arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this
23566         function is also used in constrains.md.
23567         (arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to
23568         validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and
23569         PLUS.  Only return true/false in known cases, otherwise assert.
23570         (arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it
23571         is already called in arc_legitimate_constant_p.
23572         * config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for
23573         pic addresses.
23574         (LEGITIMATE_PIC_OPERAND_P): Use
23575         arc_raw_symbolic_reference_mentioned_p function.
23576         * config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p
23577         function.
23578         (Cal): Likewise.
23579         (C32): Likewise.
23580
23581 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23582         Andrew Burgess  <andrew.burgess@embecosm.com>
23583
23584         * config/arc/arc-protos.h (arc_compute_function_type): Change prototype.
23585         (arc_return_address_register): New function.
23586         * config/arc/arc.c (arc_handle_fndecl_attribute): New function.
23587         (arc_handle_fndecl_attribute): Add naked attribute.
23588         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
23589         (TARGET_WARN_FUNC_RETURN): Likewise.
23590         (arc_allocate_stack_slots_for_args): New function.
23591         (arc_warn_func_return): Likewise.
23592         (machine_function): Change type fn_type.
23593         (arc_compute_function_type): Consider new naked function type,
23594         change function return type.
23595         (arc_must_save_register): Adapt to handle new
23596         arc_compute_function_type's return type.
23597         (arc_expand_prologue): Likewise.
23598         (arc_expand_epilogue): Likewise.
23599         (arc_return_address_regs): Delete.
23600         (arc_return_address_register): New function.
23601         (arc_epilogue_uses): Use above function.
23602         * config/arc/arc.h (arc_return_address_regs): Delete prototype.
23603         (arc_function_type): Change encoding, add naked type.
23604         (ARC_INTERRUPT_P): Change to handle the new encoding.
23605         (ARC_FAST_INTERRUPT_P): Likewise.
23606         (ARC_NORMAL_P): Define.
23607         (ARC_NAKED_P): Likewise.
23608         (arc_compute_function_type): Delete prototype.
23609         * config/arc/arc.md (in_ret_delay_slot): Use
23610         arc_return_address_register function.
23611         (simple_return): Likewise.
23612         (p_return_i): Likewise.
23613
23614 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23615
23616         PR tree-optimization/81428
23617         * match.pd (X / X -> one): Don't optimize _Fract divisions, as 1
23618         can't be built for those types.
23619
23620 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
23621
23622         Remove stuff dead since r239246.
23623
23624         * config/avr/avr-arch.h (avr_inform_devices): Remove dead proto.
23625         * config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str)
23626         (avr_inform_devices): Remove dead stuff.
23627
23628 2017-07-17  Tamar Christina  <tamar.christina@arm.com>
23629
23630         * config/arm/arm_neon.h: Fix softp typo.
23631
23632 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23633
23634         PR tree-optimization/81365
23635         * tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting
23636         aggregate moves onto bb predecessor edges, make sure there are no
23637         loads that could alias the lhs in between the start of bb and the
23638         loads from *phi.
23639
23640 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
23641
23642         PR 80929
23643         * config/avr/avr.c (avr_mul_highpart_cost): New static function.
23644         (avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost.
23645         [LSHIFTRT, outer_code = TRUNCATE]: Same.
23646
23647 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23648
23649         PR tree-optimization/81396
23650         * tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field.
23651         (init_symbolic_number): Initialize it to 1.
23652         (perform_symbolic_merge): Add n_ops from both operands into the new
23653         n_ops.
23654         (find_bswap_or_nop): Don't consider n->n == cmpnop computations
23655         without base_addr as useless if they need more than one operation.
23656         (bswap_replace): Handle !bswap case for NULL base_addr.
23657
23658 2017-07-17  Tom de Vries  <tom@codesourcery.com>
23659
23660         PR target/81069
23661         * config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late
23662         as possible.
23663
23664 2017-07-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
23665
23666         * config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
23667         conditional builtin define __FIX_LEON3FT_B2BST.
23668
23669 2017-07-17  Daniel Cederman  <cederman@gaisler.com>
23670
23671         * config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace
23672         MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc
23673         with -mfix-ut700.
23674
23675 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
23676
23677         PR rtl-optimization/81424
23678         * optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg
23679         to remove potential trapping from operands if -fnon-call-exceptions.
23680
23681 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23682
23683         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use
23684         profile_proability for scalling.
23685         * scale_profile_for_vect_loop.c (scale_profile_for_vect_loop): Likewise.
23686
23687 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23688
23689         * cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup.
23690
23691 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23692
23693         * cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE
23694         fixpoint arithmetics.
23695
23696 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23697
23698         * tree-ssa-loop-unswitch.c (hoist_guard): Avoid use of REG_BR_PROB_BASE
23699         fixpoint arithmetics.
23700
23701 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23702
23703         * asan.c (create_cond_insert_point): Avoid use of REG_BR_PROB_BASE
23704         fixpoint arithmetics.
23705
23706 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23707
23708         * profile-count.h (profile_probability::from_reg_br_prob_note,
23709         profile_probability::to_reg_br_prob_note): New functions.
23710         * doc/rtl.texi (REG_BR_PROB_NOTE): Update documentation.
23711         * reg-notes.h (REG_BR_PROB, REG_BR_PRED): Update docs.
23712         * predict.c (probability_reliable_p): Update.
23713         (edge_probability_reliable_p): Update.
23714         (br_prob_note_reliable_p): Update.
23715         (invert_br_probabilities): Update.
23716         (add_reg_br_prob_note): New function.
23717         (combine_predictions_for_insn): Update.
23718         * asan.c (asan_clear_shadow): Update.
23719         * cfgbuild.c (compute_outgoing_frequencies): Update.
23720         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
23721         (update_br_prob_note): Update.
23722         (rtl_verify_edges): Update.
23723         (purge_dead_edges): Update.
23724         (fixup_reorder_chain): Update.
23725         * emit-rtl.c (try_split): Update.
23726         * ifcvt.c (cond_exec_process_insns): Update.
23727         (cond_exec_process_if_block): Update.
23728         (dead_or_predicable): Update.
23729         * internal-fn.c (expand_addsub_overflow): Update.
23730         (expand_neg_overflow): Update.
23731         (expand_mul_overflow): Update.
23732         * loop-doloop.c (doloop_modify): Update.
23733         * loop-unroll.c (compare_and_jump_seq): Update.
23734         * optabs.c (emit_cmp_and_jump_insn_1): Update.
23735         * predict.h: Update.
23736         * reorg.c (mostly_true_jump): Update.
23737         * rtl.h: Update.
23738         * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Update.
23739         * config/alpha/alpha.c (emit_unlikely_jump): Update.
23740         * config/arc/arc.c: (emit_unlikely_jump): Update.
23741         * config/arm/arm.c: (emit_unlikely_jump): Update.
23742         * config/bfin/bfin.c (cbranch_predicted_taken_p): Update.
23743         * config/frv/frv.c (frv_print_operand_jump_hint): Update.
23744         * config/i386/i386.c (ix86_expand_split_stack_prologue): Update.
23745         (ix86_print_operand): Update.
23746         (ix86_split_fp_branch): Update.
23747         (predict_jump): Update.
23748         * config/ia64/ia64.c (ia64_print_operand): Update.
23749         * config/mmix/mmix.c (mmix_print_operand): Update.
23750         * config/powerpcspe/powerpcspe.c (output_cbranch): Update.
23751         (rs6000_expand_split_stack_prologue): Update.
23752         * config/rs6000/rs6000.c: Update.
23753         * config/s390/s390.c (s390_expand_vec_strlen): Update.
23754         (s390_expand_vec_movstr): Update.
23755         (s390_expand_cs_tdsi): Update.
23756         (s390_expand_split_stack_prologue): Update.
23757         * config/sh/sh.c (sh_print_operand): Update.
23758         (expand_cbranchsi4): Update.
23759         (expand_cbranchdi4): Update.
23760         * config/sparc/sparc.c (output_v9branch): Update.
23761         * config/spu/spu.c (get_branch_target): Update.
23762         (ea_load_store_inline): Update.
23763         * config/tilegx/tilegx.c (cbranch_predicted_p): Update.
23764         * config/tilepro/tilepro.c: Update.
23765
23766 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
23767
23768         * gimplify.c (mostly_copy_tree_r): Revert latest change.
23769         (gimplify_save_expr): Likewise.
23770
23771 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23772
23773         * ipa-visibility.c (function_and_variable_visibility): Fix pasto.
23774
23775 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23776
23777         * ipa-fnsummary.c (pass_data_ipa_fn_summary): Use
23778         TV_IPA_FNSUMMARY.
23779         * timevar.def (TV_IPA_FNSUMMARY): Define.
23780
23781 2017-07-16  Daniel Cederman  <cederman@gaisler.com>
23782
23783         * config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
23784         to back store errata sensitive sequence from being generated.
23785         (sqrtdf2_fix): Likewise.
23786
23787 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23788
23789         * tree-ssa-threadupdate.c (compute_path_counts,
23790         update_joiner_offpath_counts): Use profile_probability.
23791
23792 2017-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23793
23794         Revert:
23795         2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23796
23797         * config/arm/arm-c.c (arm_cpu_builtins): Define
23798         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
23799
23800 2017-07-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
23801
23802         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23803         array entries to represent __ieee128 versions of the
23804         scalar_test_data_class, scalar_test_neg, scalar_extract_exp,
23805         scalar_extract_sig, and scalar_insert_exp built-in functions.
23806         (altivec_resolve_overloaded_builtin): Add special case handling
23807         for the __builtin_scalar_insert_exp function, as represented by
23808         the P9V_BUILTIN_VEC_VSIEDP constant.
23809         * config/rs6000/rs6000-builtin.def (VSEEQP): Add scalar extract
23810         exponent support for __ieee128 argument.
23811         (VSESQP): Add scalar extract signature support for __ieee128
23812         argument.
23813         (VSTDCNQP): Add scalar test negative support for __ieee128
23814         argument.
23815         (VSIEQP): Add scalar insert exponent support for __int128 argument
23816         with __ieee128 result.
23817         (VSIEQPF): Add scalar insert exponent support for __ieee128
23818         argument with __ieee128 result.
23819         (VSTDCQP): Add scalar test data class support for __ieee128
23820         argument.
23821         (VSTDCNQP): Add overload support for scalar test negative with
23822         __ieee128 argument.
23823         (VSTDCQP): Add overload support for scalar test data class
23824         __ieee128 argument.
23825         * config/rs6000/vsx.md (UNSPEC_VSX_SXSIG) Replace
23826         UNSPEC_VSX_SXSIGDP.
23827         (UNSPEC_VSX_SIEXPQP): New constant.
23828         (xsxexpqp): New insn for VSX scalar extract exponent quad
23829         precision.
23830         (xsxsigqp): New insn for VSX scalar extract significand quad
23831         precision.
23832         (xsiexpqpf): New insn for VSX scalar insert exponent quad
23833         precision with floating point argument.
23834         (xststdcqp): New expand for VSX scalar test data class quad
23835         precision.
23836         (xststdcnegqp): New expand for VSX scalar test negative quad
23837         precision.
23838         (xststdcqp): New insn to match expansions for VSX scalar test data
23839         class quad precision and VSX scalar test negative quad precision.
23840         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
23841         special case operand checking to enforce that second operand of
23842         VSX scalar test data class with quad precision argument is a 7-bit
23843         unsigned literal.
23844         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
23845         prototypes and descriptions of __ieee128 versions of
23846         scalar_extract_exp, scalar_extract_sig, scalar_insert_exp,
23847         scalar_test_data_class, and scalar_test_neg built-in functions.
23848
23849 2016-07-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
23850
23851         PR tree-optimization/81162
23852         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't
23853         replace a negate with an add.
23854
23855 2017-07-14  James Greenhalgh  <james.greenhalgh@arm.com>
23856
23857         * doc/invoke.texi (arm/-mcpu): Document +crypto.
23858
23859 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23860
23861         * config/arm/arm-c.c (arm_cpu_builtins): Define
23862         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
23863
23864 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23865
23866         * config/arm/arm-cpus.in (cortex-r52): Add new entry.
23867         (armv8-r): Set ARM Cortex-R52 as default CPU.
23868         * config/arm/arm-tables.opt: Regenerate.
23869         * config/arm/arm-tune.md: Regenerate.
23870         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
23871         Cortex-R52.
23872         * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
23873         extension for -mcpu=cortex-r52.
23874
23875 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23876
23877         * config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator.
23878         (ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32.
23879         * config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5.
23880         (fp-armv8): Define it as FP_ARMv8 only.
23881         config/arm/arm.h (TARGET_FPU_ARMV8): Delete.
23882         (TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than
23883         TARGET_FPU_ARMV8.
23884         config/arm/arm.c (arm_rtx_costs_internal): Replace checks against
23885         TARGET_FPU_ARMV8 by checks against TARGET_VFP5.
23886         * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define
23887         first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather
23888         than TARGET_FPU_ARMV8.
23889         * config/arm/arm-c.c (arm_cpu_builtins): Likewise for
23890         __ARM_FEATURE_NUMERIC_MAXMIN macro definition.
23891         * config/arm/arm.md (cmov<mode>): Condition on TARGET_VFP5 rather than
23892         TARGET_FPU_ARMV8.
23893         * config/arm/neon.md (neon_vrint): Likewise.
23894         (neon_vcvt): Likewise.
23895         (neon_<fmaxmin_op><mode>): Likewise.
23896         (<fmaxmin><mode>3): Likewise.
23897         * config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Likewise.
23898         * config/arm/predicates.md (arm_cond_move_operator): Check against
23899         TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing.
23900
23901 2017-07-14  Jackson Woodruff  <jackson.woodruff@arm.com>
23902
23903         * config/aarch64/aarch64.c (aarch64_print_operand): Move comments
23904         to top of function.
23905
23906 2017-07-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23907
23908         * gimple-ssa-store-merging.c (clear_bit_region): Replace reference to
23909         loop in comment with memset.
23910
23911 2017-07-14  Martin Liska  <mliska@suse.cz>
23912
23913         * cfgexpand.c (expand_gimple_basic_block): Remove dead comment.
23914         * dwarf2out.c (is_java): Remove the function.
23915         (output_pubname): Remove usage of the function.
23916         (lower_bound_default): Remove usage of DW_LANG_Java.
23917         (gen_compile_unit_die): Likewise.
23918         * gcc.c: Remove compiler defaults for .java and .zip files.
23919         * gimple-expr.c (remove_suffix): Change as there's no longer
23920         extension than 4-letter one.
23921         * gimplify.c (mostly_copy_tree_r): Remove Java-special part.
23922         (gimplify_save_expr): Likewise.
23923         * ipa-utils.h (polymorphic_type_binfo_p): Remove the comment
23924         as it's possible even for other languages than Java.
23925         * langhooks.h (struct lang_hooks): Remove Java from a comment.
23926         * lto-opts.c (lto_write_options): Remove reference to Java.
23927         * opts.c (strip_off_ending): Update file extension handling.
23928         * tree-cfg.c (verify_gimple_call): Remove comment with Java.
23929         * tree-eh.c (lower_resx): Likewise.
23930         * tree.c (free_lang_data_in_type): Remove dead code.
23931         (find_decls_types_r): Likewise.
23932         (build_common_builtin_nodes): Remove Java from a comment.
23933         (verify_type): Remove dead code.
23934         * varasm.c (assemble_external): Remove Java from a comment.
23935
23936 2017-07-14  Martin Liska  <mliska@suse.cz>
23937
23938         * opts.c (finish_options): Add quotes.
23939         (common_handle_option): Likewise.
23940
23941 2017-07-14  Martin Liska  <mliska@suse.cz>
23942
23943         * dbxout.c (get_lang_number): Do not handle GNU Pascal.
23944         * dbxout.h (extern void dbxout_stab_value_internal_label_diff):
23945         Remove N_SO_PASCAL.
23946         * dwarf2out.c (lower_bound_default): Do not handle
23947         DW_LANG_Pascal83.
23948         (gen_compile_unit_die): Likewise.
23949         * gcc.c: Remove default extension binding for GNU Pascal.
23950         * stmt.c: Remove Pascal language from a comment.
23951         * xcoffout.c: Likewise.
23952
23953 2017-07-13  David Malcolm  <dmalcolm@redhat.com>
23954
23955         PR c/81405
23956         * diagnostic-show-locus.c (fixit_cmp): New function.
23957         (layout::layout): Sort m_fixit_hints.
23958         (column_range::column_range): Assert that the values are valid.
23959         (struct char_span): New struct.
23960         (correction::overwrite): New method.
23961         (struct source_line): New struct.
23962         (line_corrections::add_hint): Add assertions.  Reimplement memcpy
23963         calls in terms of classes source_line and char_span, and
23964         correction::overwrite.
23965         (selftest::test_overlapped_fixit_printing_2): New function.
23966         (selftest::diagnostic_show_locus_c_tests): Call it.
23967
23968 2017-07-13  Will Schmidt  <will_schmidt@vnet.ibm.com>
23969
23970         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Return
23971         early if there is no lhs.
23972
23973 2017-07-13  Martin Liska  <mliska@suse.cz>
23974
23975         * dwarf2out.c (gen_pointer_type_die): Remove dead code.
23976         (gen_reference_type_die): Likewise.
23977         * stor-layout.c: Remove Pascal-related comment.
23978
23979 2017-07-13  Martin Liska  <mliska@suse.cz>
23980
23981         * opts.c (finish_options): Add quotes to error messages.
23982         (parse_sanitizer_options): Likewise.
23983
23984 2017-07-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23985
23986         * doc/invoke.texi (armv8-r): Document +fp.sp ARMv8-R extension.
23987
23988 2017-07-13  Richard Earnshaw  <rearnsha@arm.com>
23989
23990         * config/arm/vxworks.h (TARGET_ENDIAN_DEFAULT): Define.
23991
23992 2017-07-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
23993
23994         * asan.c (asan_emit_allocas_unpoison): Use ptr_mode for arguments
23995         during expansion.
23996         * builtins.c (expand_asan_emit_allocas_unpoison): Likewise.
23997
23998 2017-07-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
23999
24000         PR target/81193
24001         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC
24002         provides the hardware capability bits, define the macro
24003         __BUILTIN_CPU_SUPPORTS__.
24004         * config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning
24005         if GLIBC does not provide the hardware capability bits.  Add a
24006         gcc_unreachable call if the built-in cpu function is neither
24007         __builtin_cpu_is nor __builtin_cpu_supports.
24008         (rs6000_get_function_versions_dispatcher): Change the warning
24009         that an old GLIBC is used which does not export the capability
24010         bits to be an error.
24011         * doc/extend.texi (target_clones attribute): Document the
24012         restriction that GLIBC 2.23 or newer is needed on the PowerPC.
24013         (PowerPC built-in functions): Document that GLIBC 2.23 or newer is
24014         needed by __builtin_cpu_is and __builtin_cpu_supports.  Document
24015         the macros defined by GCC if the newer GLIBC is available.
24016
24017 2017-07-12  Jeff Law  <law@redhat.com>
24018
24019         * config/riscv/riscv.c: Remove unnecessary includes.  Reorder
24020         remaining includes slightly.
24021         * config/riscv/riscv-builtins.c: Include profile-count.h.
24022
24023 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
24024
24025         PR target/79883
24026         * config/avr/avr.c (avr_set_current_function): In diagnostic
24027         messages: Quote keywords and (parts of) identifiers.
24028         [WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or
24029         "INTERUPT".
24030
24031 2017-07-12  Carl Love  <cel@us.ibm.com>
24032
24033         * config/rs6000/rs6000-c.c: Add support for built-in functions
24034         vector bool char vec_revb (vector bool char);
24035         vector bool short vec_revb (vector short char);
24036         vector bool int vec_revb (vector bool int);
24037         vector bool long long vec_revb (vector bool long long);
24038         * doc/extend.texi: Update the built-in documentation file for the
24039         new built-in functions.
24040
24041 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
24042
24043         * config/s390/s390.md: Remove movcc splitter.
24044
24045 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
24046
24047         * config/s390/s390.c (s390_rtx_costs): Return proper costs for
24048         load/store on condition.
24049
24050 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
24051
24052         PR target/81407
24053         * config/avr/avr.c (avr_encode_section_info)
24054         [progmem && !TREE_READONLY]: Error if progmem object needs
24055         constructing.
24056
24057 2017-07-11  Michael Collison  <michael.collison@arm.com>
24058
24059         * config/aarch64/aarch64-simd.md (aarch64_sub<mode>_compare0):
24060         New pattern.
24061
24062 2017-07-11  Carl Love  <cel@us.ibm.com>
24063
24064         * config/rs6000/rs6000-c.c: Add support for builtins
24065         vector unsigned int vec_parity_lsbb (vector signed int);
24066         vector unsigned int vec_parity_lsbb (vector unsigned int);
24067         vector unsigned __int128 vec_parity_lsbb (vector signed __int128);
24068         vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128);
24069         vector unsigned long long vec_parity_lsbb (vector signed long long);
24070         vector unsigned long long vec_parity_lsbb (vector unsigned long long);
24071         * config/rs6000/rs6000-builtin.def (VPARITY_LSBB): Add BU_P9V_OVERLOAD1.
24072         * config/rs6000/altivec.h (vec_parity_lsbb): Add define.
24073         * doc/extend.texi: Update the built-in documentation file for the
24074         new built-in functions.
24075
24076 2017-07-11  David Malcolm  <dmalcolm@redhat.com>
24077
24078         * diagnostic-show-locus.c: Include "gcc-rich-location.h".
24079         (layout::m_primary_loc): New field.
24080         (layout::layout): Initialize new field.  Move location filtering
24081         logic from here to...
24082         (layout::maybe_add_location_range): ...this new method.  Add
24083         support for filtering to just the lines already specified by other
24084         locations.
24085         (layout::will_show_line_p): New method.
24086         (gcc_rich_location::add_location_if_nearby): New method.
24087         (selftest::test_add_location_if_nearby): New test function.
24088         (selftest::diagnostic_show_locus_c_tests): Call it.
24089         * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
24090         New method.
24091
24092 2017-07-11  Tom de Vries  <tom@codesourcery.com>
24093
24094         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG): New macro.
24095         (bb_first_real_insn): New function.
24096         (nvptx_single): Add extra initialization of broadcasted condition
24097         variables.
24098
24099 2017-07-11  Nathan Sidwell  <nathan@acm.org>
24100
24101         * dwarf2out.c (gen_member_die): Remove useless check for anon ctors.
24102
24103 2017-07-11  Georg-Johann Lay  <avr@gjlay.de>
24104
24105         * doc/extend.texi (AVR Function Attributes): Remove weblink to
24106         Binutils doc as TEXI will mess them up.
24107         * doc/invoke.texi (AVR Options): Same here.
24108
24109 2017-07-11  Daniel Cederman  <cederman@gaisler.com>
24110
24111         * config/sparc/sparc.opt (mfix-ut700): New option.
24112         (mfix-gr712rc): Likewise.
24113         (sparc_fix_b2bst): New variable.
24114         * doc/invoke.texi (SPARC options): Document them.
24115         (ARM options): Fix warnings.
24116         * config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP
24117         instructions to prevent sequences that can trigger the store-store
24118         errata for certain LEON3FT processors.
24119         (pass_work_around_errata::gate): Also test sparc_fix_b2bst.
24120         (sparc_option_override): Set sparc_fix_b2bst appropriately.
24121         * config/sparc/sparc.md (fix_b2bst): New attribute.
24122         (in_branch_delay): Prevent stores in delay slot if fix_b2bst.
24123
24124 2017-07-10  Uros Bizjak  <ubizjak@gmail.com>
24125
24126         PR target/81375
24127         * config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH.
24128         (rcpps): Ditto.
24129         (*rsqrtsf2_sse): Ditto.
24130         (rsqrtsf2): Ditto.
24131         (div<mode>3): Macroize insn from divdf3 and divsf3
24132         using MODEF mode iterator.
24133
24134 2017-07-10  Martin Sebor  <msebor@redhat.com>
24135
24136         PR tree-optimization/80397
24137         * gimple-ssa-sprintf.c (format_integer): Use INTEGRAL_TYPE_P()
24138         instead of testing for equality to INTEGER_TYPE.
24139
24140 2017-07-10  Vineet Gupta <vgupta@synopsys.com>
24141
24142         * config.gcc: Remove uclibc from arc target spec.
24143
24144 2017-07-10  Claudiu Zissulescu  <claziss@synopsys.com>
24145
24146         * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Define.
24147
24148 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
24149
24150         PR lto/80838
24151         * lto-wrapper.c (remove_option): New function.
24152         (merge_and_complain): Merge PIC/PIE options more realistically.
24153
24154 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
24155
24156         Better ISR prologues by supporting GASes __gcc_isr pseudo insn.
24157
24158         PR target/20296
24159         PR target/81268
24160         * configure.ac [target=avr]: Add GAS check for -mgcc-isr.
24161         (HAVE_AS_AVR_MGCCISR_OPTION):  If so, AC_DEFINE it.
24162         * config.in: Regenerate.
24163         * configure: Regenerate.
24164         * doc/extend.texi (AVR Function Attributes) <no_gccisr>: Document it.
24165         * doc/invoke.texi (AVR Options) <-mgas-isr-prologues>: Document it.
24166         * config/avr/avr.opt (-mgas-isr-prologues): New option and...
24167         (TARGET_GASISR_PROLOGUES): ...target mask.
24168         * common/config/avr/avr-common.c
24169         (avr_option_optimization_table) [OPT_LEVELS_1_PLUS_NOT_DEBUG]:
24170         Set -mgas-isr-prologues.
24171         * config/avr/avr-passes.def (avr_pass_pre_proep): Add
24172         INSERT_PASS_BEFORE for it.
24173         * config/avr/avr-protos.h (make_avr_pass_pre_proep): New proto.
24174         * config/avr/avr.c (avr_option_override)
24175         [!HAVE_AS_AVR_MGCCISR_OPTION]: Unset TARGET_GASISR_PROLOGUES.
24176         (avr_no_gccisr_function_p, avr_hregs_split_reg): New static functions.
24177         (avr_attribute_table) <no_gccisr>: Add new function attribute.
24178         (avr_set_current_function) <is_no_gccisr>: Init machine field.
24179         (avr_pass_data_pre_proep, avr_pass_pre_proep): New pass data
24180         and rtl_opt_pass.
24181         (make_avr_pass_pre_proep): New function.
24182         (emit_push_sfr) <treg>: Add argument to function and use it
24183         instead of TMP_REG.
24184         (avr_expand_prologue) [machine->gasisr.maybe]: Emit gasisr insn
24185         and set machine->gasisr.yes.
24186         (avr_expand_epilogue) [machine->gasisr.yes]: Similar.
24187         (avr_asm_function_end_prologue) [machine->gasisr.yes]: Add
24188         __gcc_isr.n_pushed to .L__stack_usage.
24189         (TARGET_ASM_FINAL_POSTSCAN_INSN): Define to...
24190         (avr_asm_final_postscan_insn): ...this new static function.
24191         * config/avr/avr.h (machine_function)
24192         <is_no_gccisr, use_L__stack_usage>: New fields.
24193         <gasisr, gasisr.yes, gasisr.maybe, gasisr.regno>: New fields.
24194         * config/avr/avr.md (UNSPECV_GASISR): Add unspecv enum.
24195         (GASISR_Prologue, GASISR_Epilogue, GASISR_Done): New define_constants.
24196         (gasisr, *gasisr): New expander and insn.
24197         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
24198         [HAVE_AS_AVR_MGCCISR_OPTION]: Print asm_gccisr spec.
24199         * config/avr/specs.h (ASM_SPEC) <asm_gccisr>: Add sub spec.
24200
24201 2017-07-10  Richard Earnshaw  <rearnsha@arm.com>
24202
24203         * config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes
24204         in quoted strings.
24205
24206 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
24207
24208         Move jump-tables out of .text again.
24209
24210         PR target/81075
24211         * config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function.
24212         (ASM_OUTPUT_ADDR_VEC): New function.
24213         (avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0.
24214         (avr_final_prescan_insn) [avr_log.insn_addresses]: Dump
24215         INSN_ADDRESSes as asm comment.
24216         * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment.
24217         (ASM_OUTPUT_ADDR_VEC_ELT): Remove define.
24218         (ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec.
24219         * config/avr/avr.md (*tablejump): Adjust comment.
24220         * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove.
24221         * config/avr/avr-log.c (avr_log_set_avr_log) <insn_addresses>:
24222         New detail.
24223         * config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto.
24224         (avr_output_addr_vec): New proto.
24225         (avr_log_t) <insn_addresses>: New field.
24226
24227 2017-07-09  H.J. Lu  <hongjiu.lu@intel.com>
24228
24229         PR target/81313
24230         * config/i386/i386.c (ix86_function_arg_advance): Set
24231         outgoing_args_on_stack to true if there are outgoing arguments
24232         on stack.
24233         (ix86_function_arg): Likewise.
24234         (ix86_get_drap_rtx): Use DRAP only if there are outgoing
24235         arguments on stack and ACCUMULATE_OUTGOING_ARGS is false.
24236         * config/i386/i386.h (machine_function): Add
24237         outgoing_args_on_stack.
24238
24239 2017-07-09  Krister Walfridsson  <krister.walfridsson@gmail.com>
24240
24241         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
24242         supporting pthreds.
24243         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always enable pthreads.
24244
24245 2017-07-08  Richard Sandiford  <richard.sandiford@linaro.org>
24246
24247         * Makefile.in (HOOKS_H, RTL_BASE_H, FUNCTION_H, EXPR_H, REGS_H)
24248         (REAL_H): Remove $(MACHMODE_H).
24249         (FIXED_VALUE_H, TREE_CORE_H, CFGLOOP_H): Remove $(MACHMODE_H) and
24250         double-int.h.
24251         (CORETYPES_H): Add signop.h, wide-int.h, wide-int-print.h,
24252         $(MACHMODE_H) and double-int.h.
24253         (build/min-insn-modes.o): Depend on $(CORETYPES_H) rather than
24254         $(MACHMODE_H).
24255         (gengtype-state.o, gengtype.o, build/gengtype.o): Don't depend on
24256         double-int.h.
24257
24258 2017-07-07  Andrew Pinski  <apinski@cavium.com>
24259
24260         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Check
24261         prev_set and curr_set for AARCH64_FUSE_ALU_BRANCH.
24262
24263 2017-07-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
24264
24265         * config/rs6000/rs6000.c (rs6000_get_function_versions_dispatcher):
24266         Add warning if GCC was not configured to link against a GLIBC that
24267         exports the hardware capability bits.
24268         (make_resolver_func): Make resolver function private and not a
24269         COMDAT function.  Create the name with clone_function_name instead
24270         of make_unique_name.
24271
24272         PR target/81348
24273         * config/rs6000/rs6000.md (HI sign_extend splitter): Use the
24274         correct operand in doing the split.
24275
24276 2017-07-07 Carl Love  <cel@us.ibm.com>
24277
24278         * config/rs6000/rs6000-c: Add support for built-in function
24279         vector unsigned short vec_pack_to_short_fp32 (vector float,
24280                                                       vector float).
24281         * config/rs6000/rs6000-builtin.def (CONVERT_4F32_8I16): Add
24282         BU_P9V_AV_2 and BU_P9V_OVERLOAD_2 definitions.
24283         * config/rs6000/altivec.h (vec_pack_to_short_fp32): Add define.
24284         * config/rs6000/altivec.md(UNSPEC_CONVERT_4F32_8I16): Add UNSPEC.
24285         (convert_4f32_8i16): Add define_expand.
24286         * doc/extend.texi: Update the built-in documentation file for the
24287         new built-in function.
24288
24289 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24290
24291         * config/sparc/m8.md: New file.
24292         * config/sparc/sparc.md: Include m8.md.
24293
24294 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24295
24296         * config/sparc/sparc.opt: New option -mvis4b.
24297         * config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B.
24298         (sparc_option_override): Handle VIS4B.
24299         (enum sparc_builtins): Define
24300         SPARC_BUILTIN_DICTUNPACK{8,16,32},
24301         SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL,
24302         SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL,
24303         SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and
24304         SPARC_BUILTIN_FPCMPUR{8,16,32}SHL.
24305         (check_constant_argument): New function.
24306         (sparc_vis_init_builtins): Define builtins
24307         __builtin_vis_dictunpack{8,16,32},
24308         __builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl,
24309         __builtin_vis_fpcmpu{le,gt}{8,16,32}shl,
24310         __builtin_vis_fpcmpde{8,16,32}shl and
24311         __builtin_vis_fpcmpur{8,16,32}shl.
24312         (sparc_expand_builtin): Check that the constant operands to
24313         __builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed
24314         constant and in range.
24315         * config/sparc/sparc-c.c (sparc_target_macros): Handle
24316         TARGET_VIS4B.
24317         * config/sparc/sparc.h (SPARC_IMM2_P): Define.
24318         (SPARC_IMM5_P): Likewise.
24319         * config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b".
24320         (enabled): Handle vis4b.
24321         (UNSPEC_DICTUNPACK): New unspec.
24322         (UNSPEC_FPCMPSHL): Likewise.
24323         (UNSPEC_FPUCMPSHL): Likewise.
24324         (UNSPEC_FPCMPDESHL): Likewise.
24325         (UNSPEC_FPCMPURSHL): Likewise.
24326         (cpu_feature): New CPU feature `vis4b'.
24327         (dictunpack{8,16,32}): New insns.
24328         (FPCSMODE): New mode iterator.
24329         (fpcscond): New code iterator.
24330         (fpcsucond): Likewise.
24331         (fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns.
24332         (fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise.
24333         (fpcmpde{8,16,32}{si,di}shl): Likewise.
24334         (fpcmpur{8,16,32}{si,di}shl): Likewise.
24335         * config/sparc/constraints.md: Define constraints `q' for unsigned
24336         2-bit integer constants and `t' for unsigned 5-bit integer
24337         constants.
24338         * config/sparc/predicates.md (imm5_operand_dictunpack8): New
24339         predicate.
24340         (imm5_operand_dictunpack16): Likewise.
24341         (imm5_operand_dictunpack32): Likewise.
24342         (imm2_operand): Likewise.
24343         * doc/invoke.texi (SPARC Options): Document -mvis4b.
24344         * doc/extend.texi (SPARC VIS Built-in Functions): Document the
24345         ditunpack* and fpcmp*shl builtins.
24346
24347 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24348
24349         * config.gcc: Handle m8 in --with-{cpu,tune} options.
24350         * config.in: Add HAVE_AS_SPARC6 define.
24351         * config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC
24352         M8.
24353         * config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for
24354         TARGET_CPU_m8.
24355         (ASM_CPU32_DEFAUILT_SPEC): Likewise.
24356         (CPP_CPU_SPEC): Handle m8.
24357         (ASM_CPU_SPEC): Likewise.
24358         * config/sparc/sparc-opts.h (enum processor_type): Add
24359         PROCESSOR_M8.
24360         * config/sparc/sparc.c (m8_costs): New struct.
24361         (sparc_option_override): Handle TARGET_CPU_m8.
24362         (sparc32_initialize_trampoline): Likewise.
24363         (sparc64_initialize_trampoline): Likewise.
24364         (sparc_issue_rate): Likewise.
24365         (sparc_register_move_cost): Likewise.
24366         * config/sparc/sparc.h (TARGET_CPU_m8): Define.
24367         (CPP_CPU64_DEFAULT_SPEC): Define for M8.
24368         (ASM_CPU64_DEFAULT_SPEC): Likewise.
24369         (CPP_CPU_SPEC): Handle M8.
24370         (ASM_CPU_SPEC): Likewise.
24371         (AS_M8_FLAG): Define.
24372         * config/sparc/sparc.md: Add m8 to the cpu attribute.
24373         * config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets.
24374         * configure.ac (HAVE_AS_SPARC6): Check for assembler support for
24375         M8 instructions.
24376         * configure: Regenerate.
24377         * doc/invoke.texi (SPARC Options): Document -mcpu=m8 and
24378         -mtune=m8.
24379
24380 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24381
24382         * config/sparc/niagara7.md: Rework the DFA scheduler to use insn
24383         subtypes.
24384         * config/sparc/sparc.md: Remove the `v3pipe' insn attribute.
24385         ("*movdi_insn_sp32"): Do not set v3pipe.
24386         ("*movsi_insn"): Likewise.
24387         ("*movdi_insn_sp64"): Likewise.
24388         ("*movsf_insn"): Likewise.
24389         ("*movdf_insn_sp32"): Likewise.
24390         ("*movdf_insn_sp64"): Likewise.
24391         ("*zero_extendsidi2_insn_sp64"): Likewise.
24392         ("*sign_extendsidi2_insn"): Likewise.
24393         ("*mov<VM32:mode>_insn"): Likewise.
24394         ("*mov<VM64:mode>_insn_sp64"): Likewise.
24395         ("*mov<VM64:mode>_insn_sp32"): Likewise.
24396         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
24397         ("<vlop:code><VL:mode>3"): Likewise.
24398         ("*not_<vlop:code><VL:mode>3"): Likewise.
24399         ("*nand<VL:mode>_vis"): Likewise.
24400         ("*<vlnotop:code>_not1<VL:mode>_vis"): Likewise.
24401         ("*<vlnotop:code>_not2<VL:mode>_vis"): Likewise.
24402         ("one_cmpl<VL:mode>2"): Likewise.
24403         ("faligndata<VM64:mode>_vis"): Likewise.
24404         ("alignaddrsi_vis"): Likewise.
24405         ("alignaddrdi_vis"): Likweise.
24406         ("alignaddrlsi_vis"): Likewise.
24407         ("alignaddrldi_vis"): Likewise.
24408         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
24409         ("bmaskdi_vis"): Likewise.
24410         ("bmasksi_vis"): Likewise.
24411         ("bshuffle<VM64:mode>_vis"): Likewise.
24412         ("cmask8<P:mode>_vis"): Likewise.
24413         ("cmask16<P:mode>_vis"): Likewise.
24414         ("cmask32<P:mode>_vis"): Likewise.
24415         ("pdistn<P:mode>_vis"): Likewise.
24416         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
24417
24418 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24419
24420         * config/sparc/sparc.md ("subtype"): New insn attribute.
24421         ("*wrgsr_sp64"): Set insn subtype.
24422         ("*rdgsr_sp64"): Likewise.
24423         ("alignaddrsi_vis"): Likewise.
24424         ("alignaddrdi_vis"): Likewise.
24425         ("alignaddrlsi_vis"): Likewise.
24426         ("alignaddrldi_vis"): Likewise.
24427         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
24428         ("fexpand_vis"): Likewise.
24429         ("fpmerge_vis"): Likewise.
24430         ("faligndata<VM64:mode>_vis"): Likewise.
24431         ("bshuffle<VM64:mode>_vis"): Likewise.
24432         ("cmask8<P:mode>_vis"): Likewise.
24433         ("cmask16<P:mode>_vis"): Likewise.
24434         ("cmask32<P:mode>_vis"): Likewise.
24435         ("fchksm16_vis"): Likewise.
24436         ("v<vis3_shift_patname><GCM:mode>3"): Likewise.
24437         ("fmean16_vis"): Likewise.
24438         ("fp<plusminus_insn>64_vis"): Likewise.
24439         ("<plusminus_insn>v8qi3"): Likewise.
24440         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
24441         ("<vis4_minmax_patname><VMMAX:mode>3"): Likewise.
24442         ("<vis4_uminmax_patname><VMMAX:mode>3"): Likewise.
24443         ("<vis3_addsub_ss_patname>v8qi3"): Likewise.
24444         ("<vis4_addsub_us_patname><VAUS:mode>3"): Likewise.
24445         ("*movqi_insn"): Likewise.
24446         ("*movhi_insn"): Likewise.
24447         ("*movsi_insn"): Likewise.
24448         ("movsi_pic_gotdata_op"): Likewise.
24449         ("*movdi_insn_sp32"): Likewise.
24450         ("*movdi_insn_sp64"): Likewise.
24451         ("movdi_pic_gotdata_op"): Likewise.
24452         ("*movsf_insn"): Likewise.
24453         ("*movdf_insn_sp32"): Likewise.
24454         ("*movdf_insn_sp64"): Likewise.
24455         ("*zero_extendhisi2_insn"): Likewise.
24456         ("*zero_extendqihi2_insn"): Likewise.
24457         ("*zero_extendqisi2_insn"): Likewise.
24458         ("*zero_extendqidi2_insn"): Likewise.
24459         ("*zero_extendhidi2_insn"): Likewise.
24460         ("*zero_extendsidi2_insn_sp64"): Likewise.
24461         ("ldfsr"): Likewise.
24462         ("prefetch_64"): Likewise.
24463         ("prefetch_32"): Likewise.
24464         ("tie_ld32"): Likewise.
24465         ("tie_ld64"): Likewise.
24466         ("*tldo_ldub_sp32"): Likewise.
24467         ("*tldo_ldub1_sp32"): Likewise.
24468         ("*tldo_ldub2_sp32"): Likewise.
24469         ("*tldo_ldub_sp64"): Likewise.
24470         ("*tldo_ldub1_sp64"): Likewise.
24471         ("*tldo_ldub2_sp64"): Likewise.
24472         ("*tldo_ldub3_sp64"): Likewise.
24473         ("*tldo_lduh_sp32"): Likewise.
24474         ("*tldo_lduh1_sp32"): Likewise.
24475         ("*tldo_lduh_sp64"): Likewise.
24476         ("*tldo_lduh1_sp64"): Likewise.
24477         ("*tldo_lduh2_sp64"): Likewise.
24478         ("*tldo_lduw_sp32"): Likewise.
24479         ("*tldo_lduw_sp64"): Likewise.
24480         ("*tldo_lduw1_sp64"): Likewise.
24481         ("*tldo_ldx_sp64"): Likewise.
24482         ("*mov<VM32:mode>_insn"): Likewise.
24483         ("*mov<VM64:mode>_insn_sp64"): Likewise.
24484         ("*mov<VM64:mode>_insn_sp32"): Likewise.
24485
24486 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24487
24488         * config/sparc/sparc.md ("type"): New insn type viscmp.
24489         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Set insn type to
24490         viscmp.
24491         ("fpcmp<gcond:code>8<P:mode>_vis"): Likewise.
24492         ("fucmp<gcond:code>8<P:mode>_vis"): Likewise.
24493         ("fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
24494         * config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle
24495         viscmp.
24496         ("n7_vis_logical_11cycle"): Likewise.
24497         * config/sparc/niagara4.md ("n4_vis_logical"): Likewise.
24498         * config/sparc/niagara2.md ("niag3_vis": Likewise.
24499         * config/sparc/niagara.md ("niag_vis"): Likewise.
24500         * config/sparc/ultra3.md ("us3_fga"): Likewise.
24501         * config/sparc/ultra1_2.md ("us1_fga_double"): Likewise.
24502
24503 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24504
24505         * config/sparc/sparc.md: New instruction type `bmask'.
24506         (bmaskdi_vis): Use the `bmask' type.
24507         (bmasksi_vis): Likewise.
24508         * config/sparc/ultra3.md (us3_array): Likewise.
24509         * config/sparc/niagara7.md (n7_array): Likewise.
24510         * config/sparc/niagara4.md (n4_array): Likewise.
24511         * config/sparc/niagara2.md (niag2_vis): Likewise.
24512         (niag3_vis): Likewise.
24513         * config/sparc/niagara.md (niag_vis): Likewise.
24514
24515 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24516
24517         * ipa-comdats.c: Remove optimize check from gate.
24518         * ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary
24519         for functions not optimized.
24520         (ipa_fn_summary_read): Skip optimize check.
24521         (ipa_fn_summary_write): Likewise.
24522         * ipa-inline-analysis.c (do_estimate_growth_1): Check that caller
24523         is optimized.
24524         * ipa-inline.c (can_inline_edge_p): Not optimized functions are
24525         uninlinable.
24526         (can_inline_edge_p): Check flag_pcc_struct_return for match.
24527         (check_callers): Give up on caller which is not optimized.
24528         (inline_small_functions): Likewise.
24529         (ipa_inline): Do not give up when not optimizing.
24530         * ipa-visbility.c (function_and_variable_visibility): Do not optimize
24531         away unoptimizes cdtors.
24532         (whole_program_function_and_variable_visibility): Do
24533         ipa_discover_readonly_nonaddressable_vars in LTO mode.
24534         * ipa.c (process_references): Do not check optimize.
24535         (symbol_table::remove_unreachable_nodes): Update optimize check.
24536         (set_writeonly_bit): Update optimize check.
24537         (pass_ipa_cdtor_merge::gate): Do not check optimize.
24538         (pass_ipa_single_use::gate): Remove.
24539
24540 2017-07-06  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
24541
24542         * config/rs6000/rs6000.c (union_defs, union_uses, insn_is_load_p,
24543         insn_is_store_p, insn_is_swap_p, const_load_sequence_p, v2df_reduction_p,
24544         rtx_is_swappable_p, insn_is_swappable_p, chain_contains_only_swaps,
24545         mark_swaps_for_removal, swap_const_vector_halves, adjust_subreg_index,
24546         permute_load, permute_store, adjust_extract, adjust_splat,
24547         adjust_xxpermdi, adjust_concat, adjust_vperm, handle_special_swappables,
24548         replace_swap_with_copy, dump_swap_insn_table,
24549         alignment_with_canonical_addr, alignment_mask, find_alignment_op,
24550         recombine_lvx_pattern, recombine_stvx_pattern,
24551         recombine_lvx_stvx_patterns, rs6000_analyze_swaps,
24552         make_pass_analyze_swaps): Move all code related to p8 swap optimizations
24553         to file rs6000-p8swap.c.
24554         * config/rs6000/rs6000-p8swap.c: New file.
24555         * config/rs6000/t-rs6000: Add rule to build rs6000-p8swap.o.
24556         * config.gcc: Add rs6000-p8swap.o to extra_objs for powerpc*-*-*
24557         and rs6000*-*-* targets.
24558
24559 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24560
24561         * Makefile.in (selftest): Remove dependency on s-selftest-c++.
24562
24563 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24564
24565         * lto-wrapper.c (merge_and_complain): Do not merge
24566         fexceptions, fnon_call_exceptions, ftrapv, ffp_contract_, fmath_errno,
24567         fsigned_zeros, ftrapping_math, fwrapv.
24568         (append_compiler_options): Do not track these options.
24569         (append_linker_options): Likewie
24570
24571 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24572
24573         * cgraphunit.c (cgraph_node::finalize_function): When
24574         !flag_toplevel_reorde set no_reorder flag.
24575         (varpool_node::finalize_decl): Likewise.
24576         (symbol_table::compile): Drop no toplevel reorder path.
24577
24578 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24579
24580         * bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh
24581         edges; zero probability is not better than uninitialized.
24582
24583 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
24584
24585         * asan.h (asan_sanitize_allocas_p): Declare.
24586         * asan.c (asan_sanitize_allocas_p): New function.
24587         (handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p.
24588         (handle_builtin_alloca): Likewise.
24589         * cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff
24590         if !asan_sanitize_allocas_p.
24591         * params.def (asan-instrument-allocas): Add new option.
24592         * params.h (ASAN_PROTECT_ALLOCAS): Define.
24593         * opts.c (common_handle_option): Disable allocas sanitization for
24594         KASan by default.
24595
24596 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
24597
24598         * asan.c: Include gimple-fold.h.
24599         (get_last_alloca_addr): New function.
24600         (handle_builtin_stackrestore): Likewise.
24601         (handle_builtin_alloca): Likewise.
24602         (asan_emit_allocas_unpoison): Likewise.
24603         (get_mem_refs_of_builtin_call): Add new parameter, remove const
24604         quallifier from first paramerer. Handle BUILT_IN_ALLOCA,
24605         BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins.
24606         (instrument_builtin_call): Pass gimple iterator to
24607         get_mem_refs_of_builtin_call.
24608         (last_alloca_addr): New global.
24609         * asan.h (asan_emit_allocas_unpoison): Declare.
24610         * builtins.c (expand_asan_emit_allocas_unpoison): New function.
24611         (expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON.
24612         * cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison
24613         if function calls alloca.
24614         * gimple-fold.c (replace_call_with_value): Remove static keyword.
24615         * gimple-fold.h (replace_call_with_value): Declare.
24616         * internal-fn.c: Include asan.h.
24617         * sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON,
24618         BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins.
24619
24620 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24621
24622         * Makefile.in (SELFTEST_FLAGS): Drop "-x c", moving it to...
24623         (C_SELFTEST_FLAGS): New.
24624         (CPP_SELFTEST_FLAGS): New.
24625         (SELFTEST_DEPS): New, from deps of s-selftest.
24626         (C_SELFTEST_DEPS): New, from deps of s-selftest.
24627         (CPP_SELFTEST_DEPS): New.
24628         (selftest): Add dependency on s-selftest-c++.
24629         (s-selftest): Rename to...
24630         (s-selftest-c): ...this, moving deps to SELFTEST_DEPS
24631         and C_SELFTEST_DEPS, and using C_SELFTEST_FLAGS rather
24632         than SELFTEST_FLAGS.
24633         (selftest-gdb): Rename to...
24634         (selftest-c-gdb): ...this, using C_SELFTEST_DEPS and
24635         C_SELFTEST_FLAGS.
24636         (selftest-gdb): Reintroduce as an alias for selftest-c-gdb.
24637         (selftest-valgrind): Rename to...
24638         (selftest-c-valgrind): ...this, using C_SELFTEST_DEPS and
24639         C_SELFTEST_FLAGS.
24640         (selftest-valgrind): Reintroduce as an alias for
24641         selftest-c-valgrind.
24642         (s-selftest-c++): New.
24643         (selftest-c++-gdb): New.
24644         (selftest-c++-valgrind): New.
24645
24646 2017-07-06  Olivier Hainque  <hainque@adacore.com>
24647
24648         * gcc.c (process_command): When deciding if undefined variables
24649         should be ignored when processing specs, accept "gcc -v" as well.
24650
24651 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24652
24653         * auto-profile.c (afdo_set_bb_count, afdo_propagate_edge,
24654         afdo_annotate_cfg): Set counts/probabilities as determined by afdo.
24655
24656 2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
24657
24658         * config/arm/arm-cpus.in (armv8-r): Add new entry.
24659         * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
24660         * config/arm/arm-tables.opt: Regenerate.
24661         * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
24662         enumerator.
24663         * doc/invoke.texi: Mention -march=armv8-r and its extensions.
24664
24665 2017-07-06  Carl Love  <cel@us.ibm.com>
24666
24667         * ChangeLog: Clean up from mid air collision
24668
24669 2017-07-06  Carl Love  <cel@us.ibm.com>
24670
24671         * config/rs6000/rs6000-c.c: Add support for built-in functions
24672         vector signed int vec_subc (vector signed int, vector signed int);
24673         vector signed __int128 vec_subc (vector signed __int128,
24674                                          vector signed __int128);
24675         vector unsigned __int128 vec_subc (vector unsigned __int128,
24676                                            vector unsigned __int128);
24677         vector signed int vec_sube (vector signed int, vector signed int,
24678                                     vector signed int);
24679         vector unsigned int vec_sube (vector unsigned int,
24680                                       vector unsigned int,
24681                                       vector unsigned int);
24682         vector signed __int128 vec_sube (vector signed __int128,
24683                                          vector signed __int128,
24684                                          vector signed__int128);
24685         vector unsigned __int128 vec_sube (vector unsigned __int128,
24686                                            vector unsigned __int128,
24687                                            vector unsigned __int128);
24688         vector signed int vec_subec (vector signed int, vector signed int,
24689                                      vector signed int);
24690         vector unsigned int vec_subec (vector unsigned int,
24691                                        vector unsigned int,
24692                                        vector unsigned int);
24693         vector signed __int128 vec_subec (vector signed __int128,
24694                                           vector signed __int128,
24695                                           vector signed__int128);
24696         vector unsigned __int128 vec_subec (vector unsigned __int128,
24697                                             vector unsigned __int128,
24698                                             vector unsigned __int128);
24699         * config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE,
24700         ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins.
24701         * config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add
24702         BU_ALTIVEC_OVERLOAD_X definitions.
24703         * config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines.
24704         * doc/extend.texi: Update the built-in documentation file for the new
24705         built-in functions.
24706
24707 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24708
24709         PR c++/79300
24710         * diagnostic-show-locus.c (layout::layout): Use start and finish
24711         spelling location for the start and finish of each range.
24712         * genmatch.c (linemap_client_expand_location_to_spelling_point):
24713         Add unused aspect param.
24714         * input.c (expand_location_1): Add "aspect" param, and use it
24715         to access the correct part of the location.
24716         (expand_location): Pass LOCATION_ASPECT_CARET to new param of
24717         expand_location_1.
24718         (expand_location_to_spelling_point): Likewise.
24719         (linemap_client_expand_location_to_spelling_point): Add "aspect"
24720         param, and pass it to expand_location_1.
24721
24722 2017-07-06  Sebastian Peryt  <sebastian.peryt@intel.com>
24723
24724         * config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss,
24725         _mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd,
24726         _mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd,
24727         _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss,
24728         _mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss,
24729         _mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd,
24730         _mm_maskz_getmant_sd, _mm_mask_getmant_ss,
24731         _mm_maskz_getmant_ss): New intrinsics.
24732         (__builtin_ia32_getexpss128_mask): Changed to ...
24733         __builtin_ia32_getexpss128_round ... this.
24734         (__builtin_ia32_getexpsd128_mask): Changed to ...
24735         __builtin_ia32_getexpsd128_round ... this.
24736         * config/i386/i386-builtin-types.def
24737         ((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT),
24738         (V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases.
24739         * config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round,
24740         __builtin_ia32_getexpss_mask_round,     __builtin_ia32_getmantsd_mask_round,
24741         __builtin_ia32_getmantss_mask_round): New builtins.
24742         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT,
24743         V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types.
24744         (CODE_FOR_avx512f_vgetmantv2df_mask_round,
24745         CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases.
24746         * config/i386/sse.md
24747         (avx512f_sgetexp<mode><round_saeonly_name>): Changed to ...
24748         avx512f_sgetexp<mode><mask_scalar_name>
24749         <round_saeonly_scalar_name> ... this.
24750         (vgetexp<ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|
24751         %0, %1, %2<round_saeonly_op3>}): Changed to ...
24752         vgetexp<ssescalarmodesuffix>
24753         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24754         %0<mask_scalar_operand3>, %1, %2<round_saeonly_scalar_mask_op3>} ... this.
24755         (avx512f_vgetmant<mode><round_saeonly_name>): Changed to ...
24756         avx512f_vgetmant<mode><mask_scalar_name>
24757         <round_saeonly_scalar_name> ... this.
24758         (vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
24759         %0, %1, %2<round_saeonly_op4>, %3}): Changed to ...
24760         vgetmant<ssescalarmodesuffix>
24761         \t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>|
24762         %0<mask_scalar_operand4>, %1, %2
24763         <round_saeonly_scalar_mask_op4>, %3} ... this.
24764         * config/i386/subst.md (mask_scalar_operand4,
24765         round_saeonly_scalar_mask_operand4,     round_saeonly_scalar_mask_op4,
24766         round_saeonly_scalar_nimm_predicate): New subst attributes.
24767
24768 2017-07-06  Julia Koval  <julia.koval@intel.com>
24769
24770         * config/i386/i386.c (ix86_erase_embedded_rounding):
24771         Remove code for old rounding pattern.
24772
24773 2017-07-06  Richard Earnshaw  <rearnsha@arm.com>
24774
24775         * config/arm/t-arm (GTM_H): Add arm-cpu.h.
24776
24777 2017-07-06  Christophe Lyon  <christophe.lyon@linaro.org>
24778
24779         * doc/sourcebuild.texi (Test Directives, Variants of
24780         dg-require-support): Add documentation for dg-require-stack-check.
24781
24782 2017-07-05  Sebastian Peryt  <sebastian.peryt@intel.com>
24783
24784         * config/i386/subst.md (mask_scalar, round_scalar,
24785         round_saeonly_scalar): New meta-templates.
24786         (mask_scalar_name, mask_scalar_operand3, round_scalar_name,
24787         round_scalar_mask_operand3, round_scalar_mask_op3,
24788         round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
24789         round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
24790         round_saeonly_scalar_constraint,
24791         round_saeonly_scalar_prefix): New subst attribute.
24792         * config/i386/sse.md
24793         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
24794         <sse>_vm<plusminus_insn><mode>3<mask_scalar_name>
24795         <round_scalar_name> ... this.
24796         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
24797         <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name>
24798         <round_scalar_name> ... this.
24799         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
24800         <sse>_vm<code><mode>3<mask_scalar_name>
24801         <round_saeonly_scalar_name> ... this.
24802         (v<plusminus_mnemonic><ssescalarmodesuffix>
24803         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
24804         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
24805         v<plusminus_mnemonic><ssescalarmodesuffix>
24806         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24807         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
24808         (v<multdiv_mnemonic><ssescalarmodesuffix>
24809         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
24810         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
24811         v<multdiv_mnemonic><ssescalarmodesuffix>
24812         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24813         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
24814         (v<maxmin_float><ssescalarmodesuffix>
24815         \t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
24816         %0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
24817         v<maxmin_float><ssescalarmodesuffix>
24818         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24819         %0<mask_scalar_operand3>, %1, %<iptr>2
24820         <round_saeonly_scalar_mask_op3>} ... this.
24821
24822 2017-07-05  Richard Earnshaw  <rearnsha@arm.com>
24823
24824         * config/arm/arm.c (arm_fixed_condition_code_regs): New function.
24825         (TARGET_FIXED_CONDITION_CODE_REGS): Redefine.
24826
24827 2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
24828             Alan Hayward  <alan.hayward@arm.com>
24829             David Sherwood  <david.sherwood@arm.com>
24830
24831         * combine.c (simplify_if_then_else): Remove "enum" before
24832         "machine_mode".
24833         * compare-elim.c (can_eliminate_compare): Likewise.
24834         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
24835         Likewise.
24836         (aarch64_lookup_simd_builtin_type): Likewise.
24837         (aarch64_simd_builtin_type): Likewise.
24838         (aarch64_init_simd_builtin_types): Likewise.
24839         (aarch64_simd_expand_args): Likewise.
24840         * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist):
24841         Likewise.
24842         (aarch64_reverse_mask): Likewise.
24843         (aarch64_simd_emit_reg_reg_move): Likewise.
24844         (aarch64_gen_adjusted_ldpstp): Likewise.
24845         (aarch64_ccmp_mode_to_code): Likewise.
24846         (aarch64_operands_ok_for_ldpstp): Likewise.
24847         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
24848         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
24849         Likewise.
24850         (aarch64_min_divisions_for_recip_mul): Likewise.
24851         (aarch64_reassociation_width): Likewise.
24852         (aarch64_get_condition_code_1): Likewise.
24853         (aarch64_simd_emit_reg_reg_move): Likewise.
24854         (aarch64_simd_attr_length_rglist): Likewise.
24855         (aarch64_reverse_mask): Likewise.
24856         (aarch64_operands_ok_for_ldpstp): Likewise.
24857         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
24858         (aarch64_gen_adjusted_ldpstp): Likewise.
24859         * config/aarch64/cortex-a57-fma-steering.c (fma_node::rename):
24860         Likewise.
24861         * config/arc/arc.c (legitimate_offset_address_p): Likewise.
24862         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
24863         (arm_lookup_simd_builtin_type): Likewise.
24864         (arm_simd_builtin_type): Likewise.
24865         (arm_init_simd_builtin_types): Likewise.
24866         (arm_expand_builtin_args): Likewise.
24867         * config/arm/arm-protos.h (arm_expand_builtin): Likewise.
24868         * config/ft32/ft32.c (ft32_libcall_value): Likewise.
24869         (ft32_setup_incoming_varargs): Likewise.
24870         (ft32_function_arg): Likewise.
24871         (ft32_function_arg_advance): Likewise.
24872         (ft32_pass_by_reference): Likewise.
24873         (ft32_arg_partial_bytes): Likewise.
24874         (ft32_valid_pointer_mode): Likewise.
24875         (ft32_addr_space_pointer_mode): Likewise.
24876         (ft32_addr_space_legitimate_address_p): Likewise.
24877         * config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple):
24878         Likewise.
24879         * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
24880         (ix86_emit_outlined_ms2sysv_restore): Likewise.
24881         (iamcu_alignment): Likewise.
24882         (canonicalize_vector_int_perm): Likewise.
24883         (ix86_noce_conversion_profitable_p): Likewise.
24884         (ix86_mpx_bound_mode): Likewise.
24885         (ix86_operands_ok_for_move_multiple): Likewise.
24886         * config/microblaze/microblaze-protos.h
24887         (microblaze_expand_conditional_branch_reg): Likewise.
24888         * config/microblaze/microblaze.c
24889         (microblaze_expand_conditional_branch_reg): Likewise.
24890         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
24891         Likewise.
24892         (rs6000_reassociation_width): Likewise.
24893         (rs6000_invalid_binary_op): Likewise.
24894         (fusion_p9_p): Likewise.
24895         (emit_fusion_p9_load): Likewise.
24896         (emit_fusion_p9_store): Likewise.
24897         * config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p):
24898         Likewise.
24899         (riscv_hard_regno_mode_ok_p): Likewise.
24900         (riscv_address_insns): Likewise.
24901         (riscv_split_symbol): Likewise.
24902         (riscv_legitimize_move): Likewise.
24903         (riscv_function_value): Likewise.
24904         (riscv_hard_regno_nregs): Likewise.
24905         (riscv_expand_builtin): Likewise.
24906         * config/riscv/riscv.c (riscv_build_integer_1): Likewise.
24907         (riscv_build_integer): Likewise.
24908         (riscv_split_integer): Likewise.
24909         (riscv_legitimate_constant_p): Likewise.
24910         (riscv_cannot_force_const_mem): Likewise.
24911         (riscv_regno_mode_ok_for_base_p): Likewise.
24912         (riscv_valid_base_register_p): Likewise.
24913         (riscv_valid_offset_p): Likewise.
24914         (riscv_valid_lo_sum_p): Likewise.
24915         (riscv_classify_address): Likewise.
24916         (riscv_legitimate_address_p): Likewise.
24917         (riscv_address_insns): Likewise.
24918         (riscv_load_store_insns): Likewise.
24919         (riscv_force_binary): Likewise.
24920         (riscv_split_symbol): Likewise.
24921         (riscv_force_address): Likewise.
24922         (riscv_legitimize_address): Likewise.
24923         (riscv_move_integer): Likewise.
24924         (riscv_legitimize_const_move): Likewise.
24925         (riscv_legitimize_move): Likewise.
24926         (riscv_address_cost): Likewise.
24927         (riscv_subword): Likewise.
24928         (riscv_output_move): Likewise.
24929         (riscv_canonicalize_int_order_test): Likewise.
24930         (riscv_emit_int_order_test): Likewise.
24931         (riscv_function_arg_boundary): Likewise.
24932         (riscv_pass_mode_in_fpr_p): Likewise.
24933         (riscv_pass_fpr_single): Likewise.
24934         (riscv_pass_fpr_pair): Likewise.
24935         (riscv_get_arg_info): Likewise.
24936         (riscv_function_arg): Likewise.
24937         (riscv_function_arg_advance): Likewise.
24938         (riscv_arg_partial_bytes): Likewise.
24939         (riscv_function_value): Likewise.
24940         (riscv_pass_by_reference): Likewise.
24941         (riscv_setup_incoming_varargs): Likewise.
24942         (riscv_print_operand): Likewise.
24943         (riscv_elf_select_rtx_section): Likewise.
24944         (riscv_save_restore_reg): Likewise.
24945         (riscv_for_each_saved_reg): Likewise.
24946         (riscv_register_move_cost): Likewise.
24947         (riscv_hard_regno_mode_ok_p): Likewise.
24948         (riscv_hard_regno_nregs): Likewise.
24949         (riscv_class_max_nregs): Likewise.
24950         (riscv_memory_move_cost): Likewise.
24951         * config/rl78/rl78-protos.h (rl78_split_movsi): Likewise.
24952         * config/rl78/rl78.c (rl78_split_movsi): Likewise.
24953         (rl78_addr_space_address_mode): Likewise.
24954         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24955         Likewise.
24956         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
24957         (rs6000_reassociation_width): Likewise.
24958         (rs6000_invalid_binary_op): Likewise.
24959         (fusion_p9_p): Likewise.
24960         (emit_fusion_p9_load): Likewise.
24961         (emit_fusion_p9_store): Likewise.
24962         * config/visium/visium-protos.h (prepare_move_operands): Likewise.
24963         (ok_for_simple_move_operands): Likewise.
24964         (ok_for_simple_move_strict_operands): Likewise.
24965         (ok_for_simple_arith_logic_operands): Likewise.
24966         (visium_legitimize_reload_address): Likewise.
24967         (visium_select_cc_mode): Likewise.
24968         (output_cbranch): Likewise.
24969         (visium_split_double_move): Likewise.
24970         (visium_expand_copysign): Likewise.
24971         (visium_expand_int_cstore): Likewise.
24972         (visium_expand_fp_cstore): Likewise.
24973         * config/visium/visium.c (visium_pass_by_reference): Likewise.
24974         (visium_function_arg): Likewise.
24975         (visium_function_arg_advance): Likewise.
24976         (visium_libcall_value): Likewise.
24977         (visium_setup_incoming_varargs): Likewise.
24978         (visium_legitimate_constant_p): Likewise.
24979         (visium_legitimate_address_p): Likewise.
24980         (visium_legitimize_address): Likewise.
24981         (visium_secondary_reload): Likewise.
24982         (visium_register_move_cost): Likewise.
24983         (visium_memory_move_cost): Likewise.
24984         (prepare_move_operands): Likewise.
24985         (ok_for_simple_move_operands): Likewise.
24986         (ok_for_simple_move_strict_operands): Likewise.
24987         (ok_for_simple_arith_logic_operands): Likewise.
24988         (visium_function_value_1): Likewise.
24989         (rtx_ok_for_offset_p): Likewise.
24990         (visium_legitimize_reload_address): Likewise.
24991         (visium_split_double_move): Likewise.
24992         (visium_expand_copysign): Likewise.
24993         (visium_expand_int_cstore): Likewise.
24994         (visium_expand_fp_cstore): Likewise.
24995         (visium_split_cstore): Likewise.
24996         (visium_select_cc_mode): Likewise.
24997         (visium_split_cbranch): Likewise.
24998         (output_cbranch): Likewise.
24999         (visium_print_operand_address): Likewise.
25000         * expmed.c (flip_storage_order): Likewise.
25001         * expmed.h (emit_cstore): Likewise.
25002         (flip_storage_order): Likewise.
25003         * genrecog.c (validate_pattern): Likewise.
25004         * hsa-gen.c (gen_hsa_addr): Likewise.
25005         * internal-fn.c (expand_arith_overflow): Likewise.
25006         * ira-color.c (allocno_copy_cost_saving): Likewise.
25007         * lra-assigns.c (find_hard_regno_for_1): Likewise.
25008         * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
25009         (process_invariant_for_inheritance): Likewise.
25010         * lra-eliminations.c (move_plus_up): Likewise.
25011         * omp-low.c (lower_oacc_reductions): Likewise.
25012         * simplify-rtx.c (simplify_subreg): Likewise.
25013         * target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise.
25014         (TARGET_CHKP_BOUND_MODE): Likewise..
25015         * targhooks.c (default_chkp_bound_mode): Likewise.
25016         (default_setup_incoming_vararg_bounds): Likewise.
25017         * targhooks.h (default_chkp_bound_mode): Likewise.
25018         (default_setup_incoming_vararg_bounds): Likewise.
25019         * tree-ssa-math-opts.c (divmod_candidate_p): Likewise.
25020         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
25021         (have_whole_vector_shift): Likewise.
25022         * tree-vect-stmts.c (vectorizable_load): Likewise.
25023         * doc/tm.texi: Regenerate.
25024
25025 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
25026
25027         Graceful degrade if Binutils PR21472 is not available.
25028
25029         PR target/81072
25030         * configure.ac [target=avr]: WARN instead of ERROR if avrxmega3
25031         .rodata in flash test fails.
25032         (HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes.
25033         * confgure: Regenerate.
25034         * config.in: Regenerate.
25035         * config/avr/avr.c (avr_asm_named_section)
25036         [HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger
25037         __do_copy_data for stuff in .rodata if flash_pm_offset = 0.
25038         (avr_asm_init_sections): Same.
25039
25040 2017-07-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25041
25042         * config/arm/neon.md (fma<VCVTF:mode>4): Remove %?.
25043         (fma<VH:mode>4_intrinsic): Likewise.
25044         (*fmsub<VCVTF:mode>4): Likewise.
25045         (*fmsub<VH:mode>4_intrinsic): Likewise.
25046
25047 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
25048
25049         PR target/81305
25050         * config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
25051         Don't depend on "optimize > 0".
25052         (out_movhi_r_mr, out_movqi_mr_r): Same.
25053         (out_movhi_mr_r, out_movqi_r_mr): Same.
25054         (avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
25055         io_address_operand on "optimize > 0".
25056
25057 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25058
25059         * tree-loop-distribution.c: Add general explanantion on the pass.
25060         (generate_loops_for_partition): Mark distributed loop.
25061         (pg_add_dependence_edges): New parameter.  Handle alias data
25062         dependence specially and record it in the parameter if asked.
25063         (struct pg_vdata, pg_edata, pg_edge_callback_data): New structs.
25064         (init_partition_graph_vertices, add_partition_graph_edge): New.
25065         (pg_skip_alias_edge, free_partition_graph_edata_cb): New.
25066         (free_partition_graph_vdata, build_partition_graph): New.
25067         (sort_partitions_by_post_order, merge_dep_scc_partitions): New.
25068         (pg_collect_alias_ddrs, break_alias_scc_partitions): New.
25069         (data_ref_segment_size, latch_dominated_by_data_ref): New.
25070         (compute_alias_check_pairs, version_loop_by_alias_check): New.
25071         (version_for_distribution_p, finalize_partitions): New.
25072         (distribute_loop): Handle alias data dependence specially.  Factor
25073         out loop fusion code as functions and call these functions.
25074
25075 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25076
25077         * tree-loop-distribution.c (classify_partition): New parameter and
25078         better handle reduction statement.
25079         (rdg_build_partitions): Revise comment.
25080         (distribute_loop): Compute statements in all partitions and pass it
25081         to classify_partition.
25082
25083 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25084
25085         * tree-loop-distribution.c (enum partition_type): New.
25086         (struct partition): New field type.
25087         (partition_merge_into): Add parameter.  Update partition type.
25088         (data_dep_in_cycle_p, update_type_for_merge): New functions.
25089         (build_rdg_partition_for_vertex): Compute partition type.
25090         (rdg_build_partitions): Dump partition type.
25091         (distribute_loop): Update calls to partition_merge_into.
25092
25093 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25094
25095         * tree-loop-distribution.c (struct ddr_hasher): New.
25096         (ddr_hasher::hash, ::equal, get_data_dependence): New function.
25097         (ddrs_table): New.
25098         (classify_partition): Call get_data_dependence.
25099         (pg_add_dependence_edges): Ditto.
25100         (distribute_loop): Release data dependence hash table.
25101
25102 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25103
25104         * tree-loop-distribution.c (ref_base_address): Delete.
25105         (similar_memory_accesses): Rename ...
25106         (share_memory_accesses): ... to this.  Check if partitions access
25107         the same memory reference.
25108         (distribute_loop): Call share_memory_accesses.
25109
25110 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25111
25112         * tree-loop-distribution.c (struct partition): New field recording
25113         its data reference.
25114         (partition_alloc, partition_free): Init and release data refs.
25115         (partition_merge_into): Merge data refs.
25116         (build_rdg_partition_for_vertex): Collect data refs for partition.
25117         (pg_add_dependence_edges): Change parameters from vector to bitmap.
25118         Update uses.
25119         (distribute_loop): Remve data refs from vertice data of partition
25120         graph.
25121
25122 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25123
25124         * tree-loop-distribution.c (params.h): Include header file.
25125         (MAX_DATAREFS_NUM, DR_INDEX): New macro.
25126         (datarefs_vec): New global var.
25127         (create_rdg_vertices): Use datarefs_vec directly.
25128         (free_rdg): Don't free data references.
25129         (build_rdg): Update use.  Don't free data references.
25130         (distribute_loop): Compute global variable for data references.
25131         Bail out if there are too many data references.
25132
25133 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25134
25135         * tree-loop-distribution.c (loop_nest): New global var.
25136         (build_rdg): Use loop directly, rather than loop nest.
25137         (pg_add_dependence_edges): Remove loop nest parameter.  Use global
25138         variable directly.
25139         (distribute_loop): Compute global variable loop nest.  Update use.
25140
25141 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25142
25143         * tree-loop-distribution.c (enum fuse_type, fuse_message): New.
25144         (partition_merge_into): New parameter.  Dump reason for fusion.
25145         (distribute_loop): Update use of partition_merge_into.
25146
25147 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25148
25149         * tree-loop-distribution.c (bb_top_order_index): New.
25150         (bb_top_order_index_size, bb_top_order_cmp): New.
25151         (stmts_from_loop): Use topological order.
25152         (pass_loop_distribution::execute): Compute and release topological
25153         order for basic blocks.
25154
25155 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25156
25157         * tree-loop-distribution.c (pass_loop_distribution::execute): Skip
25158         if no loops.
25159
25160 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25161
25162         * cfgloop.h (struct loop): Add comment.  New field orig_loop_num.
25163         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change.
25164         * internal-fn.c (expand_LOOP_DIST_ALIAS): New function.
25165         * internal-fn.def (LOOP_DIST_ALIAS): New.
25166         * tree-vectorizer.c (fold_loop_vectorized_call): Rename to ...
25167         (fold_loop_internal_call): ... this.
25168         (vect_loop_dist_alias_call): New function.
25169         (set_uid_loop_bbs): Call fold_loop_internal_call.
25170         (vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS
25171         internal calls.
25172
25173 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
25174
25175         PR target/81300
25176         * config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
25177         Require dead FLAGS_REG at the beginning of a peephole.
25178
25179 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
25180
25181         PR target/81294
25182         * config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y
25183         arguments in the call to __builtin_ia32_sbb_u32.
25184         (_subborrow_u64): Swap _X and _Y arguments in the call to
25185         __builtin_ia32_sbb_u64.
25186
25187 2017-07-04  Jakub Jelinek  <jakub@redhat.com>
25188
25189         PR debug/81278
25190         * tree-vrp.c (compare_assert_loc): Turn into a function template
25191         with stable template parameter.  Only test if a->e is NULL,
25192         !a->e == !b->e has been verified already.  Use e == NULL or
25193         e != NULL instead of e or ! e tests.  If stable is true, don't use
25194         iterative_hash_expr, on the other side allow a or b or both NULL
25195         and sort the NULLs last.
25196         (process_assert_insertions): Sort using compare_assert_loc<false>
25197         instead of compare_assert_loc, later sort using
25198         compare_assert_loc<true> before calling process_assert_insertions_for
25199         in a loop.  Use break instead of continue once seen NULL pointer.
25200
25201 2017-07-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
25202
25203         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
25204         Cortex-R7 and Cortex-R8 processors.
25205
25206 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
25207
25208         * ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
25209         uninitialized while src is not.
25210
25211 2017-07-04  Richard Earnshaw  <rearnsha@arm.com>
25212
25213         * common/config/arm/arm-common.c: Adjust include path for
25214         arm-cpu-cdata.h
25215         * config/arm/t-arm (TM_H): Adjust path for arm-cpu.h.
25216         (arm-cpu.h): Create in build directory.  Adjust dependency rules.
25217         (arm-cpu-data.h): Likewise.
25218         (arm-cpu-cdata.h): Likewise.
25219         * config/arm/arm-cpu.h: Delete.
25220         * config/arm/arm-cpu-cdata.h: Delete.
25221         * config/arm/arm-cpu-data.h: Delete.
25222
25223 2017-07-04  James Greenhalgh  <james.greenhalgh@arm.com>
25224
25225         * config/arm/arm-cpus.in (cortex-a55): New.
25226         (cortex-a75): Likewise.
25227         (cortex-a75.cortex-a55): Likewise.
25228         * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and
25229         cortex-a75.
25230         * doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75.
25231         * config/arm/arm-cpu-cdata.h: Regenerate.
25232         * config/arm/arm-cpu-data.h: Regenerate.
25233         * config/arm/arm-cpu.h: Regenerate.
25234         * config/arm/arm-tables.opt: Regenerate.
25235         * config/arm/arm-tune.md: Regenerate.
25236
25237 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
25238
25239         * haifa-sched.c (sched_create_recovery_edges): Update profile.
25240
25241 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
25242
25243         * bb-reorder.c (better_edge_p): Fix handling of uninitialized
25244         probability.
25245
25246 2017-07-04  Richard Sandiford  <richard.sandiford@linaro.org>
25247
25248         PR tree-optimization/81292
25249         * tree-ssa-strlen.c (handle_builtin_strlen): When setting
25250         full_string_p, also call adjust_related_strinfos if the adjustment
25251         is simple, otherwise invalidate related strinfos.
25252
25253 2017-07-04  Martin Liska  <mliska@suse.cz>
25254
25255         PR sanitizer/81040
25256         * sanopt.c (sanitize_rewrite_addressable_params): Mark the
25257         newly created variable as DECL_IGNORED_P.
25258
25259 2017-07-04  Martin Liska  <mliska@suse.cz>
25260
25261         PR ipa/81293
25262         * ipa-inline.c (inline_small_functions):
25263         Use xstrdup_for_dump.
25264
25265 2017-07-04  Tom de Vries  <tom@codesourcery.com>
25266
25267         * graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK.
25268
25269 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
25270
25271         PR target/81033
25272         * config/darwin.c (darwin_function_switched_text_sections):
25273         Fix spaces.
25274
25275 2017-07-03  Jan Hubicka  <hubicka@ucw.cz>
25276
25277         * tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up.
25278
25279 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
25280
25281         * doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary.
25282
25283 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25284
25285         * tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound,
25286         min_profitable_iters, and th as inclusive lower bounds.
25287         Fix LOOP_VINFO_PEELING_FOR_GAPS condition.
25288         (vect_estimate_min_profitable_iters): Return inclusive lower bounds
25289         for min_profitable_iters and min_profitable_estimate.
25290         (vect_transform_loop): Treat th as an inclusive lower bound.
25291         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
25292
25293 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
25294
25295         PR target/81033
25296         * config/darwin.c (darwin_function_switched_text_sections):
25297         Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw
25298         in two pieces, and suppress the use of buf.
25299
25300 2017-07-03  Nathan Sidwell  <nathan@acm.org>
25301
25302         * hash-table.h (hash_table_mod1): Fix indentation.
25303
25304 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25305
25306         PR middle-end/81290
25307         * predict.c (force_edge_cold): Be more careful about propagation
25308         backward.
25309         * profile-count.h (profile_probability::guessed,
25310         profile_probability::fdo, profile_count::guessed, profile_count::fdo):
25311         New.
25312         * tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed.
25313
25314 2017-07-03  James Greenhalgh  <james.greenhalgh@arm.com>
25315
25316         * doc/invoke.texi (rcpc architecture extension): Document it.
25317
25318 2017-07-03  Richard Biener  <rguenther@suse.de>
25319
25320         PR tree-optimization/60510
25321         * tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in
25322         the scalar reduction PHI and use it.
25323         (vectorizable_reduction): Properly guard the single_defuse_cycle
25324         path for non-SLP reduction chains where we cannot use it.
25325         Rework reduc_def/index and vector type deduction.  Rework
25326         vector operand gathering during reduction op code-gen.
25327         * tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction
25328         chains dissolve the chain and leave it to non-SLP reduction
25329         handling.
25330
25331 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25332
25333         * tree-data-ref.h (dr_alignment): Declare.
25334         * tree-data-ref.c (dr_alignment): New function.
25335         * tree-vectorizer.h (dataref_aux): Remove base_element_aligned.
25336         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
25337         set it.
25338         * tree-vect-stmts.c (vectorizable_store): Use dr_alignment.
25339
25340 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25341
25342         * tree-data-ref.h (innermost_loop_behavior): Add base_alignment
25343         and base_misalignment fields.
25344         (DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros.
25345         * tree-data-ref.c: Include builtins.h.
25346         (dr_analyze_innermost): Set up the new innmost_loop_behavior fields.
25347         * tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro.
25348         (STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise.
25349         * tree-vect-data-refs.c: Include tree-cfg.h.
25350         (vect_compute_data_ref_alignment): Use the new innermost_loop_behavior
25351         fields instead of calculating an alignment here.
25352         (vect_analyze_data_refs): Use dr_analyze_innermost.  Dump the new
25353         innermost_loop_behavior fields.
25354
25355 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25356
25357         * tree-data-ref.h (innermost_loop_behavior): Add a step_alignment
25358         field.
25359         (DR_STEP_ALIGNMENT): New macro.
25360         * tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise.
25361         * tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment.
25362         (create_data_ref): Print it.
25363         * tree-vect-stmts.c (vectorizable_load): Use the step alignment
25364         to tell whether the step preserves vector (mis)alignment.
25365         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
25366         Move the check for an integer step and generalise to all INTEGER_CST.
25367         (vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP.
25368         Print the outer step alignment.
25369
25370 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25371
25372         * tree-data-ref.h (innermost_loop_behavior): Replace aligned_to
25373         with offset_alignment.
25374         (DR_ALIGNED_TO): Delete.
25375         (DR_OFFSET_ALIGNMENT): New macro.
25376         * tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete.
25377         (STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro.
25378         * tree-data-ref.c (dr_analyze_innermost): Update after above changes.
25379         (create_data_ref): Likewise.
25380         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
25381         (vect_analyze_data_refs): Likewise.
25382         * tree-if-conv.c (if_convertible_loop_p_1): Use memset before
25383         creating dummy innermost behavior.
25384
25385 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25386
25387         * tree-data-ref.h (dr_analyze_innermost): Replace the dr argument
25388         with a "innermost_loop_behavior *" and refeence tree.
25389         * tree-data-ref.c (dr_analyze_innermost): Likewise.
25390         (create_data_ref): Update call accordingly.
25391         * tree-predcom.c (find_looparound_phi): Likewise.
25392
25393 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25394
25395         * tree-vectorizer.h (_stmt_vec_info): Replace individual dr_*
25396         fields with dr_wrt_vec_loop.
25397         (STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET)
25398         (STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly.
25399         (STMT_VINFO_DR_WRT_VEC_LOOP): New macro.
25400         (vect_dr_behavior): New function.
25401         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
25402         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
25403         vect_dr_behavior.  Use a step_preserves_misalignment_p boolean to
25404         track whether the step preserves the misalignment.
25405         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
25406         Use vect_dr_behavior.
25407         (vect_setup_realignment): Update call accordingly.
25408         (vect_create_data_ref_ptr): Likewise.  Use vect_dr_behavior.
25409         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update
25410         call to vect_create_addr_base_for_vector_ref.
25411         (vect_create_cond_for_align_checks): Likewise.
25412         * tree-vect-patterns.c (vect_recog_bool_pattern): Copy
25413         STMT_VINFO_DR_WRT_VEC_LOOP as a block.
25414         (vect_recog_mask_conversion_pattern): Likewise.
25415         * tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior.
25416         (new_stmt_vec_info): Remove redundant zeroing.
25417
25418 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
25419
25420         * common/config/arm/arm-common.c (arm_be8_option): New function.
25421         * config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8.
25422         (ISA_ARMv6): Add isa_bit_be8.
25423         * config/arm/arm.h (arm_be8_option): Add prototype.
25424         (BE8_SPEC_FUNCTION): New define.
25425         (EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION.
25426         * config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian.
25427         (mlittle-endian): Similarly.
25428         (mbe8, mbe32): New options.
25429         * config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option.
25430         * doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32.
25431
25432 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25433
25434         * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating.
25435
25436 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25437
25438         * tree-cfgcleanup.c (want_merge_blocks_p): New function.
25439         (cleanup_tree_cfg_bb): Use it.
25440         * profile-count.h (profile_count::of_for_merging, profile_count::merge):
25441         New functions.
25442         * tree-cfg.c (gimple_merge_blocks): Use profile_count::merge.
25443
25444 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25445
25446         PR bootstrap/81285
25447         * loop-doloop.c (add_test): Update profile.
25448
25449 2017-07-03  Martin Liska  <mliska@suse.cz>
25450
25451         PR sanitize/81040
25452         * sanopt.c (rewrite_usage_of_param): New function.
25453         (sanitize_rewrite_addressable_params): Likewise.
25454         (pass_sanopt::execute): Call rewrite_usage_of_param.
25455
25456 2017-07-03  Richard Biener  <rguenther@suse.de>
25457
25458         * tree-vect-loop.c (vect_create_epilog_for_reduction): Revert
25459         back to using VIEW_CONVERT_EXPR.
25460
25461 2017-07-03  Martin Liska  <mliska@suse.cz>
25462
25463         PR other/78366
25464         * doc/extend.texi: Document when a resolver function is
25465         generated for target_clones.
25466
25467 2017-07-03  Martin Liska  <mliska@suse.cz>
25468
25469         * asan.c (asan_emit_stack_protection): Unpoison just red zones
25470         and shadow memory of auto variables which are subject of
25471         use-after-scope sanitization.
25472         (asan_expand_mark_ifn): Add do set only when is_poison.
25473
25474 2016-07-03  Richard Biener  <rguenther@suse.de>
25475
25476         * tree-vect-loop.c (vect_analyze_loop_operations): Also analyze
25477         reduction PHIs.
25478         (vect_force_simple_reduction): Record reduction def -> phi mapping.
25479         (vectorizable_reduction): Perform reduction PHI creation when
25480         visiting a reduction PHI and adjust and simplify code generation
25481         phase of the reduction op.  Cache dts, use fold_binary, not fold_build2.
25482         (vect_transform_loop): Visit reduction PHIs.
25483         * tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction
25484         defs into the SLP tree.
25485         (vect_build_slp_tree): Reduction defs terminate the recursion.
25486         * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup
25487         of reduction defs.
25488         (vect_get_vec_defs_for_stmt_copy): Export.
25489         (vect_get_vec_defs): Likewise.
25490         * tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def
25491         purpose.
25492         (vect_get_vec_defs_for_stmt_copy): Declare.
25493         (vect_get_vec_defs): Likewise.
25494
25495 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25496
25497         * tree-data-ref.c (dr_analyze_innermost): Replace the "nest"
25498         parameter with a "loop" parameter and use it instead of the
25499         loop containing DR_STMT.  Don't check simple_iv when doing
25500         BB analysis.  Describe the two analysis modes in the comment.
25501
25502 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25503
25504         PR tree-optimization/69468
25505         * tree-ssa-tail-merge.c (ignore_edge_flags): New constant.
25506         (find_same_succ_bb): Handle ignore_edge_flags.
25507
25508 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25509
25510         PR tree-optimization/81192
25511         * tree-ssa-tail-merge.c (same_succ_hash): Use bb->loop_father->num in
25512         hash.
25513         (same_succ::equal): Don't find bbs to be equal if bb->loop_father
25514         differs.
25515         (find_same_succ_bb): Remove obsolete test on bb->loop_father->latch.
25516
25517 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25518
25519         PR tree-optimization/81192
25520         * tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
25521         BB_SAME_SUCC (bb) == NULL.
25522
25523 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25524
25525         * cfgrtl.c (rtl_verify_edges): Enable checking of profile_probability
25526         consistency.
25527
25528 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25529
25530         * dumpfile.c: Include profile-count.h
25531         * tree-cfg.c (gimple_duplicate_sese_tail): Drop UNUSED attributes;
25532         update profile.
25533         (insert_cond_bb): Update profile.
25534         * tree-cfg.h (insert_cond_bb): Update prototype.
25535         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Update.
25536         * tree-dump.c: Do not include tree-cfg.
25537
25538 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25539
25540         * bb-reorder.c (fix_up_crossing_landing_pad): Update profile.
25541
25542 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25543
25544         * expect.c (dw2_build_landing_pads): Update profile of the landing pad
25545         bb.
25546
25547 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25548
25549         * tree-complex.c (expand_complex_div_wide): update profile.
25550
25551 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25552             Alan Hayward  <alan.hayward@arm.com>
25553             David Sherwood  <david.sherwood@arm.com>
25554
25555         * Makefile.in (MACHMODE_H): Remove insn-modes.h
25556         (CORETYPES_H): New define.
25557         (MOSTLYCLEANFILES): Add insn-modes-inline.h.
25558         (insn-modes-inline.h, s-modes-inline-h): New rules.
25559         (generated_files): Add insn-modes-inline.h.
25560         (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h.
25561         (build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise.
25562         (build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise.
25563         (build/vec.o, build/hash-table.o, build/inchash.o): Likewise.
25564         (build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise.
25565         (build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise.
25566         (build/gencodes.o, build/genconditions.o): Likewise.
25567         (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise.
25568         (build/genenums.o, build/genextract.o, build/genflags.o): Likewise.
25569         (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o)
25570         (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise.
25571         (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise.
25572         (build/gencfn-macros.o, build/gcov-iov.o): Likewise.
25573         * coretypes.h: Include everything up to real.h for generators.
25574         Include insn-modes.h first.  Include wide-int-print.h after
25575         wide-int.h.  Include insn-modes-inline.h and then machmode.h.
25576         * machmode.h: Don't include insn-modes.h here.
25577         * function-tests.c: Remove includes of signop.h, machmode.h,
25578         double-int.h and wide-int.h.
25579         * rtl.h: Likewise.
25580         * gcc-rich-location.c: Remove includes of machmode.h, double-int.h
25581         and wide-int.h.
25582         * optc-save-gen.awk: Likewise.
25583         * gencheck.c (BITS_PER_UNIT): Delete dummy definition.
25584         * godump.c: Remove include of wide-int-print.h.
25585         * pretty-print.h: Likewise.
25586         * wide-int-print.cc: Likewise.
25587         * wide-int.cc: Likewise.
25588         * hash-map-tests.c: Remove include of signop.h.
25589         * hash-set-tests.c: Likewise.
25590         * rtl-tests.c: Likewise.
25591         * mkconfig.sh: Remove include of machmode.h.
25592         * genmodes.c (emit_insn_modes_h): Split emission of inline functions
25593         into...
25594         (emit_insn_modes_inline_h): ...this new function.  Emit the code
25595         into an insn-modes-inline.h header file, adding appropriate
25596         include guards and end comments.
25597         (emit_insn_modes_c_header): Remove include of machmode.h.
25598         (emit_min_insn_modes_c_header): Include coretypes.h rather than
25599         machmode.h.
25600         (main): Handle -i flag and call emit_insn_modes_inline_h when
25601         it is passed.
25602
25603 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25604
25605         * tree-ssa-strlen.c (strinfo): Rename the length field to
25606         nonzero_chars.  Add a full_string_p field.
25607         (compare_nonzero_chars, zero_length_string_p): New functions.
25608         (get_addr_stridx): Add an offset_out parameter.
25609         Use compare_nonzero_chars.
25610         (get_stridx): Update accordingly.  Use compare_nonzero_chars.
25611         (new_strinfo): Update after above changes to strinfo.
25612         (set_endptr_and_length): Set full_string_p.
25613         (get_string_length): Update after above changes to strinfo.
25614         (unshare_strinfo): Update call to new_strinfo.
25615         (maybe_invalidate): Likewise.
25616         (get_stridx_plus_constant): Change off to unsigned HOST_WIDE_INT.
25617         Use compare_nonzero_chars and zero_string_p.  Treat nonzero_chars
25618         as a uhwi instead of an shwi.  Update after above changes to
25619         strinfo and new_strinfo.
25620         (zero_length_string): Assert that chainsi contains full strings.
25621         Use zero_length_string_p.  Update call to new_strinfo.
25622         (adjust_related_strinfos): Update after above changes to strinfo.
25623         Copy full_string_p from origsi.
25624         (adjust_last_stmt): Use zero_length_string_p.
25625         (handle_builtin_strlen): Update after above changes to strinfo and
25626         new_strinfo.  Install the lhs as the string length if the previous
25627         entry didn't describe a full string.
25628         (handle_builtin_strchr): Update after above changes to strinfo
25629         and new_strinfo.
25630         (handle_builtin_strcpy): Likewise.
25631         (handle_builtin_strcat): Likewise.
25632         (handle_builtin_malloc): Likewise.
25633         (handle_pointer_plus): Likewise.
25634         (handle_builtin_memcpy): Likewise.  Track nonzero characters
25635         that aren't necessarily followed by a nul terminator.
25636         (handle_char_store): Likewise.
25637
25638 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25639
25640         PR tree-optimization/80769
25641         * tree-ssa-strlen.c (strinfo): Document that "stmt" is also used
25642         for malloc and calloc.  Document the new invariant that all related
25643         strinfos have delayed lengths or none do.
25644         (verify_related_strinfos): Move earlier in file.
25645         (set_endptr_and_length): New function, split out from...
25646         (get_string_length): ...here.  Also set the lengths of related
25647         strinfos.
25648         (zero_length_string): Assert that chainsi has known (rather than
25649         delayed) lengths.
25650         (adjust_related_strinfos): Likewise.
25651
25652 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25653
25654         PR tree-optimization/81136
25655         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Only
25656         assert that two references with the same misalignment have the same
25657         compile-time misalignment if those compile-time misalignments
25658         are known.
25659
25660 2017-07-01  Andi Kleen  <ak@linux.intel.com>
25661
25662         * print-tree.c (print_node): Print all attributes.
25663
25664 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25665
25666         * cfg.c (scale_bbs_frequencies): New function.
25667         * cfg.h (scale_bbs_frequencies): Declare it.
25668         * cfgloopanal.c (single_likely_exit): Cleanup.
25669         * cfgloopmanip.c (scale_loop_frequencies): Take profile_probability
25670         as parameter.
25671         (scale_loop_profile): Likewise.
25672         (loop_version): Likewise.
25673         (create_empty_loop_on_edge): Update.
25674         * cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile,
25675         scale_loop_frequencies, scale_loop_profile, loopify,
25676         loop_version): Update prototypes.
25677         * modulo-sched.c (sms_schedule): Update.
25678         * predict.c (unlikely_executed_edge_p): Also check probability.
25679         (probably_never_executed_edge_p): Fix typo.
25680         * tree-if-conv.c (version_loop_for_if_conversion): Update.
25681         * tree-parloops.c (gen_parallel_loop): Update.
25682         * tree-ssa-loop-ivcanon.c (try_peel_loop): Update.
25683         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
25684         * tree-ssa-loop-split.c (split_loop): Update.
25685         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
25686         * tree-vect-loop-manip.c (vect_do_peeling): Update.
25687         (vect_loop_versioning): Update.
25688         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
25689
25690 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25691
25692         * trans-mem.c (split_bb_make_tm_edge): Update profile.
25693
25694 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25695
25696         * tree-if-conv.c (combine_blocks): Use make_single_succ_edge
25697         to keep profile consistent.
25698
25699 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25700
25701         * cfgrtl.c (rtl_flow_call_edges_add): Update profile.
25702         * tree-cfg.c (gimple_flow_call_edges_add): Likewise.
25703         * profile-count.h (max_safe_multiplier): Make unsigned.
25704         (profile_count::guessed_zero): New.
25705
25706 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25707
25708         * bb-reorder.c (fix_up_crossing_landing_pad,
25709         fix_crossing_conditional_branches): Use make_single_succ_edge
25710         to keep profile consistent.
25711
25712 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25713
25714         * tree-vect-loop.c (optimize_mask_stores): Use make_single_succ_edge
25715         to update profile.
25716
25717 2017-07-01  Jakub Jelinek  <jakub@redhat.com>
25718
25719         PR sanitizer/81262
25720         * bb-reorder.c (fix_up_fall_thru_edges): Move variable declarations to
25721         the right scopes, make sure cond_jump isn't preserved between multiple
25722         iterations.  Search for fallthru edge whenever there are 3+ edges and
25723         use find_fallthru_edge for it.
25724
25725 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25726
25727         Patch by Alexander Monakov <amonakov@ispras.ru>
25728         * sel-sched-ir.c (compute_succs_info): Handle uninitialized
25729         probabilities consistently.
25730
25731 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25732
25733         * pa.c (pa_expand_compare_and_swap_loop): Update call of
25734         emit_cmp_and_jump_insns.
25735
25736 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25737
25738         PR ipa/81261
25739         * tree-inline.c (expand_call_inline): Combine profile statuses.
25740
25741 2017-06-30  Andrew Pinski  <apinski@cavium.com>
25742
25743         * tree-if-conv.c (predicate_scalar_phi): Update new_stmt if
25744         fold_stmt returned true.
25745
25746 2017-06-30  Nathan Sidwell  <nathan@acm.org>
25747
25748         * ggc.h (empty_string): Delete.
25749         * cfgexpand.c (expand_asm_stmt): Use plain "".
25750         * optabs.c (expand_asm_memory_barrier): Likewise.
25751         * stringpool.c (empty_string): Delete.
25752         (digit_vector, digit_string): Delete.
25753         (ggc_alloc_string): Use plain "", don't optimize single digit
25754         strings.  Use ggc_alloc_atomic.
25755
25756 2017-06-30  Richard Earnshaw  <rearnsha@arm.com>
25757
25758         * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one
25759         comparison set and one other set, use the cost of the non-comparison
25760         set.
25761
25762 2017-06-30  Nathan Sidwell  <nathan@acm.org>
25763
25764         * ggc.h: Replace all 'static inline' with plain 'inline'.  Fix
25765         some formatting.
25766
25767 2017-06-30  Peter Bergner  <bergner@vnet.ibm.com>
25768
25769         * tree-cfg.c (group_case_labels_stmt): Merge scanning and compressing
25770         loops.  Remove now unneeded calls to gimple_switch_set_label() that
25771         just set removed labels to NULL_TREE.
25772
25773 2017-06-30  Aldy Hernandez  <aldyh@redhat.com>
25774
25775         * tree-ssanames.c (set_range_info_raw): Abstract from ...
25776         (set_range_info): ...here.  Only call set_range_info_raw if domain
25777         is useful.
25778         (set_nonzero_bits): Call set_range_info_raw.
25779         * tree-ssanames.h (set_range_info_raw): New.
25780
25781 2017-06-30  Jakub Jelinek  <jakub@redhat.com>
25782
25783         PR target/81225
25784         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For V8FI,
25785         V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
25786         of nonimmediate_operand and <store_mask_constraint> instead of m
25787         for the input operand.  For V8FI iterator, always split if input
25788         is a MEM.  For V16FI and V8SF_256 iterators, don't test if both
25789         operands are MEM if <mask_applied>.  For VI4F_256 iterator, use
25790         <store_mask_predicate> instead of register_operand and
25791         <store_mask_constraint> instead of v for the input operand.  Make
25792         sure both operands aren't MEMs for if not <mask_applied>.
25793
25794 2017-06-30  Sylvestre Ledru  <sylvestre@debian.org>
25795
25796         * lto-wrapper.c (copy_file) Close both file descriptors before
25797         exiting normally.
25798
25799 2017-06-30  Martin Liska  <mliska@suse.cz>
25800
25801         PR ipa/81214
25802         * multiple_target.c (create_dispatcher_calls): Make ifunc
25803         also for function that don't have calls or are not referenced.
25804
25805 2017-06-30  Richard Biener  <rguenther@suse.de>
25806
25807         * tree-vect-slp.c (vect_slp_analyze_node_operations): Only
25808         analyze the first scalar stmt.  Move vector type computation
25809         for the BB case here from ...
25810         * tree-vect-stmts.c (vect_analyze_stmt): ... here.  Guard
25811         live operation processing in the SLP case properly.
25812
25813 2017-06-30  Richard Biener  <rguenther@suse.de>
25814
25815         * graph.c (draw_cfg_node_succ_edges): Fix broken dot syntax.
25816
25817 2017-06-30  Martin Liska  <mliska@suse.cz>
25818
25819         PR sanitizer/81021
25820         * tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN
25821         before BUILT_IN_UNWIND_RESUME when ASAN is used.
25822
25823 2017-06-30  Yvan Roux  <yvan.roux@linaro.org>
25824
25825         * doc/invoke.texi (AArch64): Add missing options and remove redundant
25826         ones.
25827
25828 2017-06-30  Richard Biener  <rguenther@suse.de>
25829
25830         PR tree-optimization/81249
25831         * tree-vect-loop.c (vect_create_epilog_for_reduction): Convert
25832         condition reduction result to original scalar type.
25833
25834 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25835
25836         * profile-count.h (enum profile_quality): Fix typos and whitespace
25837         issues.
25838
25839 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25840
25841         * config/s390/s390.c (s390_expand_setmem): Adjust to the new data
25842         type for branch probabilities.
25843
25844 2017-06-29  Julian Brown  <julian@codesourcery.com>
25845             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25846
25847         * config/aarch64/aarch64-fusion-pairs.def: Add ALU_BRANCH entry.
25848         * config/aarch64/aarch64.c (AARCH64_FUSE_ALU_BRANCH): New fusion type.
25849         (thunderx2t99_tunings): Set AARCH64_FUSE_ALU_BRANCH flag.
25850         (aarch_macro_fusion_pair_p): Add support for AARCH64_FUSE_ALU_BRANCH.
25851
25852 2017-06-29  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25853
25854         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the
25855         check for CC usage into AARCH64_FUSE_CMP_BRANCH.
25856         * config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for
25857         CC usage from generic code to here.
25858         * sched-deps.c (sched_macro_fuse_insns): Move the condition for
25859         CC usage into the target macros.
25860
25861 2017-06-29  Maya Rashish  <coypu@sdf.org>
25862
25863         * config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared
25864         objects.
25865
25866 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25867
25868         * arm/arm-builtins.c: Include profile-count.h
25869         * except.c (sjlj_emit_function_enter): Use
25870         profile_probability::unlikely.
25871
25872 2017-06-29  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
25873
25874         * config/rs6000/rs6000.c (toc_relative_expr_p): Make tocrel_base
25875         and tocrel_offset be pointer args rather than implicitly using
25876         static versions.
25877         (legitimate_constant_pool_address_p, rs6000_emit_move,
25878         const_load_sequence_p, adjust_vperm): Add local tocrel_base and
25879         tocrel_offset and use in toc_relative_expr_p call.
25880         (print_operand, print_operand_address): Use static tocrel_base_oac
25881         and tocrel_offset_oac.
25882         (rs6000_output_addr_const_extra): Use static tocrel_base_oac and
25883         tocrel_offset_oac.
25884
25885 2017-06-29  Maya Rashish  <coypu@sdf.org>
25886
25887         * config/vax/builtins.md (ffssi2_internal): Correct constraint.
25888
25889 2017-06-29  Eric Botcazou  <ebotcazou@adacore.com>
25890
25891         * expr.c (expand_expr) <normal_inner_ref>: When testing for unaligned
25892         objects, take into account only the alignment of 'op0' and 'mode1' if
25893         'op0' is a MEM.
25894
25895 2017-06-29  Steve Ellcey  <sellcey@cavium.com>
25896
25897         * ccmp.c (ccmp_tree_comparison_p): New function.
25898         (ccmp_candidate_p): Update to use above function.
25899         (get_compare_parts): New function.
25900         (expand_ccmp_next): Update to use new functions.
25901         (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use
25902         new functions.
25903         (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1,
25904         take mode as argument.
25905         * ccmp.h (expand_ccmp_expr): Add mode as argument.
25906         * expr.c (expand_expr_real_1): Pass mode as argument.
25907
25908 2017-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
25909
25910         * combine.c (combine_instructions): Print insns to dump_file, together
25911         with their costs.
25912
25913 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25914
25915         * asan.c (asan_emit_stack_protection): Update.
25916         (create_cond_insert_point): Update.
25917         * auto-profile.c (afdo_propagate_circuit): Update.
25918         * basic-block.h (struct edge_def): Turn probability to
25919         profile_probability.
25920         (EDGE_FREQUENCY): Update.
25921         * bb-reorder.c (find_traces_1_round): Update.
25922         (better_edge_p): Update.
25923         (sanitize_hot_paths): Update.
25924         * cfg.c (unchecked_make_edge): Initialize probability to uninitialized.
25925         (make_single_succ_edge): Update.
25926         (check_bb_profile): Update.
25927         (dump_edge_info): Update.
25928         (update_bb_profile_for_threading): Update.
25929         * cfganal.c (connect_infinite_loops_to_exit): Initialize new edge
25930         probabilitycount to 0.
25931         * cfgbuild.c (compute_outgoing_frequencies): Update.
25932         * cfgcleanup.c (try_forward_edges): Update.
25933         (outgoing_edges_match): Update.
25934         (try_crossjump_to_edge): Update.
25935         * cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge.
25936         (expand_gimple_tailcall): Update.
25937         (construct_init_block): Use make_single_succ_edge.
25938         (construct_exit_block): Use make_single_succ_edge.
25939         * cfghooks.c (verify_flow_info): Update.
25940         (redirect_edge_succ_nodup): Update.
25941         (split_edge): Update.
25942         (account_profile_record): Update.
25943         * cfgloopanal.c (single_likely_exit): Update.
25944         * cfgloopmanip.c (scale_loop_profile): Update.
25945         (set_zero_probability): Remove.
25946         (duplicate_loop_to_header_edge): Update.
25947         * cfgloopmanip.h (loop_version): Update prototype.
25948         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
25949         (force_nonfallthru_and_redirect): Update.
25950         (update_br_prob_note): Update.
25951         (rtl_verify_edges): Update.
25952         (purge_dead_edges): Update.
25953         (rtl_lv_add_condition_to_bb): Update.
25954         * cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update.
25955         * cgraphunit.c (init_lowered_empty_function): Update.
25956         (cgraph_node::expand_thunk): Update.
25957         * cilk-common.c: Include profile-count.h
25958         * dojump.c (inv): Remove.
25959         (jumpifnot): Update.
25960         (jumpifnot_1): Update.
25961         (do_jump_1): Update.
25962         (do_jump): Update.
25963         (do_jump_by_parts_greater_rtx): Update.
25964         (do_compare_rtx_and_jump): Update.
25965         * dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump,
25966         do_jump_1. do_compare_rtx_and_jump): Update prototype.
25967         * dwarf2cfi.c: Include profile-count.h
25968         * except.c (dw2_build_landing_pads): Use make_single_succ_edge.
25969         (sjlj_emit_dispatch_table): Likewise.
25970         * explow.c: Include profile-count.h
25971         * expmed.c (emit_store_flag_force): Update.
25972         (do_cmp_and_jump): Update.
25973         * expr.c (compare_by_pieces_d::generate): Update.
25974         (compare_by_pieces_d::finish_mode): Update.
25975         (emit_block_move_via_loop): Update.
25976         (store_expr_with_bounds): Update.
25977         (store_constructor): Update.
25978         (expand_expr_real_2): Update.
25979         (expand_expr_real_1): Update.
25980         * expr.h (try_casesi, try_tablejump): Update prototypes.
25981         * gimple-pretty-print.c (dump_probability): Update.
25982         (dump_profile): New.
25983         (dump_gimple_label): Update.
25984         (dump_gimple_bb_header): Update.
25985         * graph.c (draw_cfg_node_succ_edges): Update.
25986         * hsa-gen.c (convert_switch_statements): Update.
25987         * ifcvt.c (cheap_bb_rtx_cost_p): Update.
25988         (find_if_case_1): Update.
25989         (find_if_case_2): Update.
25990         * internal-fn.c (expand_arith_overflow_result_store): Update.
25991         (expand_addsub_overflow): Update.
25992         (expand_neg_overflow): Update.
25993         (expand_mul_overflow): Update.
25994         (expand_vector_ubsan_overflow): Update.
25995         * ipa-cp.c (good_cloning_opportunity_p): Update.
25996         * ipa-split.c (split_function): Use make_single_succ_edge.
25997         * ipa-utils.c (ipa_merge_profiles): Update.
25998         * loop-doloop.c (add_test): Update.
25999         (doloop_modify): Update.
26000         * loop-unroll.c (compare_and_jump_seq): Update.
26001         (unroll_loop_runtime_iterations): Update.
26002         * lra-constraints.c (lra_inheritance): Update.
26003         * lto-streamer-in.c (input_cfg): Update.
26004         * lto-streamer-out.c (output_cfg): Update.
26005         * mcf.c (adjust_cfg_counts): Update.
26006         * modulo-sched.c (sms_schedule): Update.
26007         * omp-expand.c (expand_omp_for_init_counts): Update.
26008         (extract_omp_for_update_vars): Update.
26009         (expand_omp_ordered_sink): Update.
26010         (expand_omp_for_ordered_loops): Update.
26011         (expand_omp_for_generic): Update.
26012         (expand_omp_for_static_nochunk): Update.
26013         (expand_omp_for_static_chunk): Update.
26014         (expand_cilk_for): Update.
26015         (expand_omp_simd): Update.
26016         (expand_omp_taskloop_for_outer): Update.
26017         (expand_omp_taskloop_for_inner): Update.
26018         * omp-simd-clone.c (simd_clone_adjust): Update.
26019         * optabs.c (expand_doubleword_shift): Update.
26020         (expand_abs): Update.
26021         (emit_cmp_and_jump_insn_1): Update.
26022         (expand_compare_and_swap_loop): Update.
26023         * optabs.h (emit_cmp_and_jump_insns): Update prototype.
26024         * predict.c (predictable_edge_p): Update.
26025         (edge_probability_reliable_p): Update.
26026         (set_even_probabilities): Update.
26027         (combine_predictions_for_insn): Update.
26028         (combine_predictions_for_bb): Update.
26029         (propagate_freq): Update.
26030         (estimate_bb_frequencies): Update.
26031         (force_edge_cold): Update.
26032         * profile-count.c (profile_count::dump): Add missing space into dump.
26033         (profile_count::debug): Add newline.
26034         (profile_count::differs_from_p): Explicitly convert to unsigned.
26035         (profile_count::stream_in): Update.
26036         (profile_probability::dump): New member function.
26037         (profile_probability::debug): New member function.
26038         (profile_probability::differs_from_p): New member function.
26039         (profile_probability::differs_lot_from_p): New member function.
26040         (profile_probability::stream_in): New member function.
26041         (profile_probability::stream_out): New member function.
26042         * profile-count.h (profile_count_quality): Rename to ...
26043         (profile_quality): ... this one.
26044         (profile_probability): New.
26045         (profile_count): Update.
26046         * profile.c (compute_branch_probabilities): Update.
26047         * recog.c (peep2_attempt): Update.
26048         * sched-ebb.c (schedule_ebbs): Update.
26049         * sched-rgn.c (find_single_block_region): Update.
26050         (compute_dom_prob_ps): Update.
26051         (schedule_region): Update.
26052         * sel-sched-ir.c (compute_succs_info): Update.
26053         * stmt.c (struct case_node): Update.
26054         (do_jump_if_equal): Update.
26055         (get_outgoing_edge_probs): Update.
26056         (conditional_probability): Update.
26057         (emit_case_dispatch_table): Update.
26058         (expand_case): Update.
26059         (expand_sjlj_dispatch_table): Update.
26060         (emit_case_nodes): Update.
26061         * targhooks.c: Update.
26062         * tracer.c (better_p): Update.
26063         (find_best_successor): Update.
26064         * trans-mem.c (expand_transaction): Update.
26065         * tree-call-cdce.c: Update.
26066         * tree-cfg.c (gimple_split_edge): Upate.
26067         (move_sese_region_to_fn): Upate.
26068         * tree-cfgcleanup.c (cleanup_control_expr_graph): Upate.
26069         * tree-eh.c (lower_resx): Upate.
26070         (cleanup_empty_eh_move_lp): Upate.
26071         * tree-if-conv.c (version_loop_for_if_conversion): Update.
26072         * tree-inline.c (copy_edges_for_bb): Update.
26073         (copy_cfg_body): Update.
26074         * tree-parloops.c (gen_parallel_loop): Update.
26075         * tree-profile.c (gimple_gen_ic_func_profiler): Update.
26076         (gimple_gen_time_profiler): Update.
26077         * tree-ssa-dce.c (remove_dead_stmt): Update.
26078         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
26079         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
26080         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
26081         (unloop_loops): Update.
26082         (try_peel_loop): Update.
26083         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
26084         * tree-ssa-loop-split.c (connect_loops): Update.
26085         (split_loop): Update.
26086         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
26087         (hoist_guard): Update.
26088         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
26089         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
26090         (value_replacement): Update.
26091         * tree-ssa-reassoc.c (branch_fixup): Update.
26092         * tree-ssa-tail-merge.c (replace_block_by): Update.
26093         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
26094         (create_edge_and_update_destination_phis): Update.
26095         (compute_path_counts): Update.
26096         (recompute_probabilities): Update.
26097         (update_joiner_offpath_counts): Update.
26098         (freqs_to_counts_path): Update.
26099         (duplicate_thread_path): Update.
26100         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
26101         (struct switch_conv_info): Update.
26102         (gen_inbound_check): Update.
26103         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
26104         (vect_do_peeling): Update.
26105         (vect_loop_versioning): Update.
26106         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
26107         (optimize_mask_stores): Update.
26108         * ubsan.c (ubsan_expand_null_ifn): Update.
26109         * value-prof.c (gimple_divmod_fixed_value): Update.
26110         (gimple_divmod_fixed_value_transform): Update.
26111         (gimple_mod_pow2): Update.
26112         (gimple_mod_pow2_value_transform): Update.
26113         (gimple_mod_subtract): Update.
26114         (gimple_mod_subtract_transform): Update.
26115         (gimple_ic): Update.
26116         (gimple_stringop_fixed_value): Update.
26117         (gimple_stringops_transform): Update.
26118         * value-prof.h: Update.
26119
26120 2017-06-29  Carl Love  <cel@us.ibm.com>
26121
26122         * config/rs6000/rs6000-c.c: Add support for built-in functions
26123         vector signed int vec_signed (vector float);
26124         vector signed long long vec_signed (vector double);
26125         vector signed int vec_signed2 (vector double, vector double);
26126         vector signed int vec_signede (vector double);
26127         vector signed int vec_signedo (vector double);
26128         * config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add
26129         instruction generator.
26130         * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
26131         UNSPEC_VSX_VSIGNED2): Add UNSPECS.
26132         (vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df):
26133         Add define_insn.
26134         (vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df,
26135         vunsignede_v2df): Add define_expands.
26136         * config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED,
26137         VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO,
26138         VEC_UNSIGNEDO): Add definitions.
26139         * config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
26140         UNSPEC_VSX_VSIGNED2): Add UNSPECs.
26141         (vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn.
26142         (vsigned2_v2df, vsigendo_v2df, vsignede_v2df,
26143         vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands.
26144         * config/rs6000/altivec.h (vec_signed, vec_signed2,
26145         vec_signede and vec_signedo, vec_unsigned, vec_unsigned2,
26146         vec_unsignede, vec_unsignedo): Add builtin defines.
26147         * config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern
26148         declaration.
26149         * doc/extend.texi: Update the built-in documentation file for the
26150         new built-in functions.
26151
26152 2017-06-29  Richard Biener  <rguenther@suse.de>
26153
26154         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add
26155         reduction chains to LOOP_VINFO_REDUCTIONS.
26156         * tree-vect-slp.c (vect_analyze_slp): Continue looking for
26157         SLP reductions after processing reduction chains.
26158
26159 2017-06-29  Nathan Sidwell  <nathan@acm.org>
26160
26161         * builtins.c (fold_builtin_FUNCTION): Use
26162         lang_hooks.decl_printable_name.
26163
26164 2017-06-29  Peter Bergner  <bergner@vnet.ibm.com>
26165
26166         PR middle-end/81194
26167         * cfgexpand.c (expand_gimple_stmt_1): Handle switch statements
26168         with only one label.
26169         * stmt.c (expand_case): Assert NCASES is greater than one.
26170
26171 2017-06-29  Richard Biener  <rguenther@suse.de>
26172
26173         * tree-cfg.c (group_case_labels_stmt): Return whether we changed
26174         anything.
26175         (group_case_labels): Likewise.
26176         (find_taken_edge): Push sanity checking on val to workers...
26177         (find_taken_edge_cond_expr): ... here
26178         (find_taken_edge_switch_expr): ... and here, handle cases
26179         with just a default label.
26180         * tree-cfg.h (group_case_labels_stmt): Adjust prototype.
26181         (group_case_labels): Likewise.
26182         * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When
26183         group_case_labels does anything cleanup the CFG again.
26184
26185 2017-06-29  Bin Cheng  <bin.cheng@arm.com>
26186
26187         PR tree-optimization/81196
26188         * tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop
26189         exit condition comparing two IVs.
26190
26191 2017-06-29  Richard Earnshaw  <rearnsha@arm.com>
26192
26193         * config/arm/parsecpu.awk (gen_comm_data): Add initializer for
26194         profile to the dummy entry at the end of the list of architectures.
26195         * config/arm/arm-cpu-cdata.h: Regenerated.
26196
26197 2017-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26198             Michael Collison <michael.collison@arm.com>
26199
26200         PR target/70119
26201         * config/aarch64/aarch64.md (*aarch64_<optab>_reg_<mode>3_mask1):
26202         New pattern.
26203         (*aarch64_reg_<mode>3_neg_mask2): New pattern.
26204         (*aarch64_reg_<mode>3_minus_mask): New pattern.
26205         (*aarch64_<optab>_reg_di3_mask2): New pattern.
26206         * config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost
26207         of shift when the shift amount is masked with constant equal to
26208         the size of the mode.
26209         * config/aarch64/predicates.md (subreg_lowpart_operator): New
26210         predicate.
26211
26212 2017-06-29  Martin Liska  <mliska@suse.cz>
26213
26214         * config/i386/i386.opt: Change range from [1,5] to [0,5].
26215
26216 2017-06-29  Yury Gribov  <tetra2005@gmail.com>
26217
26218         PR bootstrap/80565
26219         * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization
26220         code.
26221         * ipa-inline.h
26222         (edge_growth_cache_entry::edge_growth_cache_entry): New
26223         function.
26224         (reset_edge_growth_cache): Update to use constructor.
26225
26226 2017-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26227
26228         * config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New.
26229         (DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
26230         (LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
26231
26232 2017-06-28  Sebastian Peryt  <sebastian.peryt@intel.com>
26233
26234         * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64)
26235         (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics.
26236
26237 2017-06-28  Szabolcs Nagy  <szabolcs.nagy@arm.com>
26238
26239         * config.gcc (*-linux-musl*): Add t-musl tmake_file.
26240         (*-linux-uclibc*): Add t-uclibc tmake_file.
26241         * config/t-musl: New.
26242         * config/t-uclibc: New.
26243
26244 2017-06-28  Richard Earnshaw  <rearnsha@arm.com>
26245
26246         * config/arm/parsecpu.awk (profile): Parse new keyword in an arch
26247         context.
26248         (gen_comm_data): Emit architectural setting of arch_prof.
26249         * config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the
26250         profile.
26251         (armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise.
26252         (armv8-m.base, armv8-m.main): Likewise.
26253         * arm-protos.h (arm_build_target): Add profile field.
26254         (arch_option): Likewise.
26255         * config/arm/arm.c (arm_configure_build_target): Copy the profile to
26256         the active target.
26257         * config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use
26258         arm_active_target.profile.
26259
26260 2017-06-28  Richard Biener  <rguenther@suse.de>
26261
26262         PR middle-end/81227
26263         * fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not
26264         TYPE_OVERFLOW_WRAPS.
26265         * match.pd (negate_expr_p): Likewise.
26266         * tree-ssa-reassoc.c (optimize_range_tests_diff): Use
26267         fold_build2, not fold_binary.
26268
26269 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
26270
26271         * config/aarch64/aarch64 (aarch64_expand_mov_immediate):
26272         Convert memory address to Pmode.
26273         (aarch64_print_operand): Assert MEM operands are always Pmode.
26274
26275 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
26276
26277         PR target/79665
26278         * config/arm/aarch-common.c (arm_no_early_alu_shift_dep):
26279         Remove redundant if.
26280         (aarch_forward_to_shift_is_not_shifted_reg): Remove.
26281         * config/arm/aarch-common-protos.h
26282         (aarch_forward_to_shift_is_not_shifted_re): Remove.
26283         * config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass.
26284
26285 2017-06-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
26286
26287         PR ipa/81238
26288         * multiple_target.c (create_dispatcher_calls): Set the default
26289         clone to be static, not public.
26290
26291 2017-06-28  Richard Biener  <rguenther@suse.de>
26292
26293         * tree-vect-loop.c (vectorizable_reduction): Move special
26294         cond reduction IV var creation ...
26295         (vect_create_epilog_for_reduction): ... here.  Remove induction_index
26296         parameter.  Use STMT_VINFO_VECTYPE.
26297         * tree-vect-slp.c (vect_get_constant_vectors): Properly reset
26298         constant_p.
26299
26300 2017-06-28  Martin Liska  <mliska@suse.cz>
26301
26302         PR ipa/81128
26303         * ipa-visibility.c (non_local_p): Handle visibility.
26304
26305 2017-06-28  Martin Liska  <mliska@suse.cz>
26306
26307         PR driver/79659
26308         * common.opt: Add IntegerRange to various options.
26309         * opt-functions.awk (integer_range_info): New function.
26310         * optc-gen.awk: Add integer_range_info to cl_options struct.
26311         * opts-common.c (decode_cmdline_option): Handle
26312         CL_ERR_INT_RANGE_ARG.
26313         (cmdline_handle_error): Likewise.
26314         * opts.c (print_filtered_help): Show valid interval in
26315         when --help is provided.
26316         * opts.h (struct cl_option): Add range_min and range_max fields.
26317         * config/i386/i386.opt: Add IntegerRange for -mbranch-cost.
26318
26319 2017-06-28  Marc Glisse  <marc.glisse@inria.fr>
26320
26321         * match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^.
26322         (x * C EQ/NE y * C): New transformation.
26323
26324 2017-06-28  Christophe Lyon  <christophe.lyon@linaro.org>
26325
26326         * genmultilib (combination_space): Accept '+' in option names.
26327
26328 2017-06-28  Martin Liska  <mliska@suse.cz>
26329
26330         PR sanitizer/81224
26331         * asan.c (instrument_derefs): Bail out inner references
26332         that are hard register variables.
26333
26334 2017-06-28  Jakub Jelinek  <jakub@redhat.com>
26335
26336         PR target/81175
26337         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin
26338         rather than def_builtin_pure for __builtin_ia32_gatherpf*.
26339
26340 2017-06-28  Richard Biener  <rguenther@suse.de>
26341
26342         * tree-vectorizer.h (vect_get_vec_defs): Remove.
26343         (vect_get_slp_defs): Adjust.
26344         * tree-vect-loop.c (get_initial_defs_for_reduction): Split
26345         out from ...
26346         * tree-vect-slp.c (vect_get_constant_vectors): ... here and
26347         simplify.
26348         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
26349         get_initial_defs_for_reduction instead of vect_get_vec_defs.
26350         (vectorizable_reduction): Adjust.
26351         * tree-vect-slp.c (vect_get_constant_vectors): Remove reduction
26352         handling.
26353         (vect_get_slp_defs): Likewise.
26354         * tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust.
26355         (vectorizable_bswap): Adjust.
26356         (vectorizable_call): Likewise.
26357         (vectorizable_conversion): Likewise.
26358         (vectorizable_assignment): Likewise.
26359         (vectorizable_shift): Likewise.
26360         (vectorizable_operation): Likewise.
26361         (vectorizable_store): Likewise.
26362         (vectorizable_condition): Likewise.
26363         (vectorizable_comparison): Likewise.
26364
26365 2017-06-28  Michael Collison  <michael.collison@arm.com>
26366
26367         PR target/68535
26368         * config/arm/arm.c (gen_ldm_seq): Remove last unnecessary
26369         set of base_reg
26370         (arm_gen_movmemqi): Removed unused variable 'i'.
26371         Convert 'for' loop into 'while' loop.
26372         (arm_expand_prologue): Remove last unnecessary set of insn.
26373         (thumb_pop): Remove unused variable 'pushed_words'.
26374         (thumb_exit): Remove last unnecessary set of regs_to_pop.
26375
26376 2017-06-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
26377
26378         * config/s390/predicates.md: Use s390_rel_address_ok_p.
26379         * config/s390/s390-protos.h: Add prototype of
26380         s390_rel_address_ok_p.
26381         * config/s390/s390.c (s390_got_symbol): New function.
26382         (s390_rel_address_ok_p): New function.
26383         (legitimize_pic_address): Use s390_rel_address_ok_p.
26384         (s390_load_got): Use s390_got_symbol.
26385         (s390_option_override): Issue error if
26386         -mno-pic-data-is-text-relative is used without -fpic/-fPIC.
26387         * config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
26388         New macro.
26389         * config/s390/s390.opt: New option mpic-data-is-text-relative.
26390
26391 2017-06-27  Andrew Pinski  <apinski@cavium.com>
26392
26393         * match.pd (X >/>=/</<= 0 ? 1.0 : -1.0): New patterns.
26394         (X * copysign (1.0, X)): New pattern.
26395         (X * copysign (1.0, -X)): New pattern.
26396         (copysign (-1.0, CST)): New pattern.
26397
26398 2017-06-27  Joseph Myers  <joseph@codesourcery.com>
26399
26400         * genmultilib (combination_space): Remove variable.
26401         Validate reuse rules against regular expression for any sequence
26402         of multilib options in any order.
26403
26404 2017-06-27  Michael Collison  <michael.collison@arm.com>
26405
26406         * config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Directly
26407         call aarch64_split_simd_combine.
26408         * (aarch64_combine_internal<mode>): Delete pattern.
26409         * config/aarch64/aarch64.c (aarch64_split_simd_combine):
26410         Allow register and subreg operands.
26411
26412 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26413
26414         * config/i386/vxworks.h (ASM_SPEC): Remove definition. No target
26415         specific need, just fallback on defaults.
26416         (ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define.
26417
26418 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26419             Olivier Hainque  <hainque@adacore.com>
26420
26421         * config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct
26422         map for 64bits.
26423         (TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit
26424         targets. Pick a default if no particular attempt applied.
26425         (STACK_CHECK_PROTECT): Double for 64bit targets, which have
26426         larger contexts.
26427
26428 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26429
26430         * config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet.
26431         (x86_64-wrs-vxworks7): Likewise.
26432
26433 2017-06-27  Marek Polacek  <polacek@redhat.com>
26434
26435         PR sanitizer/81223
26436         * ubsan.c (instrument_null): Check get_base_address's result for null.
26437
26438 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
26439
26440         * match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations.
26441
26442 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
26443
26444         * builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR,
26445         BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types.
26446         (BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR,
26447         BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT):
26448         New function types.
26449         * builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV,
26450         BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND,
26451         BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT,
26452         BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG,
26453         BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT,
26454         BUILT_IN_FEUPDATEENV): New builtins.
26455         * tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE,
26456         TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries.
26457         * tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node,
26458         fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New
26459         macros.
26460         (builtin_structptr_types): Adjust size.
26461         * tree.c (builtin_structptr_types): Add four entries.
26462
26463 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26464             Olivier Hainque  <hainque@adacore.com>
26465
26466         * config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ...
26467         (TLS_SYM): New local macro, forcing reference to __tls__ on
26468         link command lines for VxWorks 7 RTPs, triggering initialization
26469         of tlsLib.
26470         (VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks
26471         OS features TLS support, true for RTPs on VxWorks 7.
26472         * config/vxworks.c (vxworks_override_options): Setup emutls
26473         accordingly.
26474
26475 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
26476
26477         * predict.c (test_prediction_value_range): Use -1U instead of -1
26478         to avoid narrowing conversion warning.
26479         * dumpfile.c (dump_options): Wrap all value into dump_flags_t cast
26480         to avoid narrowing conversion warning.
26481         * opt-functions.awk (var_ref): Return (unsigned short) -1 instead of
26482         -1.
26483         * optc-gen.awk (END): Expect (unsigned short) -1 instead of -1.
26484
26485 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26486
26487         * config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for
26488         64bit configurations.
26489         (PTR_DIFF_TYPE): Alternative definition for TARGET_LP64.
26490         (SIZE_TYPE): Likewise.
26491         * config/vxworks.c (vxworks_emutls_var_fields): Use
26492         long_unsigned_type_node instead of unsigned_type_node as the offset
26493         field type, which is "pointer" mode in emutls.c.
26494
26495 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
26496
26497         PR sanitizer/81209
26498         * ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var.
26499
26500         PR middle-end/81207
26501         * gimple-fold.c (replace_call_with_call_and_fold): Handle
26502         gimple_vuse copying separately from gimple_vdef copying.
26503
26504 2017-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
26505
26506         * value-prof.c (free_hist): Remove call to memset and the enclosing if
26507         condition.
26508
26509 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
26510             Olivier Hainque  <hainque@adacore.com>
26511
26512         * config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines
26513         for all vxworks7 targets.
26514         * config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0.
26515         (VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7.
26516         (VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing
26517         variations for VX6/VX7 and 32/64bits later on in ...
26518         (VXWORKS_LIB_SPEC): Leverage new macros.
26519         (VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7,
26520         as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword.
26521
26522 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
26523
26524         * config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define
26525         _VX_TOOL_FAMILY and _VX_TOOL to gnu.
26526
26527 2017-06-26  Carl Love  <cel@us.ibm.com>
26528
26529         * config/rs6000/rs6000-c.c: Add support for built-in functions
26530         vector bool char vec_reve (vector bool char);
26531         vector signed char vec_reve (vector signed char);
26532         vector unsigned char vec_reve (vector unsigned char);
26533         vector bool int vec_reve (vector bool int);
26534         vector signed int vec_reve (vector signed int);
26535         vector unsigned int vec_reve (vector unsigned int);
26536         vector bool long long vec_reve (vector bool long long);
26537         vector signed long long vec_reve (vector signed long long);
26538         vector unsigned long long vec_reve (vector unsigned long long);
26539         vector bool short vec_reve (vector bool short);
26540         vector signed short vec_reve (vector signed short);
26541         vector double vec_reve (vector double);
26542         vector float vec_reve (vector float);
26543         * config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI,
26544         VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin.
26545         * config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC.
26546         (altivec_vreve): New pattern.
26547         * config/rs6000/altivec.h (vec_reve): New define.
26548         * doc/extend.texi (vec_rev): Update the built-in documentation file
26549         for the new built-in functions.
26550
26551 2016-06-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
26552
26553         PR tree-optimization/71815
26554         * gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New
26555         function.
26556         (find_basis_for_candidate): Call uses_consumed_by_stmt rather than
26557         has_single_use.
26558         (slsr_process_phi): Likewise.
26559         (replace_uncond_cands_and_profitable_phis): Don't replace a
26560         multiply candidate with a stride of 1 (copy or cast).
26561         (phi_incr_cost): Call uses_consumed_by_stmt rather than
26562         has_single_use.
26563         (lowest_cost_path): Likewise.
26564         (total_savings): Likewise.
26565
26566 2017-06-26  Richard Biener  <rguenther@suse.de>
26567
26568         PR target/81175
26569         * config/i386/i386.c (ix86_init_mmx_sse_builtins):
26570         Use def_builtin_pure for all gather builtins.
26571
26572 2017-06-26  Richard Biener  <rguenther@suse.de>
26573
26574         PR tree-optimization/81203
26575         * tree-tailcall.c (find_tail_calls): Do not move stmts into
26576         non-dominating BBs.
26577
26578 2017-06-26  Marek Polacek  <polacek@redhat.com>
26579
26580         PR c/80116
26581         * doc/invoke.texi: Document -Wmultistatement-macros.
26582
26583 2017-06-26  Christophe Lyon  <christophe.lyon@linaro.org>
26584
26585         * doc/sourcebuild.texi (ARM-specific attributes): Document new
26586         arm_neon_ok_no_float_abi effective target.
26587
26588 2017-06-26  Richard Biener  <rguenther@suse.de>
26589
26590         PR tree-optimization/80928
26591         * cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag.
26592         (copy_bbs): Set BB_DUPLICATED flag early.
26593         (execute_on_growing_pred): Do not execute for BB_DUPLICATED
26594         marked blocks.
26595         (execute_on_shrinking_pred): Likewise.
26596         * tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in
26597         BB_DUPLICATED blocks.
26598         * tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly
26599         iterate over all PHIs considering removal of *gsi.
26600
26601 2017-06-23  Jim Wilson  <jim.wilson@linaro.org>
26602
26603         * doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and
26604         qdf24xx.
26605
26606 2017-06-23  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
26607
26608         * config/rs6000/rs6000-string.c: (expand_block_clear,
26609         do_load_for_compare, select_block_compare_mode,
26610         compute_current_alignment, expand_block_compare,
26611         expand_strncmp_align_check, expand_strn_compare,
26612         expand_block_move, rs6000_output_load_multiple)
26613         Move functions related to string/block move/compare
26614         to a separate file.
26615         * config/rs6000/rs6000.c: Move above functions to rs6000-string.c.
26616         * config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype
26617         for this function which is now used in two files.
26618         * config/rs6000/t-rs6000: Add rule to compile rs6000-string.o.
26619         * config.gcc: Add rs6000-string.o to extra_objs for
26620         targets powerpc*-*-* and rs6000*-*-*.
26621
26622 2017-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
26623
26624         PR target/80510
26625         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
26626         32-bit, since indexed is not valid for DImode.
26627         (mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
26628         3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
26629         (define_peephole2 for Altivec d-form load): Add 32-bit support.
26630         (define_peephole2 for Altivec d-form store): Likewise.
26631
26632         PR ipa/81185
26633         * multiple_target.c (create_dispatcher_calls): Only create the
26634         dispatcher call if the function is the default clone of a
26635         versioned function.
26636
26637 2017-06-23  Segher Boessenkool  <segher@kernel.crashing.org>
26638
26639         PR middle-end/80902
26640         * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
26641         a call, force the call to not be a tail call.
26642
26643 2017-06-23  Jeff Law  <law@redhat.com>
26644
26645         * doc/contrib.texi: Add entry for Steven Pemberton's work on
26646         enquire.
26647
26648 2017-06-23  Will Schmidt  <will_schmidt@vnet.ibm.com>
26649
26650         * config/rs6000/rs6000.c: Add include of ssa-propagate.h for
26651         update_call_from_tree().  (rs6000_gimple_fold_builtin): Add
26652         handling for early expansion of vector shifts (sl,sr,sra,rl).
26653         (builtin_function_type): Add vector shift right instructions
26654         to the unsigned argument list.
26655
26656 2017-06-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
26657
26658         rtl-optimizatoin/79286
26659         * ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.
26660         * rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never
26661         trap.  PIC register plus a const unspec without offset can never trap.
26662
26663 2017-06-23  Marc Glisse  <marc.glisse@inria.fr>
26664
26665         * tree.h (builtin_structptr_type): New type.
26666         (builtin_structptr_types): Declare new array.
26667         * tree.c (builtin_structptr_types): New array.
26668         (free_lang_data, build_common_tree_nodes): Use it.
26669
26670 2017-06-23  Jonathan Wakely  <jwakely@redhat.com>
26671
26672         PR c++/81187
26673         * doc/invoke.texi (-Wnoexcept-type): Fix name of option, from
26674         -Wnoexcept.
26675
26676 2017-06-22  Matt Turner  <mattst88@gmail.com>
26677
26678         * config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby
26679         Lake models to skylake case.  Assume skylake for unknown
26680         models with clflushopt.
26681
26682 2017-06-22  Jeff Law  <law@redhat.com>
26683
26684         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle
26685         frame sizes that do not satisfy aarch64_uimm12_shift.
26686
26687 2017-06-22  Jan Hubicka <hubicka@ucw.cz>
26688
26689         * profile-count.h (apply_probability,
26690         apply_scale, probability_in): Fix checks for zero.
26691
26692 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
26693
26694         * incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix.
26695         * doc/cppdiropts.texi (-I @var{dir}): Document it.
26696
26697 2016-06-22  Richard Biener  <rguenther@suse.de>
26698
26699         * tree-vect-loop.c (vect_model_reduction_cost): Handle
26700         COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without
26701         REDUC_MAX_EXPR support.
26702         (vectorizable_reduction): Likewise.
26703         (vect_create_epilog_for_reduction): Likewise.
26704
26705 2017-06-22  James Greenhalgh  <james.greenhalgh@arm.com>
26706
26707         * match.pd (A / (1 << B) -> A >> B): New.
26708         * generic-match-head.c: Include optabs-tree.h.
26709         * gimple-match-head.c: Likewise.
26710         * optabs-tree.h (target_supports_op_p): New.
26711         * optabs-tree.c (target_supports_op_p): New.
26712
26713 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
26714
26715         * configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for
26716         $gcc_cv_ld --help output.
26717         (gcc_cv_ld_demangle): Likewise.
26718         (gcc_cv_ld_eh_frame_hdr): Likewise.
26719         (gcc_cv_ld_pie): Likewise.
26720         (gcc_cv_ld_as_needed): Likewise.  Prefer native forms unless $gnu_ld.
26721         (gcc_cv_ld_buildid): Likewise.
26722         (gcc_cv_ld_sysroot): Likewise.
26723         (ld_bndplt_support): Likewise.
26724         (ld_pushpopstate_support): Likewise.
26725         * configure: Regenerate.
26726         * config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define.
26727
26728 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
26729
26730         PR target/81151
26731         * config/i386/sse.md (round<mode>2): Renumber match_dup and
26732         operands indexes to avoid gap between operands and match_dups.
26733
26734 2017-06-21  Andrew Pinski  <apinski@cavium.com>
26735
26736         * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs):
26737         Increment Arith_shift and Arith_shift_reg by 1.
26738         * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend):
26739         New tuning flag.
26740         * config/aarch64/aarch64.c (thunderx_tunings): Enable
26741         AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
26742         (aarch64_strip_extend): Add new argument and test for it.
26743         (aarch64_cheap_mult_shift_p): New function.
26744         (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't
26745         add a cost if it is true.
26746         Update calls to aarch64_strip_extend.
26747         (aarch64_rtx_costs): Update calls to aarch64_strip_extend.
26748
26749 2017-06-21  Andrew Pinski  <apinski@cavium.com>
26750
26751         * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88
26752         tunings.
26753         (thunderxt88): Likewise.
26754         * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable.
26755         (thunderx_prefetch_tune): New variable.
26756         (thunderx2t99_prefetch_tune): Update for the correct values.
26757         (thunderxt88_tunings): New variable.
26758         (thunderx_tunings): Use thunderx_prefetch_tune instead of
26759         generic_prefetch_tune.
26760         (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK.
26761
26762 2017-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26763
26764         * config/aarch64/atomics.md (aarch64_compare_and_swap<mode>_lse,
26765         SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z.
26766         (aarch64_compare_and_swap<mode>_lse, GPI): Likewise.
26767         (aarch64_atomic_cas<mode>, SHORT): Likewise for operand 2.
26768         (aarch64_atomic_cas<mode>, GPI): Likewise.
26769
26770 2017-06-21  Martin Liska  <mliska@suse.cz>
26771
26772         * gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT
26773         statements on cold and hot labels.
26774         * predict.c (tree_estimate_probability_bb): Remove the
26775         prediction from this place.
26776
26777 2017-06-21  Martin Liska  <mliska@suse.cz>
26778
26779         PR tree-optimization/79489
26780         * gimplify.c (maybe_add_early_return_predict_stmt): New
26781         function.
26782         (gimplify_return_expr): Call the function.
26783         * predict.c (tree_estimate_probability_bb): Remove handling
26784         of early return.
26785         * predict.def: Update comment about early return predictor.
26786         * gimple-predict.h (is_gimple_predict): New function.
26787         * predict.def: Change default value of early return to 66.
26788         * tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT
26789         statements.
26790         * passes.def: Put pass_strip_predict_hints to the beginning of
26791         IPA passes.
26792
26793 2017-06-21  Pierre-Marie de Rodat  <derodat@adacore.com>
26794
26795         * dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope
26796         FUNCTION_DECL declarations.
26797         (dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL
26798         declarations.
26799         (dwaf2out_decl): Likewise.
26800         * godump.c (go_early_global_decl): Skip call to the real debug hook
26801         for FUNCTION_DECL declarations.
26802         * passes.c (rest_of_decl_compilation): Skip call to the
26803         early_global_decl debug hook for FUNCTION_DECL declarations, unless
26804         -fdump-go-spec is passed.
26805
26806 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
26807
26808         * config/i386/i386.c (struct builtin_isa): New field pure_p.
26809         Reorder for compactness.
26810         (def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
26811         (def_builtin_pure, def_builtin_pure2): New functions.
26812         (ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.
26813
26814 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
26815
26816         * match.pd (nop_convert): New predicate.
26817         ((A +- CST1) +- CST2): Allow some NOP conversions.
26818
26819 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
26820
26821         PR c++/81130
26822         * gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types
26823         with ctors/dtors if GOVD_SHARED is set.
26824
26825 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26826
26827         * config/aarch64/aarch64.md (movti_aarch64):
26828         Emit mov rather than orr.
26829         (movtf_aarch64): Likewise.
26830         * config/aarch64/aarch64-simd.md (aarch64_simd_mov):
26831         Emit mov rather than orr.
26832
26833 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26834
26835         * config/aarch64/aarch64-simd.md (aarch64_simd_dup):
26836         Swap alternatives, make integer dup more expensive.
26837
26838 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26839
26840         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
26841         Return true for non-tls symbols.
26842
26843 2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>
26844
26845         * config/aarch64/aarch64-cores.def (cortex-a55): New.
26846         (cortex-a75): Likewise.
26847         (cortex-a75.cortex-a55): Likewise.
26848         * config/aarch64/aarch64-tune.md: Regenerate.
26849         * doc/invoke.texi (-mtune): Document new values for -mtune.
26850
26851 2017-06-21  Tom de Vries  <tom@codesourcery.com>
26852
26853         * doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add
26854         stack_size feature.
26855         (Effective-Target Keywords, Other attributes): Suggest using
26856         dg-add-options stack_size feature to get stack limit in stack_size
26857         effective target documentation.
26858
26859 2017-06-21  Julian Brown  <julian@codesourcery.com>
26860             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
26861
26862         * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi)
26863         (aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull.
26864         * config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New
26865         reservation.
26866         * config/arm/cortex-a53.md (cortex_a53_advsimd_type): Add crypto_pmull to
26867         attribute type list for neon_multiply.
26868         * config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to
26869         attribute type list for neon_multiply.
26870         * config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull.
26871         * config/arm/exynos-m1.md (exynos_m1_neon_type): Add crypto_pmull to
26872         attribute type list for neon_multiply.
26873         * config/arm/types.md (crypto_pmull): Add.
26874         * config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to
26875         attribute type list.
26876
26877 2017-06-20  Andreas Tobler  <andreast@gcc.gnu.org>
26878
26879         * config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to
26880         arm1176jzf-s.
26881
26882 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
26883
26884         * ira-costs.c (find_costs_and_classes): Initialize cost_classes later
26885         to make sure not to dereference a NULL cost_classes_ptr pointer.
26886
26887 2017-06-20  Carl Love  <cel@us.ibm.com>
26888
26889         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
26890         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
26891         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
26892         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
26893         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
26894         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
26895         VMULOSW): New enum "unspec" values.
26896         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
26897         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
26898         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
26899         altivec_vmulosw): New patterns.
26900         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
26901         VMULOSW): Add definitions.
26902
26903 2017-06-20  Julia Koval  <julia.koval@intel.com>
26904
26905         * config/i386/i386.c: Fix rounding expand for new pattern.
26906         * config/i386/subst.md: Fix pattern (parallel -> unspec).
26907
26908 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26909
26910         * config/aarch64/aarch64-option-extensions.def (rcpc): New.
26911         * config/aarch64/aarch64.h (AARCH64_FL_RCPC): New.
26912
26913 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26914
26915         * config/aarch64/aarch64-option-extensions.def (fp16): Fix expected
26916         feature string.
26917
26918 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26919
26920         * config/aarch64/aarch64-cores.def: Rearrange to sort by
26921         architecture, then by implementer ID.
26922         * config/aarch64/aarch64-tune.md: Regenerate.
26923
26924 2017-06-20  Richard Biener  <rguenther@suse.de>
26925
26926         PR middle-end/81097
26927         * fold-const.c (split_tree): Fold to type before negating.
26928
26929 2017-06-20  David Malcolm  <dmalcolm@redhat.com>
26930
26931         * diagnostic-show-locus.c
26932         (selftest::test_fixit_deletion_affecting_newline): New function.
26933         (selftest::diagnostic_show_locus_c_tests): Call it.
26934
26935 2017-06-20  Andreas Schwab  <schwab@suse.de>
26936
26937         PR target/80970
26938         * config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d"
26939         instead of "+d".
26940
26941 2017-06-20  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
26942
26943         * config/arm/arm-c.c (arm_cpu_builtins): New block to define
26944         __ARM_FEATURE_COPROC according to support.
26945
26946 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
26947
26948         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
26949         Rewritten to avoid overflow for > 32-bit pointers.
26950
26951         PR sanitizer/81125
26952         * ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser
26953         by removing enum keyword.
26954         (ubsan_type_descriptor): Likewise.  Formatting fix.
26955
26956         PR target/81121
26957         * config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df}
26958         splitter): Require TARGET_SSE2 in the condition.
26959
26960 2017-06-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
26961
26962         PR target/79799
26963         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support
26964         for doing vector set of SFmode on ISA 3.0.
26965         * config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise.
26966         (vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF
26967         element.
26968         (vsx_insert_extract_v4sf_p9): Add an optimization for inserting a
26969         SFmode value into a V4SF variable that was extracted from another
26970         V4SF variable without converting the element to double precision
26971         and back to single precision vector format.
26972         (vsx_insert_extract_v4sf_p9_2): Likewise.
26973
26974 2017-06-19  Jakub Jelinek  <jakub@redhat.com>
26975
26976         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Multiply
26977         in UWHI to avoid undefined overflow.
26978
26979         PR sanitizer/81125
26980         * ubsan.h (enum ubsan_encode_value_phase): New.
26981         (ubsan_encode_value): Change second argument to
26982         enum ubsan_encode_value_phase with default value of
26983         UBSAN_ENCODE_VALUE_GENERIC.
26984         * ubsan.c (ubsan_encode_value): Change second argument to
26985         enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P,
26986         adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just
26987         create_tmp_var_raw instead of create_tmp_var and use a
26988         TARGET_EXPR.
26989         (ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin,
26990         instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust
26991         ubsan_encode_value callers.
26992
26993         PR sanitizer/81111
26994         * ubsan.c (ubsan_encode_value): If current_function_decl is NULL,
26995         use create_tmp_var_raw instead of create_tmp_var, mark it addressable
26996         just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR.
26997
26998 2017-06-19  Richard Biener  <rguenther@suse.de>
26999
27000         PR middle-end/81118
27001         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Clear niter
27002         estimates if we changed anything.
27003
27004 2017-06-19  Richard Biener  <rguenther@suse.de>
27005
27006         PR tree-optimization/80887
27007         * tree-ssa-sccvn.c (mprts_hook_cnt): New global.
27008         (vn_lookup_simplify_result): Allow only mprts_hook_cnt succesful
27009         simplified lookups, then reset mprts_hook.
27010         (vn_nary_build_or_lookup_1): Set mprts_hook_cnt to 9 before
27011         simplifying.
27012         (try_to_simplify): Likewise.
27013
27014 2017-06-19  Martin Liska  <mliska@suse.cz>
27015
27016         PR sanitizer/80879
27017         * gimplify.c (gimplify_switch_expr):
27018         Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
27019
27020 2017-06-19  Martin Liska  <mliska@suse.cz>
27021
27022         * doc/install.texi: Document that PGO runs in 4 stages.
27023
27024 2017-06-19  Martin Liska  <mliska@suse.cz>
27025
27026         PR ipa/80732
27027         * attribs.c (make_dispatcher_decl): Do not append '.ifunc'
27028         to dispatcher function name.
27029         * multiple_target.c (replace_function_decl): New function.
27030         (create_dispatcher_calls): Redirect both edges and references.
27031
27032 2017-06-19  Jan Hubicka <hubicka@ucw.cz>
27033
27034         * profile-count.c (profile_count::dump): Dump quality.
27035         (profile_count::differs_from_p): Update for unsigned val.
27036         * profile-count.h (profile_count_quality): New enum.
27037         (profile_count): Turn m_val to 62bit unsigned, add quality tracking.
27038
27039 2017-06-19  Richard Biener  <rguenther@suse.de>
27040
27041         * tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take
27042         struct function as arg.
27043         (estimate_numbers_of_iterations): Export overload with loop arg.
27044         (free_numbers_of_iterations_estimates_loop): Use an overload of
27045         free_numbers_of_iterations_estimates instead.
27046         * tree-cfg.c (remove_bb): Adjust.
27047         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise.
27048         * tree-parloops.c (gen_parallel_loop): Likewise.
27049         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
27050         Likewise.
27051         (tree_unroll_loops_completely): Likewise.
27052         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
27053         Use an overload instead and export.
27054         (estimated_loop_iterations): Adjust.
27055         (max_loop_iterations): Likewise.
27056         (likely_max_loop_iterations): Likewise.
27057         (estimate_numbers_of_iterations): Take struct function as arg
27058         and adjust.
27059         (loop_exits_before_overflow): Adjust.
27060         (free_numbers_of_iterations_estimates_loop): Use an overload.
27061         * tree-vect-loop.c (vect_analyze_loop_form): Adjust.
27062         * tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise.
27063
27064 2017-06-19  Richard Biener  <rguenther@suse.de>
27065
27066         PR ipa/81112
27067         * ipa-prop.c (find_constructor_constant_at_offset): Handle
27068         RANGE_EXPR conservatively.
27069
27070 2017-06-16  Carl Love  <cel@us.ibm.com>
27071
27072         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
27073         definitions for vec_float, vec_float2, vec_floato,
27074         vec_floate built-ins.
27075         * config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code
27076         for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and
27077         floate.
27078         * config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF,
27079         FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF,
27080         UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions.
27081         * config/altivec.md (define_insn "p8_vmrgew_<mode>",
27082         define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew.
27083         * config/rs6000/altivec.h (vec_float, vec_float2, vec_floate,
27084         vec_floato): Add builtin defines.
27085         * doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato):
27086         Update the built-in documentation file for the new built-in
27087         functions.
27088
27089 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27090
27091         * config/arm/arm.opt (marm): Mark as the negative of of -mthumb.
27092         (mthumb): Mark as the negative of -marm.
27093
27094 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27095
27096         * doc/invoke.texi (ARM Options, -mcpu): Document supported
27097         extension options.
27098         (ARM Options, -mtune): Document that this accepts the same
27099         extension options as -mcpu.
27100         (ARM Options, -mfpu): Document addition of -mfpu=auto.
27101
27102 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27103
27104         * doc/invoke.texi (ARM Options, -march=): Document new syntax and
27105         permitted extensions.
27106
27107 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27108
27109         * config/arm/arm-cpus.in (armv7): Add extension +nofp.
27110         (armv7-r): Add aliases vfpv3xd and vfpv3-d16.
27111         (armv8-m.main): Add option +nodsp.
27112         * config/arm/arm-cpu-cdata.h: Regenerated.
27113
27114 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27115
27116         * config/arm/t-fuchsia: New file.
27117         * config.gcc (arm*-*-fuchsia*): Use it.
27118
27119 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27120
27121         * config/arm/t-symbian: Rewrite for new option infrastructure.
27122
27123 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27124
27125         * config/arm/t-phoenix (MULTILIB_REUSE): Clear variable.
27126         (MULTILIB_REQUIRED): Likewise.
27127
27128 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27129
27130         * config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty.
27131         (MULTILIB_RESUE): Likewise.
27132         (MULTILIB_MATCHES): Likewise.
27133         (MULTLIB_REQUIRED): Likewise.
27134
27135 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27136
27137         * config/arm/t-rtems: Rewrite for new option framework.
27138
27139 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27140
27141         * config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants)
27142         (v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants)
27143         (v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants)
27144         (v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ...
27145         * config/arm/t-multilib: ... here.
27146         (MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures.
27147         (MULTILIB_MATCHES): Use armv7 libraries for armv7-r.  Also use for
27148         armv7-a and armv8*-a when A-profile libraries have not been built.
27149         * config/arm/t-rmprofile: Rewrite.
27150
27151 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27152
27153         * genmultilib (multilib_reuse): Allow an explicit period to be escaped
27154         with a backslash.  Remove the backslash after substituting unescaped
27155         periods.
27156         * doc/fragments.texi (MULTILIB_REUSE): Document it.
27157
27158 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27159
27160         * config.gcc: (arm*-*-*): When building a-profile libraries, force
27161         the driver to pass through the default setting of -mfloat-abi.
27162         * common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm
27163         rather than NULL.
27164         * config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty.
27165         (all_feat_combs): New rule.
27166         (MULTILIB_OPTIONS): Use explicit ARM and Thumb directories.  Rework
27167         default libraries.
27168         * config/arm/t-aprofile: Rewrite.
27169
27170 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27171
27172         * config/arm/arm.h (FPUTYPE_AUTO): Define.
27173         * config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the
27174         fpu is not specified by the user/command-line.
27175         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete.
27176         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete.
27177         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete.
27178         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete.
27179         * common/config/arm/arm-common.c (arm_canon_arch_option): Use
27180         FPUTYPE_AUTO insted of FPUTYPE_DEFAULT.
27181
27182 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27183
27184         * config/arm/elf.h (MULTILIB_DEFAULTS): Delete.
27185         * config/arm/t-arm-elf: Rewritten.
27186
27187 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27188
27189         * config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we
27190         have some floating-point instructions.
27191         (TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT.
27192         (TARGET_MAYBE_HARD_FLOAT): New macro.
27193         * config/arm/arm-builtins.c (arm_init_builtins): Use
27194         TARGET_MAYBE_HARD_FLOAT.
27195         * config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI.
27196
27197 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27198
27199         * common/config/arm/arm-common.c: Define INCLUDE_LIST.
27200         (configargs.h): Include it.
27201         (arm_print_hint_for_fpu_option): New function.
27202         (arm_parse_fpu_option): New function.
27203         (candidate_extension): New class.
27204         (arm_canon_for_multilib): New function.
27205         * config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro.
27206         (EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION.
27207         (ARCH_CANONICAL_SPECS): New macro.
27208         (DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS.
27209
27210 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27211
27212         * config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu
27213         are set after handling multilib fragments.  Set target_cpu_default2
27214         from with_cpu.
27215
27216 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27217
27218         * config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real
27219         cpu name.
27220         (arm*-*-*): Set target_cpu_default2 to a quoted string.
27221         * config/arm/parsecpu.awk (check_cpu): Validate any extension
27222         options.
27223         (check_arch): Likewise.
27224         * config/arm/arm.c (arm_configure_build_target): Handle
27225         TARGET_CPU_DEFAULT being a string constant.  Scan any feature
27226         options in the default.
27227
27228 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27229
27230         * config/arm/arm-protos.h (cpu_arch_extension): Add field to record
27231         when an option is an alias of another.
27232         * config/arm/parsecpu.awk (optalias): New parser token.
27233         (gen_comm_data): Mark non-alias options as such.  Emit entries
27234         for extension aliases.
27235         * config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias.
27236         (armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise.
27237         (armv6kz, armv6zk, armv6t2): Likewise.
27238         (armv7): Make vfpv3-d16 an alias.
27239         (armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases.  Sort in
27240         canonical order.
27241         (armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases.
27242         Sort in canonical order.
27243         (armv8-a): Sort in canonical order.
27244         (armv8.1-a, armv8.2-a):  Likewise.
27245         (generic-armv7-a): Make neon and neon-vfpv3 aliases.  Sort in
27246         canonical order.
27247         (cortex-a9): Sort in canonical order.
27248         * config/arm/arm.c (selftests.h): Include it.
27249         (arm_test_cpu_arch_data): New function.
27250         (arm_run_self_tests): New function.
27251         (TARGET_RUN_TARGET_SELFTESTS): Redefine.
27252         (targetm): Move declaration to the end of the file.
27253         * arm-cpu-cdata.h: Regenerated.
27254
27255 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27256
27257         * config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to
27258         call to target_mode_check describing the type of option passed.
27259         * common/config/arm/arm-common.c (arm_arch_core_flag): Delete.
27260         (arm_target_thumb_only): Use arm_parse_arch_option_name or
27261         arm_parse_cpu_option_name to match parameters against list of
27262         available targets.
27263         * config/arm/parsecpu.awk (gen_comm_data): Don't generate
27264         arm_arch_core_flags data structure.
27265         * config/arm/arm-cpu_cdata.h: Regenerated.
27266
27267 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27268
27269         * common/config/arm/arm-common.c (arm_initialize_isa): Moved here from
27270         config/arm/arm.c.
27271         (arm_print_hint_for_cpu_option): Likewise.
27272         (arm_print_hint_for_arch_option): Likewise.
27273         (arm_parse_cpu_option_name): Likewise.
27274         (arm_parse_arch_option_name): Likewise.
27275         * config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number
27276         of entries in the all_fpus list.
27277         * config/arm/arm-protos.h (all_architectures, all_cores): Declare.
27278         (arm_parse_cpu_option_name): Declare.
27279         (arm_parse_arch_option_name): Declare.
27280         (arm_parse_option_features): Declare.
27281         (arm_intialize_isa): Declare.
27282         * config/arm/parsecpu.awk (gen_data): Move CPU and architecture
27283         data tables to ...
27284         (gen_comm_data): ... here.  Make definitions non-static.
27285         * config/arm/arm-cpu-data.h: Regenerated.
27286         * config/arm/arm-cpu-cdata.h: Regenerated.
27287
27288 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27289
27290         * config/arm/arm-protos.h (arm_build_target): Remove arch_core.
27291         (cpu_arch_extension): New structure.
27292         (cpu_arch_option, arch_option, cpu_option): New structures.
27293         * config/arm/parsecpu.awk (gen_headers): Build an enumeration of
27294         architecture types.
27295         (gen_data): Generate new format data tables.
27296         * config/arm/arm.c (cpu_tune): New structure.
27297         (cpu_option, processors): Delete.
27298         (arm_print_hint_for_core_or_arch): Delete.  Replace with ...
27299         (arm_print_hint_for_cpu_option): ... this and ...
27300         (arm_print_hint_for_arch_option): ... this.
27301         (arm_parse_arch_cpu_name): Delete.  Replace with ...
27302         (arm_parse_cpu_option_name): ... this and ...
27303         (arm_parse_arch_option_name): ... this.
27304         (arm_unrecognized_feature): Change type of target parameter to
27305         cpu_arch_option.
27306         (arm_parse_arch_cpu_features): Delete.  Replace with ...
27307         (arm_parse_option_features): ... this.
27308         (arm_configure_build_target): Rework to use new configuration data
27309         tables.
27310         (arm_print_tune_info): Rework for new configuration data tables.
27311         * config/arm/arm-cpu-data.h: Regenerated.
27312         * config/arm/arm-cpu.h: Regenerated.
27313
27314 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27315
27316         * Makefile.in (OBJS): Move sbitmap.o from here ...
27317         (OBJS-libcommon): ... to here.
27318
27319 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27320
27321         * config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU.
27322         (ISA_ALL_CRYPTO): New macro.
27323         (ISA_ALL_SIMD): New macro
27324         (ISA_ALL_FP): New macro.
27325         * config/arm/arm.c (fpu_bitlist): Update initializer.
27326         * config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto,
27327         simd or fp.
27328         (arm9e): Add fpu.  Add option for nofp
27329         (arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise.
27330         (arm926ej-s, arm1026ej-s): Likewise.
27331         (generic-armv7-a): Add fpu.  Add options for simd, vfpv3, vfpv3-d16,
27332         vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3,
27333         neon-fp16, neon-vfpv4, nofp and nosimd.
27334         (cortex-a5, cortex-a7): Add fpu.  Add options for nosimd and nofp.
27335         (cortex-a8): Add fpu.  Add option for nofp.
27336         (cortex-a9): Add fpu.  Add options for nosimd and nofp.
27337         (cortex-a12, cortex-a15, cortex-a17): Add fpu.  Add option for nofp.
27338         (cortex-r4f): Add fpu.
27339         (cortex-r5): Add fpu.  Add options for nofp.dp and nofp.
27340         (cortex-r7): Use idiv option from architecture.  Add fpu.  Add option
27341         for nofp.
27342         (cortex-r8): Likewise.
27343         (cortex-m4): Add fpu.  Add option for nofp.
27344         (cortex-a15.cortex-a7): Add fpu.  Add option for nofp.
27345         (cortex-a17.cortex-a7): Likewise.
27346         (cortex-a32): Add fpu.  Add options for crypto and nofp.
27347         (cortex-a35, cortex-a53): Likewise.
27348         (cortex-a57): Add fpu.  Add option for crypto.
27349         (cortex-a72, cortex-a73): Likewise.
27350         (exynos-m1): Likewise.
27351         (cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
27352         (cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise.
27353         (cortex-m33): Add fpu.  Add option for nofp.
27354         * config/arm/arm-cpu-cdata.h: Regenerated
27355         * config/arm/arm-cpu-data.h: Regenerated.
27356
27357 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27358
27359         * arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp.
27360         (armv5te, armv5tej): Likewise.
27361         (armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise.
27362         (armv7): Add options fp and vfpv3-d16.
27363         (armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16,
27364         vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4,
27365         nofp and nosimd.
27366         (armv7ve): Likewise.
27367         (armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv.
27368         (armv7e-m): Add options fp, fpv5, fp.dp and nofp.
27369         (armv8-a): Add nocrypto option.
27370         (armv8.1-a, armv8.2-a): Likewise.
27371         (armv8-m.main): add options fp, fp.dp and nofp.
27372
27373 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27374
27375         * config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and
27376         nofp.
27377         (armv8-a+crc): Delete.
27378         (armv8.1-a): Add options simd, crypto and nofp.
27379         (armv8.2-a): Add options fp16, simd, crypto and nofp.
27380         (armv8.2-a+fp16): Delete.
27381         (armv8-m.main): Add option dsp.
27382         (armv8-m.main+dsp): Delete.
27383         (cortex-a8): Add fpu.  Add nofp option.
27384         (cortex-a9): Add fpu.  Add nofp and nosimd options.
27385         * config/arm/parsecpu.awk (gen_data): Generate option tables and
27386         link to main cpu and architecture data structures.
27387         (gen_comm_data): Only put isa attributes from the main architecture
27388         in common tables.
27389         (option): New statement for architecture and CPU entries.
27390         * arm.c (struct cpu_option): New structure.
27391         (struct processors): Add entry for options.
27392         (arm_unrecognized_feature): New function.
27393         (arm_parse_arch_cpu_name): Ignore any characters after the first
27394         '+' character.
27395         (arm_parse_arch_cpu_feature): New function.
27396         (arm_configure_build_target): Separate out any CPU and architecture
27397         features and parse separately.  Don't error out if -mfpu=auto is
27398         used with only an architecture string.
27399         (arm_print_asm_arch_directives): New function.
27400         (arm_file_start): Call it.
27401         * config/arm/arm-cpu-cdata.h: Regenerated.
27402         * config/arm/arm-cpu-data.h: Likewise.
27403         * config/arm/arm-tables.opt: Likewise.
27404
27405 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27406
27407         * config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the
27408         assembler when it is not -mfpu=auto.
27409
27410 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27411
27412         * config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro.
27413         (ASM_REWRITE_SPEC_FUNCTIONS): New macro.
27414         (BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro.
27415         (ASM_CPU_SPEC): Rewrite.
27416         (MCPU_MTUNE_NATIVE_FUNCTIONS): New macro.
27417         (EXTRA_SPEC_FUNCTIONS): Move outside of ifdef.  Use
27418         MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS.  Remove
27419         reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS.
27420         * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure
27421         copied string is NUL-terminated.  Also strip any characters prefixed
27422         by '+'.
27423         (arm_rewrite_selected_arch): New function.
27424         (arm_rewrite_march): New function.
27425
27426 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27427
27428         * config/arm/arm.opt (x_arm_arch_string): New TargetSave option.
27429         (x_arm_cpu_string, x_arm_tune_string): Likewise.
27430         (march, mcpu, mtune): Convert to string-based options.
27431         * config/arm/arm.c (arm_print_hint_for_core_or_arch): New function.
27432         (arm_parse_arch_cpu_name): New function.
27433         (arm_configure_build_target): Use arm_parse_arch_cpu_name to
27434         identify selected architecture or CPU.
27435         (arm_option_save): New function.
27436         (TARGET_OPTION_SAVE): Redefine.
27437         (arm_option_restore): Restore string options.
27438         (arm_option_print): Print string options.
27439
27440 2017-06-16  Martin Sebor  <msebor@redhat.com>
27441
27442         PR tree-optimization/80933
27443         PR tree-optimization/80934
27444         * builtins.c (fold_builtin_3): Do not handle bcmp here.
27445         * gimple-fold.c (gimple_fold_builtin_bcmp): New function.
27446         (gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise.
27447         (gimple_fold_builtin): Call them.
27448
27449 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27450
27451         * gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path
27452         as unlikely; update profile.
27453
27454 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27455
27456         * predict.c (force_edge_cold): Handle declaring edges impossible
27457         more aggresively.
27458
27459 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27460
27461         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update
27462         profile.
27463         (try_unroll_loop_completely): Fix reporting.
27464
27465 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27466
27467         * tree-ssa-tail-merge.c (replace_block_by): Fix profile updating.
27468
27469 2017-06-16  James Greenhalgh  <james.greenhalgh@arm.com>
27470
27471         PR target/71778
27472         * config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET
27473         if given a non-constant argument for an intrinsic which requires a
27474         constant.
27475
27476 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27477
27478         * profile.c (compare_freqs): New function.
27479         (branch_prob): Sort edge list.
27480         (find_spanning_tree): Assume that the list is priority sorted.
27481
27482 2017-06-16  Richard Biener  <rguenther@suse.de>
27483
27484         PR tree-optimization/81090
27485         * passes.def (pass_record_bounds): Remove.
27486         * tree-pass.h (make_pass_record_bounds): Likewise.
27487         * tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
27488         make_pass_record_bounds): Likewise.
27489         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
27490         not free niter estimates at the beginning but at the end.
27491         * tree-scalar-evolution.c (scev_finalize): Free niter estimates.
27492
27493 2017-06-16  Richard Biener  <rguenther@suse.de>
27494
27495         * tree-switch-conversion.c (emit_case_bit_tests): Adjust
27496         initializer to workaround ICE in host GCC 4.8.
27497
27498 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27499
27500         * ipa-inline-transform.c (update_noncloned_frequencies): Update also
27501         counts.
27502         (clone_inlined_nodes): Update.
27503
27504 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27505
27506         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update
27507         prefetch settings, and enable prefetching by default at -O3.
27508
27509 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27510
27511         * config/aarch64/aarch64.c (aarch64_override_options_internal):
27512         Set flag_prefetch_loop_arrays according to tuning data.
27513
27514 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27515
27516         * config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune):
27517         New tune structure.
27518         (struct tune_params): Use cpu_prefetch_tune instead of cache_line_size.
27519         [Unrelated to main purpose of the patch] Place the pointer field last
27520         to enable type checking errors when tune structure are wrongly merged.
27521         * config/aarch64/aarch64.c (generic_prefetch_tune,)
27522         (exynosm1_prefetch_tune, qdf24xx_prefetch_tune,)
27523         (thunderx2t99_prefetch_tune): New tune constants.
27524         (tune_params *_tunings): Update all tunings (no functional change).
27525         (aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES,
27526         PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE
27527         from tunings structures.
27528
27529 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
27530
27531         PR sanitizer/81094
27532         * ubsan.c (instrument_null): Add T argument, use it instead
27533         of computing it based on IS_LHS.
27534         (instrument_object_size): Likewise.
27535         (pass_ubsan::execute): Adjust instrument_null and
27536         instrument_object_size callers to pass gimple_get_lhs or
27537         gimple_assign_rhs1 result to it.  Use instrument_null instead of
27538         calling get_base_address and instrument_mem_ref.  Handle
27539         aggregate call arguments for object-size sanitization.
27540
27541 2017-06-16  Yury Gribov  <tetra2005@gmail.com>
27542
27543         PR tree-optimization/81089
27544         * tree-vrp.c (is_masked_range_test): Validate operands of
27545         subexpression.
27546
27547 2017-06-15  Martin Sebor  <msebor@redhat.com>
27548
27549         PR c++/80560
27550         * dumpfile.c (dump_register): Avoid calling memset to initialize
27551         a class with a default ctor.
27552         * gcc.c (struct compiler): Remove const qualification.
27553         * genattrtab.c (gen_insn_reserv): Replace memset with initialization.
27554         * hash-table.h: Ditto.
27555         * ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with
27556           assignment.
27557         * ipa-prop.c (ipa_free_edge_args_substructures): Ditto.
27558         * omp-low.c (lower_omp_ordered_clauses): Replace memset with
27559         default ctor.
27560         * params.h (struct param_info): Make struct members non-const.
27561         * tree-switch-conversion.c (emit_case_bit_tests): Replace memset
27562         with default initialization.
27563         * vec.h (vec_copy_construct, vec_default_construct): New helper
27564         functions.
27565         (vec<T>::copy, vec<T>::splice, vec<T>::reserve): Replace memcpy
27566         with vec_copy_construct.
27567         (vect<T>::quick_grow_cleared): Replace memset with default ctor.
27568         (vect<T>::vec_safe_grow_cleared, vec_safe_grow_cleared): Same.
27569         * doc/invoke.texi (-Wclass-memaccess): Document.
27570
27571 2017-06-15  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27572
27573         * emit-rtl.h (is_leaf): Update comment about local
27574         register allocator.
27575
27576 2017-06-15  Jozef Lawrynowicz   <jozef.l@somniumtech.com>
27577
27578         PR target/78818
27579         * config/msp430/msp430.c (msp430_data_attr): Check that it's possible
27580         for a variable to have a section before checking if the section has a
27581         name.
27582         Set section to.persistent if persistent attribute is set.
27583         Warn if .persistent attribute is used on an automatic variable.
27584
27585 2017-06-15  Eric Botcazou  <ebotcazou@adacore.com>
27586
27587         PR rtl-optimization/80474
27588         * reorg.c (update_block): Do not ignore instructions in a delay slot.
27589
27590 2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
27591
27592         * config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
27593         of REGNO.
27594
27595 2017-06-14  Maciej W. Rozycki  <macro@imgtec.com>
27596
27597         * config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
27598         (casesi): Emit bounds checking as RTL.
27599         (casesi_internal_mips16_<mode>): Remove bounds checking.
27600
27601 2017-06-14  Max Filippov  <jcmvbkbc@gmail.com>
27602
27603         * config/xtensa/xtensa.c (xtensa_option_override): Append
27604         MASK_CONST16 to target_flags in the absence of TARGET_L32R.
27605         (hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
27606          xtensa_doloop_hooks): Define unconditionally.
27607         (xtensa_reorg_loops): Only call reorg_loops in the presence of
27608         TARGET_LOOPS.
27609         * config/xtensa/xtensa.h (TARGET_L32R): New definition.
27610         (TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
27611         for it in xtensa_option_override.
27612         (HARD_FRAME_POINTER_IS_FRAME_POINTER,
27613          HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.
27614
27615 2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>
27616
27617         * doc/cppopts.texi: Document '-' special value to -MF.
27618
27619 2017-06-14  Wilco Dijkstra  <wdijkstr@arm.com>
27620
27621         * config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
27622         (cortex_a53_fconst): Likewise.
27623         (cortex_a53_fpmul): Likewise.
27624         (cortex_a53_f_load_64): Likewise.
27625         (cortex_a53_f_load_many): Likewise.
27626         (cortex_a53_advsimd_alu): Likewise.
27627         (cortex_a53_advsimd_alu_q): Likewise.
27628         (cortex_a53_advsimd_mul): Likewise.
27629         (cortex_a53_advsimd_mul_q): Likewise.
27630         (fpmac bypass): Add new bypass for fpmac-fpmac case.
27631         Add missing fmul, r2f_cvt and fconst cases.
27632
27633 2017-06-14  Richard Biener  <rguenther@suse.de>
27634
27635         PR middle-end/81088
27636         * fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
27637         literal constants.
27638         (fold_binary_loc): When associating do not treat pre-existing
27639         TREE_OVERFLOW on literal constants as a reason to allow
27640         TREE_OVERFLOW on associated literal constants.
27641
27642 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27643
27644         * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
27645         (MASK_FEATURES): New macro.
27646         * config/sparc/sparc.c (sparc_option_override): Remove the special
27647         handling of -mfpu and generalize it to all MASK_FEATURES switches.
27648
27649 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27650
27651         * simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
27652         a division of 0 if non-call exceptions are enabled.
27653
27654 2017-06-14  Andrew Pinski  <apinski@cavium.com>
27655             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
27656
27657         PR target/71663
27658         * config/aarch64/aarch64.c (aarch64_expand_vector_init):
27659         Improve vector initialization code gen for only variable case.
27660
27661 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27662
27663         * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
27664
27665 2017-06-14  Richard Biener  <rguenther@suse.de>
27666
27667         PR tree-optimization/81083
27668         * tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
27669         as values.
27670
27671 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27672
27673         * config/rs6000/rs6000.c: Update all comments that mentioned SPE.
27674         (rs6000_expand_builtin): Remove RS6000_BTC_EVSEL.
27675         * config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete.
27676         * config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete.  Adjust former use.
27677         * config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete.
27678         * config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete.
27679
27680 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27681
27682         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE.
27683         * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE.
27684
27685 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27686
27687         * config/rs6000/rs6000.h (FIXED_SCRATCH): Delete.
27688
27689 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27690
27691         * config/rs6000/t-rtems: Don't handle SPE.
27692
27693 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27694
27695         * config/rs6000/t-linux: Don't handle SPE.
27696
27697 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27698
27699         * config/rs6000/eabispe.h: Delete file.
27700
27701 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27702
27703         * config/rs6000/t-spe: Delete file.
27704
27705 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27706
27707         * config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete.
27708         (rs6000_legitimate_offset_address_p): Return false for anything in
27709         V2SImode or V2SFmode.
27710
27711 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27712
27713         * config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes
27714         except V2SF and V2SI.  Rearrange the vector modes, and add comments.
27715         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode
27716         and V4HImode.
27717         (reg_offset_addressing_ok_p): Remove V4HImode and V1DImode.
27718         (rs6000_legitimate_offset_address_p): Ditto.
27719         (rs6000_emit_move): Ditto.
27720         (rs6000_init_builtins): Remove V4HI_type_node.
27721
27722 2017-06-13  Martin Liska  <mliska@suse.cz>
27723
27724         PR sanitize/78204
27725         * asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
27726         (gate_asan): Likewise.
27727         * asan.h (asan_no_sanitize_address_p): Remove the function.
27728         (sanitize_flags_p): New function.
27729         * builtins.def: Fix coding style.
27730         * common.opt: Use renamed enum value.
27731         * convert.c (convert_to_integer_1): Use sanitize_flags_p.
27732         * doc/extend.texi: Document no_sanitize attribute.
27733         * flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
27734         to SANITIZE_UNDEFINED_NONDEFAULT.
27735         * gcc.c (sanitize_spec_function): Use the renamed enum value.
27736         * gimple-fold.c (optimize_atomic_compare_exchange_p):
27737         Use sanitize_flags_p.
27738         * gimplify.c (gimplify_function_tree): Likewise.
27739         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
27740         * opts.c (parse_no_sanitize_attribute): New function.
27741         (common_handle_option): Use renamed enum value.
27742         * opts.h (parse_no_sanitize_attribute): Declare.
27743         * tree.c (sanitize_flags_p): New function.
27744         * tree.h: Declared here.
27745         * tsan.c: Use sanitize_flags_p.
27746         * ubsan.c (ubsan_expand_null_ifn): Likewise.
27747         (instrument_mem_ref): Likewise.
27748         (instrument_bool_enum_load): Likewise.
27749         (do_ubsan_in_current_function): Remove the function.
27750         (pass_ubsan::execute): Use sanitize_flags_p.
27751         * ubsan.h: Remove do_ubsan_in_current_function
27752         * tree-cfg.c (print_no_sanitize_attr_value): New function.
27753         (dump_function_to_file): Use it here.
27754
27755 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27756
27757         PR tree-optimization/80803
27758         PR tree-optimization/81063
27759         * tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file.
27760         (propagate_subaccesses_across_link): Enqueue subtree whenever
27761         necessary instead of relying on the caller.
27762
27763 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27764
27765         * tree-sra.c (add_access_to_work_queue): Only enqueue accesses
27766         that have a first_link.
27767         (sort_and_splice_var_accesses): Do not check first_link before
27768         enquing.
27769         (subtree_mark_written_and_enqueue): Likewise.
27770         (propagate_all_subaccesses): Likewise and do not stop at first
27771         parent with a first_link.
27772
27773 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27774
27775         * tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr
27776         instead of f.
27777
27778 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27779
27780         * match.pd: New pattern.
27781
27782 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27783
27784         * tree-vrp.c (is_masked_range_test): New function.
27785         (register_edge_assert_for): Determine ranges for
27786         some bit tests.
27787
27788 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27789
27790         PR tree-optimization/67328
27791         * fold-const.c (maskable_range_p): New function.
27792         (build_range_check): Generate bittests if possible.
27793
27794 2017-06-13  Martin Liska  <mliska@suse.cz>
27795
27796         * gimple-pretty-print.c (dump_probability): Add new argument.
27797         (dump_edge_probability): Dump both probability and count.
27798         (dump_gimple_label): Likewise.
27799         (dump_gimple_bb_header): Likewise.
27800
27801 2017-06-13  Georg-Johann Lay  <avr@gjlay.de>
27802
27803         PR target/81072
27804         * config/avr/avr-devices.c: Fix indentation.
27805         * config/avr/gen-avr-mmcu-specs.c: Dito.
27806
27807 2017-06-13  Richard Biener  <rguenther@suse.de>
27808
27809         * tree-vect-loop.c (vect_model_reduction_cost): Do not fail,
27810         instead get vector type from stmt_info.
27811         (vectorizable_reduction): Adjust.  Remove dead code.
27812
27813 2017-06-13  Richard Biener  <rguenther@suse.de>
27814
27815         PR middle-end/81065
27816         * fold-const.c (extract_muldiv_1): Remove bogus distribution
27817         case of C * (x * C2 + C3).
27818         (fold_addr_of_array_ref_difference): Properly fold index difference.
27819
27820 2017-06-12  David S. Miller  <davem@davemloft.net>
27821
27822         PR target/80968
27823         * config/sparc/sparc.md (return expander): Emit frame blockage if
27824         function uses alloca.
27825
27826 2017-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
27827
27828         * combine.c (make_field_assignment): Check len rather than the mode
27829         precision when calling force_to_mode.
27830
27831 2017-06-12  Georg-Johann Lay  <avr@gjlay.de>
27832
27833         Support multilibs and devices that see flash in RAM address range.
27834
27835         PR target/81072
27836         * config/avr/avr-arch.h (avr_arch_id) <ARCH_AVRXMEGA3>: New enum.
27837         (avr_mcu_t) <flash_pm_offset>: New field.
27838         (avr_device_specific_features) <AVR_ISA_RCALL>: New enum.
27839         * config/avr/avr.h (AVR_SHORT_CALLS): New define.
27840         (AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS.
27841         (AVR_TINY_PM_OFFSET): Remove macro.
27842         * config/avr/avr.opt (-mshort-calls): New option.
27843         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
27844         [*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL.
27845         * config/avr/avr-c.c (avr_cpu_cpp_builtins)
27846         <__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS.
27847         <__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition
27848         instead of avr_arch->have_jmp_call.
27849         <__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset.
27850         [AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use
27851         avr_arch->flash_pm_offset to define.
27852         * config/avr/avr-devices.c (avr_arch_types): Add initializers for
27853         new field flash_pm_offset.  Add entry for avrxmega3.
27854         (avr_texinfo): Add entry for avrxmega3.
27855         * config/avr/avr-mcus.def: Add entries for: avrxmega3,
27856         attiny212, attiny214,
27857         attiny412, attiny414, attiny416, attiny417,
27858         attiny814, attiny816, attiny817,
27859         attiny1614, attiny1616, attiny1617,
27860         attiny3214, attiny3216, attiny3217.
27861         * config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use
27862         avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET.
27863         (avr_print_operand_address) [AVR_TINY]: Same.
27864         (avr_asm_init_sections) <readonly_data_section>: Only patch
27865         callback if avr_arch->flash_pm_offset = 0.
27866         (avr_asm_named_section) <avr_need_copy_data_p>: Skip setting it
27867         for rodata if avr_arch->flash_pm_offset != 0.
27868         (avr_encode_section_info) [AVR_TINY]: Adjust comment.
27869         * config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars.
27870         (opts) [AVR_ISA_RCALL]: Append opt_rcall.
27871         (m_options): Append opt_rcall.
27872         (m_dirnames): Append dir_rcall.
27873         * config/avr/t-multilib: Regenerate.
27874
27875         * configure.ac [target=avr]: Check whether avrxmega3 default
27876         linker description file works as needed.
27877         * configure: Regenerate.
27878         * doc/avr-mmcu.texi: Regenerate.
27879         * doc/invoke.texi (AVR Options) <-mshort-calls>: Document it.
27880         <__AVR_ARCH__>: Document avrxmega3 and 103.
27881         <__AVR_HAVE_JMP_CALL__>: Adjust documentation.
27882         <__AVR_SHORT_CALLS__>: Document it.
27883         <__AVR_PM_BASE_ADDRESS__>: Document it.
27884         * doc/extend.texi (AVR Options) <-mshort-calls>: Document it.
27885         (AVR Variable Attributes) <progmem>: Document this is
27886         not needed for avrxmega3.
27887         (AVR Named Address Spaces) <__flash>: Dito.
27888
27889 2017-06-12  Jan Hubicka  <hubicka@ucw.cz>
27890
27891         * cgraph.c (cgraph_node::dump): Complain about profile insanities.
27892
27893 2017-06-12  Doug Rupp  <rupp@adacore.com>
27894
27895         * config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
27896         Append vxworks-stdint.h to the tm_file list.
27897         * config/vxworks-stdint.h: New file.
27898
27899 2017-06-12  Martin Liska  <mliska@suse.cz>
27900
27901         PR tree-optimization/81041
27902         * tree-profile.c (gimple_gen_ic_func_profiler):
27903         Create an extra BB in profile-generate
27904         (gimple_gen_time_profiler): Likewise.
27905
27906 2017-06-12  Jakub Jelinek  <jakub@redhat.com>
27907
27908         PR tree-optimization/81003
27909         * tree-ssa-reassoc.c (force_into_ssa_name): New function.
27910         (update_range_test): Use it instead of force_gimple_operand_gsi.
27911
27912 2017-06-12  Richard Biener  <rguenther@suse.de>
27913
27914         PR tree-optimization/81053
27915         * tree-vect-loop.c (vect_is_simple_reduction): Handle PHI
27916         with backedge value not defined in loop.  Simplify def stmt
27917         compute.
27918
27919 2017-06-11  Tom de Vries  <tom@codesourcery.com>
27920
27921         PR target/79939
27922         * config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function.
27923         Return true.
27924         (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
27925         nvptx_cannot_force_const_mem.
27926
27927 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27928
27929         * opts.c (finish_options): Move test for flag_split_stack after
27930         it has been initialized.
27931
27932 2017-06-11  Jason Merrill  <jason@redhat.com>
27933
27934         * tree.h (id_equal): New.
27935         * dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c,
27936         omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it
27937         instead of strcmp of IDENTIFIER_POINTER.
27938
27939 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27940
27941         * ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h
27942         (mark_all_inlined_calls_cdtor): Fix formating.
27943         (inline_transform): Rescale profile before inlining.
27944
27945 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27946
27947         * cgraph.h (cgraph_edge::clone): Update prototype.
27948         * cgraphclones.c (cgraph_edge::clone): Update profile scaling.
27949         (cgraph_node::create_clone): Update.
27950         (cgraph_node::create_version_clone): Update.
27951         * tree-inline.c (copy_bb): Update.
27952         (expand_call_inline): Update.
27953
27954 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
27955
27956         * config/rs6000/rs6000.c (emit_vrsave_prologue): New function,
27957         factored out from ...
27958         (rs6000_emit_prologue): ... here.
27959
27960 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
27961
27962         * config/rs6000/rs6000.c (emit_split_stack_prologue): New function,
27963         factored out from ...
27964         (rs6000_emit_prologue): ... here.
27965
27966 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27967
27968         * predict.c (drop_profile): Also drop individual bb/edge and cgraph
27969         edge counts.
27970         (handle_missing_profiles): Fix computation of tp_first_run.
27971         (counts_to_freqs): Do not touch freqs when count is 0.
27972
27973 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27974
27975         * cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch
27976         profile.
27977
27978 2017-06-10  Tom de Vries  <tom@codesourcery.com>
27979
27980         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
27981         attributes): Document signal effective target.
27982
27983 2017-06-10  Tom de Vries  <tom@codesourcery.com>
27984
27985         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
27986         Document effective target stack_size.
27987
27988 2017-06-09  David Malcolm  <dmalcolm@redhat.com>
27989
27990         * diagnostic.c (diagnostic_report_diagnostic): Only add fixits
27991         to the edit_context if they can be auto-applied.
27992
27993 2017-06-9  Ian Lance Taylor  <iant@golang.org>
27994
27995         * opts.c (finish_options): If -fsplit-stack, disable implicit
27996         -forder-blocks-and-partition.
27997         * doc/invoke.texi (Optimize Options): Document that when using
27998         -fsplit-stack -forder-blocks-and-partition is not implicitly
27999         enabled.
28000
28001 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
28002
28003         * builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST,
28004         ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST,
28005         ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New.
28006         * builtins.def (abort, trap, unreachable): Declare cold.
28007         * calls.c (flags_from_decl_or_type): Lookup ECF_COLD.
28008         * tree-core.h (ECF_COLD): New.
28009         * tree.c (set_call_expr_flags): Handle ECF_COLD.
28010         (build_common_builtin_nodes): Mark unreachable and abort as cold.
28011
28012 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
28013
28014         * predict.c (unlikely_executed_stmt_p): Cleanup.
28015
28016 2017-06-09  Richard Biener  <rguenther@suse.de>
28017
28018         * tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded
28019         model if the ref is always written to.
28020
28021 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
28022
28023         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): New.
28024
28025 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
28026
28027         * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive
28028         than udiv.
28029
28030 2017-06-09  Tom de Vries  <tom@codesourcery.com>
28031
28032         PR target/80855
28033         * config/nvptx/nvptx.md (define_expand "mov<QHSDISDFM>"): Error out with
28034         "target cannot support label values" when encountering LABEL_REF.
28035
28036 2017-06-09  Martin Liska  <mliska@suse.cz>
28037
28038         * tree-profile.c (gimple_gen_ic_profiler): Update comment.
28039         (gimple_gen_ic_func_profiler): Emit direct comparison
28040         of __gcov_indirect_call_callee with NULL.
28041         (gimple_gen_time_profiler): Change probability from
28042         PROB_VERY_UNLIKELY to PROB_UNLIKELY.
28043
28044 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
28045
28046         * profile.c (edge_gcov_counts): Turn to pointer.
28047         (compute_branch_probabilities, compute_branch_probabilities): Update.
28048         (branch_prob): Do not clear edge_gcov_count.
28049         * profile.h (edge_gcov_counts): Turn to pointer.
28050         (edge_gcov_count): Update.
28051
28052 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
28053
28054         * gimple.h (gimple_check_failed): Mark cold.
28055
28056 2017-06-09  Richard Biener  <rguenther@suse.de>
28057
28058         PR tree-optimization/66623
28059         * tree-vect-loop.c (vect_is_simple_reduction): Cleanup,
28060         refactor check_reduction into two parts, properly computing
28061         whether we have to check reduction validity for outer loop
28062         vectorization.
28063
28064 2017-06-09  Richard Biener  <rguenther@suse.de>
28065
28066         PR tree-optimization/79483
28067         * graphite-scop-detection.c (order): New global.
28068         (get_order): Compute bb to order mapping that satisfies code
28069         generation constraints.
28070         (cmp_pbbs): New helper.
28071         (build_scops): Start domwalk at entry block, sort generated
28072         pbbs.
28073
28074 2017-06-09  Richard Biener  <rguenther@suse.de>
28075
28076         PR middle-end/81007
28077         * ipa-polymorphic-call.c
28078         (ipa_polymorphic_call_context::restrict_to_inner_class):
28079         Skip FIELD_DECLs with error_mark_node type.
28080         * passes.def (all_lowering_passes): Run pass_build_cgraph_edges
28081         last again.
28082
28083 2017-06-09  Martin Liska  <mliska@suse.cz>
28084
28085         * predict.c (struct branch_predictor): New struct.
28086         (test_prediction_value_range): New test.
28087         (predict_c_tests): New function.
28088         * selftest-run-tests.c (selftest::run_tests): Run the function.
28089         * selftest.h: Declare new tests.
28090
28091 2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
28092
28093         PR target/80966
28094         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
28095         gen_add3_insn did not fail.
28096         * config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
28097         r0, construct that number in a temporary reg and add that reg to r0.
28098         If asked to put the result in r0 as well, fail.
28099
28100 2017-06-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
28101
28102         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
28103         for early expansion of vec_eqv.
28104
28105 2017-06-08  Jakub Jelinek  <jakub@redhat.com>
28106
28107         PR middle-end/81005
28108         * ubsan.c (instrument_null): Avoid pointless code temporary.
28109         (pass_ubsan::execute): Instrument aggregate arguments of calls.
28110
28111 2017-06-08  Uros Bizjak  <ubizjak@gmail.com>
28112
28113         PR target/81015
28114         Revert:
28115         2016-12-14  Uros Bizjak  <ubizjak@gmail.com>
28116
28117         PR target/59874
28118         * config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
28119         (*clzhi2): Ditto.
28120
28121 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28122
28123         * predict.c (unlikely_executed_edge_p): Move ahead.
28124         (probably_never_executed_edge_p): Use it.
28125
28126 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
28127
28128         PR middle-end/79988
28129         * tree-chkp.c (chkp_gimple_call_builtin_p): Remove
28130         gimple_call_builtin_p call.
28131
28132 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28133
28134         * system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
28135         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
28136         rtl_check_failed_type2, rtl_check_failed_code1,
28137         rtl_check_failed_code2, rtl_check_failed_code_mode,
28138         rtl_check_failed_block_symbol, cwi_check_failed_bounds,
28139         rtvec_check_failed_bounds, rtl_check_failed_flag,
28140         _fatal_insn_not_found, _fatal_insn): Likewise.
28141         * tree.h (tree_contains_struct_check_failed,
28142         tree_check_failed, tree_not_check_failed,
28143         tree_class_check_failed, tree_range_check_failed,
28144         tree_not_class_check_failed, tree_int_cst_elt_check_failed,
28145         tree_vec_elt_check_failed, phi_node_elt_check_failed,
28146         tree_operand_check_failed, omp_clause_check_failed,
28147         omp_clause_operand_check_failed, omp_clause_range_check_failed):
28148         Likewise.
28149
28150 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28151
28152         * cgraph.c (cgraph_edge::maybe_hot_p): Do not check
28153         flag_branch_probabilities.
28154         * ipa-inline.c (edge_badness): Likewise.
28155         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
28156         * postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
28157         * predict.c (maybe_hot_frequency_p): Likewise.
28158         (probably_never_executed): Likewise.
28159         * sched-ebb.c (schedule_ebbs): Likewise.
28160         * sched-rgn.c (find_single_block_region): Likewise.
28161         * tracer.c (tail_duplicate): Likewise.
28162
28163 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28164
28165         * opts.c (finish_options): x_flag_reorder_blocks_and_partition no
28166         longer requires x_flag_profile_use.
28167
28168 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28169
28170         * cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition
28171         instead of flag_reorder_blocks_and_partition.
28172         * dbxout.c (dbxout_function_end): Likewise.
28173         * dwarf2out.c (gen_subprogram_die): Likewise.
28174         * haifa-sched.c (sched_create_recovery_edges): Likewise.
28175         * hw-doloop.c (reorg_loops): Likewise.
28176         * varasm.c (assemble_start_function,
28177         assemble_end_function): Likewise.
28178         (decide_function_section): Do not check for
28179         flag_reorder_blocks_and_partition.
28180
28181 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
28182
28183         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
28184         New function.
28185         (chkp_get_hard_register_fake_addr_expr): Ditto.
28186         (chkp_build_addr_expr): Add check for hard reg case.
28187         (chkp_parse_array_and_component_ref): Ditto.
28188         (chkp_find_bounds_1): Ditto.
28189         (chkp_process_stmt): Don't generate bounds store for
28190         hard reg case.
28191
28192 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28193
28194         * predict.c (maybe_hot_bb_p): Do not check profile status.
28195         (maybe_hot_edge_p): Likewise.
28196         (probably_never_executed): Check for zero counts even if profile
28197         is not read.
28198         (unlikely_executed_edge_p): New function.
28199         (unlikely_executed_stmt_p): New function.
28200         (unlikely_executed_bb_p): New function.
28201         (set_even_probabilities): Use unlikely predicates.
28202         (combine_predictions_for_bb): Likewise.
28203         (predict_paths_for_bb): Likewise.
28204         (predict_paths_leading_to_edge): Likewise.
28205         (determine_unlikely_bbs): New function.
28206         (estimate_bb_frequencies): Use it.
28207         (compute_function_frequency): Use zero counts even if profile is
28208         not read.
28209         * profile-count.h: Fix typo.
28210
28211 2017-08-08  Julia Koval  <julia.koval@intel.com>
28212
28213         * config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8,
28214         _mm512_mask_cvtsepi16_storeu_epi8,
28215         _mm512_mask_cvtusepi16_storeu_epi8): New intrinsics.
28216         * config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8,
28217         _mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8,
28218         _mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8,
28219         _mm_mask_cvtepi16_storeu_epi8): New intrinsics.
28220         * config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type.
28221         (VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI,
28222         VOID_FTYPE_PV16QI_V16HI_UHI): New function types.
28223         * config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask,
28224         __builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask,
28225         __builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask,
28226         __builtin_ia32_pmovuswb256mem_mask,
28227         __builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask)
28228         __builtin_ia32_pmovwb512mem_mask): New builtins.
28229
28230 2017-08-08  Julia Koval  <julia.koval@intel.com>
28231
28232         PR target/73350,80862
28233         * config/i386/subst.md (round): Fix round pattern.
28234         * config/i386/i386.c (ix86_erase_embedded_rounding):
28235         Fix erasing rounding for the fixed pattern.
28236
28237 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28238
28239         * cfgbuild.c (find_many_sub_basic_blocks): Fix thinko.
28240
28241 2017-06-08  Martin Liska  <mliska@suse.cz>
28242
28243         PR gcov-profile/80911
28244         * gcov.c (block_info::block_info): New constructor.
28245
28246 2017-06-07  Carl Love  <cel@us.ibm.com>
28247
28248         * config/rs6000/rs6000-c: The return type of the following
28249         built-in functions was implemented as int not long long.  Fix sign
28250         of return value for the unsigned version of vec_mulo and vec_mule.
28251         vector unsigned long long vec_bperm (vector unsigned long long,
28252                                              vector unsigned char)
28253         vector signed long long vec_mule (vector signed int,
28254                                           vector signed int)
28255         vector unsigned long long vec_mule (vector unsigned int,
28256                                             vector unsigned int)
28257         vector signed long long vec_mulo (vector signed int,
28258                                           vector signed int)
28259         vector unsigned long long vec_mulo (vector unsigned int,
28260                                             vector unsigned int)
28261         * doc/extend.texi: Fix the documentation for the built-in
28262         functions.
28263
28264 2017-06-07  Carl Love  <cel@us.ibm.com>
28265
28266         PR target/80982
28267         * config/rs6000/altivec.md (double<mode>2): Fix the implementation of
28268         for BE.
28269
28270 2017-06-07  Carl Love  <cel@us.ibm.com>
28271
28272         * config/rs6000/altivec.md: Fix argument swizzle in vec_doublel
28273         support, Generate       doublehv for signed int/float for BE case only.
28274
28275 2017-06-07  Alexander Monakov  <amonakov@ispras.ru>
28276
28277         * doc/invoke.texi (mcx16): Rewrite.
28278
28279 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28280
28281         * config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete.
28282         * config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf,
28283         *mov<mode>_softfloat, and an anonymous splitter): Use
28284         nonimmediate_operand instead of rs6000_nonimmediate_operand.
28285
28286 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28287
28288         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and
28289         SPEFSCR registers.
28290         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
28291         (enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE.
28292         (rs6000_debug_reg_global): Adjust.
28293         (rs6000_init_hard_regno_mode_ok): Adjust.
28294         (rs6000_dbx_register_number): Adjust.
28295         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115.
28296         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
28297         Remove SPE_ACC and SPEFSCR.
28298         (REG_ALLOC_ORDER): Ditto.
28299         (FRAME_POINTER_REGNUM): Change to 111.
28300         (enum reg_class): Remove the SPE_ACC and SPEFSCR registers.
28301         (REG_CLASS_NAMES): Ditto.
28302         (REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers.
28303         (REGISTER_NAMES): Ditto.
28304         (ADDITIONAL_REG_NAMES): Ditto.
28305         (rs6000_reg_names): Ditto.
28306         * config/rs6000/rs6000.md: Renumber some register number
28307         define_constants.
28308
28309 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28310
28311         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high
28312         registers.
28313         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
28314         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149
28315         to 117.
28316         (DWARF_REG_TO_UNWIND_COLUMN): Do not define.
28317         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
28318         Delete the SPE high registers.
28319         (REG_ALLOC_ORDER): Ditto.
28320         (enum reg_class): Remove SPE_HIGH_REGS.
28321         (REG_CLASS_NAMES): Ditto.
28322         (REG_CLASS_CONTENTS): Delete the SPE high registers.
28323         (REGISTER_NAMES): Ditto.
28324         (rs6000_reg_names): Ditto.
28325         * doc/tm.texi.in: Remove SPE as example.
28326         * doc/tm.texi: Regenerate.
28327
28328 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28329
28330         * config/rs6000/8540.md (ppc8540_brinc): Delete.
28331         * config/rs6000/e500mc.md (e500mc_brinc): Delete.
28332         * config/rs6000/e500mc64.md (e500mc64_brinc): Delete.
28333         * config/rs6000/rs6000.md (type): Remove "brinc".
28334
28335 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28336
28337         * config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers.
28338         (powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000.
28339         * config/rs6000/linuxspe.h: Delete file.
28340         * config/rs6000/rs6000.md: Don't include spe.md.
28341         * config/rs6000/spe.h: Delete file.
28342         * config/rs6000/spe.md: Delete file.
28343         * config/rs6000/t-rs6000: Remove spe.md.
28344
28345 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28346
28347         * config/rs6000/predicates.md (reg_or_mem_operand): Reformat.
28348         (reg_or_none500mem_operand): Delete.
28349         * config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand
28350         instead of reg_or_none500mem_operand.
28351
28352 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28353
28354         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
28355         handling of SPE flags.
28356         * config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete.
28357
28358 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28359
28360         * config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
28361         SPE ABI handling.
28362         * config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2.
28363         (paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3,
28364         paired_divv2sf3): Similar.
28365         * config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI,
28366         SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify.
28367         * config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and
28368         RS6000_BUILTIN_S.
28369         Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X.
28370         Rename the paired_* instruction patterns.
28371         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not
28372         define __SPE__.
28373         * config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete.
28374         * config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S.
28375         (struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size,
28376         spe_padding_size, and spe_64bit_regs_used.  Replace TARGET_SPE and
28377         TARGET_SPE_ABI with 0, simplify.  Replace SPE_VECTOR_MODE with
28378         PAIRED_VECTOR_MODE.
28379         (struct machine_function): Delete field spe_insn_chain_scanned_p.
28380         (spe_func_has_64bit_regs_p): Delete.
28381         (spe_expand_predicate_builtin): Delete.
28382         (spe_expand_evsel_builtin): Delete.
28383         (TARGET_DWARF_REGISTER_SPAN): Do not define.
28384         (TARGET_MEMBER_TYPE_FORCES_BLK): Do not define.
28385         (invalid_e500_subreg): Delete.
28386         (rs6000_legitimize_address): Always force_reg op2 as well, for
28387         paired single memory accesses.
28388         (rs6000_member_type_forces_blk): Delete.
28389         (rs6000_spe_function_arg): Delete.
28390         (rs6000_expand_unop_builtin): Delete SPE handling.
28391         (rs6000_expand_binop_builtin): Ditto.
28392         (spe_expand_stv_builtin): Delete.
28393         (bdesc_2arg_spe): Delete.
28394         (spe_expand_builtin): Delete.
28395         (spe_expand_predicate_builtin): Delete.
28396         (spe_expand_evsel_builtin): Delete.
28397         (rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling.
28398         (spe_init_builtins): Delete.
28399         (spe_func_has_64bit_regs_p): Delete.
28400         (savres_routine_name): Delete "info" parameter.  Adjust callers.
28401         (rs6000_emit_stack_reset): Ditto.
28402         (rs6000_dwarf_register_span): Delete.
28403         * config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE,
28404         UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P,
28405         SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S):
28406         Delete.
28407         * config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO):
28408         Delete.
28409         * config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete.
28410         * config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE.
28411         * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
28412         mulv2sf3, divv2sf3): Delete expanders.
28413
28414 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28415
28416         config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete.
28417
28418 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28419
28420         * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete.
28421         * config/rs6000/rs6000.c: Ditto.
28422
28423 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28424
28425         * config/rs6000/predicated.md (rs6000_cbranch_operator): Delete.
28426         * config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by
28427         comparison_operator.
28428
28429 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28430
28431         * config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs.
28432         * config/rs6000/rs6000.opt: Ditto.
28433         * config/rs6000/t-rtems: Ditto.
28434
28435 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28436
28437         * config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and
28438         TARGET_E500_SINGLE by 0, simplify.
28439         * config/rs6000/rs6000.c: Ditto.
28440         (rs6000_option_override_internal): Delete CHECK_E500_OPTIONS.
28441         (spe_build_register_parallel): Delete.
28442         * config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE,
28443         TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS.
28444         * config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE,
28445         TARGET_E500_SINGLE, and <E500_CONVERT> by 0, simplify.
28446         (E500_CONVERT): Delete.
28447         * config/rs6000/spe.md: Remove many patterns and all define_constants.
28448
28449 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28450
28451         * config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify.
28452         * config/rs6000/dfp.md: Ditto.
28453         (negdd2, *negdd2_fpr): Merge.
28454         (absdd2, *absdd2_fpr): Merge.
28455         (negtd2, *negtd2_fpr): Merge.
28456         (abstd2, *abstd2_fpr): Merge.
28457         * config/rs6000/e500.h: Delete file.
28458         * config/rs6000/predicates.md (rs6000_cbranch_operator): Replace
28459         TARGET_FPRS by 1 and simplify.
28460         * config/rs6000/rs6000-c.c: Ditto.
28461         * config/rs6000/rs6000.c: Ditto.  Also replace TARGET_SF_SPE and
28462         TARGET_DF_SPE by 0.
28463         * config/rs6000/rs6000.h: Ditto.  Delete TARGET_SF_SPE and
28464         TARGET_DF_SPE.
28465         * config/rs6000/rs6000.md: Ditto.
28466         (floatdidf2, *floatdidf2_fpr): Merge.
28467         (move_from_CR_gt_bit): Delete.
28468         * config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify.
28469         (E500_CR_IOR_COMPARE): Delete.
28470         (All patterns that require !TARGET_FPRS): Delete.
28471         * config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify.
28472
28473 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28474
28475         * passes.def (pass_iv_canon): Move before pass_loop_distribution.
28476
28477 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28478
28479         * graphds.c (add_edge): Intitialize edge's attached data.
28480         (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function
28481         pointer parameter.  Call pointed function on each edge during
28482         graph traversing.  Skip traversing the edge when the function
28483         returns true.
28484         (graphds_dfs, graphds_scc): Ditto.
28485         (for_each_edge): New parameter.  Pass the new parameter to callback
28486         function.
28487         * graphds.h (skip_edge_callback): New function pointer type.
28488         (graphds_dfs, graphds_scc): New function pointer parameter.
28489         (graphds_edge_callback, for_each_edge): New parameter.
28490
28491 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28492
28493         * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor
28494         out code checking if runtime alias check is possible to below ...
28495         Call the new function.
28496         * tree-data-ref.c (runtime_alias_check_p): ... to new function.
28497         * tree-data-ref.h (runtime_alias_check_p): New decalaration.
28498
28499 2017-06-07  Marek Polacek  <polacek@redhat.com>
28500
28501         PR sanitizer/80932
28502         * fold-const.c (extract_muldiv_1) <case MINUS_EXPR>: Add
28503         TYPE_OVERFLOW_WRAPS check.
28504
28505 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28506
28507         * tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop
28508         if versioning is required.
28509         * tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop
28510         peeling with the check for versioning.
28511
28512 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28513
28514         * tree-vectorizer.h (vect_build_loop_niters): New parameter.
28515         * tree-vect-loop-manip.c (vect_build_loop_niters): New parameter.
28516         Set true to new parameter if new ssa variable is defined.
28517         (vect_gen_vector_loop_niters): Refactor.  Set range information
28518         for the new vector loop bound variable.
28519         (vect_do_peeling): Ditto.
28520
28521 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28522
28523         * tree-affine.c (ssa.h): Include header file.
28524         (tree_to_aff_combination): Handle (T1)(X - CST) when inner type
28525         has wrapping overflow behavior.
28526
28527 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28528
28529         * tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X).
28530
28531 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28532
28533         (aff_combination_expand): Move (T1)(X *+- CST) simplification to ...
28534         (tree_to_aff_combination): ... here.
28535
28536 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28537
28538         * tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New
28539         reg_pressure model function.
28540         (ivopts_global_cost_for_size): Delete.
28541         (determine_set_costs, iv_ca_recount_cost): Call new model function
28542         ivopts_estimate_reg_pressure.
28543
28544 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28545
28546         * config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more
28547         expensive than udiv.  Remove floating point cases from mod.
28548
28549 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28550
28551         * config/arm/aarch-cost-tables.h (cortexa53_extra_cost):
28552         Increase idiv cost.
28553
28554 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28555
28556         * config/aarch64/aarch64.md
28557         (copysignsf3): Fix mask generation.
28558
28559 2017-06-07  Jakub Jelinek  <jakub@redhat.com>
28560
28561         * dumpfile.h (enum tree_dump_index): Rename TDI_generic to
28562         TDI_gimple.
28563         (class dump_manager): Add register_dumps method.
28564         * dumpfile.c: Include langhooks.h.
28565         (dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}.
28566         (FIRST_AUTO_NUMBERED_DUMP): Decrease to 1.
28567         (FIRST_ME_AUTO_NUMBERED_DUMP): Define.
28568         (dump_manager::dump_register): Start with 512 entries instead of 32.
28569         (dump_manager::register_dumps): New method.
28570         * toplev.c (general_init): Instead of invoking register_dumps
28571         langhook, invoke register_dumps method on the dump manager.
28572         * gimplify.c (gimplify_function_tree): Use TDI_gimple instead of
28573         TDI_generic.
28574
28575 2017-06-07  Richard Sandiford  <richard.sandiford@linaro.org>
28576
28577         * doc/md.texi: Clarify the restrictions on a define_insn condition.
28578         Say that # requires an associated define_split to exist, and that
28579         the define_split must be suitable for use after register allocation.
28580
28581 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28582
28583         * cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.
28584         (compute_outgoing_frequencies): Also initialize zero counts.
28585         (find_many_sub_basic_blocks): Do not produce uninitialized profile
28586         around loops; preserve more of profile when nothing changes.
28587
28588 2017-06-06  Jim Wilson  <jim.wilson@linaro.org>
28589
28590         * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to
28591         here.
28592         * config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here.
28593         * config/arm/arm-cpu-cdata.h: Regenerate.
28594         * config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise.
28595         * config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise.
28596         * config/arm/arm-cpus.in: Delete falkor and qdf24xx entries.
28597         * config/arm/arm.c (arm_qdf24xx_tune): Delete.
28598         * config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx
28599         support.
28600         * config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx
28601         support.
28602         * config/arm/t-rmprofile: Likewise.
28603         * doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support.
28604
28605 2017-06-06  David S. Miller  <davem@davemloft.net>
28606
28607         PR target/80968
28608         * config/sparc/sparc.c (sparc_expand_prologue): Emit frame
28609         blockage if function uses alloca.
28610
28611 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
28612
28613         * tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref):
28614         New "uid" fields to hold pretty-print IDs of group and ref.
28615         Memory references are now identified as <group_id>:<ref_id>
28616         instead of using [random] addresses.
28617         (dump_mem_details): Simplify, no functional change.
28618         (dump_mem_ref): Simplify and make output more concise.
28619         Replace couple of fprintf's throughout code with calls to dump_mem_ref.
28620         (find_or_create_group): Initialize group uid.
28621         (record_ref): Initialize ref uid.  Improve debug output.
28622         (prune_group_by_reuse, should_issue_prefetch_p,)
28623         (should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,)
28624         (mark_nontemporal_store, determine_loop_nest_reuse):
28625         Improve debug output.
28626
28627 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
28628
28629         * dbgcnt.def (prefetch): New debug counter.
28630         * tree-ssa-loop-prefetch.c (dbgcnt.h): New include.
28631         (schedule_prefetches): Stop issueing prefetches if debug counter
28632         tripped.
28633
28634 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28635
28636         * doc/sourcebuild.texi (Testsuites, C Language Testsuites,
28637         gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme.
28638
28639 2017-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28640
28641         * config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander):
28642         Use aarch64_reg_or_zero predicate for operand 4.
28643         (aarch64_compare_and_swap<mode> define_insn_and_split):
28644         Use aarch64_reg_or_zero predicate for operand 3.  Add 'Z' constraint.
28645         (aarch64_store_exclusive<mode>): Likewise for operand 2.
28646
28647 2017-06-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28648
28649         * config/arm/arm.c (arm_compute_save_reg_mask): Rename into ...
28650         (arm_compute_save_core_reg_mask): This.
28651         (thumb1_compute_save_reg_mask): Rename into ...
28652         (thumb1_compute_save_core_reg_mask): This.
28653         (arm_compute_save_reg0_reg12_mask): Adapt comment.
28654         (arm_compute_frame_layout): Likewise.
28655
28656 2017-06-06  Richard Biener  <rguenther@suse.de>
28657
28658         PR tree-optimization/80974
28659         * tree-ssa-sccvn.c (set_ssa_val_to): Do not change but only
28660         keep or clear leaders SSA info.
28661
28662 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28663
28664         * config/nvptx/nvptx.c (split_mode_p): New function.
28665         (nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p.
28666
28667 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28668
28669         * config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode.
28670
28671 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28672
28673         PR bootstrap/80978
28674         * tree-cfg.c (execute_fixup_cfg): Fix condition on when to rescale
28675         profile.
28676
28677 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28678
28679         * shrink-wrap.c (handle_simple_exit): Update profile.
28680         (try_shrink_wrapping): Upate profile.
28681
28682 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28683
28684         * predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY.
28685         (tree_guess_outgoing_edge_probabilities): New.
28686         * predict.h (tree_guess_outgoing_edge_probabilities): Declare.
28687         * tree-cfg.c (gimple_find_sub_bbs): Propagate profile.
28688
28689 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28690
28691         * ipa-split.c (split_function): Initialize return bb profile.
28692
28693 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28694
28695         * profile.c (compute_branch_probabilities): Also initialize
28696         EXIT_BLOCK profile.
28697
28698 2017-06-06  Richard Biener  <rguenther@suse.de>
28699
28700         PR tree-optimization/80928
28701         * tree-vect-loop.c (vect_update_vf_for_slp): Amend dumps.
28702         (vect_analyze_loop_operations): Properly guard analysis for
28703         pure SLP case.
28704         (vect_transform_loop): Likewise.
28705         (vect_analyze_loop_2): Also reset SLP type on PHIs.
28706         (vect_model_induction_cost): Do not cost for pure SLP.
28707         (vectorizable_induction): Pass in SLP node, implement SLP vectorization
28708         of induction in inner loop vectorization.
28709         * tree-vect-slp.c (vect_create_new_slp_node): Handle PHIs.
28710         (vect_get_and_check_slp_defs): Handle vect_induction_def.
28711         (vect_build_slp_tree): Likewise.  Handle PHIs as terminating the
28712         recursion.
28713         (vect_analyze_slp_cost_1): Cost induction.
28714         (vect_detect_hybrid_slp_stmts): Handle PHIs.
28715         (vect_get_slp_vect_defs): Likewise.
28716         * tree-vect-stmts.c (vect_analyze_stmt): Handle induction.
28717         (vect_transform_stmt): Handle SLP reductions.
28718         * tree-vectorizer.h (vectorizable_induction): Adjust.
28719
28720 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
28721
28722         * config/rs6000/rs6000.c (make_resolver_func): Update
28723         init_lowered_empty_function call.
28724
28725 2017-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
28726
28727         * doc/invoke.texi: Document the -fprofile-abs-path option.
28728         * common.opt (fprofile-abs-path): New option.
28729         * gcov-io.h (gcov_write_filename): Declare.
28730         * gcov-io.c (gcov_write_filename): New function.
28731         * coverage.c (coverage_begin_function): Use gcov_write_filename.
28732         * profile.c (output_location): Likewise.
28733
28734 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28735
28736         * shring-wrap.c: Revert accidental commit.
28737
28738 2017-06-05  Volker Reichelt  <v.reichelt@netcologne.de>
28739
28740         * doc/invoke.texi (-Wduplicated-branches): Add to warning list.
28741
28742 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28743
28744         * cfgexpand.c (expand_gimple_tailcall): Initialize profile of
28745         new edge.
28746         * ipa-inline.c (want_inline_self_recursive_call_p): Watch for missing
28747         profile in callgraph edge.
28748         * profile-count.h (apply_probability): If THIS is 0, then result is 0
28749         (apply_scale): Likewise.
28750         * tree-inline.c (copy_bb, copy_edges_for_bb, copy_cfg_body):
28751         Also scale profile when inlining function with zero profile.
28752         (initialize_cfun): Update exit block profile even when it is zero.
28753         * tree-ssa-threadupdate.c (clear_counts_path): Handle correctly case
28754         when profile is read.
28755
28756 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
28757
28758         * config/rs6000/rs6000.c (toplevel): Include attribs.h.
28759         (CLONE_*): New constants to define the processors we can generate
28760         code for with the target_clone attribute.
28761         (rs6000_clone_map): New array to identify which clone processors
28762         the current program is running on.
28763         (TARGET_COMPARE_VERSION_PRIORITY): Define to enable the
28764         target_clone attribute.
28765         (TARGET_GENERATE_VERSION_DISPATCHER_BODY): Likewise.
28766         (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Likewise.
28767         (TARGET_OPTION_FUNCTION_VERSIONS): Likewise.
28768         (cpu_expand_builtin): Add support for target_clone attribute.
28769         (rs6000_valid_attribute_p): Allow "default" attribute.
28770         (get_decl_name): New debug function to simplify printing the
28771         current function name in debugging statements.
28772         (rs6000_clone_priority): New functions to support the target_clone
28773         attribute, and be able to generate code to switch between ISA 2.05
28774         through ISA 3.0 (power6 through power9).
28775         (rs6000_compare_version_priority): Likewise.
28776         (rs6000_get_function_versions_dispatcher): Likewise.
28777         (make_resolver_func): Likewise.
28778         (add_condition_to_bb): Likewise.
28779         (dispatch_function_versions): Likewise.
28780         (rs6000_generate_version_dispatcher_body): Likewise.
28781         (rs6000_can_inline_p): Call get_decl_name for debugging usage.
28782         (fusion_gpr_load_p): Fix a spacing issue.
28783         * doc/extend.texi (Common Function Attributes): Document that the
28784         PowerPC supports the target_clone attribute.
28785
28786 2017-06-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28787
28788         * config/arm/arm.h: explain F symbol found in description of ARM
28789         register allocation in its legend.
28790
28791 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28792
28793         * config/mips/frame-header-opt.c: Include profile-count.h.
28794         * config/riscv/riscv.c: Include profile-count.h
28795
28796 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28797
28798         * tree-ssa-loop-im.c (execute_sm_if_changed): Add FLAG_BBS parameter;
28799         update profile.
28800         (sm_set_flag_if_changed): Add bbs field.
28801         (execute_sm_if_changed_flag_set): Pass BBS.
28802         (execute_sm): Update.
28803
28804 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28805
28806         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
28807         New pattern.
28808
28809 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28810
28811         * config/aarch64/aarch64.md (sub<mode>3_compare1_imm): New define_insn.
28812         (peephole2): New peephole2 to emit the above.
28813         * config/aarch64/predicates.md (aarch64_sub_immediate): New predicate.
28814
28815 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28816
28817         * config/aarch64/aarch64.c (define_peephole2 above
28818         *sub_<shift>_<mode>): New peephole.
28819
28820 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
28821
28822         * config/i386/i386.c (make_resolver_func): Update.
28823         * Makefile.in: Add profile-count.h and profile-count.o
28824         * auto-profile.c (afdo_indirect_call): Update to new API.
28825         (afdo_set_bb_count): Update.
28826         (afdo_propagate_edge): Update.
28827         (afdo_propagate_circuit): Update.
28828         (afdo_calculate_branch_prob): Update.
28829         (afdo_annotate_cfg): Update.
28830         * basic-block.h: Include profile-count.h
28831         (struct edge_def): Turn count to profile_count.
28832         (struct basic_block_def): Likewie.
28833         (REG_BR_PROB_BASE): Move to profile-count.h
28834         (RDIV): Move to profile-count.h
28835         * bb-reorder.c (max_entry_count): Turn to profile_count.
28836         (find_traces): Update.
28837         (rotate_loop):Update.
28838         (connect_traces):Update.
28839         (sanitize_hot_paths):Update.
28840         * bt-load.c (migrate_btr_defs): Update.
28841         * cfg.c (RDIV): Remove.
28842         (init_flow): Use alloc_block.
28843         (alloc_block): Uninitialize count.
28844         (unchecked_make_edge): Uninitialize count.
28845         (check_bb_profile): Update.
28846         (dump_edge_info): Update.
28847         (dump_bb_info): Update.
28848         (update_bb_profile_for_threading): Update.
28849         (scale_bbs_frequencies_int): Update.
28850         (scale_bbs_frequencies_gcov_type): Update.
28851         (scale_bbs_frequencies_profile_count): New.
28852         * cfg.h (update_bb_profile_for_threading): Update.
28853         (scale_bbs_frequencies_profile_count): Declare.
28854         * cfgbuild.c (compute_outgoing_frequencies): Update.
28855         (find_many_sub_basic_blocks): Update.
28856         * cfgcleanup.c (try_forward_edges): Update.
28857         (try_crossjump_to_edge): Update.
28858         * cfgexpand.c (expand_gimple_tailcall): Update.
28859         (construct_exit_block): Update.
28860         * cfghooks.c (verify_flow_info): Update.
28861         (dump_bb_for_graph): Update.
28862         (split_edge): Update.
28863         (make_forwarder_block): Update.
28864         (duplicate_block): Update.
28865         (account_profile_record): Update.
28866         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
28867         (get_estimated_loop_iterations): Update.
28868         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
28869         (single_likely_exit): Update.
28870         * cfgloopmanip.c (scale_loop_profile): Update.
28871         (loopify): Update.
28872         (set_zero_probability): Update.
28873         (lv_adjust_loop_entry_edge): Update.
28874         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
28875         (purge_dead_edges): Update.
28876         (rtl_account_profile_record): Update.
28877         * cgraph.c (cgraph_node::create): Uninitialize count.
28878         (symbol_table::create_edge): Uninitialize count.
28879         (cgraph_update_edges_for_call_stmt_node): Update.
28880         (cgraph_edge::dump_edge_flags): Update.
28881         (cgraph_node::dump): Update.
28882         (cgraph_edge::maybe_hot_p): Update.
28883         * cgraph.h: Include profile-count.h
28884         (create_clone), create_edge, create_indirect_edge): Update.
28885         (cgraph_node): Turn count to profile_count.
28886         (cgraph_edge0: Likewise.
28887         (make_speculative, clone): Update.
28888         (create_edge): Update.
28889         (init_lowered_empty_function): Update.
28890         * cgraphclones.c (cgraph_edge::clone): Update.
28891         (duplicate_thunk_for_node): Update.
28892         (cgraph_node::create_clone): Update.
28893         * cgraphunit.c (cgraph_node::analyze): Update.
28894         (cgraph_node::expand_thunk): Update.
28895         * final.c (dump_basic_block_info): Update.
28896         * gimple-streamer-in.c (input_bb): Update.
28897         * gimple-streamer-out.c (output_bb): Update.
28898         * graphite.c (print_global_statistics): Update.
28899         (print_graphite_scop_statistics): Update.
28900         * hsa-brig.c: Include basic-block.h.
28901         * hsa-dump.c: Include basic-block.h.
28902         * hsa-gen.c (T sum_slice): Update.
28903         (convert_switch_statements):Update.
28904         * hsa-regalloc.c: Include basic-block.h.
28905         * ipa-chkp.c (chkp_produce_thunks): Update.
28906         * ipa-cp.c (struct caller_statistics): Update.
28907         (init_caller_stats): Update.
28908         (gather_caller_stats): Update.
28909         (ipcp_cloning_candidate_p): Update.
28910         (good_cloning_opportunity_p): Update.
28911         (get_info_about_necessary_edges): Update.
28912         (dump_profile_updates): Update.
28913         (update_profiling_info): Update.
28914         (update_specialized_profile): Update.
28915         (perhaps_add_new_callers): Update.
28916         (decide_about_value): Update.
28917         (ipa_cp_c_finalize): Update.
28918         * ipa-devirt.c (struct odr_type_warn_count): Update.
28919         (struct decl_warn_count): Update.
28920         (struct final_warning_record): Update.
28921         (possible_polymorphic_call_targets): Update.
28922         (ipa_devirt): Update.
28923         * ipa-fnsummary.c (redirect_to_unreachable): Update.
28924         * ipa-icf.c (sem_function::merge): Update.
28925         * ipa-inline-analysis.c (do_estimate_edge_time): Update.
28926         * ipa-inline.c (compute_uninlined_call_time): Update.
28927         (compute_inlined_call_time): Update.
28928         (want_inline_small_function_p): Update.
28929         (want_inline_self_recursive_call_p): Update.
28930         (edge_badness): Update.
28931         (lookup_recursive_calls): Update.
28932         (recursive_inlining): Update.
28933         (inline_small_functions): Update.
28934         (dump_overall_stats): Update.
28935         (dump_inline_stats): Update.
28936         * ipa-profile.c (ipa_profile_generate_summary): Update.
28937         (ipa_propagate_frequency): Update.
28938         (ipa_profile): Update.
28939         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
28940         * ipa-utils.c (ipa_merge_profiles): Update.
28941         * loop-doloop.c (doloop_modify): Update.
28942         * loop-unroll.c (report_unroll): Update.
28943         (unroll_loop_runtime_iterations): Update.
28944         * lto-cgraph.c (lto_output_edge): Update.
28945         (lto_output_node): Update.
28946         (input_node): Update.
28947         (input_edge): Update.
28948         (merge_profile_summaries): Update.
28949         * lto-streamer-in.c (input_cfg): Update.
28950         * lto-streamer-out.c (output_cfg): Update.
28951         * mcf.c (create_fixup_graph): Update.
28952         (adjust_cfg_counts): Update.
28953         (sum_edge_counts): Update.
28954         * modulo-sched.c (sms_schedule): Update.
28955         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
28956         * predict.c (maybe_hot_count_p): Update.
28957         (probably_never_executed): Update.
28958         (dump_prediction): Update.
28959         (combine_predictions_for_bb): Update.
28960         (propagate_freq): Update.
28961         (handle_missing_profiles): Update.
28962         (counts_to_freqs): Update.
28963         (rebuild_frequencies): Update.
28964         (force_edge_cold): Update.
28965         * predict.h: Include profile-count.h
28966         (maybe_hot_count_p, counts_to_freqs): UPdate.
28967         * print-rtl-function.c: Do not include cfg.h
28968         * print-rtl.c: Include basic-block.h
28969         * profile-count.c: New file.
28970         * profile-count.h: New file.
28971         * profile.c (is_edge_inconsistent): Update.
28972         (correct_negative_edge_counts): Update.
28973         (is_inconsistent): Update.
28974         (set_bb_counts): Update.
28975         (read_profile_edge_counts): Update.
28976         (compute_frequency_overlap): Update.
28977         (compute_branch_probabilities): Update; Initialize and deinitialize
28978         gcov_count tables.
28979         (branch_prob): Update.
28980         * profile.h (bb_gcov_counts, edge_gcov_counts): New.
28981         (edge_gcov_count): New.
28982         (bb_gcov_count): New.
28983         * shrink-wrap.c (try_shrink_wrapping): Update.
28984         * tracer.c (better_p): Update.
28985         * trans-mem.c (expand_transaction): Update.
28986         (ipa_tm_insert_irr_call): Update.
28987         (ipa_tm_insert_gettmclone_call): Update.
28988         * tree-call-cdce.c: Update.
28989         * tree-cfg.c (gimple_duplicate_sese_region): Update.
28990         (gimple_duplicate_sese_tail): Update.
28991         (gimple_account_profile_record): Update.
28992         (execute_fixup_cfg): Update.
28993         * tree-inline.c (copy_bb): Update.
28994         (copy_edges_for_bb): Update.
28995         (initialize_cfun): Update.
28996         (freqs_to_counts): Update.
28997         (copy_cfg_body): Update.
28998         (expand_call_inline): Update.
28999         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
29000         * tree-ssa-loop-ivcanon.c (unloop_loops): Update.
29001         (try_unroll_loop_completely): Update.
29002         (try_peel_loop): Update.
29003         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
29004         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Update.
29005         * tree-ssa-loop-split.c (connect_loops): Update.
29006         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
29007         * tree-ssa-reassoc.c (branch_fixup): Update.
29008         * tree-ssa-tail-merge.c (replace_block_by): Update.
29009         * tree-ssa-threadupdate.c (create_block_for_threading): Update.
29010         (compute_path_counts): Update.
29011         (update_profile): Update.
29012         (recompute_probabilities): Update.
29013         (update_joiner_offpath_counts): Update.
29014         (estimated_freqs_path): Update.
29015         (freqs_to_counts_path): Update.
29016         (clear_counts_path): Update.
29017         (ssa_fix_duplicate_block_edges): Update.
29018         (duplicate_thread_path): Update.
29019         * tree-switch-conversion.c (case_bit_test_cmp): Update.
29020         (struct switch_conv_info): Update.
29021         * tree-tailcall.c (decrease_profile): Update.
29022         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
29023         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
29024         * value-prof.c (check_counter): Update.
29025         (gimple_divmod_fixed_value): Update.
29026         (gimple_mod_pow2): Update.
29027         (gimple_mod_subtract): Update.
29028         (gimple_ic_transform): Update.
29029         (gimple_stringop_fixed_value): Update.
29030         * value-prof.h (gimple_ic): Update.
29031
29032 2017-06-02  Carl Love  <cel@us.ibm.com>
29033
29034         * config/rs6000/rs6000-c: Add support for built-in functions
29035         vector double vec_doublee (vector signed int);
29036         vector double vec_doublee (vector unsigned int);
29037         vector double vec_doublee (vector float);
29038         vector double vec_doubleh (vector signed int);
29039         vector double vec_doubleh (vector unsigned int);
29040         vector double vec_doubleh (vector float);
29041         vector double vec_doublel (vector signed int);
29042         vector double vec_doublel (vector unsigned int);
29043         vector double vec_doublel (vector float);
29044         vector double vec_doubleo (vector signed int);
29045         vector double vec_doubleo (vector unsigned int);
29046         vector double vec_doubleo (vector float);.
29047         * config/rs6000/rs6000-builtin.def: Add definitions for DOUBLEE,
29048         DOUBLEO, DOUBLEH, DOUBLEL, UNS_DOUBLEO, UNS_DOUBLEE, UNS_DOUBLEH,
29049         UNS_DOUBLEL.
29050         * config/rs6000/altivec.md: Add code generator for doublee<mode>2,
29051         unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2, doubleh<mode>2,
29052         unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2, add mode attribute
29053         VS_sxwsp.
29054         * config/rs6000/altivec.h: Add define for vec_doublee, vec_doubleo,
29055         vec_doublel, vec_doubleh.
29056         * doc/extend.texi: Update the built-in documentation file for the
29057         new built-in functions.
29058
29059 2017-06-02  David Malcolm  <dmalcolm@redhat.com>
29060
29061         PR jit/80954
29062         * ipa-inline-analysis.c (free_growth_caches): Set
29063         edge_removal_hook_holder to NULL after removing it.
29064
29065 2017-06-02  Sudakshina Das  <sudi.das@arm.com>
29066
29067         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for
29068         comparision with zero.
29069
29070 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
29071         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
29072         for early expansion of vec_min and vec_max builtins.
29073         (builtin_function_type): Add min/max unsigned variants to those
29074         identified as having unsigned arguments.
29075
29076 2017-06-02  Olivier Hainque  <hainque@adacore.com>
29077
29078         * config/vx-common.h (DWARF_UNWIND_INFO): Switch #define to 1.
29079
29080 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29081
29082         * config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane<mode>):
29083         Use VALL_F16 iterator rather than VALL.
29084
29085 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29086
29087         * config/aarch64/aarch64.c (aarch64_split_compare_and_swap):
29088         Emit CBNZ inside loop when doing a strong exchange and comparing
29089         against zero.  Generate the CC flags after the loop.
29090
29091 2017-06-02  David Edelsohn  <dje.gcc@gmail.com>
29092
29093         * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
29094         (dl_section_ref): New.
29095         (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
29096         On AIX, append an expression to subtract the size of the
29097         section length to dl_section_ref.
29098
29099 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
29100
29101         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
29102         for early expansion of vector absolute builtins.
29103
29104 2017-06-02  Richard Biener  <rguenther@suse.de>
29105
29106         * tree-vect-slp.c (vect_detect_hybrid_slp_2): Match up
29107         what we consider a relevant use stmt with vect_detect_hybrid_slp_stmts.
29108
29109 2017-06-02  Richard Biener  <rguenther@suse.de>
29110
29111         PR tree-optimization/80948
29112         * tree-tailcall.c (find_tail_calls): Track stmts to move in
29113         stmt order as well.
29114
29115 2017-06-02  Richard Biener  <rguenther@suse.de>
29116
29117         * tree-vect-loop.c (vect_analyze_loop_operations): Not relevant
29118         PHIs are ok.
29119         * tree-vect-stmts.c (process_use): Do not mark backedge defs
29120         for inductions as relevant.
29121
29122 2017-06-02  Richard Biener  <rguenther@suse.de>
29123
29124         * tree-vect-loop.c (get_initial_def_for_induction): Inline into ...
29125         (vectorizable_induction): ... this.  Remove dead code.
29126
29127 2017-06-02  Eric Botcazou  <ebotcazou@adacore.com>
29128
29129         * builtins. (expand_builtin_alloca): Remove second parameter and
29130         infer its value from the first parameter instead.
29131         (expand_builtin) <BUILT_IN_ALLOCA>: Adjust call to above.
29132
29133 2017-06-02  Jakub Jelinek  <jakub@redhat.com>
29134
29135         PR rtl-optimization/80903
29136         * loop-doloop.c (add_test): Unshare sequence.
29137
29138 2017-06-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
29139
29140         * doc/invoke.texi: Document the -Wsizeof-pointer-div warning.
29141
29142 2017-06-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
29143
29144         * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make
29145         static.
29146         (xlogue_layout::get_stack_space_used, xlogue_layout::s_instances,
29147         xlogue_layout::get_instance, logue_layout::xlogue_layout,
29148         sp_valid_at, fp_valid_at, choose_basereg): Formatting.
29149         (xlogue_layout::get_stub_rtx): Make static.
29150         (xlogue_layout::get_stub_name): Avoid const-cast, make static.
29151         (xlogue_layout::compute_stub_managed_regs): Rename to...
29152         (xlogue_layout::count_stub_managed_regs): ...this.
29153         (xlogue_layout::is_stub_managed_reg): New function.
29154         (xlogue_layout::m_stub_names): Rename to...
29155         (xlogue_layout::s_stub_names): ...this, make static.
29156         (xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS,
29157         xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS,
29158         xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN,
29159         xlogue_layout::s_stub_names): Instantiate statics.
29160         (stub_managed_regs): Remove.
29161         (ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs.
29162         (disable_call_ms2sysv_xlogues): Rename to...
29163         (warn_once_call_ms2sysv_xlogues): ...this, and warn only once.
29164         (ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv
29165         warning logic.
29166         (ix86_static_chain): Make sure that ix86_static_chain_on_stack can't
29167         change after reload_completed.
29168         (ix86_can_use_return_insn_p): Use the ix86_frame data structure
29169         directly.
29170         (ix86_expand_prologue): Likewise.
29171         (ix86_expand_epilogue): Likewise.
29172         (ix86_expand_split_stack_prologue): Likewise.
29173         (ix86_compute_frame_layout): Remove frame parameter ...
29174         (TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook.
29175         (ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout
29176         only if necessary.
29177         (ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs.
29178         (ix86_frame): Move from here ...
29179         * config/i386/i386.h (ix86_frame): ... to here.
29180         (machine_function): Remove use_fast_prologue_epilogue_nregs, cache the
29181         complete ix86_frame data structure instead.  Remove some_ld_name.
29182
29183 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
29184
29185         * dwarf2out.c (dwarf2out_late_global_decl): Add locations for
29186         symbols that hold a DECL_VALUE_EXPR.
29187
29188 2017-06-01  Martin Jambor  <mjambor@suse.cz>
29189
29190         PR tree-optimization/80898
29191         * tree-sra.c (process_subtree_disqualification): Removed.
29192         (disqualify_candidate): Do not acll
29193         process_subtree_disqualification.
29194         (subtree_mark_written_and_enqueue): New function.
29195         (propagate_all_subaccesses): Set grp_write of LHS subtree if the
29196         RHS has been disqualified and re-queue LHS if necessary.  Apart
29197         from that, ignore disqualified RHS.
29198
29199 2017-06-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
29200
29201         * config/s390/s390.c (s390_emit_epilogue): Disable early return
29202         address fetch for z10 or later.
29203
29204 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29205
29206         * config/arc/arc.md (tst_movb): Add guard when splitting.
29207
29208 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29209
29210         * config/arc/arc.c (arc_can_eliminate): Test against
29211         arc_frame_pointer_needed.
29212
29213 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29214
29215         * config/arc/arc.c (arc_expand_prologue): Emit a special barrier
29216         to prevent store reordering.
29217         * config/arc/arc.md (UNSPEC_ARC_STKTIE): Define.
29218         (type): Add block type.
29219         (stack_tie): Define special instruction to be used in
29220         expand_prologue.
29221
29222 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29223
29224         * config/arc/arc.md (commutative_binary_comparison): Remove 'I'
29225         constraint. It is not valid for the pattern.
29226         (noncommutative_binary_comparison): Likewise.
29227
29228 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29229
29230         * config/arc/simdext.md (movv2hi_insn): Change predicate to avoid
29231         scaled addresses.
29232
29233 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29234
29235         * config/arc/arc.c (arc_conditional_register_usage): Allow r30 to
29236         be used by the reg-alloc.
29237
29238 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29239
29240         * config/arc/arc.md (mulsi3): Avoid use of hard registers before
29241         reg-alloc when having mul64 or mul32x16 instructions.
29242         (mulsidi3): Likewise.
29243         (umulsidi3): Likewise.
29244         (mulsi32x16): New pattern.
29245         (mulsi64): Likewise.
29246         (mulsidi64): Likewise.
29247         (umulsidi64): Likewise.
29248         (MUL32x16_REG): Define.
29249         (mul64_600): Use MUL32x16_REG.
29250         (mac64_600): Likewise.
29251         (umul64_600): Likewise.
29252         (umac64_600): Likewise.
29253
29254 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29255
29256         * config/arc/arc.md (mulsi3_700): Make it commutative.
29257
29258 2017-06-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
29259
29260         * config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn
29261         type for movstouw.
29262         (*sign_extendsidi2_insn): Likewise for movstosw.
29263
29264 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
29265
29266         * dwarf2out.c (get_discr_value): Call the get_debug_type hook on
29267         the type of the input discriminant value.  Convert the
29268         discriminant value of signedness vary.
29269
29270 2017-06-01  Volker Reichelt  <v.reichelt@netcologne.de>
29271
29272         * doc/invoke.texi (-Wcatch-value): Document new shortcut.
29273         Add to -Wall section.
29274
29275 2017-06-01  Richard Biener  <rguenther@suse.de>
29276
29277         PR middle-end/66313
29278         * fold-const.c (fold_plusminus_mult_expr): If the factored
29279         factor may be zero use a wrapping type for the inner operation.
29280         * tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap
29281         and handle moved defs.
29282         (process_assignment): Properly guard the unary op case.  Return a
29283         tri-state indicating that moving the stmt before the call may allow
29284         to continue.  Pass through to_move.
29285         (find_tail_calls): Handle moving unrelated defs before
29286         the call.
29287
29288 2017-05-31  Segher Boessenkool  <segher@kernel.crashing.org>
29289
29290         PR target/80618
29291         * config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
29292         splitter result in the canonical way.
29293
29294 2017-05-31  Uros Bizjak  <ubizjak@gmail.com>
29295
29296         * config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj)
29297         also for 32bit target.  Update insn attributes.
29298         (zero-extendsidi2 splitter): Allow all registers for operand 1.
29299
29300 2017-05-31  Sebastian Peryt  <sebastian.peryt@intel.com>
29301
29302         * config/i386/avx512fintrin.h (_mm_mask_max_sd)
29303         (_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss)
29304         (_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss)
29305         (_mm_maskz_min_ss): New intrinsics.
29306
29307 2017-05-31  Martin Liska  <mliska@suse.cz>
29308
29309         * tree-vect-loop.c (vect_create_epilog_for_reduction):
29310         Change comment style to one we normally use.
29311         (vectorizable_reduction): Likewise.
29312         (vectorizable_induction): Likewise.
29313         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
29314         (vectorizable_call): Likewise.
29315         (vectorizable_simd_clone_call): Likewise.
29316         (vectorizable_conversion): Likewise.
29317         (vectorizable_assignment): Likewise.
29318         (vectorizable_shift): Likewise.
29319         (vectorizable_operation): Likewise.
29320         (vectorizable_store): Likewise.
29321         (vectorizable_load): Likewise.
29322         * tree-vectorizer.h: Likewise.
29323
29324 2017-05-31  Alexander Monakov  <amonakov@ispras.ru>
29325
29326         * passes.c (emergency_dump_function): New.
29327         * tree-pass.h (emergency_dump_function): Declare.
29328         * plugin.c (plugins_internal_error_function): Remove.
29329         * plugin.h (plugins_internal_error_function): Remove declaration.
29330         * toplev.c (internal_error_function): New static function.  Use it...
29331         (general_init): ...here.
29332
29333 2017-05-31  Graham Markall  <graham.markall@embecosm.com>
29334
29335         * config/arc/arc.c (arc_print_operand): Handle constant operands.
29336         (arc_rtx_costs): Add costs for new patterns.
29337         * config/arc/arc.md: Additional *add_n and *sub_n patterns.
29338         * config/arc/predicates.md: Add _1_2_3_operand predicate.
29339
29340 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
29341
29342         * tree-ssa-strlen.c (get_next_strinfo): New function.
29343         (get_stridx_plus_constant): Use it.
29344         (zero_length_string): Likewise.
29345         (adjust_related_strinfos): Likewise.
29346         (adjust_last_stmt): Likewise.
29347
29348 2017-05-31  Richard Biener  <rguenther@suse.de>
29349
29350         PR target/80880
29351         * config/i386/i386.c (ix86_expand_builtin): Remove assert
29352         for arg being an SSA name when expanding IX86_BUILTIN_BNDRET.
29353
29354 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
29355
29356         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove
29357         loop_vinfo argument and use of dependence distance vectors.
29358         Check instead whether the two references differ only in their
29359         initial value and assume that they have the same alignment if the
29360         difference is a multiple of the vector alignment.
29361         (vect_analyze_data_refs_alignment): Update call accordingly.
29362
29363 2017-05-31  Martin Liska  <mliska@suse.cz>
29364
29365         PR target/79155
29366         * config/i386/cpuid.h: Fix typo in a comment in cpuid.h.
29367
29368 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
29369
29370         * tree-vect-loop-manip.c (create_intersect_range_checks_index)
29371         (create_intersect_range_checks): Move from ...
29372         * tree-data-ref.c (create_intersect_range_checks_index)
29373         (create_intersect_range_checks): ... to here.
29374         (create_runtime_alias_checks): New function factored from ...
29375         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ...
29376         here.  Call above function.
29377         * tree-data-ref.h (create_runtime_alias_checks): New function.
29378
29379 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
29380
29381         * tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal
29382         segment length for dr_b and compute it in wide_int.
29383
29384 2017-05-31  Richard Biener  <rguenther@suse.de>
29385
29386         PR tree-optimization/80906
29387         * graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get
29388         and pass through iv_map.
29389         (copy_bb_and_scalar_dependences): Adjust.
29390         (translate_pending_phi_nodes): Likewise.
29391         (copy_loop_close_phi_args): Handle code-generating IVs instead
29392         of ICEing.
29393
29394 2017-05-30  David Malcolm  <dmalcolm@redhat.com>
29395
29396         * diagnostic-color.c (color_dict): Add "type-diff".
29397         (parse_gcc_colors): Update comment.
29398         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
29399         -fdiagnostics-show-template-tree and -fno-elide-type.
29400         (GCC_COLORS): Add type-diff to example.
29401         (type-diff=): New.
29402         (-fdiagnostics-show-template-tree): New.
29403         (-fno-elide-type): New.
29404         * pretty-print.c (pp_format): Pass quote and formatters[argno] to
29405         the pp_format_decoder callback.  Call any m_format_postprocessor's
29406         "handle" method.
29407         (pretty_printer::pretty_printer): Initialize
29408         m_format_postprocessor.
29409         (pretty_printer::~pretty_printer): Delete any
29410         m_format_postprocessor.
29411         * pretty-print.h (printer_fn): Add bool and const char ** parameters.
29412         (class format_postprocessor): New class.
29413         (struct pretty_printer::format_decoder): Document the new parameters.
29414         (struct pretty_printer::m_format_postprocessor): New field.
29415         * tree-diagnostic.c (default_tree_printer): Update for new
29416         bool and const char ** params.
29417         * tree-diagnostic.h (default_tree_printer): Likewise.
29418
29419 2017-05-30  Segher Boessenkool  <segher@kernel.crashing.org>
29420
29421         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete.
29422         (lwa_operand): Delete rs6000_gen_cell_microcode test.
29423         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
29424         rs6000_gen_cell_microcode code.
29425         (rs6000_final_prescan_insn): Delete.
29426         (rs6000_opt_vars): Delete the "gen-cell-microcode" and
29427         "warn-cell-microcode" entries.
29428         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete.
29429         * config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests
29430         throughout.  Change cc_reg_not_micro_cr0_operand to
29431         cc_reg_not_cr0_operand throughout.
29432         (*extendhi<mode>2_noload): Delete.
29433         * config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub.
29434         (mwarn-cell-microcode): Delete.
29435         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete
29436         -mgen-cell-microcode and -mwarn-cell-microcode.
29437
29438 2017-05-30  Uros Bizjak  <ubizjak@gmail.com>
29439
29440         PR target/80833
29441         * config/i386/constraints.md (Yd): New constraint.
29442         (Ye): Ditto.
29443         * config/i386/i386.md (*movti_internal): Add (?r, Ye)
29444         and (?Yd, r) alternatives.  Update insn attributes.
29445         * config/i386/i386.md (*movti_internal): Add (?r, *Ye)
29446         and (?*Yd, r) alternatives.  Update insn attributes.
29447         (double-mode inter-unit splitters): Add new GR<->XMM splitters.
29448
29449 2017-05-30  Pierre-Marie de Rodat  <derodat@adacore.com>
29450
29451         * gimplify.c (gimplify_modify_expr): Don't create a
29452         DECL_DEBUG_EXPR link if *FROM_P does not belong to the current
29453         function.
29454
29455 2017-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
29456
29457         * config/arm/arm-builtins.c (arm_expand_builtin): Remove const.
29458
29459 2017-05-30  Richard Biener  <rguenther@suse.de>
29460
29461         * tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type
29462         and reduc_def fields.
29463         (STMT_VINFO_REDUC_TYPE): New define.
29464         (STMT_VINFO_REDUC_DEF): Likewise.
29465         (vect_force_simple_reduction): Adjust prototype.
29466         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust.
29467         (vect_is_simple_reduction): Remove check_reduction argument.
29468         (vect_force_simple_reduction): Adjust and set
29469         STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
29470         (vectorizable_reduction): Do not re-do reduction analysis
29471         but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
29472         * tree-parloops.c (gather_scalar_reductions): Adjust.
29473
29474 2017-05-30  Richard Biener  <rguenther@suse.de>
29475
29476         PR middle-end/80901
29477         * cfgexpand.c (expand_gimple_cond): Match up loop fixup with
29478         split_edge code.
29479
29480 2017-05-24  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29481
29482         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs):
29483         Introduce unknown_misalignment parameter and remove vf.
29484         (vect_peeling_hash_get_lowest_cost):
29485         Pass unknown_misalignment parameter.
29486         (vect_enhance_data_refs_alignment):
29487         Fix unsupportable data ref treatment.
29488
29489 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29490
29491         * tree-vect-data-refs.c (vect_get_data_access_cost):
29492         Workaround for SLP handling.
29493         (vect_enhance_data_refs_alignment):
29494         Compute costs for doing no peeling at all, compare to the best
29495         peeling costs so far and avoid peeling if cheaper.
29496
29497 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29498
29499         * tree-vect-data-refs.c (vect_peeling_hash_choose_best_peeling):
29500         Return peeling info and set costs to zero for unlimited cost
29501         model.
29502         (vect_enhance_data_refs_alignment): Also inspect all datarefs
29503         with unknown misalignment. Compute and costs for unknown
29504         misalignment, compare them to the costs for known misalignment
29505         and choose the cheapest for peeling.
29506
29507 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29508
29509         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Rename.
29510         (vect_get_peeling_costs_all_drs): Create function.
29511         (vect_peeling_hash_get_lowest_cost):
29512         Use vect_get_peeling_costs_all_drs.
29513         (vect_peeling_supportable): Create function.
29514         (vect_enhance_data_refs_alignment): Use vect_peeling_supportable.
29515
29516 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29517
29518         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Create
29519         DR_HAS_NEGATIVE_STEP.
29520         (vect_update_misalignment_for_peel): Define DR_MISALIGNMENT.
29521         (vect_enhance_data_refs_alignment): Use.
29522         (vect_duplicate_ssa_name_ptr_info): Use.
29523         * tree-vectorizer.h (dr_misalignment): Use.
29524         (known_alignment_for_access_p): Use.
29525
29526 2017-05-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
29527
29528         PR target/78838
29529         * config/msp430/msp430.c (gen_prefix): Return NULL when section name is
29530         .lowtext.
29531         (has_section_name): New function.
29532
29533 2017-05-30  Martin Liska  <mliska@suse.cz>
29534
29535         PR other/80909
29536         * auto-profile.c (get_function_decl_from_block): Fix
29537         parenthesis.
29538
29539 2017-05-30  Richard Biener  <rguenther@suse.de>
29540
29541         PR middle-end/80876
29542         * cfgexpand.c (expand_gimple_cond): Fixup preserving loops again.
29543
29544 2017-05-30  Martin Liska  <mliska@suse.cz>
29545
29546         * dumpfile.c: Use newly added macro DUMP_FILE_INFO.
29547         * dumpfile.h (struct dump_file_info): Remove ctors.
29548
29549 2017-05-30  Martin Liska  <mliska@suse.cz>
29550
29551         * predict.def: Fix GNU coding style.
29552
29553 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
29554
29555         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
29556         Mark 'to' argument with ATTRIBUTE_UNUSED.
29557
29558 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
29559
29560         * config/xtensa/xtensa.c (xtensa_emit_call): Use
29561         HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
29562         (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
29563         format string.
29564
29565 2017-05-29  Eric Botcazou  <ebotcazou@adacore.com>
29566
29567         * doc/install.texi (Options specification): Restore entry of
29568         --enable-sjlj-exceptions.
29569
29570 2017-05-27  Michael Eager  <eager@eagercon.com>
29571
29572         Revert:
29573         2016-01-21  Ajit Agarwal  <ajitkum@xilinx.com>
29574
29575         See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html.
29576
29577         * config/microblaze/microblaze.h
29578         (FIXED_REGISTERS): Update in macro.
29579         (CALL_USED_REGISTERS): Update in macro.
29580
29581 2017-05-27  François-Xavier Coudett  <fxcoudert@gcc.gnu.org>
29582
29583         * doc/install.texi: Add links to macOS binary distributions.
29584
29585 2017-05-27  Jakub Jelinek  <jakub@redhat.com>
29586
29587         PR bootstrap/80887
29588         Revert:
29589         2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29590
29591         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
29592
29593 2017-05-26  Martin Liska  <mliska@suse.cz>
29594
29595         * dumpfile.h (enum dump_kind): Renumber TDF_* flags to be contiguous.
29596
29597 2017-05-26  Martin Liska  <mliska@suse.cz>
29598
29599         * cfg.c (check_bb_profile): Do not use TDF_COMMENT and print
29600         always leading ';; '.
29601         (dump_bb_info): Likewise.
29602         (brief_dump_cfg): Likewise.
29603         * cfgrtl.c (print_rtl_with_bb): Do not use TDF_COMMENT.
29604         * dumpfile.c: Remove usage of TDF_VERBOSE.
29605         * dumpfile.h (enum dump_kind): Likewise.
29606         (dump_gimple_bb_header): Do not use TDF_COMMENT.
29607         * print-tree.c (debug_verbose): Remove.
29608         * tree-cfg.c (gimple_dump_cfg): Do not use TDF_COMMENT.
29609         (dump_function_to_file): Remove dumps guarded with TDF_VERBOSE.
29610         * tree-diagnostic.c (default_tree_printer): Replace
29611         TDF_DIAGNOSTIC with TDF_SLIM.
29612
29613 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29614
29615         * tree-vect-loop-manip.c (create_intersect_range_checks_index): Pass
29616         in parameter loop, rather than loop_vinfo.
29617         (create_intersect_range_checks): Ditto.
29618         (vect_create_cond_for_alias_checks): Update call to above functions.
29619
29620 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29621
29622         PR tree-optimization/80815
29623         * tree-data-ref.c (prune_runtime_alias_test_list): Simplify condition
29624         for merging runtime alias checks.  Handle negative DR_STEPs.
29625
29626 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29627
29628         * tree-vect-data-refs.c (Operator==, comp_dr_with_seg_len_pair):
29629         Move from ...
29630         * tree-data-ref.c (Operator==, comp_dr_with_seg_len_pair): To here.
29631         * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Factor
29632         out code pruning runtime alias checks.
29633         * tree-data-ref.c (prune_runtime_alias_test_list): New function
29634         factored out from above.
29635         * tree-vectorizer.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
29636         Move from ...
29637         * tree-data-ref.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
29638         ... to here.
29639         (prune_runtime_alias_test_list): New decalaration.
29640
29641 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29642
29643         * tree-vect-data-refs.c (compare_tree): Rename and move ...
29644         * tree-data-ref.c (data_ref_compare_tree): ... to here.
29645         * tree-data-ref.h (data_ref_compare_tree): New decalaration.
29646         * tree-vect-data-refs.c (dr_group_sort_cmp): Update uses.
29647         (operator==, comp_dr_with_seg_len_pair): Ditto.
29648         (vect_prune_runtime_alias_test_list): Ditto.
29649
29650 2017-05-26  Martin Liska  <mliska@suse.cz>
29651
29652         PR ipa/80663
29653         * params.def: Bound partial-inlining-entry-probability param.
29654
29655 2017-05-26  Marek Polacek  <polacek@redhat.com>
29656
29657         PR sanitizer/80875
29658         * fold-const.c (fold_binary_loc) <case MULT_EXPR>: Check if OP1
29659         can be negated.
29660
29661 2017-05-26  Richard Biener  <rguenther@suse.de>
29662
29663         PR tree-optimization/80842
29664         * tree-ssa-ccp.c (set_lattice_value): Always meet with the old
29665         value.
29666
29667 2017-05-26  Richard Biener  <rguenther@suse.de>
29668
29669         PR tree-optimization/80844
29670         * tree-vectorizer.c (adjust_simduid_builtins): Propagate results.
29671
29672 2017-05-25  Sebastian Peryt  <sebastian.peryt@intel.com>
29673
29674         * doc/md.texi (Machine Constraints): Update x86 family
29675         machine constraints section to match 'config/i386/constraints.md'.
29676
29677 2017-05-25  Volker Reichelt  <v.reichelt@netcologne.de>
29678
29679         * doc/invoke.texi (-Wcatch-value=): Document new warning option.
29680
29681 2017-05-25  Nathan Sidwell  <nathan@acm.org>
29682
29683         * doc/invoke.texi (--enable-languages): Update documentation.
29684
29685 2017-05-25  Martin Liska  <mliska@suse.cz>
29686
29687         * dumpfile.c: Add TDF_FOLDING.
29688         * dumpfile.h (enum dump_kind): Likewise.
29689         * genmatch.c (dt_simplify::gen_1): Use it.
29690
29691 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29692
29693         * match.pd (view_convert (convert@0 @1)): Handle zero-extension.
29694
29695 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29696
29697         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
29698         * tree.c (drop_tree_overflow): Handle COMPLEX_CST and VECTOR_CST.
29699
29700 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29701
29702         * fold-const.c (fold_binary_loc) [(A & C) == D]: Remove transformation.
29703         * match.pd (X == C): Rewrite it here.
29704         (with_possible_nonzero_bits, with_possible_nonzero_bits2,
29705         with_certain_nonzero_bits2): New predicates.
29706         * tree-ssanames.c (get_nonzero_bits): Handle INTEGER_CST.
29707
29708 2017-05-24  Nathan Sidwell  <nathan@acm.org>
29709
29710         * lto-streamer-in.c (lto_input_data_block): Adjust T const cast to
29711         avoid warning.
29712
29713         * auto-profile.c (afdo_propagate): Adjust T const cast to avoid
29714         warning.
29715
29716 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
29717
29718         * config/powerpcspe: New port.  Files are copied from the rs6000
29719         port, with "rs6000" in filenames replaced by "powerpcspe".
29720
29721 2017-05-24  Wilco Dijkstra  <wdijkstr@arm.com>
29722
29723         PR rtl-optimization/80754
29724         * lra-remat.c (do_remat): Add overlap checks for dst_regno.
29725
29726 2017-05-24  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
29727
29728         * config/sparc/sparc.md (length): Return the correct value for -mflat
29729         sibcalls to match output_sibcall.
29730
29731 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
29732
29733         PR bootstrap/80860
29734         PR bootstrap/80843
29735         * config/rs6000/rs6000.c (struct machine_function): Add new field
29736         n_components.
29737         (rs6000_get_separate_components): Init that field, use it.
29738         (rs6000_components_for_bb): Use the field.
29739
29740 2017-05-24  Thomas Preud'homme  <thomas.preudhomme@arm.com>
29741
29742         * config/arm/arm.c (arm_expand_prologue): Fix typo in comment.
29743
29744 2017-05-24  Peter Bergner  <bergner@vnet.ibm.com>
29745
29746         PR middle-end/80823
29747         * tree-cfg.c (group_case_labels_stmt): Delete increment of "i";
29748
29749 2017-05-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
29750
29751         PR target/80725
29752         * config/s390/s390.c (s390_check_qrst_address): Check incoming
29753         address against address_operand predicate.
29754         * config/s390/s390.md ("*indirect_jump"): Swap alternatives.
29755
29756 2017-05-24  Eric Botcazou  <ebotcazou@adacore.com>
29757
29758         * var-tracking.c (track_expr_p): Do not return 0 for tracked record
29759         parameters passed indirectly.
29760
29761 2017-05-23  Uros Bizjak  <ubizjak@gmail.com>
29762
29763         * config/i386/i386.md (*movdi_internal): Remove SSE4
29764         alternative 18 (?r, *v).  Update insn attributes.
29765         (*movsi_internal): Remove SSE4 alternative 13 (?r, *v).
29766         Update insn attributes.
29767         (*zero_extendsidi2): Remove SSE4 alternative (?r, *x).
29768         Update insn attributes.
29769         * config/i386/sse.md (vec_extract<ssevecmodelower>_0): Remove SSE4
29770         alternative 1 (r, v). Remove isa attribute.
29771         * config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
29772         Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC
29773         and !TARGET_INTER_UNIT_MOVES_TO_VEC targets.
29774
29775 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29776
29777         * doc/sourcebuild.texi (Directives, Verify compiler message): Document
29778         dg-line directive.
29779
29780 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29781
29782         * cgraphunit.c (symbol_table::process_new_functions): Update.
29783         * ipa-fnsummary.c (pass_data_inline_parameters): Remove.
29784         (inline_generate_summary): Rename to ...
29785         (ipa_fn_summary_generate): ... this one.
29786         (inline_read_summary): Rename to ...
29787         (ipa_fn_summary_read): ... this one.
29788         (inline_write_summary): Rename to ...
29789         (ipa_fn_summary_write): ... this one.
29790         (inline_free_summary): Rename to ...
29791         (ipa_free_fn_summary): ... this one.
29792         (pass_data_local_fn_summary, pass_local_fn_summary,
29793         make_pass_local_fn_summary, pass_data_ipa_free_fn_summary,
29794         pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary,
29795         pass_data_ipa_fn_summary, pass_ipa_fn_summary,
29796         make_pass_ipa_fn_summary): New.
29797         * ipa-fnsummary.h (inline_generate_summary, inline_read_summary,
29798         inline_write_summary, inline_free_summary): Remove.
29799         (ipa_free_fn_summary) : New.
29800         * ipa-inline.c (ipa_inline): Update.
29801         (pass_ipa_inline): Do not generate summaries.
29802         * ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary):
29803         Remove.
29804         * passes.def: Replace pass_inline_parameters by pass_local_fn_summary
29805         and add pass_ipa_fn_summary.
29806         * tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary):
29807         New.
29808         (make_pass_inline_parameters): Remove.
29809
29810 2017-05-23  Thomas Schwinge  <thomas@codesourcery.com>
29811
29812         * omp-low.c (struct omp_context): Remove "default_kind" member.
29813         Adjust all users.
29814
29815         * omp-offload.c (execute_oacc_device_lower): Remove the
29816         parallelism dimensions function attributes for unparallelized
29817         OpenACC kernels constructs.
29818
29819 2017-05-23  Martin Liska  <mliska@suse.cz>
29820
29821         * cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name
29822         functions.
29823         (cgraph_edge::make_speculative): Likewise.
29824         (cgraph_edge::resolve_speculation): Likewise.
29825         (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
29826         (cgraph_node::dump): Likewise.
29827         * cgraph.h: Likewise.
29828         * cgraphunit.c (analyze_functions): Likewise.
29829         (symbol_table::compile): Likewise.
29830         * ipa-cp.c (print_all_lattices): Likewise.
29831         (determine_versionability): Likewise.
29832         (initialize_node_lattices): Likewise.
29833         (ipcp_verify_propagated_values): Likewise.
29834         (estimate_local_effects): Likewise.
29835         (update_profiling_info): Likewise.
29836         (create_specialized_node): Likewise.
29837         (perhaps_add_new_callers): Likewise.
29838         (decide_about_value): Likewise.
29839         (decide_whether_version_node): Likewise.
29840         (identify_dead_nodes): Likewise.
29841         (ipcp_store_bits_results): Likewise.
29842         * ipa-devirt.c (dump_targets): Likewise.
29843         (ipa_devirt): Likewise.
29844         * ipa-icf.c (sem_item::dump): Likewise.
29845         (sem_function::equals): Likewise.
29846         (sem_variable::equals): Likewise.
29847         (sem_item_optimizer::read_section): Likewise.
29848         (sem_item_optimizer::execute): Likewise.
29849         (congruence_class::dump): Likewise.
29850         * ipa-inline-analysis.c (dump_ipa_call_summary): Likewise.
29851         (dump_inline_summary): Likewise.
29852         (estimate_node_size_and_time): Likewise.
29853         (inline_analyze_function): Likewise.
29854         * ipa-inline-transform.c (inline_call): Likewise.
29855         * ipa-inline.c (report_inline_failed_reason): Likewise.
29856         (want_early_inline_function_p): Likewise.
29857         (edge_badness): Likewise.
29858         (update_edge_key): Likewise.
29859         (inline_small_functions): Likewise.
29860         * ipa-profile.c (ipa_profile): Likewise.
29861         * ipa-prop.c (ipa_print_node_jump_functions): Likewise.
29862         (ipa_make_edge_direct_to_target): Likewise.
29863         (remove_described_reference): Likewise.
29864         (ipa_impossible_devirt_target): Likewise.
29865         (propagate_controlled_uses): Likewise.
29866         (ipa_print_node_params): Likewise.
29867         (ipcp_transform_function): Likewise.
29868         * ipa-pure-const.c (pure_const_read_summary): Likewise.
29869         (propagate_pure_const): Likewise.
29870         * ipa-reference.c (generate_summary): Likewise.
29871         (read_write_all_from_decl): Likewise.
29872         (propagate): Likewise.
29873         (ipa_reference_read_optimization_summary): Likewise.
29874         * ipa-utils.c (ipa_merge_profiles): Likewise.
29875         * ipa.c (walk_polymorphic_call_targets): Likewise.
29876         (symbol_table::remove_unreachable_nodes): Likewise.
29877         (ipa_single_use): Likewise.
29878         * passes.c (execute_todo): Likewise.
29879         * predict.c (drop_profile): Likewise.
29880         * symtab.c (symtab_node::get_dump_name): New function.
29881         (symtab_node::dump_name): Likewise.
29882         (symtab_node::dump_asm_name): Likewise.
29883         (symtab_node::dump_references): Likewise.
29884         (symtab_node::dump_referring): Likewise.
29885         (symtab_node::dump_base): Likewise.
29886         (symtab_node::debug_symtab): Likewise.
29887         * tree-sra.c (convert_callers_for_node): Likewise.
29888         * tree-ssa-structalias.c (ipa_pta_execute): Likewise.
29889         * value-prof.c (init_node_map): Likewise.
29890
29891 2017-05-23  Martin Liska  <mliska@suse.cz>
29892
29893         * cgraph.h: Move symtab_node::dump_table to symbol_table::dump
29894         and symtab_node::debug_symtab to symbol_table::debug.
29895         * cgraphunit.c (analyze_functions): Use the renamed function.
29896         (symbol_table::compile): Likewise.
29897         * ipa-cp.c (ipcp_verify_propagated_values): Likewise.
29898         * ipa-icf.c (sem_item_optimizer::execute): Likewise.
29899         * passes.c (execute_todo): Likewise.
29900         * symtab.c (symbol_table::dump): New function.
29901         * tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function.
29902
29903 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29904
29905         * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
29906         that nonconst implies exec.
29907
29908 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29909
29910         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
29911         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
29912         (inline_edge_summary_vec): Turn into ...
29913         (ipa_call_summaries): ... this one.
29914         (redirect_to_unreachable, edge_set_predicate,
29915         evaluate_properties_for_edge, inline_summary_alloc,
29916         reset_ipa_call_summary, reset_inline_summary,
29917         inline_summary_t::duplicate): Update.
29918         (inline_edge_duplication_hook): Turn to ...
29919         (ipa_call_summary_t::duplicate): ... this one.
29920         (inline_edge_removal_hook): Turn to ...
29921         (ipa_call_summary_t::remove): ... this one.
29922         (dump_inline_edge_summary): Turn to ...
29923         (dump_ipa_call_summary): ... this one.
29924         (estimate_function_body_sizes): Update.
29925         (inline_update_callee_summaries): Update.
29926         (remap_edge_change_prob): Update.
29927         (remap_edge_summaries): Update.
29928         (inline_merge_summary): Update.
29929         (do_estimate_edge_time): Update.
29930         (inline_generate_summary): Update.
29931         (inline_read_section): Update.
29932         (inline_read_summary): Update.
29933         (inline_free_summary): Update.
29934         * ipa-inline.c (can_inline_edge_p): Update.
29935         (compute_inlined_call_time): Update.
29936         (want_inline_small_function_p): Update.
29937         (edge_badness): Update.
29938         (early_inliner): Update.
29939         * ipa-inline.h (inline_edge_summary): Turn to ...
29940         (ipa_call_summary): ... this one.
29941         (ipa_call_summary_t): New class.
29942         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
29943         (ipa_call_summaries): New.
29944         (inline_edge_summary): Remove.
29945         (estimate_edge_growth): Update.
29946         * ipa-profile.c (ipa_propagate_frequency_1): Update.
29947         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
29948         * ipa-split.c (execute_split_functions): Update.
29949         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
29950
29951 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29952
29953         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
29954         attributes): Document rdrand effective target.
29955
29956 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29957
29958         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
29959         attributes): Sort alphabetically.
29960
29961 2017-05-23  Georg-Johann Lay  <avr@gjlay.de>
29962
29963         * config/avr/genmultilib.awk: Use gsub instead of gensub.
29964
29965 2017-05-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
29966
29967         PR target/80718
29968         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Split
29969         V2DF/V2DI splat into two separate patterns, one that handles
29970         registers, and the other that only handles memory.  Drop support
29971         for splatting from a GPR on ISA 2.07 and then splitting the
29972         splat into direct move and splat.
29973         (vsx_splat_<mode>_reg): Likewise.
29974         (vsx_splat_<mode>_mem): Likewise.
29975
29976 2017-05-22  Segher Boessenkool  <segher@kernel.crashing.org>
29977
29978         * cfgcleanup.c (bb_is_just_return): Allow CLOBBERs.
29979
29980 2017-05-22  Jakub Jelinek  <jakub@redhat.com>
29981
29982         PR middle-end/80809
29983         * omp-low.c (finish_taskreg_remap): New function.
29984         (finish_taskreg_scan): If unit size of ctx->record_type
29985         is non-constant, unshare the size expression and replace
29986         decls in it with possible outer var refs.
29987
29988         PR middle-end/80809
29989         * gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use
29990         GOVD_SHARED rather than GOVD_PRIVATE with it.
29991         (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect
29992         GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE.
29993
29994         PR middle-end/80853
29995         * omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE
29996         as last argument to build_outer_var_ref for pointer bases of array
29997         section reductions.
29998
29999 2017-05-19  Martin Sebor  <msebor@redhat.com>
30000
30001         * print-tree.c (print_node): Print DECL_READ_P flag.
30002
30003 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
30004
30005         * Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h
30006         * auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h
30007         * cgraph.c: Likewise.
30008         * cgraphunit.c: Likewise.
30009         * gengtype.c: Likewise.
30010         * ipa-cp.c: Likewise.
30011         * ipa-devirt.c: Likewise.
30012         * ipa-icf.c: Likewise.
30013         * ipa-predicate.c: Likewise.
30014         * ipa-profile.c: Likewise.
30015         * ipa-prop.c: Likewise.
30016         * ipa-split.c: Likewise.
30017         * ipa.c: Likewise.
30018         * ipa-inline-analysis.c (inline_summaries, ipa_call_summaries,
30019         edge_predicate_pool, dump_inline_hints,
30020         inline_summary::account_size_time, redirect_to_unreachable,
30021         edge_set_predicate, set_hint_predicate,
30022         evaluate_conditions_for_known_args, evaluate_properties_for_edge,
30023         inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset,
30024         inline_summary_t::remove, remap_hint_predicate_after_duplication,
30025         inline_summary_t::duplicate, ipa_call_summary_t::duplicate,
30026         ipa_call_summary_t::remove, initialize_growth_caches,
30027         free_growth_caches, dump_ipa_call_summary, dump_inline_summary,
30028         debug_inline_summary, dump_inline_summaries, initialize_inline_failed,
30029         mark_modified, unmodified_parm_1, unmodified_parm,
30030         unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob,
30031         set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate,
30032         compute_bb_predicates, will_be_nonconstant_expr_predicate,
30033         will_be_nonconstant_predicate, record_modified_bb_info,
30034         get_minimal_bb, record_modified, param_change_prob,
30035         phi_result_unknown_predicate, predicate_for_phi_result,
30036         array_index_predicate, clobber_only_eh_bb_p, fp_expression_p,
30037         estimate_function_body_sizes, compute_inline_parameters,
30038         compute_inline_parameters_for_curren, pass_data_inline_parameters,
30039         estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,
30040         inline_update_callee_summaries, remap_edge_change_prob,
30041         remap_edge_summaries, remap_hint_predicate, inline_merge_summary,
30042         inline_update_overall_summary, inline_indirect_intraprocedural_analysis,
30043         inline_analyze_function, inline_summary_t::insert,
30044         inline_generate_summary, read_ipa_call_summary, inline_read_section,
30045         inline_read_summary, write_ipa_call_summary, inline_write_summary,
30046         inline_free_summary): Move to ipa-fnsummary.h
30047         (predicate_t): Remove.
30048         * ipa-fnsummary.c: New file.
30049         * ipa-inline.h:  Do not include sreal.h and ipa-predicate.h
30050         (enum inline_hints_vals, inline_hints, agg_position_info,
30051         INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t,
30052         inline_summaries, ipa_call_summary, ipa_call_summary_t,
30053         ipa_call_summaries, debug_inline_summary, dump_inline_summaries,
30054         dump_inline_summary, dump_inline_hints, inline_generate_summary,
30055         inline_read_summary, inline_write_summary, inline_free_summary,
30056         inline_analyze_function, initialize_inline_failed,
30057         inline_merge_summary, inline_update_overall_summary,
30058         compute_inline_parameters): Move to ipa-fnsummary.h
30059         * ipa-fnsummary.h: New file.
30060         * ipa-inline-transform.h: Include ipa-inline.h.
30061         * ipa-inline.c: LIkewise.
30062
30063 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
30064
30065         * ipa-inline.c (edge_badness): Use inlined_time instead of
30066         inline_summaries->get.
30067
30068 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
30069
30070         * ipa-inline.c (edge_badness): Use estimate_size_after_inlining.
30071
30072 2017-05-22  Nathan Sidwell  <nathan@acm.org>
30073
30074         * doc/invoke.texi (fdump-translation-unit): Delete documentation.
30075         (fdump-lang): Document 'raw' option.
30076         * dumpfile.h (TDI_tu): Delete.
30077         * dumpfile.c (dump_files): Remove translation-unit.
30078         (FIRST_AUTO_NUMBERED_DUMP): Decrement.
30079
30080 2017-05-22  Georg-Johann Lay  <avr@gjlay.de>
30081
30082         * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile"
30083         command option from $(AWK) call.
30084         * config/avr/genmultilib.awk: Simplify and rewrite so that it
30085         generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS.
30086         [FORMAT]: Remove handling of variable.
30087         * config/avr/t-multilib: Regenerate.
30088
30089 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
30090
30091         * ipa-inline-analysis.c (inline_summary::reset): Do not reset
30092         self_time.
30093         (dump_inline_summary): Do not print self_time.
30094         (estimate_function_body_sizes): Do not set self_time.
30095         (compute_inline_parameters): Likewise.
30096         (inline_read_section, inline_write_summary): Do not stream self_time.
30097         * ipa-inline.h (inline_summary): Drop self_time.
30098
30099 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
30100
30101         * ipa-inline-analysis.c (account_size_time): Rename to ...
30102         (inline_summary::account_size_time): ... this one.
30103         (reset_ipa_call_summary): Turn to ...
30104         (ipa_call_summary::reset): ... this one.
30105         (reset_inline_summary): Turn to ...
30106         (inline_summary::reset): ... this one.
30107         (inline_summary_t::remove): Update.
30108         (inline_summary_t::duplicate): Update.
30109         (ipa_call_summary_t::remove): Update.
30110         (dump_inline_summary): Update.
30111         (estimate_function_body_sizes): Update.
30112         (compute_inline_parameters): Update.
30113         (estimate_node_size_and_time): Update.
30114         (inline_merge_summary): Update.
30115         (inline_update_overall_summary): Update.
30116         (inline_read_section): Update.
30117         (inline_write_summary): Update.
30118         * ipa-inline.h (inline_summary): Rename entry to size_time_table;
30119         add account_size_time and reset member functions.
30120         (ipa_call_summary): Add reset function.
30121         * ipa-predicate.h (predicate::operator &): Constify.
30122
30123 2017-05-22  Richard Biener  <rguenther@suse.de>
30124
30125         * df-scan.c (df_insn_refs_verify): Speedup when not verifying.
30126
30127 2017-05-19  Jason Merrill  <jason@redhat.com>
30128
30129         * tree.c (make_tree_vec_stat, grow_tree_vec_stat): Use size_t.
30130
30131 2017-05-19  Marek Polacek  <polacek@redhat.com>
30132
30133         PR sanitizer/80800
30134         * fold-const.c (extract_muldiv_1) <case TRUNC_DIV_EXPR>: Add
30135         TYPE_OVERFLOW_WRAPS checks.
30136
30137 2017-05-19  Thomas Schwinge  <thomas@codesourcery.com>
30138
30139         * tree-core.h (enum omp_clause_default_kind): Add
30140         "OMP_CLAUSE_DEFAULT_PRESENT".
30141         * tree-pretty-print.c (dump_omp_clause): Handle it.
30142         * gimplify.c (enum gimplify_omp_var_data): Add
30143         "GOVD_MAP_FORCE_PRESENT".
30144         (gimplify_adjust_omp_clauses_1): Map it to
30145         "GOMP_MAP_FORCE_PRESENT".
30146         (oacc_default_clause): Handle "OMP_CLAUSE_DEFAULT_PRESENT".
30147
30148         * gimplify.c (oacc_default_clause): Clarify.
30149
30150 2017-05-19  Nathan Sidwell  <nathan@acm.org>
30151
30152         LANG_HOOK_REGISTER_DUMPS
30153         * toplev.c (general_init): Call register dump lang hook.
30154         * doc/invoke.texi: Document -fdump-lang option family.
30155         * dumpfile.c (dump_files): Remove class dump here.
30156         (FIRST_AUTO_NUMBERED_DUMP): Adjust.
30157         * dumpfile.h (tree_dump_index): Remove TDI_class.
30158         * langhooks-def.h (lhd_register_dumps): Declare.
30159         (LANG_HOOKS_REGISTER_DUMPS): Define.
30160         (LANG_HOOKS_INITIALIZER): Add it.
30161         * langhooks.c (lhd_register_dumps): Define.
30162         * langhooks.h (struct lang_hooks): Add register_dumps.
30163
30164 2017-05-19  Nathan Sidwell  <nathan@acm.org>
30165
30166         * context.h (context::set_passes): New.
30167         * context.c (context::context): Do not create pass manager.
30168         * toplev.c (general_init): Create pass manager here.
30169
30170 2017-05-19  Segher Boessenkool  <segher@kernel.crashing.org>
30171
30172         * config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't
30173         use this splitter if two add or or instructions would also work for
30174         the constant we want to generate.
30175
30176 2017-05-19  Richard Biener  <rguenther@suse.de>
30177
30178         PR build/80821
30179         * genmatch.c (dt_node::gen_kids_1): Add missing scope around
30180         predicate evaluation.
30181
30182 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
30183
30184         * ipa-inline.h (ipa_call_summary): Turn sizes into signed;
30185         add ctor.
30186         * ipa-inline.c (want_inline_small_function_p): Do not cast to
30187         unsigned.
30188
30189 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
30190
30191         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
30192         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
30193         (inline_edge_summary_vec): Turn into ...
30194         (ipa_call_summaries): ... this one.
30195         (redirect_to_unreachable, edge_set_predicate,
30196         evaluate_properties_for_edge, inline_summary_alloc,
30197         reset_ipa_call_summary, reset_inline_summary,
30198         inline_summary_t::duplicate): Update.
30199         (inline_edge_duplication_hook): Turn to ...
30200         (ipa_call_summary_t::duplicate): ... this one.
30201         (inline_edge_removal_hook): Turn to ...
30202         (ipa_call_summary_t::remove): ... this one.
30203         (dump_inline_edge_summary): Turn to ...
30204         (dump_ipa_call_summary): ... this one.
30205         (estimate_function_body_sizes): Update.
30206         (inline_update_callee_summaries): Update.
30207         (remap_edge_change_prob): Update.
30208         (remap_edge_summaries): Update.
30209         (inline_merge_summary): Update.
30210         (do_estimate_edge_time): Update.
30211         (inline_generate_summary): Update.
30212         (inline_read_section): Update.
30213         (inline_read_summary): Update.
30214         (inline_free_summary): Update.
30215         * ipa-inline.c (can_inline_edge_p): Update.
30216         (compute_inlined_call_time): Update.
30217         (want_inline_small_function_p): Update.
30218         (edge_badness): Update.
30219         (early_inliner): Update.
30220         * ipa-inline.h (inline_edge_summary): Turn to ...
30221         (ipa_call_summary): ... this one.
30222         (ipa_call_summary_t): New class.
30223         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
30224         (ipa_call_summaries): New.
30225         (inline_edge_summary): Remove.
30226         (estimate_edge_growth): Update.
30227         * ipa-profile.c (ipa_propagate_frequency_1): Update.
30228         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
30229         * ipa-split.c (execute_split_functions): Update.
30230         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
30231
30232 2017-05-19  Richard Biener  <rguenther@suse.de>
30233
30234         PR middle-end/80764
30235         * cfgexpand.c (expand_gimple_cond): Fix loop fixup.
30236
30237 2017-05-18  Segher Boessenkool  <segher@kernel.crashing.org>
30238
30239         * config/rs6000/rs6000.c (struct machine_function): Add field
30240         fpr_is_wrapped_separately.
30241         (rs6000_get_separate_components): Use 64 components.  Handle the
30242         new FPR components.
30243         (rs6000_components_for_bb): Handle the FPR components.
30244         (rs6000_emit_prologue_components): Handle the FPR components.
30245         (rs6000_emit_epilogue_components): Handle the FPR components.
30246         (rs6000_set_handled_components): Handle the FPR components.
30247         (rs6000_emit_prologue): Don't output prologue code for those FPRs
30248         that are already separately shrink-wrapped.
30249         (rs6000_emit_epilogue): Don't output epilogue code for those FPRs
30250         that are already separately shrink-wrapped.
30251
30252 2017-05-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
30253
30254         PR target/80510
30255         * config/rs6000/predicates.md (simple_offsettable_mem_operand):
30256         New predicate.
30257
30258         * config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator.
30259         (define_peephole2 for Altivec d-form load): Add peepholes to catch
30260         cases where the register allocator uses a move and an offsettable
30261         memory operation to/from a FPR register on ISA 2.06/2.07.
30262         (define_peephole2 for Altivec d-form store): Likewise.
30263
30264 2017-05-18  Uros Bizjak  <ubizjak@gmail.com>
30265
30266         PR target/80799
30267         * config/i386/mmx.md (*mov<mode>_internal): Enable
30268         alternatives 11, 12, 13 and 14 also for 32bit targets.
30269         Remove alternatives 15, 16, 17 and 18.
30270         * config/i386/sse.md (vec_concatv2di): Change
30271         alternative (!x, *y) to (x, ?!*Yn).
30272
30273 2017-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
30274
30275         * dumpfile.h (enum dump_kind): Remove stray comma.
30276
30277 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
30278
30279         * Makefile.in: Add ipa-predicate.o and ipa-predicate.h
30280         * ipa-inline-analysis.c (NUM_CONDITIONS): turn into
30281         predicate::num_conditions
30282         (IS_NOT_CONSTANT): turn into predicate::is_not_constant.
30283         (CHANGED): turn into predicate::changed.
30284         (agg_position_info): Move to ipa-predicate.h
30285         (add_condition, predicate::add_clause, predicate::operator &=,
30286         predicate::or_with, predicate::evaluate, predicate::probability,
30287         dump_condition, dump_clause, predicate::dump,
30288         predicate::remap_after_duplication, predicate::remap_after_inlining,
30289         predicate::stream_in, predicate::stream_out): Move to ipa-predicate.c
30290         (evaluate_conditions_for_known_args): Update.
30291         (set_cond_stmt_execution_predicate): Update.
30292         * ipa-inline.h: Include ipa-predicate.h
30293         (condition, inline_param_summary, conditions, agg_position_info,
30294         predicate): Move to ipa-predicate.h
30295         * ipa-predicate.c: New file.
30296         * ipa-predicate.h: New file.
30297
30298 2017-05-18  Wilco Dijkstra  <wdijkstr@arm.com>
30299
30300         * final.c (leaf_function_p): Check we are not in a sequence.
30301
30302 2017-05-18  Martin Liska  <mliska@suse.cz>
30303
30304         * cfgrtl.c (rtl_verify_edges): Remove usage of TDF_RTL.
30305         * dumpfile.c (dump_register): Use new enum dump_kind.
30306         (get_dump_file_name): Likewise.
30307         (dump_enable_all): Likewise.
30308         (dump_switch_p_1): Likewise.
30309         (enable_rtl_dump_file): Remove usage of TDF_RTL.
30310         * dumpfile.h (enum dump_kind): New enum type.
30311         (struct dump_file_info): Create constructor and
30312         format fields and comments.
30313         * passes.c (pass_manager::register_one_dump_file):
30314         Use num dump_kind.
30315         * statistics.c (statistics_early_init): Likewise.
30316         * tree-ssa-loop-prefetch.c (dump_mem_details): Replace
30317         TDF_TREE with TDF_SLIM.
30318         (gather_memory_references_ref): Likewise.
30319
30320 2017-05-18  Martin Liska  <mliska@suse.cz>
30321
30322         * vec.h (struct vnull): Use it.
30323
30324 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
30325
30326         * ipa-inline-analysis.c (predicate_conditions): Move to ipa-inline.h
30327         (true_predicate, false_predicate, true_predicate_p,
30328         false_predicate_p): Remove.
30329         (single_cond_predicate, not_inlined_predicate): Turn to member function
30330         in ipa-inline.h
30331         (add_condition): Update.
30332         (add_clause): Turn to...
30333         (predicate::add_clause): ... this one; update; allow passing NULL
30334         as parameter.
30335         (and_predicates): Turn to ...
30336         (predicate::operator &=): ... this one.
30337         (predicates_equal_p): Move to predicate::operator == in ipa-inline.h
30338         (or_predicates): Turn to ...
30339         (predicate::or_with): ... this one.
30340         (evaluate_predicate): Turn to ...
30341         (predicate::evaluate): ... this one.
30342         (predicate_probability): Turn to ...
30343         (predicate::probability): ... this one.
30344         (dump_condition): Update.
30345         (dump_predicate): Turn to ...
30346         (predicate::dump): ... this one.
30347         (account_size_time): Update.
30348         (edge_set_predicate): Update.
30349         (set_hint_predicate): UPdate.
30350         (evaluate_conditions_for_known_args): Update.
30351         (evaluate_properties_for_edge): Update.
30352         (remap_predicate_after_duplication): Turn to...
30353         (predicate::remap_after_duplication): ... this one.
30354         (remap_hint_predicate_after_duplication): Update.
30355         (inline_summary_t::duplicate): UPdate.
30356         (dump_inline_edge_summary): Update.
30357         (dump_inline_summary): Update.
30358         (set_cond_stmt_execution_predicate): Update.
30359         (set_switch_stmt_execution_predicate): Update.
30360         (compute_bb_predicates): Update.
30361         (will_be_nonconstant_expr_predicate): Update.
30362         (will_be_nonconstant_predicate): Update.
30363         (phi_result_unknown_predicate): Update.
30364         (predicate_for_phi_result): Update.
30365         (array_index_predicate): Update.
30366         (estimate_function_body_sizes): Update.
30367         (estimate_node_size_and_time): Update.
30368         (estimate_ipcp_clone_size_and_time): Update.
30369         (remap_predicate): Rename to ...
30370         (predicate::remap_after_inlining): ... this one.
30371         (remap_hint_predicate): Update.
30372         (inline_merge_summary): Update.
30373         (inline_update_overall_summary): Update.
30374         (estimate_size_after_inlining): Update.
30375         (read_predicate): Rename to ...
30376         (predicate::stream_in): ... this one.
30377         (read_inline_edge_summary): Update.
30378         (write_predicate): Rename to ...
30379         (predicate::stream_out): ... this one.
30380         (write_inline_edge_summary): Update.
30381         * ipa-inline.h (MAX_CLAUSES): Turn to predicate::max_clauses.
30382         (clause_t): Turn to uint32_t
30383         (predicate): Turn to class; implement constructor and operators
30384         ==, !=, &
30385         (size_time_entry): Update.
30386         (inline_summary): Update.
30387         (inline_edge_summary): Update.
30388
30389 2017-05-18  Marc Glisse  <marc.glisse@inria.fr>
30390
30391         * fold-const.c (fold_binary_loc): Move transformation...
30392         * match.pd (C - X CMP X): ... here.
30393
30394 2017-05-18  Sheldon Lobo  <sheldon.lobo@oracle.com>
30395
30396         * config/sparc/sparc.c (sparc_option_override): Set function
30397         alignment for -mcpu=niagara7 to 64 to match the I$ line.
30398         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch
30399         latency to 1.
30400         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch
30401         latency to 2.
30402         * config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo.
30403
30404 2017-05-18  Marek Polacek  <polacek@redhat.com>
30405
30406         PR sanitizer/80797
30407         * ubsan.c (instrument_null): Unwrap ADDR_EXPRs.
30408         (pass_ubsan::execute): Call gimple_assign_single_p instead of
30409         gimple_assign_load_p.
30410
30411 2017-05-17  Segher Boessenkool  <segher@kernel.crashing.org>
30412
30413         PR middle-end/80692
30414         * real.c (do_compare): Give decimal_do_compare preference over
30415         comparing just the signs.
30416
30417 2017-05-17  Uros Bizjak  <ubizjak@gmail.com>
30418
30419         * doc/md.texi (Canonicalization of Instructions): Describe the
30420         canonical form of instructions that inherently set a condition
30421         code register.
30422
30423 2017-05-17  Peter Bergner  <bergner@vnet.ibm.com>
30424
30425         PR middle-end/80775
30426         * tree-cfg.c: Move deletion of unreachable case statements to after
30427         the merging of consecutive case labels.
30428
30429 2017-05-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
30430
30431         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Refer
30432         readers to __gnu_cmse_nonsecure_call libcall for saving, clearing and
30433         restoring of callee-saved registers.
30434
30435 2017-05-17  Eric Botcazou  <ebotcazou@adacore.com>
30436
30437         * compare-elim.c (equivalent_reg_at_start): Adjust outdated comment.
30438         * config/visium/visium.c (single_set_and_flags): Likewise.
30439         * config/visium/visium.md (Substitutions): Likewise.
30440
30441 2017-05-17  Martin Liska  <mliska@suse.cz>
30442
30443         * cfg.c: Introduce dump_flags_t type and
30444         use it instead of int type.
30445         * cfg.h: Likewise.
30446         * cfghooks.c: Likewise.
30447         * cfghooks.h (struct cfg_hooks): Likewise.
30448         * cfgrtl.c: Likewise.
30449         * cfgrtl.h: Likewise.
30450         * cgraph.c (cgraph_node::get_body): Likewise.
30451         * coretypes.h: Likewise.
30452         * domwalk.c: Likewise.
30453         * domwalk.h: Likewise.
30454         * dumpfile.c (struct dump_option_value_info): Likewise.
30455         (dump_enable_all): Likewise.
30456         (dump_switch_p_1): Likewise.
30457         (opt_info_switch_p): Likewise.
30458         * dumpfile.h (enum tree_dump_index): Likewise.
30459         (struct dump_file_info): Likewise.
30460         * genemit.c: Likewise.
30461         * generic-match-head.c: Likewise.
30462         * gengtype.c (open_base_files): Likewise.
30463         * gimple-pretty-print.c: Likewise.
30464         * gimple-pretty-print.h: Likewise.
30465         * graph.c (print_graph_cfg): Likewise.
30466         * graphite-scop-detection.c (dot_all_sese): Likewise.
30467         * ipa-devirt.c (build_type_inheritance_graph): Likewise.
30468         * loop-unroll.c (report_unroll): Likewise.
30469         * passes.c (pass_manager::register_one_dump_file): Likewise.
30470         * print-tree.c: Likewise.
30471         * statistics.c: Likewise.
30472         * tree-cfg.c: Likewise.
30473         * tree-cfg.h: Likewise.
30474         * tree-dfa.c: Likewise.
30475         * tree-dfa.h: Likewise.
30476         * tree-dump.c (dump_function): Likewise.
30477         * tree-dump.h (struct dump_info): Likewise.
30478         * tree-pretty-print.c: Likewise.
30479         * tree-pretty-print.h: Likewise.
30480         * tree-ssa-live.c: Likewise.
30481         * tree-ssa-live.h: Likewise.
30482         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
30483         * tree-vect-loop.c: Likewise.
30484         * tree-vect-slp.c: Likewise.
30485
30486 2017-05-16  James Greenhalgh  <james.greenhalgh@arm.com>
30487             Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30488
30489         PR tree-optimization/80457
30490         * tree-vect-stmts.c (vect_model_simple_cost): Model the cost
30491         of all arguments to a statement as scalar_to_vec operations.
30492         (vectorizable_call): Adjust call to vect_model_simple_cost for
30493         new parameter.
30494         (vectorizable_conversion): Likewise.
30495         (vectorizable_assignment): Likewise.
30496         (vectorizable_shift): Likewise.
30497         (vectorizable_operation): Likewise.
30498         (vectorizable_comparison): Likewise.
30499         (vect_is_simple_cond): Record the def types for operands.
30500         (vectorizable_condition): Likewise, call vect_model_simple_cost.
30501         * tree-vectorizer.h (vect_model_simple_cost): Add new parameter
30502         for statement argument count.
30503
30504 2017-05-16  Carl Love  <cel@us.ibm.com>
30505
30506         * config/rs6000/rs6000-c: Add support for built-in functions
30507         vector unsigned long long vec_bperm (vector unsigned long long,
30508                                              vector unsigned char)
30509         vector signed long long vec_mule (vector signed int,
30510                                           vector signed int)
30511         vector unsigned long long vec_mule (vector unsigned int,
30512                                             vector unsigned int)
30513         vector signed long long vec_mulo (vector signed int,
30514                                           vector signed int)
30515         vector unsigned long long vec_mulo (vector unsigned int,
30516                                             vector unsigned int)
30517         vector signed char vec_sldw (vector signed char,
30518                                      vector signed char,
30519                                      const int)
30520         vector unsigned char vec_sldw (vector unsigned char,
30521                                        vector unsigned char,
30522                                        const int)
30523         vector signed short vec_sldw (vector signed short,
30524                                       vector signed short,
30525                                       const int)
30526         vector unsigned short vec_sldw (vector unsigned short,
30527                                         vector unsigned short,
30528                                         const int)
30529         vector signed int vec_sldw (vector signed int,
30530                                     vector signed int,
30531                                     const int)
30532         vector unsigned int vec_sldw (vector unsigned int,
30533                                       vector unsigned int,
30534                                       const int)
30535         vector signed long long vec_sldw (vector signed long long,
30536                                           vector signed long long,
30537                                           const int)
30538         vector unsigned long long vec_sldw (vector unsigned long long,
30539                                             vector unsigned long long,
30540                                             const int)
30541         * config/rs6000/rs6000-c: Add support for built-in functions
30542         * config/rs6000/rs6000-builtin.def: Add definition for SLDW.
30543         * config/rs6000/altivec.h: Add defintion for vec_sldw.
30544         * doc/extend.texi: Update the built-in documentation for the
30545         new built-in functions.
30546
30547 2017-05-16  Marek Polacek  <polacek@redhat.com>
30548
30549         PR sanitizer/80536
30550         PR sanitizer/80386
30551         * tree.c (save_expr): Don't fold the expression.
30552
30553 2017-05-16  Uros Bizjak  <ubizjak@gmail.com>
30554
30555         * config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative
30556         to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r)
30557         and (?*y,m).  Update insn attributes.
30558
30559 2017-05-16  Martin Liska  <mliska@suse.cz>
30560
30561         * cgraph.c (cgraph_edge::resolve_speculation): Add default value for
30562         flags argument of print_gimple_stmt, print_gimple_expr,
30563         print_generic_stmt and print_generic_expr.
30564         * cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
30565         * coretypes.h: Likewise.
30566         * except.c (dump_eh_tree): Likewise.
30567         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
30568         * gimple-pretty-print.h: Likewise.
30569         * gimple-ssa-backprop.c (dump_usage_prefix): Likewise.
30570         (backprop::push_to_worklist): Likewise.
30571         (backprop::pop_from_worklist): Likewise.
30572         (backprop::process_use): Likewise.
30573         (backprop::intersect_uses): Likewise.
30574         (note_replacement): Likewise.
30575         * gimple-ssa-store-merging.c
30576         (pass_store_merging::terminate_all_aliasing_chains): Likewise.
30577         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
30578         (pass_store_merging::execute): Likewise.
30579         * gimple-ssa-strength-reduction.c (dump_candidate): Likewise.
30580         (ssa_base_cand_dump_callback): Likewise.
30581         (dump_incr_vec): Likewise.
30582         (replace_refs): Likewise.
30583         (replace_mult_candidate): Likewise.
30584         (create_add_on_incoming_edge): Likewise.
30585         (create_phi_basis): Likewise.
30586         (insert_initializers): Likewise.
30587         (all_phi_incrs_profitable): Likewise.
30588         (introduce_cast_before_cand): Likewise.
30589         (replace_one_candidate): Likewise.
30590         * gimplify.c (gimplify_expr): Likewise.
30591         * graphite-isl-ast-to-gimple.c (is_valid_rename): Likewise.
30592         (set_rename): Likewise.
30593         (rename_uses): Likewise.
30594         (copy_loop_phi_nodes): Likewise.
30595         (add_close_phis_to_merge_points): Likewise.
30596         (copy_loop_close_phi_args): Likewise.
30597         (copy_cond_phi_args): Likewise.
30598         (graphite_copy_stmts_from_block): Likewise.
30599         (translate_pending_phi_nodes): Likewise.
30600         * graphite-poly.c (print_pdr): Likewise.
30601         (dump_gbb_cases): Likewise.
30602         (dump_gbb_conditions): Likewise.
30603         (print_scop_params): Likewise.
30604         * graphite-scop-detection.c (build_cross_bb_scalars_def): Likewise.
30605         (build_cross_bb_scalars_use): Likewise.
30606         (gather_bbs::before_dom_children): Likewise.
30607         * hsa-dump.c (dump_hsa_immed): Likewise.
30608         * ipa-cp.c (print_ipcp_constant_value): Likewise.
30609         (get_replacement_map): Likewise.
30610         * ipa-inline-analysis.c (dump_condition): Likewise.
30611         (estimate_function_body_sizes): Likewise.
30612         * ipa-polymorphic-call.c (check_stmt_for_type_change): Likewise.
30613         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
30614         * ipa-prop.c (ipa_dump_param): Likewise.
30615         (ipa_print_node_jump_functions_for_edge): Likewise.
30616         (ipa_modify_call_arguments): Likewise.
30617         (ipa_modify_expr): Likewise.
30618         (ipa_dump_param_adjustments): Likewise.
30619         (ipa_dump_agg_replacement_values): Likewise.
30620         (ipcp_modif_dom_walker::before_dom_children): Likewise.
30621         * ipa-pure-const.c (check_stmt): Likewise.
30622         (pass_nothrow::execute): Likewise.
30623         * ipa-split.c (execute_split_functions): Likewise.
30624         * omp-offload.c (dump_oacc_loop_part): Likewise.
30625         (dump_oacc_loop): Likewise.
30626         * trans-mem.c (tm_log_emit): Likewise.
30627         (tm_memopt_accumulate_memops): Likewise.
30628         (dump_tm_memopt_set): Likewise.
30629         (dump_tm_memopt_transform): Likewise.
30630         * tree-cfg.c (gimple_verify_flow_info): Likewise.
30631         (print_loop): Likewise.
30632         * tree-chkp-opt.c (chkp_print_addr): Likewise.
30633         (chkp_gather_checks_info): Likewise.
30634         (chkp_get_check_result): Likewise.
30635         (chkp_remove_check_if_pass): Likewise.
30636         (chkp_use_outer_bounds_if_possible): Likewise.
30637         (chkp_reduce_bounds_lifetime): Likewise.
30638         * tree-chkp.c (chkp_register_addr_bounds): Likewise.
30639         (chkp_mark_completed_bounds): Likewise.
30640         (chkp_register_incomplete_bounds): Likewise.
30641         (chkp_mark_invalid_bounds): Likewise.
30642         (chkp_maybe_copy_and_register_bounds): Likewise.
30643         (chkp_build_returned_bound): Likewise.
30644         (chkp_get_bound_for_parm): Likewise.
30645         (chkp_build_bndldx): Likewise.
30646         (chkp_get_bounds_by_definition): Likewise.
30647         (chkp_generate_extern_var_bounds): Likewise.
30648         (chkp_get_bounds_for_decl_addr): Likewise.
30649         * tree-chrec.c (chrec_apply): Likewise.
30650         * tree-data-ref.c (dump_data_reference): Likewise.
30651         (dump_subscript): Likewise.
30652         (dump_data_dependence_relation): Likewise.
30653         (analyze_overlapping_iterations): Likewise.
30654         * tree-inline.c (expand_call_inline): Likewise.
30655         (tree_function_versioning): Likewise.
30656         * tree-into-ssa.c (dump_defs_stack): Likewise.
30657         (dump_currdefs): Likewise.
30658         (dump_names_replaced_by): Likewise.
30659         (dump_update_ssa): Likewise.
30660         (update_ssa): Likewise.
30661         * tree-object-size.c (pass_object_sizes::execute): Likewise.
30662         * tree-parloops.c (build_new_reduction): Likewise.
30663         (try_create_reduction_list): Likewise.
30664         (ref_conflicts_with_region): Likewise.
30665         (oacc_entry_exit_ok_1): Likewise.
30666         (oacc_entry_exit_single_gang): Likewise.
30667         * tree-pretty-print.h: Likewise.
30668         * tree-scalar-evolution.c (set_scalar_evolution): Likewise.
30669         (get_scalar_evolution): Likewise.
30670         (add_to_evolution): Likewise.
30671         (get_loop_exit_condition): Likewise.
30672         (analyze_evolution_in_loop): Likewise.
30673         (analyze_initial_condition): Likewise.
30674         (analyze_scalar_evolution): Likewise.
30675         (instantiate_scev): Likewise.
30676         (number_of_latch_executions): Likewise.
30677         (gather_chrec_stats): Likewise.
30678         (final_value_replacement_loop): Likewise.
30679         (scev_const_prop): Likewise.
30680         * tree-sra.c (dump_access): Likewise.
30681         (disqualify_candidate): Likewise.
30682         (create_access): Likewise.
30683         (reject): Likewise.
30684         (maybe_add_sra_candidate): Likewise.
30685         (create_access_replacement): Likewise.
30686         (analyze_access_subtree): Likewise.
30687         (analyze_all_variable_accesses): Likewise.
30688         (sra_modify_assign): Likewise.
30689         (initialize_constant_pool_replacements): Likewise.
30690         (find_param_candidates): Likewise.
30691         (decide_one_param_reduction): Likewise.
30692         (replace_removed_params_ssa_names): Likewise.
30693         * tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
30694         * tree-ssa-copy.c (dump_copy_of): Likewise.
30695         (copy_prop_visit_cond_stmt): Likewise.
30696         * tree-ssa-dce.c (mark_operand_necessary): Likewise.
30697         * tree-ssa-dom.c (pass_dominator::execute): Likewise.
30698         (record_equivalences_from_stmt): Likewise.
30699         * tree-ssa-dse.c (compute_trims): Likewise.
30700         (delete_dead_call): Likewise.
30701         (delete_dead_assignment): Likewise.
30702         * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Likewise.
30703         (forward_propagate_into_cond): Likewise.
30704         (pass_forwprop::execute): Likewise.
30705         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
30706         * tree-ssa-loop-im.c (invariantness_dom_walker::before_dom_children):
30707         Likewise.
30708         (move_computations_worker): Likewise.
30709         (execute_sm): Likewise.
30710         * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise.
30711         (remove_exits_and_undefined_stmts): Likewise.
30712         (remove_redundant_iv_tests): Likewise.
30713         * tree-ssa-loop-ivopts.c (dump_use): Likewise.
30714         (adjust_iv_update_pos): Likewise.
30715         * tree-ssa-math-opts.c (bswap_replace): Likewise.
30716         * tree-ssa-phiopt.c (factor_out_conditional_conversion): Likewise.
30717         (value_replacement): Likewise.
30718         * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
30719         * tree-ssa-pre.c (print_pre_expr): Likewise.
30720         (get_representative_for): Likewise.
30721         (create_expression_by_pieces): Likewise.
30722         (insert_into_preds_of_block): Likewise.
30723         (eliminate_insert): Likewise.
30724         (eliminate_dom_walker::before_dom_children): Likewise.
30725         (eliminate): Likewise.
30726         (remove_dead_inserted_code): Likewise.
30727         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
30728         * tree-ssa-reassoc.c (get_rank): Likewise.
30729         (eliminate_duplicate_pair): Likewise.
30730         (eliminate_plus_minus_pair): Likewise.
30731         (eliminate_not_pairs): Likewise.
30732         (undistribute_ops_list): Likewise.
30733         (eliminate_redundant_comparison): Likewise.
30734         (update_range_test): Likewise.
30735         (optimize_range_tests_var_bound): Likewise.
30736         (optimize_vec_cond_expr): Likewise.
30737         (rewrite_expr_tree): Likewise.
30738         (rewrite_expr_tree_parallel): Likewise.
30739         (linearize_expr): Likewise.
30740         (break_up_subtract): Likewise.
30741         (linearize_expr_tree): Likewise.
30742         (attempt_builtin_powi): Likewise.
30743         (attempt_builtin_copysign): Likewise.
30744         (transform_stmt_to_copy): Likewise.
30745         (transform_stmt_to_multiply): Likewise.
30746         (dump_ops_vector): Likewise.
30747         * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Likewise.
30748         (print_scc): Likewise.
30749         (set_ssa_val_to): Likewise.
30750         (visit_reference_op_store): Likewise.
30751         (visit_use): Likewise.
30752         (sccvn_dom_walker::before_dom_children): Likewise.
30753         (run_scc_vn): Likewise.
30754         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
30755         Likewise.
30756         (expr_hash_elt::print): Likewise.
30757         (const_and_copies::pop_to_marker): Likewise.
30758         (const_and_copies::record_const_or_copy_raw): Likewise.
30759         * tree-ssa-structalias.c (compute_dependence_clique): Likewise.
30760         * tree-ssa-uninit.c (collect_phi_def_edges): Likewise.
30761         (dump_predicates): Likewise.
30762         (find_uninit_use): Likewise.
30763         (warn_uninitialized_phi): Likewise.
30764         (pass_late_warn_uninitialized::execute): Likewise.
30765         * tree-ssa.c (verify_vssa): Likewise.
30766         (verify_ssa): Likewise.
30767         (maybe_optimize_var): Likewise.
30768         * tree-vrp.c (dump_value_range): Likewise.
30769         (dump_all_value_ranges): Likewise.
30770         (dump_asserts_for): Likewise.
30771         (register_edge_assert_for_2): Likewise.
30772         (vrp_visit_cond_stmt): Likewise.
30773         (vrp_visit_switch_stmt): Likewise.
30774         (vrp_visit_stmt): Likewise.
30775         (vrp_visit_phi_node): Likewise.
30776         (simplify_cond_using_ranges_1): Likewise.
30777         (fold_predicate_in): Likewise.
30778         (evrp_dom_walker::before_dom_children): Likewise.
30779         (evrp_dom_walker::push_value_range): Likewise.
30780         (evrp_dom_walker::pop_value_range): Likewise.
30781         (execute_early_vrp): Likewise.
30782
30783 2017-05-16  Richard Biener  <rguenther@suse.de>
30784
30785         * dwarf2out.c (loc_list_from_tree_1): Do not create
30786         DW_OP_GNU_variable_value for DECL_IGNORED_P decls.
30787
30788 2017-05-16  Richard Biener  <rguenther@suse.de>
30789
30790         * dwarf2out.c (resolve_variable_value_in_expr): Lookup DIE
30791         just generated.
30792         (note_variable_value_in_expr): If we resolved the decl ref
30793         do not push to the stack.
30794
30795 2017-05-16  Matthew Wahab  <matthew.wahab@arm.com>
30796
30797         * config/arm/arm_neon.h (vadd_f16): Use standard arithmetic
30798         operations in fast-math mode.
30799         (vaddq_f16): Likewise.
30800         (vmul_f16): Likewise.
30801         (vmulq_f16): Likewise.
30802         (vsub_f16): Likewise.
30803         (vsubq_f16): Likewise.
30804         * config/arm/neon.md (add<mode>3): New.
30805         (sub<mode>3): New.
30806         (fma:<VH:mode>3): New.  Also remove outdated comment.
30807         (mul<mode>3): New.
30808
30809 2017-05-16  Martin Liska  <mliska@suse.cz>
30810
30811         PR ipa/79849.
30812         PR ipa/79850.
30813         * ipa-devirt.c (warn_types_mismatch): Fix typo.
30814         (odr_types_equivalent_p): Likewise.
30815
30816 2017-05-15  Sylvestre Ledru  <sylvestre@debian.org>
30817
30818         * plugin.c (try_init_one_plugin): Fix ressource leaks (CID 726637).
30819
30820 2017-05-15  Uros Bizjak  <ubizjak@gmail.com>
30821
30822         PR target/80425
30823         * config/i386.i386.md (*zero_extendsidi2): Do not penalize
30824         non-interunit SSE move alternatives with '?'.
30825         (zero-extendsidi peephole2): New peephole to skip intermediate
30826         general register in SSE zero-extend sequence.
30827
30828 2017-05-15  Jeff Law  <law@redhat.com>
30829
30830         * reorg.c (relax_delay_slots): Create a new variable to hold
30831         the temporary target rather than clobbering TARGET_LABEL.
30832
30833         * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add
30834         missing argument to extract_bit_field call.
30835         * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise.
30836
30837 2017-05-15  Martin Liska  <mliska@suse.cz>
30838
30839         PR driver/31468
30840         * gcc.c (process_command): Do not allow empty argument of -o option.
30841
30842 2017-05-15  Renlin Li  <renlin.li@arm.com>
30843
30844         * config/aarch64/aarch64-protos.h (aarch64_expand_call): Declare.
30845         * config/aarch64/aarch64.c (aarch64_expand_call): Define.
30846         * config/aarch64/constraints.md (Usf): Add long call check.
30847         * config/aarch64/aarch64.md (call): Use aarch64_expand_call.
30848         (call_value): Likewise.
30849         (sibcall): Likewise.
30850         (sibcall_value): Likewise.
30851         (call_insn): New.
30852         (call_value_insn): New.
30853         (sibcall_insn): Update rtx pattern.
30854         (sibcall_value_insn): Likewise.
30855         (call_internal): Remove.
30856         (call_value_internal): Likewise.
30857         (sibcall_internal): Likewise.
30858         (sibcall_value_internal): Likewise.
30859         (call_reg): Likewise.
30860         (call_symbol): Likewise.
30861         (call_value_reg): Likewise.
30862         (call_value_symbol): Likewise.
30863
30864 2017-05-14  Krister Walfridsson  <krister.walfridsson@gmail.com>
30865
30866         PR target/80600
30867         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc.
30868
30869 2017-05-14  Uros Bizjak  <ubizjak@gmail.com>
30870
30871         * config/i386.i386.c (ix86_cc_modes_compatible): CCNOmode is
30872         compatible with CCGOCmode and with CCZmode.
30873
30874 2017-05-14  Martin Sebor  <msebor@redhat.com>
30875
30876         PR middle-end/77671
30877         * gimple-fold.c (gimple_fold_builtin_sprintf): Make extern.
30878         (gimple_fold_builtin_snprintf): Same.
30879         * gimple-fold.h (gimple_fold_builtin_sprintf): Declare.
30880         (gimple_fold_builtin_snprintf): Same.
30881         * gimple-ssa-sprintf.c (get_format_string): Correct the detection
30882         of character types.
30883         (is_call_safe): New function.
30884         (try_substitute_return_value): Call it.
30885         (try_simplify_call): New function.
30886         (pass_sprintf_length::handle_gimple_call): Call it.
30887
30888 2017-05-14  Martin Sebor  <msebor@redhat.com>
30889
30890         PR middle-end/80669
30891         * builtins.c (expand_builtin_stpncpy): Simplify.
30892
30893 2017-05-14  Daniel Santos  <daniel.santos@pobox.com>
30894
30895         * config/i386/i386.opt: Add option -mcall-ms2sysv-xlogues.
30896         * config/i386/i386.h
30897         (x86_64_ms_sysv_extra_clobbered_registers): Change type to unsigned.
30898         (NUM_X86_64_MS_CLOBBERED_REGS): New macro.
30899         (struct machine_function): Add new members call_ms2sysv,
30900         call_ms2sysv_pad_in, call_ms2sysv_pad_out and call_ms2sysv_extra_regs.
30901         (struct machine_frame_state): New fields sp_realigned and
30902         sp_realigned_offset.
30903         * config/i386/i386.c
30904         (enum xlogue_stub): New enum.
30905         (enum xlogue_stub_sets): New enum.
30906         (class xlogue_layout): New class.
30907         (struct ix86_frame): New fields stack_realign_allocate_offset,
30908         stack_realign_offset and outlined_save_offset.  Modify comments to
30909         detail stack layout when using out-of-line stubs.
30910         (ix86_target_string): Add -mcall-ms2sysv-xlogues option.
30911         (ix86_option_override_internal): Add sorry() for TARGET_SEH and
30912         -mcall-ms2sysv-xlogues.
30913         (stub_managed_regs): New static variable.
30914         (ix86_save_reg): Add new parameter ignore_outlined to optionally omit
30915         registers managed by out-of-line stub.
30916         (disable_call_ms2sysv_xlogues): New function.
30917         (ix86_compute_frame_layout): Modify re-alignment calculations, disable
30918         m->call_ms2sysv when appropriate and compute frame layout for
30919         out-of-line stubs.
30920         (sp_valid_at, fp_valid_at): New inline functions.
30921         (choose_basereg): New function.
30922         (choose_baseaddr): Add align parameter, use choose_basereg and modify
30923         all callers.
30924         (ix86_emit_save_reg_using_mov, ix86_emit_restore_sse_regs_using_mov):
30925         Use align parameter of choose_baseaddr to generated aligned SSE movs
30926         when possible.
30927         (pro_epilogue_adjust_stack): Modify to track
30928         machine_frame_state::sp_realigned.
30929         (ix86_nsaved_regs): Modify to accommodate changes to ix86_save_reg.
30930         (ix86_nsaved_sseregs): Likewise.
30931         (ix86_emit_save_regs): Likewise.
30932         (ix86_emit_save_regs_using_mov): Likewise.
30933         (ix86_emit_save_sse_regs_using_mov): Likewise.
30934         (get_scratch_register_on_entry): Likewise.
30935         (gen_frame_set): New function.
30936         (gen_frame_load): Likewise.
30937         (gen_frame_store): Likewise.
30938         (emit_outlined_ms2sysv_save): Likewise.
30939         (emit_outlined_ms2sysv_restore): Likewise.
30940         (ix86_expand_prologue): Modify stack re-alignment code and call
30941         emit_outlined_ms2sysv_save when appropriate.
30942         (ix86_emit_leave): Clear machine_frame_state::sp_realigned.  Add
30943         parameter rtx_insn *insn, which allows the function to be used to only
30944         generate the notes.
30945         (ix86_expand_epilogue): Modify validity checks of frame and stack
30946         pointers, and call emit_outlined_ms2sysv_restore when appropriate.
30947         (ix86_expand_call): Modify to enable m->call_ms2sysv when appropriate.
30948         * config/i386/predicates.md
30949         (save_multiple): New predicate.
30950         (restore_multiple): Likewise.
30951         * config/i386/sse.md
30952         (save_multiple<mode>): New pattern.
30953         (save_multiple_realign<mode>): Likewise.
30954         (restore_multiple<mode>): Likewise.
30955         (restore_multiple_and_return<mode>): Likewise.
30956         (restore_multiple_leave_return<mode>): Likewise.
30957         * Makefile.in: Export HOSTCXX and HOSTCXXFLAGS to site.exp
30958
30959 2017-05-14  Julia Koval  <julia.koval@intel.com>
30960
30961         * config/i386/i386-builtin-types.def (VOID_FTYPE_INT_INT64): New type.
30962         * config/i386/i386-builtin.def (__builtin_ia32_xgetbv)
30963         (__builtin_ia32_xsetbv): New builtins.
30964         * config/i386/i386.c (ix86_expand_special_args_builtin):
30965         Process new types.
30966         (ix86_expand_builtin): Special expand for new intrinsics.
30967         * config/i386/i386.md (UNSPECV_XGETBV, UNSPECV_XSETBV): New.
30968         (xsetbv, xsetbv_rex64, xgetbv, xgetbv_rex64): New insn patterns.
30969         * config/i386/xsaveintrin.h (_xsetbv, _getbv): New intrinsics.
30970
30971 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30972
30973         * cfganal.c (inverted_post_order_compute): Change argument type
30974         to vec *.
30975         * cfganal.h (inverted_post_order_compute): Adjust prototype.
30976         * df-core.c (rest_of_handle_df_initialize): Adjust.
30977         (rest_of_handle_df_finish): Likewise.
30978         (df_analyze_1): Likewise.
30979         (df_analyze): Likewise.
30980         (loop_inverted_post_order_compute): Change argument to be a vec *.
30981         (df_analyze_loop): Adjust.
30982         (df_get_n_blocks): Likewise.
30983         (df_get_postorder): Likewise.
30984         * df.h (struct df_d): Change field to be a vec.
30985         * lcm.c (compute_laterin): Adjust.
30986         (compute_available): Likewise.
30987         * lra-lives.c (lra_create_live_ranges_1): Likewise.
30988         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
30989         * tree-ssa-pre.c (compute_antic): Likewise.
30990
30991 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30992
30993         * cfganal.c (connect_infinite_loops_to_exit): Adjust.
30994         (depth_first_search::depth_first_search): Change structure init
30995         function to this constructor.
30996         (depth_first_search::add_bb): Rename function to this member.
30997         (depth_first_search::execute): Likewise.
30998         (flow_dfs_compute_reverse_finish): Adjust.
30999
31000 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31001
31002         * ddg.c (find_nodes_on_paths): Use auto_sbitmap.
31003         (longest_simple_path): Likewise.
31004         * shrink-wrap.c (spread_components): Likewise.
31005         (disqualify_problematic_components): Likewise.
31006         (emit_common_heads_for_components): Likewise.
31007         (emit_common_tails_for_components): Likewise.
31008         (insert_prologue_epilogue_for_components): Likewise.
31009
31010 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31011
31012         * tree-ssa-dse.c (dse_dom_walker): Make m_live_byes a
31013         auto_sbitmap.
31014
31015 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31016
31017         * df-core.c (df_set_blocks): Start using auto_bitmap.
31018         (df_compact_blocks): Likewise.
31019         * df-problems.c (df_rd_confluence_n): Likewise.
31020         * df-scan.c (df_insn_rescan_all): Likewise.
31021         (df_process_deferred_rescans): Likewise.
31022         (df_update_entry_block_defs): Likewise.
31023         (df_update_exit_block_uses): Likewise.
31024         (df_entry_block_bitmap_verify): Likewise.
31025         (df_exit_block_bitmap_verify): Likewise.
31026         (df_scan_verify): Likewise.
31027         * lra-constraints.c (lra_constraints): Likewise.
31028         (undo_optional_reloads): Likewise.
31029         (lra_undo_inheritance): Likewise.
31030         * lra-remat.c (calculate_gen_cands): Likewise.
31031         (do_remat): Likewise.
31032         * lra-spills.c (assign_spill_hard_regs): Likewise.
31033         (spill_pseudos): Likewise.
31034         * tree-ssa-pre.c (bitmap_set_and): Likewise.
31035         (bitmap_set_subtract_values): Likewise.
31036
31037 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31038
31039         * haifa-sched.c (estimate_shadow_tick): Replace manual bitmap
31040         management with auto_bitmap.
31041         (fix_inter_tick): Likewise.
31042         (fix_recovery_deps): Likewise.
31043         * ira.c (add_store_equivs): Likewise.
31044         (find_moveable_pseudos): Likewise.
31045         (split_live_ranges_for_shrink_wrap): Likewise.
31046         * print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise.
31047         (rtx_reuse_manager::seen_def_p): Likewise.
31048         (rtx_reuse_manager::set_seen_def): Likewise.
31049         * print-rtl.h (class rtx_reuse_manager): Likewise.
31050
31051 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31052
31053         * bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap
31054         lifetime.
31055         (migrate_btr_def): Likewise.
31056         * cfgloop.c (get_loop_body_in_bfs_order): Likewise.
31057         * df-core.c (loop_post_order_compute): Likewise.
31058         (loop_inverted_post_order_compute): Likewise.
31059         * hsa-common.h: Likewise.
31060         * hsa-gen.c (hsa_bb::~hsa_bb): Likewise.
31061         * init-regs.c (initialize_uninitialized_regs): Likewise.
31062         * ipa-inline.c (resolve_noninline_speculation): Likewise.
31063         (inline_small_functions): Likewise.
31064         * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
31065         * ira.c (combine_and_move_insns): Likewise.
31066         (build_insn_chain): Likewise.
31067         * loop-invariant.c (find_invariants): Likewise.
31068         * lower-subreg.c (propagate_pseudo_copies): Likewise.
31069         * predict.c (tree_predict_by_opcode): Likewise.
31070         (predict_paths_leading_to): Likewise.
31071         (predict_paths_leading_to_edge): Likewise.
31072         (estimate_loops_at_level): Likewise.
31073         (estimate_loops): Likewise.
31074         * shrink-wrap.c (try_shrink_wrapping): Likewise.
31075         (spread_components): Likewise.
31076         * tree-cfg.c (remove_edge_and_dominated_blocks): Likewise.
31077         * tree-loop-distribution.c (rdg_build_partitions): Likewise.
31078         * tree-predcom.c (tree_predictive_commoning_loop): Likewise.
31079         * tree-ssa-coalesce.c (coalesce_ssa_name): Likewise.
31080         * tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise.
31081         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
31082         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise.
31083         * tree-ssa-threadupdate.c (compute_path_counts): Likewise.
31084         (mark_threaded_blocks): Likewise.
31085         (thread_through_all_blocks): Likewise.
31086         * tree-ssa.c (verify_ssa): Likewise.
31087         (execute_update_addresses_taken): Likewise.
31088         * tree-ssanames.c (verify_ssaname_freelists): Likewise.
31089
31090 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31091
31092         * cfganal.c (mark_dfs_back_edges): Replace manual stack with
31093         auto_vec.
31094         (post_order_compute): Likewise.
31095         (inverted_post_order_compute): Likewise.
31096         (pre_and_rev_post_order_compute_fn): Likewise.
31097
31098 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31099
31100         * genrecog.c (int_set::int_set): Explicitly construct our
31101         auto_vec base class.
31102         * vec.h (auto_vec::auto_vec): New constructor.
31103
31104 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31105
31106         * bitmap.h (class auto_bitmap): New constructor taking
31107         bitmap_obstack * argument.
31108
31109 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31110
31111         * bitmap.h (class auto_bitmap): Change type of m_bits to
31112         bitmap_head, and adjust ctor / dtor and member operators.
31113
31114 2017-05-13  Uros Bizjak  <ubizjak@gmail.com>
31115
31116         * compare-elim.c (equivalent_reg_at_start): Return NULL_RTX
31117         when returned register mode doesn't match original mode.
31118
31119 2017-05-12  Jeff Law  <law@redhat.com>
31120             Jakub Jelinek  <jakub@redhat.com>
31121
31122         * config/mn10300/mn10300.c (mn10300_match_ccmode): Fix where
31123         we look for cc setter after the compare-elim changes.
31124         * config/mn10300/mn10300.md (addsi3_flags): Fix order of patterns
31125         within the vector to match what compare-elim now expects.
31126         (subsi3_flags, andsi3_flags, iorsi3_flags): Likewise.
31127         (xorsi3_flags, one_cmplsi2_flags): Likewise.
31128
31129         * config/rx/rx.c (rx_match_ccmode): Fix where we look cc setter
31130         after the compare-elim changes.
31131         * config/rx/rx.md (abssi2_flags): Fix order of patterns within
31132         the vector to match what compare-elim now expects.
31133         (addsi3_flags, adc_flags, addsi3_flags peepholes): Likewise.
31134         (andsi3_flags, negsi2_flags, one_cmplsi2_flags): Likewise.
31135         (iorsi3_flags, rotlsi3_flags, rotrsi3_flags): Likewise.
31136         (ashrsi3_flags, lshrsi3_flags, ashlsi3_flags): Likewise.
31137         (ssaddsi3, subsi3_flags, sbb_flags, xorsi3_flags): Likewise.
31138
31139         * config/visium/visium.c (single_set_and_flags): Fix where
31140         we look for cc setter after the compare-elim changes.
31141         * config/visium/visium.md (flags_subst_logic): Fix order of patterns
31142         with the vector to match what compare-elim now expects.
31143         (flags_subst_arith, add<mode>3_insn_set_carry): Likewise.
31144         (add<mode>3_insn_set_overflow, addsi3_insn_set_carry): Likewise.
31145         (addsi3_insn_set_overflow, sub<mode>3_insn_set_carry): Likewise.
31146         (sub<mode>3_insn_set_overflow, subsi3_insn_set_carry): Likewise.
31147         (subsi3_insn_set_overflow, negsi2_insn_set_carry): Likewise.
31148         (neg<mode>2_insn_set_overflow): Likewise.
31149
31150 2017-05-12  Jim Wilson  <jim.wilson@linaro.org>
31151
31152         PR middle-end/79794
31153         * expmed.c (extract_bit_field_1): Add alt_rtl argument.  Before
31154         maybe_expand_insn call, set ops[0].target.  If still set after call,
31155         set alt_rtl.  Add extra arg to recursive calls.
31156         (extract_bit_field): Add alt_rtl argument.  Pass to
31157         extract_bit_field.
31158         * expmed.h (extract_bit_field): Fix prototype.
31159         * expr.c (emit_group_load_1, copy_blkmode_from_reg)
31160         (copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL
31161         to extract_bit_field_calls.
31162         (expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0.
31163         Pass alt_rtl to extract_bit_field calls.
31164         * calls.c (store_unaligned_arguments_into_psuedos)
31165         load_register_parameters): Pass extra NULL to extract_bit_field calls.
31166         * optabs.c (maybe_legitimize_operand): Clear op->target when call
31167         gen_reg_rtx.
31168         * optabs.h (struct expand_operand): Add target bitfield.
31169
31170 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
31171
31172         * compare-elim.c (try_eliminate_compare): Canonicalize
31173         operation with embedded compare to
31174         [(set (reg:CCM) (compare:CCM (operation) (immediate)))
31175          (set (reg) (operation)].
31176
31177         * config/i386/i386.c (TARGET_FLAGS_REGNUM): New define.
31178
31179 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
31180
31181         PR target/80723
31182         * config/i386/i386.c (ix86_rtx_cost) [case PLUS]: Ignore the
31183         cost of adding a carry flag for ADC instruction.
31184         [case MINUS]: Ignore the cost of subtracting a carry flag
31185         for SBB instruction.
31186
31187 2017-05-12  Steven Munroe  <munroesj@gcc.gnu.org>
31188
31189         * config.gcc (powerpc*-*-*): Add bmi2intrin.h, bmiintrin.h,
31190         and x86intrin.h
31191         * config/rs6000/bmiintrin.h: New file.
31192         * config/rs6000/bmi2intrin.h: New file.
31193         * config/rs6000/x86intrin.h: New file.
31194
31195 2017-05-12  Jeff Law  <law@redhat.com>
31196
31197         * tree-vrp.c (vrp_dom_walker::before_dom_children): Push unwinding
31198         markers.
31199
31200 2017-05-12  Peter Bergner  <bergner@vnet.ibm.com>
31201
31202         PR middle-end/80707
31203         * tree-cfg.c: Remove cfg edges of unreachable case statements.
31204
31205 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
31206
31207         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
31208         early expansion of vector divide builtins.
31209         (builtin_function_type): Add VSX_BUILTIN_UDIV_V2DI to the list of
31210         builtins identified as having unsigned arguments.
31211
31212 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
31213
31214         * config/rs6000/rs6000.c (gimple-fold.h): New #include.
31215         (rs6000_gimple_fold_builtin): Add handling for early GIMPLE
31216         expansion of vector logical operations (and, andc, or, xor,
31217         nor, orc, nand).
31218
31219 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
31220
31221         * gimple-fold.c (create_tmp_reg_or_ssa_name): Remove static declaration.
31222         * gimple-fold.h (create_tmp_reg_or_ssa_name): New prototype.
31223
31224 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
31225
31226         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
31227         early GIMPLE expansion of vector multiplies.
31228
31229 2017-05-12  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31230
31231         * config/arm/arm.md (movsi): Add TARGET_32BIT in addition to the
31232         TARGET_HAVE_MOVT conditional.
31233         (movt splitter): Likewise.
31234
31235 2017-05-12  Richard Biener  <rguenther@suse.de>
31236
31237         * tree-ssa-sccvn.h (has_VN_INFO): Declare.
31238         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
31239         Fold all stmts not inplace.
31240
31241 2017-05-12  Richard Biener  <rguenther@suse.de>
31242
31243         PR tree-optimization/80713
31244         * tree-ssa-pre.c (remove_dead_inserted_code): Clear
31245         inserted_exprs bit for not removed stmts.
31246
31247 2017-05-12  Thomas Schwinge  <thomas@codesourcery.com>
31248
31249         PR middle-end/69921
31250         * tree-parloops.c (create_parallel_loop): Set "oacc kernels
31251         parallelized" attribute for parallelized OpenACC kernels.
31252         * omp-offload.c (execute_oacc_device_lower): Use it.
31253
31254         * omp-expand.c (expand_omp_target) <GF_OMP_TARGET_KIND_OACC_KERNELS>:
31255         Set "oacc kernels" attribute.
31256         * omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal
31257         parameter.  Adjust all users.
31258         (oacc_fn_attrib_kernels_p): Remove function.
31259         * omp-offload.c (execute_oacc_device_lower): Look for "oacc
31260         kernels" attribute instead of calling oacc_fn_attrib_kernels_p.
31261         * tree-ssa-loop.c (gate_oacc_kernels): Likewise.
31262         * tree-parloops.c (create_parallel_loop): If oacc_kernels_p,
31263         assert "oacc kernels" attribute is set.
31264
31265 2017-05-11  Carl Love  <cel@us.ibm.com>
31266
31267         * config/rs6000/rs6000-c: Add support for built-in functions
31268         vector unsigned char vec_popcnt (vector signed char)
31269         vector unsigned char vec_popcnt (vector unsigned char)
31270         vector unsigned short vec_popcnt (vector signed short)
31271         vector unsigned short vec_popcnt (vector unsigned short)
31272         vector unsigned int vec_popcnt (vector signed int)
31273         vector unsigned int vec_popcnt (vector unsigned int)
31274         vector unsigned long long vec_popcnt (vector signed long long)
31275         vector unsigned long long vec_popcnt (vector unsigned long long)
31276         vector signed long long vec_slo (vector signed long long,
31277                                          vector signed char)
31278         vector signed long long vec_slo (vector signed long long,
31279                                          vector unsigned char)
31280         vector unsigned long long vec_slo (vector unsigned long long,
31281                                            vector signed char)
31282         vector unsigned long long vec_slo (vector unsigned long long,
31283                                            vector unsigned char)
31284         * config/rs6000/rs6000-builtin.def: Add definitions for VPOPCNTUB,
31285         VPOPCNTUH, VPOPCNTUW, and VPOPCNTUD overloads.
31286         * config/rs6000/altivec.h: Add define for vec_popcnt, vec_popcntb,
31287         vec_popcnth, vec_popcntw and vec_popcntd built-in functions.
31288         * doc/extend.texi: Update the built-in documentation file for the
31289         new built-in functions.
31290
31291 2017-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
31292
31293         * attribs.h (sorted_attr_string): Move machine independent
31294         functions for target clone support from the i386 port to common
31295         code.  Rename ix86_function_versions to common_function_versions.
31296         Rename make_name to make_unique_name.
31297         (common_function_versions): Likewise.
31298         (make_unique_name): Likewise.
31299         (make_dispatcher_decl): Likewise.
31300         (is_function_default_version): Likewise.
31301         * attribs.c (attr_strcmp): Likewise.
31302         (sorted_attr_string): Likewise.
31303         (common_function_versions): Likewise.
31304         (make_unique_name): Likewise.
31305         (make_dispatcher_decl): Likewise.
31306         (is_function_default_version): Likewise.
31307         * config/i386/i386.c (attr_strcmp): Likewise.
31308         (sorted_attr_string): Likewise.
31309         (ix86_function_versions): Likewise.
31310         (make_name): Likewise.
31311         (make_dispatcher_decl): Likewise.
31312         (is_function_default_version): Likewise.
31313         (TARGET_OPTION_FUNCTION_VERSIONS): Update target function hook.
31314
31315 2017-05-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31316
31317         PR target/80695
31318         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
31319         Account for direct move costs for vec_construct of integer
31320         vectors.
31321
31322 2017-05-11  Uros Bizjak  <ubizjak@gmail.com>
31323
31324         PR target/80706
31325         * config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec.
31326         (UNSPEC_STX_ATOMIC): Ditto.
31327         (loaddi_via_sse): New insn.
31328         (storedi_via_sse): Ditto.
31329         (atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse.
31330         Update corresponding peephole2 patterns.
31331         (atomic_storedi_fpu): Ditto.
31332
31333 2017-05-11  Julia Koval  <julia.koval@intel.com>
31334
31335         * config/i386/avx512fintrin.h (_mm_mask_rsqrt14_sd)
31336         (_mm_maskz_rsqrt14_sd, _mm_mask_rsqrt14_ss, _mm_maskz_rsqrt14_ss):
31337         New intrinsics.
31338         * config/i386/i386-builtin.def (__builtin_ia32_rsqrt14sd_mask)
31339         (__builtin_ia32_rsqrt14ss_mask): New builtins.
31340         * config/i386/sse.md (rsqrt14_<mode>_mask): New pattern.
31341
31342 2017-05-11  Nathan Sidwell  <nathan@acm.org>
31343
31344         * graphite-poly.c: Include dumpfile.h.
31345
31346         * dumpfle.h (dump_function): Declare here ...
31347         * tree-dump.h (dump_function): ... not here.
31348         * dumpfile.c: #include tree-cfg.h.
31349         (dump_function): Move here from ...
31350         * tree-dump.c (dump_function): ... here.
31351         * gimplify.c: #include splay-tree.h, not tree-dump.h.
31352         * graphite-poly.c: Don't include tree-dump.h.
31353         * cgraphclones.c: Include dumpfile.h not tree-dump.h.
31354         * print-tree.c: Likewise.
31355         * stor-layout.c: Likewise.
31356         * tree-nested.c: Likewise.
31357
31358         * dumpfile.c (dump_start): Use TDF_FLAGS.
31359         (dump_enable_all): Fix TDF_KIND check thinko.
31360
31361 2017-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
31362
31363         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
31364         array entries to represent two legal parameterizations of the
31365         overloaded __builtin_cmpb function, as represented by the
31366         P6_OV_BUILTIN_CMPB constant.
31367         (altivec_resolve_overloaded_builtin): Add special case handling
31368         for the __builtin_cmpb function, as represented by the
31369         P6_OV_BUILTIN_CMPB constant.
31370         * config/rs6000/rs6000-builtin.def (BU_P6_2): New macro.
31371         (BU_P6_64BIT_2): New macro.
31372         (BU_P6_OVERLOAD_2): New macro
31373         (CMPB_32): Add 32-bit compare-bytes support for 32-bit only targets.
31374         (CMPB): Add 64-bit compare-bytes support for 32-bit and 64-bit targets.
31375         (CMPB): Add overload support to represent both 32-bit and 64-bit
31376         compare-bytes function.
31377         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
31378         support for TARGET_CMPB.
31379         * config/rs6000/rs6000.h: Add support for RS6000_BTM_CMPB.
31380         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
31381         documentation of the __builtin_cmpb overloaded built-in function.
31382
31383 2017-05-11  Richard Biener  <rguenther@suse.de>
31384
31385         PR tree-optimization/80705
31386         * tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED
31387         bases are not vectorizable.
31388
31389 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31390
31391         * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger
31392         when counting register pressure.
31393
31394 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31395
31396         * tree-ssa-loop-ivopts.c (compare_cost_pair): New.
31397         (iv_ca_more_deps): Renamed to ...
31398         (iv_ca_compare_deps): ... this.
31399         (iv_ca_extend): Extend iv_ca if NEW_CP is cheaper than OLD_CP.
31400
31401 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31402
31403         * tree-ssa-loop-ivopts.c (find_interesting_uses): Move inv vars dump
31404         to ...
31405         (determine_group_iv_costs): ... here.
31406         (find_inv_vars_cb): Record inv var if it's not recorded before.
31407
31408 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31409
31410         * tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): Refine comments.
31411         (get_shiftadd_cost): Ditto.
31412
31413 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31414
31415         * tree-ssa-address.c: Include header file.
31416         (move_hint_to_base): Return TRUE if BASE_HINT is moved to memory
31417         address.
31418         (add_to_parts): Refactor.
31419         (addr_to_parts): New parameter.  Update use of move_hint_to_base.
31420         (create_mem_ref): Update use of addr_to_parts.  Re-associate addr
31421         in new order.
31422
31423 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31424
31425         PR tree-optimization/53090
31426         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New enum value
31427         COMP_IV_EXPR_2.
31428         (extract_cond_operands): Detect condition with IV on both sides
31429         and return COMP_IV_EXPR_2.
31430         (find_interesting_uses_cond): Add iv_use for both IVs in condition.
31431         (rewrite_use_compare): Simplify by removing call to function
31432         extract_cond_operands.
31433
31434 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31435
31436         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New.
31437         (extract_cond_operands): Detect condition comparing against non-
31438         invariant bound and return appropriate enum value.
31439         (find_interesting_uses_cond): Update use of extract_cond_operands.
31440         Handle its return value accordingly.
31441         (determine_group_iv_cost_cond, rewrite_use_compare): Ditto.
31442
31443 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31444
31445         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Re-associate
31446         nonlinear iv_use computation in loop invariant sensitive way.
31447
31448 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31449
31450         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): New.
31451         (find_iv_candidates): Call relate_compare_use_with_all_cands.
31452
31453 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31454
31455         * tree-ssa-loop-ivopts.c (struct iv_cand): New field inv_exprs.
31456         (dump_cand): Support iv_cand.inv_exprs.
31457         (add_candidate_1): Record invariant exprs in iv_cand.inv_exprs
31458         for candidates.
31459         (iv_ca_set_no_cp, iv_ca_set_cp, free_loop_data): Support
31460         iv_cand.inv_exprs.
31461
31462 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31463
31464         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Move
31465         from ...
31466         * tree-ssa-address.c (multiplier_allowed_in_address_p): ... to here
31467         as local function.  Include necessary header files.
31468         * tree-ssa-loop-ivopts.h (multiplier_allowed_in_address_p): Delete.
31469
31470 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31471
31472         * tree-ssa-loop-ivopts.c (autoinc_possible_for_pair): Simplify.
31473
31474 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31475
31476         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Handle more
31477         operators: TRUNC_DIV_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR, LSHIFT_EXPR,
31478         RSHIFT_EXPR and BIT_NOT_EXPR.
31479
31480 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31481
31482         * tree-ssa-loop-ivopts.c (get_loop_invariant_expr): Simplify.
31483         (adjust_setup_cost): New parameter supporting round up adjustment.
31484         (struct address_cost_data): Delete.
31485         (force_expr_to_var_cost): Don't bound cost with spill_cost.
31486         (split_address_cost, ptr_difference_cost): Delete.
31487         (difference_cost, compare_aff_trees, record_inv_expr): Delete.
31488         (struct ainc_cost_data): New struct.
31489         (get_address_cost_ainc): New function.
31490         (get_address_cost, get_computation_cost): Reimplement.
31491         (determine_group_iv_cost_address): Record inv_expr for all uses of
31492         a group.
31493         (determine_group_iv_cost_cond): Call get_loop_invariant_expr.
31494         (iv_ca_has_deps): Reimplemented to ...
31495         (iv_ca_more_deps): ... this.  Check if NEW_CP introduces more deps
31496         than OLD_CP.
31497         (iv_ca_extend): Call iv_ca_more_deps.
31498
31499 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31500
31501         * tree-ssa-address.c (struct mem_address): Move to header file.
31502         (valid_mem_ref_p, move_fixed_address_to_symbol): Make it global.
31503         * tree-ssa-address.h (struct mem_address): Move from C file.
31504         (valid_mem_ref_p, move_fixed_address_to_symbol): Declare.
31505
31506 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31507
31508         * tree-affine.h (aff_combination_type): New interface.
31509         (aff_combination_zero_p): Remove static.
31510         (aff_combination_const_p): New interface.
31511         (aff_combination_singleton_var_p): New interfaces.
31512
31513 2017-05-11  Richard Biener  <rguenther@suse.de>
31514
31515         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
31516         Skip unreachable blocks and destinations.
31517         (eliminate): Move stmt removal and fixup ...
31518         (fini_eliminate): ... here.  Skip inserted exprs.
31519         (pass_pre::execute): Move fini_pre after fini_eliminate.
31520         * tree-ssa-tailmerge.c: Include tree-cfgcleanup.h.
31521         (tail_merge_optimize): Run cleanup_tree_cfg if requested by
31522         PRE to get rid of dead code that has invalid SSA form and
31523         split critical edges again.
31524
31525 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31526
31527         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
31528
31529 2017-05-11  Richard Biener  <rguenther@suse.de>
31530
31531         * passes.c (execute_function_todo): Verify loops if they are
31532         said to be up-to-date.
31533         * cfgexpand.c (pass_expand::execute): Discard loops for -dx.
31534         * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup.
31535
31536 2017-05-10  John David Anglin  <danglin@gcc.gnu.org>
31537
31538         PR target/80090
31539         * config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF,
31540         handle calling assemble_external ourself.
31541
31542         PR target/79027
31543         * config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
31544         modes with zero size.  Enhance comment.
31545
31546 2017-05-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31547
31548         * config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8
31549         built-ins for vec_xl and vec_xst with short and char pointer
31550         arguments.
31551
31552 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
31553
31554         * config/i386/avx512fintrin.h (_mm_mask_max_round_sd)
31555         (_mm_maskz_max_round_sd, _mm_mask_max_round_ss)
31556         (_mm_maskz_max_round_ss, _mm_mask_min_round_sd)
31557         (_mm_maskz_min_round_sd, _mm_mask_min_round_ss)
31558         (_mm_maskz_min_round_ss): New intrinsics.
31559         * config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT)
31560         (V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases.
31561         * config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round)
31562         (__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round)
31563         (__builtin_ia32_minss_mask_round): New builtins.
31564         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31565         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
31566         * config/i386/sse.md (<sse>_vm<code><mode>3<round_saeonly_name>):
31567         Rename to ...
31568         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): ... this.
31569         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|%0, %1, %<iptr>2<round_saeonly_op3>}):
31570         Change to ...
31571         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}):
31572         ... this.
31573
31574 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
31575
31576         * config/i386/avx512fintrin.h (_mm_mask_mul_round_sd)
31577         (_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss)
31578         (_mm_maskz_mul_round_ss, _mm_mask_div_round_sd)
31579         (_mm_maskz_div_round_sd, _mm_mask_div_round_ss)
31580         (_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd)
31581         (_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd)
31582         (_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics.
31583         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31584         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
31585         * config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round)
31586         (__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round)
31587         (__builtin_ia32_mulss_mask_round): New builtins.
31588         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31589         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
31590         * config/i386/sse.md (<sse>_vm<multdiv_mnemonic><mode>3<round_name>):
31591         Rename to ...
31592         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): ... this.
31593         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
31594         Change to ...
31595         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
31596         ... this.
31597
31598 2017-05-10  Julia Koval  <julia.koval@intel.com>
31599
31600         * config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d)
31601         (_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d)
31602         (_mm256_setr_m128i): New intrinsics.
31603
31604 2017-05-10  Julia Koval  <julia.koval@intel.com>
31605
31606         * config/i386/avx512fintrin.h (_mm_mask_rcp14_sd)
31607         (_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss)
31608         (_mm_maskz_rcp14_ss): New intrinsics.
31609         * config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask)
31610         (__builtin_ia32_rcp14ss_mask): New builtins.
31611         * config/i386/sse.md (srcp14<mode>_mask): New pattern.
31612
31613 2017-05-10  Peter Bergner  <bergner@vnet.ibm.com>
31614
31615         PR tree-optimization/51513
31616         * tree-cfg.c (gimple_seq_unreachable_p): New function.
31617         (assert_unreachable_fallthru_edge_p): Use it.
31618         (group_case_labels_stmt): Likewise.
31619         * tree-cfg.h: Prototype it.
31620         * stmt.c: Include cfghooks.h and tree-cfg.h.
31621         (emit_case_dispatch_table) <gap_label>: New local variable.
31622         Use it to fill dispatch table gaps.
31623         Test for default_label before updating probabilities.
31624         (expand_case) <default_label>: Remove unneeded initialization.
31625         Test for unreachable default case statement and remove its edge.
31626         Set default_label accordingly.
31627         * tree-ssa-ccp.c (optimize_unreachable): Update comment.
31628
31629 2017-05-10  Carl Love  <cel@us.ibm.com>
31630
31631         * config/rs6000/rs6000-c: Add support for built-in functions
31632         vector signed char      vec_neg (vector signed char)
31633         vector signed short int vec_neg (vector short int)
31634         vector signed int       vec_neg (vector signed int)
31635         vector signed long long vec_neg (vector signed long long)
31636         vector float            vec_neg (vector float)
31637         vector double           vec_neg (vector double)
31638         * config/rs6000/rs6000-builtin.def: Add definitions for NEG function
31639         overload.
31640         * config/rs6000/altivec.h: Add define for vec_neg
31641         * doc/extend.texi: Update the built-in documentation for the
31642         new built-in functions.
31643
31644 2017-05-10  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31645
31646         PR tree-optimization/77644
31647         * match.pd (sqrt(x) cmp sqrt(y) -> x cmp y): New pattern.
31648
31649 2017-05-10  Nathan Sidwell  <nathan@acm.org>
31650
31651         * dumpfile.h (TDI_lang_all): New.
31652         (TDF_KIND): New. Renumber others
31653         (TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather
31654         than bits.
31655         * dumpfile.c (dump_files): Mark language dumps as TDF_LANG.  add
31656         lang-all.
31657         (get_dump_file_name): Adjust suffix generation.
31658         (dump_enable_all): Use TDF_KIND.
31659         * doc/invoke.texi (-fdump-lang-all): Document.
31660
31661         * dumpfile.h: Tabify.
31662
31663 2017-05-10  Wilco Dijkstra  <wdijkstr@arm.com>
31664
31665         PR target/80671
31666         * config/aarch64/cortex-a57-fma-steering.c (merge_forest):
31667         Move member access before delete.
31668
31669 2017-05-10  Alexandre Oliva  <aoliva@redhat.com>
31670
31671         * tree-inline.c (expand_call_inline): Split block at stmt
31672         before the call.
31673
31674 2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
31675
31676         PR target/68163
31677         * config/rs6000/rs6000.md (f32_lr): Delete mode attributes that
31678         are now unused after splitting mov{sf,sd}_hardfloat.
31679         (f32_lr2): Likewise.
31680         (f32_lm): Likewise.
31681         (f32_lm2): Likewise.
31682         (f32_li): Likewise.
31683         (f32_li2): Likewise.
31684         (f32_lv): Likewise.
31685         (f32_sr): Likewise.
31686         (f32_sr2): Likewise.
31687         (f32_sm): Likewise.
31688         (f32_sm2): Likewise.
31689         (f32_si): Likewise.
31690         (f32_si2): Likewise.
31691         (f32_sv): Likewise.
31692         (f32_dm): Likewise.
31693         (f32_vsx): Likewise.
31694         (f32_av): Likewise.
31695         (mov<mode>_hardfloat): Split into separate movsf and movsd pieces.
31696         For movsf, order stores so the VSX stores occur before the GPR
31697         store which encourages the register allocator to use a traditional
31698         FPR instead of a GPR.  For movsd, order the stores so that the GPR
31699         store comes before the VSX stores to allow the power6 to work.
31700         This is due to the power6 not having a 32-bit integer store
31701         instruction from a FPR.
31702         (movsf_hardfloat): Likewise.
31703         (movsd_hardfloat): Likewise.
31704
31705 2017-05-09  Martin Sebor  <msebor@redhat.com>
31706
31707         PR translation/80280
31708         * config/sol2-c.c (cmn_err_flag_specs): Initialize new data member
31709         added in r247778.
31710
31711         PR translation/80280
31712         * config/i386/msformat-c.c (ms_printf_flag_specs): Initialize new
31713         data member added in r247778.
31714         (ms_scanf_flag_specs, ms_strftime_flag_specs): Same.
31715
31716 2017-05-09  Nathan Sidwell  <nathan@acm.org>
31717
31718         * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Unconditionally pure.
31719
31720         * ipa-devirt.c (default_hash_traits<type_pair>): Skip struct-scope
31721         typedefs.
31722
31723 2017-05-09  Marek Polacek  <polacek@redhat.com>
31724
31725         * doc/invoke.texi: Fix typo.
31726
31727 2017-05-09  Richard Biener  <rguenther@suse.de>
31728
31729         * tree-vrp.c (vrp_val_is_max): Adjust comment.
31730         (vrp_val_is_min): Likewise.
31731         (set_value_range_to_value): Likewise.
31732         (set_value_range_to_nonnegative): Likewise.
31733         (gimple_assign_nonzero_p): Likewise.
31734         (gimple_stmt_nonzero_p): Likewise.
31735         (vrp_int_const_binop): Likewise.  Remove unreachable case.
31736         (adjust_range_with_scev): Adjust comments.
31737         (compare_range_with_value): Likewise.
31738         (extract_range_from_phi_node): Likewise.
31739         (test_for_singularity): Likewise.
31740
31741 2017-05-09  Richard Biener  <rguenther@suse.de>
31742
31743         * tree-vrp.c (get_single_symbol): Add assert that we don't
31744         get overflowed constants as invariant part.
31745         (compare_values_warnv): Add comment before the TREE_NO_WARNING
31746         checks.  Use wi::cmp instead of recursing for integer constants.
31747         (compare_values): Just ignore whether we assumed undefined
31748         overflow instead of failing the compare.
31749         (extract_range_for_var_from_comparison_expr): Add comment before the
31750         TREE_NO_WARNING sets.
31751         (test_for_singularity): Likewise.
31752         (extract_range_from_comparison): Do not disable optimization
31753         when we assumed undefined overflow.
31754         (extract_range_basic): Remove init of unused var.
31755
31756 2017-05-09  Richard Biener  <rguenther@suse.de>
31757
31758         * tree-vrp.c (vrp_int_const_binop): Use wide-ints and simplify.
31759         (extract_range_from_multiplicative_op_1): Adjust.
31760         (extract_range_from_binary_expr_1): Use int_const_binop.
31761
31762 2017-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
31763
31764         PR target/80101
31765         * config/rs6000/power6.md: Replace store_data_bypass_p calls with
31766         rs6000_store_data_bypass_p in seven define_bypass directives and
31767         in several comments.
31768         * config/rs6000/rs6000-protos.h: Add prototype for
31769         rs6000_store_data_bypass_p function.
31770         * config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
31771         function implements slightly different (rs6000-specific) semantics
31772         than store_data_bypass_p, returning false rather than aborting
31773         with assertion error when arguments do not satisfy the
31774         requirements of store data bypass.
31775         (rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
31776         rs6000_store_data_bypass_p.
31777
31778 2017-05-08  Max Filippov  <jcmvbkbc@gmail.com>
31779
31780         * config/xtensa/xtensa-protos.h
31781         (xtensa_initial_elimination_offset): New declaration.
31782         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
31783         New function. Move its body from the INITIAL_ELIMINATION_OFFSET
31784         macro definition, add case for FRAME_POINTER_REGNUM when
31785         FRAME_GROWS_DOWNWARD.
31786         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro definition.
31787         (INITIAL_ELIMINATION_OFFSET): Replace body with call to
31788         xtensa_initial_elimination_offset.
31789
31790 2017-05-08  Nathan Sidwell  <nathan@acm.org>
31791
31792         * doc/invoke.texi: Alphabetize -fdump options.
31793
31794 2017-05-08  Martin Sebor  <msebor@redhat.com>
31795
31796         PR translation/80280
31797         * config/sol2-c.c (solaris_pragma_align): Correct quoting.
31798
31799 2017-05-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>
31800
31801         * target.def (compute_frame_layout): New optional target hook.
31802         * doc/tm.texi.in (TARGET_COMPUTE_FRAME_LAYOUT): Add hook.
31803         * doc/tm.texi (TARGET_COMPUTE_FRAME_LAYOUT): Add documentation.
31804         * lra-eliminations.c (update_reg_eliminate): Call compute_frame_layout
31805         target hook.
31806         * reload1.c (verify_initial_elim_offsets): Likewise.
31807         * config/arm/arm.c (TARGET_COMPUTE_FRAME_LAYOUT): Define.
31808         (use_simple_return_p): Call arm_compute_frame_layout if needed.
31809         (arm_get_frame_offsets): Split up into this ...
31810         (arm_compute_frame_layout): ... and this function.
31811
31812 2017-05-08  Richard Sandiford  <richard.sandiford@arm.com>
31813
31814         * config/aarch64/constraints.md (Usa): New constraint.
31815         * config/aarch64/aarch64.md (*movsi_aarch64, *movdi_aarch64): Use it.
31816
31817 2017-05-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31818
31819         * config.gcc (arm*-*-*): Set TM_MULTILIB_CONFIG from
31820         with_multilib_list after it has been checked.
31821
31822 2017-05-08  Richard Biener  <rguenther@suse.de>
31823
31824         * tree-ssa-pre.c (bitmap_set_and): Avoid bitmap copy.
31825         (bitmap_set_subtract_values): Likewise.
31826
31827 2017-05-08  Richard Biener  <rguenther@suse.de>
31828
31829         * tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...
31830         (gimple_assign_nonzero): ... this and remove strict_overflow_p
31831         argument.
31832         (gimple_stmt_nonzero_warnv_p): Rename to ...
31833         (gimple_stmt_nonzero_p): ... this and remove strict_overflow_p
31834         argument.
31835         (vrp_stmt_computes_nonzero): Remove strict_overflow_p argument.
31836         (extract_range_basic): Adjust, do not disable propagation on
31837         strict overflow sensitive simplification.
31838         (vrp_visit_cond_stmt): Likewise.
31839
31840 2017-05-05  Jan Hubicka  <hubicka@ucw.cz>
31841
31842         * ipa-inline-analysis.c (estimate_function_body_sizes): Recompute
31843         body size unconditionally.
31844
31845 2017-05-07  Jeff Law  <law@redhat.com>
31846
31847         Revert:
31848         2017-05-06  Jeff Law  <law@redhat.com>
31849         PR tree-optimization/78496
31850         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
31851         code.
31852
31853         PR tree-optimization/78496
31854         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
31855         (simplify_stmt_using_ranges): Call it.
31856         (vrp_dom_walker::before_dom_children): Extract equivalences
31857         from an ASSERT_EXPR with an equality comparison against a
31858         constant.
31859
31860 2017-05-06  Jeff Law  <law@redhat.com>
31861
31862         PR tree-optimization/78496
31863         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
31864         code.
31865
31866         PR tree-optimization/78496
31867         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
31868         (simplify_stmt_using_ranges): Call it.
31869         (vrp_dom_walker::before_dom_children): Extract equivalences
31870         from an ASSERT_EXPR with an equality comparison against a
31871         constant.
31872
31873 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
31874
31875         * lra-constraints.c (lra_copy_reg_equiv): New function.
31876         (split_reg): Use it to copy equivalence information from the
31877         original register to the spill register.
31878
31879 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
31880
31881         PR rtl-optimization/75964
31882         * simplify-rtx.c (simplify_const_relational_operation): Remove
31883         invalid handling of comparisons of integer ABS.
31884
31885 2017-05-06  Uros Bizjak  <ubizjak@gmail.com>
31886
31887         * config/i386/i386.c (ext_80387_constant_init): Do not explicitly
31888         initialize to zero.
31889         (init_regs): Remove declaration.
31890         (function_arg_advance_32): Initialize error_p as boolean variable.
31891
31892 2017-05-05  Nathan Sidwell  <nathan@acm.org>
31893
31894         * store-motion.c (remove_reachable_equiv_notes): Reformat long
31895         lines.  Use for (;;).
31896
31897 2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31898
31899         * config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
31900         (rs6000_init_cost): Initialize rs6000_vect_nonmem.
31901         (rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
31902         (rs6000_finish_cost): Avoid vectorizing simple copy loops with
31903         VF=2 that require versioning.
31904
31905 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31906
31907         * diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const
31908         int.
31909
31910 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31911
31912         * diagnostic.h (diagnostic_override_option_index): Convert from
31913         macro to inline function.
31914
31915 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31916
31917         * diagnostic.c (last_module_changed_p): New function.
31918         (set_last_module): New function.
31919         (diagnostic_report_current_module): Convert macro usage to
31920         the above functions.
31921         * diagnostic.h (diagnostic_context::last_module): Strengthen
31922         from const line_map * to const line_map_ordinary *.
31923         (diagnostic_last_module_changed): Delete macro.
31924         (diagnostic_set_last_module): Delete macro.
31925
31926 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31927
31928         * diagnostic.c (diagnostic_impl): Replace report_diagnostic
31929         with diagnostic_report_diagnostic.
31930         (diagnostic_n_impl_richloc): Likewise.
31931         * diagnostic.h (report_diagnostic): Delete macro.
31932         * rtl-error.c (diagnostic_for_asm): Replace report_diagnostic
31933         with diagnostic_report_diagnostic.
31934         * substring-locations.c (format_warning_va): Likewise.
31935
31936 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31937
31938         * diagnostic.c (diagnostic_report_diagnostic): Eliminate
31939         save/restor of format_spec.  Move option-printing code to...
31940         (print_option_information): ...this new function, and
31941         reimplement by simply printing to the pretty_printer,
31942         rather than appending to the format string.
31943
31944 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31945
31946         * diagnostic.c (diagnostic_report_diagnostic): Split out pragma
31947         handling logic into...
31948         (update_effective_level_from_pragmas): ...this new function.
31949
31950 2017-05-04  Andrew Waterman  <andrew@sifive.com>
31951
31952         * config/riscv/riscv.opt (mstrict-align): New option.
31953         * config/riscv/riscv.h (STRICT_ALIGNMENT): Use it.  Update comment.
31954         (SLOW_UNALIGNED_ACCESS): Define.
31955         (riscv_slow_unaligned_access): Declare.
31956         * config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access
31957         field.
31958         (riscv_slow_unaligned_access): New variable.
31959         (rocket_tune_info): Set slow_unaligned_access to true.
31960         (optimize_size_tune_info): Set slow_unaligned_access to false.
31961         (riscv_cpu_info_table): Add entry for optimize_size_tune_info.
31962         (riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN.
31963         (riscv_option_override): Set riscv_slow_unaligned_access.
31964         * doc/invoke.texi: Add -mstrict-align to RISC-V.
31965
31966 2017-05-04  Kito Cheng  <kito.cheng@gmail.com>
31967
31968         * config/riscv/riscv.md: Unify indentation.
31969
31970 2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
31971
31972         PR target/79038
31973         PR target/79202
31974         PR target/79203
31975         * config/rs6000/rs6000.md (u code attribute): Add FIX and
31976         UNSIGNED_FIX.
31977         (extendsi<mode>2): Add support for doing sign extension via
31978         VUPKHSW and XXPERMDI if the value is in Altivec registers and we
31979         don't have ISA 3.0 instructions.
31980         (extendsi<mode>2 splitter): Likewise.
31981         (fix_trunc<mode>si2): If we are at ISA 2.07 (VSX small integer),
31982         generate the normal insns since SImode can now go in vector
31983         registers.  Disallow the special UNSPECs needed for previous
31984         machines to hide SImode being used.  Add new insns
31985         fctiw{,w}_<mode>_smallint if SImode can go in vector registers.
31986         (fix_trunc<mode>si2_stfiwx): Likewise.
31987         (fix_trunc<mode>si2_internal): Likewise.
31988         (fixuns_trunc<mode>si2): Likewise.
31989         (fixuns_trunc<mode>si2_stfiwx): Likewise.
31990         (fctiw<u>z_<mode>_smallint): Likewise.
31991         (fctiw<u>z_<mode>_mem): New combiner pattern to prevent conversion
31992         of floating point to 32-bit integer from doing a direct move to
31993         the GPR registers to do a store.
31994         (fctiwz_<mode>): Break long line.
31995
31996 2017-05-05  Bin Cheng  <bin.cheng@arm.com>
31997
31998         * Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c.
31999         * tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete.
32000         (addr_list, addr_offset_valid_p): New.
32001         (split_address_groups): Check offset validity with above function.
32002         (gt-tree-ssa-loop-ivopts.h): Include header file.
32003
32004 2017-05-05  Nathan Sidwell  <nathan@acm.org>
32005
32006         * config.gcc (arm*-*-*): Add missing 'fi'.
32007
32008 2017-05-05  Steve Ellcey  <sellcey@cavium.com>
32009
32010         * doc/invoke.texi (-fopt-info): Explicitly say order of options
32011         included in -fopt-info does not matter.
32012         * doc/optinfo.texi (-fopt-info): Fix description of default
32013         behavour. Explicitly say order of options included in -fopt-info
32014         does not matter.
32015
32016 2017-05-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
32017
32018         * config.gcc: Allow combinations of aprofile and rmprofile values for
32019         --with-multilib-list.
32020         * config/arm/t-multilib: New file.
32021         * config/arm/t-aprofile: Remove initialization of MULTILIB_*
32022         variables.  Remove setting of ISA and floating-point ABI in
32023         MULTILIB_OPTIONS and MULTILIB_DIRNAMES.  Set architecture and FPU in
32024         MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS
32025         and MULTILIB_DIRNAMES respectively.  Add comment to introduce all
32026         matches.  Add architecture matches for marvel-pj4 and generic-armv7-a
32027         CPU options.
32028         * config/arm/t-rmprofile: Likewise except for the matches changes.
32029         * doc/install.texi (--with-multilib-list): Document the combination of
32030         aprofile and rmprofile values and warn about pitfalls in doing that.
32031
32032 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
32033
32034         * config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
32035         (movdi_aarch64): Likewise.
32036
32037 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
32038
32039         PR tree-optimization/80632
32040         * tree-switch-conversion.c (struct switch_conv_info): Add target_vop
32041         field.
32042         (build_arrays): Initialize it for virtual phis.
32043         (fix_phi_nodes): Use it for virtual phis.
32044
32045         PR tree-optimization/80558
32046         * tree-vrp.c (extract_range_from_binary_expr_1): Optimize
32047         [x, y] op z into [x op, y op z] for op & or | if conditions
32048         are met.
32049
32050 2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
32051             Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
32052
32053         PR target/71607
32054         * config/arm/arm.md (use_literal_pool): Remove.
32055         (64-bit immediate split): No longer takes cost into consideration
32056         if arm_disable_literal_pool is enabled.
32057         * config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is
32058         used when arm_disable_literal_pool is enabled.
32059         (arm_max_const_double_inline_cost): Remove use of
32060         arm_disable_literal_pool.
32061         (push_minipool_fix): Add assert.
32062         (arm_reorg): Add return if arm_disable_literal_pool is enabled.
32063         * config/arm/vfp.md (no_literal_pool_df_immediate): New.
32064         (no_literal_pool_sf_immediate): New.
32065
32066 2017-05-05  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32067
32068         PR tree-optimization/80613
32069         * tree-ssa-dce.c (propagate_necessity): Remove cases for
32070         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
32071
32072 2017-05-05  Richard Biener  <rguenther@suse.de>
32073
32074         * tree-ssa-pre.c (get_or_alloc_expr_for): Simplify.
32075
32076 2017-05-05  Georg-Johann Lay  <avr@gjlay.de>
32077
32078         * config/avr/avr.md [flag_strict_overflow]: Remove any occurence
32079         of this flag from insn conditions due to removal from r247495.
32080
32081 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
32082
32083         * config/arm/aarch-common.c (arm_early_load_addr_dep_ptr):
32084         New function.
32085         (arm_early_store_addr_dep_ptr): Likewise.
32086         * config/arm/aarch-common-protos.h
32087         (arm_early_load_addr_dep_ptr): Add prototype.
32088         (arm_early_store_addr_dep_ptr): Likewise.
32089         * config/arm/cortex-a53.md: Add new bypasses.
32090
32091 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
32092
32093         * tree.c (next_type_uid): Change type to unsigned.
32094         (type_hash_canon): Decrement back next_type_uid if
32095         freeing a type node with the highest TYPE_UID.  For INTEGER_TYPEs
32096         also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES
32097         if possible.
32098
32099 2017-05-04  Martin Sebor  <msebor@redhat.com>
32100
32101         * builtins.c: Fix a trivial typo in a comment.
32102
32103         PR middle-end/79234
32104         * builtins.c (check_sizes): Adjust to handle reading past the end.
32105         Avoid printing excessive upper bound of ranges.  Use %E to print
32106         tree nodes instead of converting them to %wu.
32107         (expand_builtin_memchr): New function.
32108         (compute_dest_size): Rename...
32109         (compute_objsize): ...to this.
32110         (expand_builtin_memcpy): Adjust.
32111         (expand_builtin_mempcpy): Adjust.
32112         (expand_builtin_strcat): Adjust.
32113         (expand_builtin_strcpy): Adjust.
32114         (check_strncat_sizes): Adjust.
32115         (expand_builtin_strncat): Adjust.
32116         (expand_builtin_strncpy): Adjust and simplify.
32117         (expand_builtin_memset): Adjust.
32118         (expand_builtin_bzero): Adjust.
32119         (expand_builtin_memcmp): Adjust.
32120         (expand_builtin): Handle memcmp.
32121         (maybe_emit_chk_warning): Check strncat just once.
32122
32123 2017-05-04  Martin Sebor  <msebor@redhat.com>
32124
32125         PR preprocessor/79214
32126         PR middle-end/79222
32127         PR middle-end/79223
32128         * builtins.c (check_sizes): Add inlining context and issue
32129         warnings even when -Wno-system-headers is set.
32130         (check_strncat_sizes): Same.
32131         (expand_builtin_strncat): Same.
32132         (expand_builtin_memmove): New function.
32133         (expand_builtin_stpncpy): Same.
32134         (expand_builtin): Handle memmove and stpncpy.
32135
32136 2017-05-04  Bin Cheng  <bin.cheng@arm.com>
32137
32138         * tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr
32139         which is not used any more.
32140
32141 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
32142
32143         * config/aarch64/aarch64.c (generic_tunings): Update prefetch model.
32144
32145 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
32146
32147         * config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4.
32148         (cortexa53_tunings): Likewise.
32149         (cortexa57_tunings): Likewise.
32150         (cortexa72_tunings): Likewise.
32151         (cortexa73_tunings): Likewise.
32152
32153 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
32154
32155         * config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4.
32156         Set loop alignment to 8.
32157
32158 2017-05-04  Martin Sebor  <msebor@redhat.com>
32159
32160         PR translation/80280
32161         * builtins.c (expand_builtin_object_size): Add missing quoting to
32162         %D and like directives.
32163         * hsa-gen.c (hsa_type_for_scalar_tree_type): Same.
32164         (hsa_type_for_tree_type): Same.
32165         (verify_function_arguments): Same.
32166         * symtab.c (symbol_table::change_decl_assembler_name): Same.
32167         * varasm.c (get_section): Same.
32168         (mark_weak): Same.
32169
32170 2017-05-04  Martin Sebor  <msebor@redhat.com>
32171
32172         PR translation/80280
32173         * config/i386/i386.c (ix86_function_versions): Quote a %D directive.
32174
32175 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
32176
32177         * config/aarch64/aarch64.c (generic_addrcost_table):
32178         Change HI/TI mode setting.
32179
32180 2017-05-04  Martin Jambor  <mjambor@suse.cz>
32181
32182         PR tree-optimization/80622
32183         * tree-sra.c (comes_initialized_p): New function.
32184         (build_accesses_from_assign): Only set write lazily when
32185         comes_initialized_p is false.
32186         (analyze_access_subtree): Use comes_initialized_p.
32187         (propagate_subaccesses_across_link): Assert !comes_initialized_p
32188         instead of testing for PARM_DECL.
32189
32190 2017-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32191
32192         * config/aarch64/aarch64.md (prefetch); Adjust predicate and
32193         constraint on operand 0 to allow more general addressing modes.
32194         Adjust output template.
32195         * config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p):
32196         New function.
32197         * config/aarch64/aarch64-protos.h
32198         (aarch64_address_valid_for_prefetch_p): Declare prototype.
32199         * config/aarch64/constraints.md (Dp): New address constraint.
32200         * config/aarch64/predicates.md (aarch64_prefetch_operand): New
32201         predicate.
32202
32203 2017-05-04  Jan Hubicka  <hubicka@ucw.cz>
32204
32205         * ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter;
32206         update use of estimate_ipcp_clone_size_and_time.
32207         (estimate_local_effects): Update use of
32208         estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value.
32209         * ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype.
32210         * ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time):
32211         Return nonspecialized time.
32212
32213 2017-05-04  Richard Biener  <rguenther@suse.de>
32214
32215         * tree-ssa-alias.c (get_continuation_for_phi): Improve looking
32216         for the last VUSE which def dominates the PHI.  Directly call
32217         maybe_skip_until.
32218         (get_continuation_for_phi_1): Remove.
32219
32220 2017-05-04  Richard Sandiford  <richard.sandiford@linaro.org>
32221
32222         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary
32223         to explain the use of truncating division.  Cap the number of
32224         iterations to the maximum given by nb_iterations_upper_bound,
32225         if defined.
32226
32227 2017-05-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
32228
32229         * configure.ac (--enable-mingw-wildcard): Add new configurable feature.
32230         * configure: Regenerate.
32231         * config.in: Regenerate.
32232         * config/i386/driver-mingw32.c: new file.
32233         * config/i386/x-mingw32: Add rule to build driver-mingw32.o.
32234         * config.host: Link driver-mingw32.o on MinGW host.
32235         * doc/install.texi: Document new --enable-mingw-wildcard configure
32236         option.
32237
32238 2017-05-04  Marek Polacek  <polacek@redhat.com>
32239
32240         PR tree-optimization/80612
32241         * calls.c (get_size_range): Check for INTEGRAL_TYPE_P.
32242
32243 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
32244             Andre Simoes Dias Vieira  <andre.simoesdiasvieira@arm.com>
32245
32246         * config/arm/arm.md (movsi): Change TARGET_32BIT to TARGET_HAVE_MOVT.
32247         (movt splitter): Likewise.
32248         * config/arm/arm.c (arm_option_check_internal): Change arm_arch_thumb2
32249         to TARGET_HAVE_MOVT, and merge with -mslow-flash-data check.
32250         (const_ok_for_arm): Change else to else if (TARGET_THUMB2) and add else
32251         block for Thumb-1 with MOVT.
32252         (thumb2_legitimate_address_p): Move code block ...
32253         (can_avoid_literal_pool_for_label_p): ... into this new function.
32254         (thumb1_legitimate_address_p): Add check for TARGET_HAVE_MOVT and
32255         literal pool.
32256         (thumb_legitimate_constant_p): Add conditional on TARGET_HAVE_MOVT
32257         * doc/invoke.texi (-mpure-code): Change "ARMv7-M targets" for
32258         "M-profile targets with the MOVT instruction".
32259
32260 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
32261
32262         * config/arm/arm-builtins.c (arm_init_builtins): Rename
32263         __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
32264         __builtin_arm_stfscr to __builtin_arm_set_fpscr.
32265
32266 2017-05-04  Martin Liska  <mliska@suse.cz>
32267
32268         * tree-vrp.c (simplify_cond_using_ranges_2): Remove unused
32269         variable cond_code.
32270
32271 2017-05-04  Richard Biener  <rguenther@suse.de>
32272
32273         * tree.c (array_at_struct_end_p): Handle arrays at struct
32274         end with flexarrays more conservatively.  Refactor and treat
32275         arrays of arrays or aggregates more strict.  Fix
32276         VIEW_CONVERT_EXPR handling.  Remove allow_compref argument.
32277         * tree.c (array_at_struct_end_p): Adjust prototype.
32278         * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust.
32279         * gimple-fold.c (get_range_strlen): Likewise.
32280         * tree-chkp.c (chkp_may_narrow_to_field): Likewise.
32281
32282 2017-05-04  Richard Biener  <rguenther@suse.de>
32283
32284         PR tree-optimization/31130
32285         * tree-vrp.c (needs_overflow_infinity): Remove as always returning
32286         false.
32287         (supports_overflow_infinity): Likewise.
32288         (is_negative_overflow_infinity): Likewise.
32289         (is_positive_overflow_infinity): Likewise.
32290         (is_overflow_infinity): Likewise.
32291         (stmt_overflow_infinity): Likewise.
32292         (overflow_infinity_range_p): Likewise.
32293         (usable_range_p): Remove as always returning true.
32294         (make_overflow_infinity): Remove.
32295         (negative_overflow_infinity): Likewise.
32296         (positive_overflow_infinity): Likewise.
32297         (avoid_overflow_infinity): Likewise.
32298         (set_value_range): Adjust accordingly.
32299         (set_value_range_to_nonnegative): Likewise, remove now unused
32300         overflow_infinity arg.
32301         (vrp_operand_equal_p): Adjust.
32302         (update_value_range): Likewise.
32303         (range_int_cst_singleton_p): Likewise.
32304         (operand_less_p): Likewise.
32305         (compare_values_warnv): Likewise.
32306         (extract_range_for_var_from_comparison_expr): Likewise.
32307         (vrp_int_const_binop): Likewise.
32308         (zero_nonzero_bits_from_vr): Likewise.
32309         (extract_range_from_multiplicative_op_1): Likewise.
32310         (extract_range_from_binary_expr_1): Likewise.
32311         (extract_range_from_unary_expr): Likewise.
32312         (extract_range_from_comparison): Likewise.
32313         (extract_range_basic): Likewise.
32314         (adjust_range_with_scev): Likewise.
32315         (compare_ranges): Likewise.
32316         (compare_range_with_value): Likewise.
32317         (dump_value_range): Likewise.
32318         (test_for_singularity): Likewise, remove strict_overflow_p parameter
32319         never used.
32320         (simplify_cond_using_ranges): Adjust.
32321
32322 2017-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
32323
32324         * brig-builtins.def: Added a builtin for class_f64.
32325         * builtin-types.def: Added a builtin type needed by class_f64.
32326
32327 2017-05-03  Jason Merrill  <jason@redhat.com>
32328
32329         * timevar.def: Add TV_CONSTEXPR.
32330
32331 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
32332
32333         * common.opt (fdiagnostics-parseable-fixits): Fix typo.
32334
32335 2017-05-03  Martin Jambor  <mjambor@suse.cz>
32336
32337         * ipa-prop.c (ipa_update_after_lto_read): Removed.
32338         * ipa-prop.h (ipa_update_after_lto_read): Remove declaration.
32339         * ipa-cp.c (ipcp_propagate_stage): Do not call
32340         ipa_update_after_lto_read.
32341         * ipa-inline.c (ipa_inline): Likewise.
32342
32343 2017-05-03  Martin Jambor  <mjambor@suse.cz>
32344
32345         * ipa-prop.h (ipa_edge_args): Make a class.  Mark with for_user GTY
32346         tag.  Added a default constructor and a destructor.
32347         (ipa_edge_args_sum_t): New class;
32348         (ipa_edge_args_sum): Declare.
32349         (ipa_edge_args_vector): Remove declaration.
32350         (IPA_EDGE_REF): Use ipa_edge_args_sum.
32351         (ipa_free_edge_args_substructures): Remove declaration.
32352         (ipa_check_create_edge_args): Use ipa_edge_args_sum.
32353         (ipa_edge_args_info_available_for_edge_p): Likewise.
32354         * ipa-prop.c (ipa_edge_args_vector): Removed.
32355         (edge_removal_hook_holder): Likewise.
32356         (edge_duplication_hook_holder): Likewise.
32357         (ipa_edge_args_sum): New variable.
32358         (ipa_propagate_indirect_call_infos): Test ipa_edge_args_sum instead of
32359         ipa_edge_args_vector.
32360         (ipa_free_edge_args_substructures): Likewise.
32361         (ipa_free_all_edge_args): Free ipa_edge_args_sum instead of
32362         ipa_edge_args_vector.
32363         (ipa_edge_removal_hook): Turned into method
32364         ipa_edge_args_sum_t::remove.
32365         (ipa_edge_duplication_hook): Turned into method
32366         ipa_edge_args_sum_t::duplicate.
32367         (ipa_register_cgraph_hooks): Create ipa_edge_args_sum instead of
32368         registering edge hooks.
32369         (ipa_unregister_cgraph_hooks): Do not unregister edge hooks.
32370         * ipa-inline-analysis.c (estimate_function_body_sizes): Test
32371         ipa_edge_args_sum instead of ipa_edge_args_vector.
32372         * ipa-profile.c (ipa_profile): Likewise.
32373
32374 2017-05-03  Martin Jambor  <mjambor@suse.cz>
32375
32376         * symbol-summary.h (function_summary): New method exists.
32377         (function_summary::symtab_removal): Deallocate through release.
32378         (call_summary): New class.
32379         (gt_ggc_mx): New overload.
32380         (gt_pch_nx): Likewise.
32381         (gt_pch_nx): Likewise.
32382
32383 2017-05-03  Jeff Law  <law@redhat.com>
32384
32385         PR tree-optimization/78496
32386         * tree-vrp.c (simplify_cond_using_ranges_1): Renamed
32387         from simplify_cond_using_ranges.  Split off code to walk
32388         backwards through casts into ...
32389         (simplify_cond_using_ranges_2): New function.
32390         (simplify_stmt_using_ranges): Call simplify_cond_using_ranges_1.
32391         (execute_vrp): After identifying jump threads, call
32392         simplify_cond_using_ranges_2.
32393
32394 2017-05-03  Jan Hubicka  <hubicka@ucw.cz>
32395
32396         PR bootstrap/80609
32397         * ipa-inline.h (inline_summary): Add ctor.
32398         (create_ggc): Do not use ggc_cleared_alloc.
32399
32400 2017-05-03  Jeff Downs  <heydowns@somuchpressure.net>
32401             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
32402
32403         * gcc.c (handle_braces): Support escaping in switch matching
32404         text.
32405         * doc/invoke.texi (Spec Files): Document it.
32406         Remove superfluous @code markup in items.
32407
32408 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
32409
32410         * diagnostic-show-locus.c (struct column_range): New struct.
32411         (get_affected_columns): New function.
32412         (get_printed_columns): New function.
32413         (struct correction): New struct.
32414         (correction::ensure_capacity): New function.
32415         (correction::ensure_terminated): New function.
32416         (struct line_corrections): New struct.
32417         (line_corrections::~line_corrections): New dtor.
32418         (line_corrections::add_hint): New function.
32419         (layout::print_trailing_fixits): Reimplement in terms of the new
32420         classes.
32421         (selftest::test_overlapped_fixit_printing): New function.
32422         (selftest::diagnostic_show_locus_c_tests): Call it.
32423
32424 2017-05-03  Nathan Sidwell  <nathan@acm.org>
32425
32426         Canonicalize canonical type hashing
32427         * tree.h (type_hash_canon_hash): Declare.
32428         * tree.c (type_hash_list, attribute_hash_list): Move into
32429         type_hash_canon_hash.
32430         (build_type_attribute_qual_variant): Break out hash code calc into
32431         type_hash_canon_hash.
32432         (type_hash_canon_hash): New.  Generic type hash computation.
32433         (build_range_type_1, build_array_type_1, build_function_type,
32434         build_method_type_directly, build_offset_type, build_complex_type,
32435         make_vector_type): Call it.
32436
32437 2017-05-03  Richard Biener  <rguenther@suse.de>
32438
32439         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
32440         When all DRs have unknown misaligned do not always peel
32441         when there is a store but apply the same costing model as if
32442         there were only loads.
32443
32444 2017-05-03  Richard Biener  <rguenther@suse.de>
32445
32446         Revert
32447         PR tree-optimization/80492
32448         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
32449         compare_base_decls returning dont-know properly.
32450
32451 2017-05-03  Thomas Preud'homme  <thomas.preudhomme@arm.com>
32452
32453         * config/arm/iterators.md (CCSI): New mode iterator.
32454         (arch): New mode attribute.
32455         * config/arm/sync.md (atomic_compare_and_swap<mode>_1): Rename into ...
32456         (atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1): This and ...
32457         (atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): This.  Use CCSI
32458         code iterator for success result mode.
32459         * config/arm/arm.c (arm_expand_compare_and_swap): Adapt code to use
32460         the corresponding new insn generators.
32461
32462 2017-05-03  Bin Cheng  <bin.cheng@arm.com>
32463
32464         Revert r247509
32465         2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32466         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
32467
32468 2017-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
32469
32470         * tree-data-ref.h (SUB_CONFLICTS_IN_A): Wrap SUB argument in brackets.
32471         (SUB_CONFLICTS_IN_B, SUB_LAST_CONFLICT, SUB_DISTANCE): Likewise.
32472         (DDR_A): Wrap DDR argument in brackets.
32473         (DDR_B, DDR_AFFINE_P, DDR_ARE_DEPENDENT, DDR_SUBSCRIPTS): Likewise.
32474         (DDR_LOOP_NEST, DDR_INNER_LOOP, DDR_SELF_REFERENCE): Likewise.
32475         (DDR_REVERSED_P): Likewise.
32476
32477 2017-05-03  Jakub Jelinek  <jakub@redhat.com>
32478
32479         PR tree-optimization/79472
32480         * tree-switch-conversion.c (struct switch_conv_info): Add
32481         contiguous_range and default_case_nonstandard fields.
32482         (collect_switch_conv_info): Compute contiguous_range and
32483         default_case_nonstandard fields, don't clear final_bb if
32484         contiguous_range and only the default case doesn't have the required
32485         structure.
32486         (check_all_empty_except_final): Set default_case_nonstandard instead
32487         of failing if contiguous_range and the default case doesn't have empty
32488         block.
32489         (check_final_bb): Add SWTCH argument, don't fail if contiguous_range
32490         and only the default case doesn't have the required constants.  Skip
32491         virtual phis.
32492         (gather_default_values): Skip virtual phis.  Allow non-NULL CASE_LOW
32493         if default_case_nonstandard.
32494         (build_constructors): Build constant 1 just once.  Assert that default
32495         values aren't inserted in between cases if contiguous_range.  Skip
32496         virtual phis.
32497         (build_arrays): Skip virtual phis.
32498         (prune_bbs): Add DEFAULT_BB argument, don't remove that bb.
32499         (fix_phi_nodes): Don't add e2f phi arg if default_case_nonstandard.
32500         Handle virtual phis.
32501         (gen_inbound_check): Handle default_case_nonstandard case.
32502         (process_switch): Adjust check_final_bb caller.  Call
32503         gather_default_values with the first non-default case instead of
32504         default case if default_case_nonstandard.
32505
32506 2017-05-02  Nathan Sidwell  <nathan@acm.org>
32507
32508         * ggc-page.c (move_ptes_to_front): Replace unsigned >0 with i--
32509         check.  Fix formatting.
32510
32511 2017-05-02  Jan Hubicka  <hubicka@ucw.cz>
32512
32513         * ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff
32514         errors when comparing specialized and unspecialized times.
32515
32516 2017-05-02  David Malcolm  <dmalcolm@redhat.com>
32517
32518         * diagnostic-show-locus.c
32519         (layout::should_print_annotation_line_p): Make private.
32520         (layout::print_annotation_line): Make private.
32521         (layout::annotation_line_showed_range_p): Make private.
32522         (layout::show_ruler): Make private.
32523         (layout::print_source_line): Make private.  Pass in line and
32524         line_width, rather than calling location_get_source_line.  Drop
32525         returned value.
32526         (layout::print_leading_fixits): New method.
32527         (layout::print_any_fixits): Rename to...
32528         (layout::print_trailing_fixits): ...this, and make private.
32529         Don't print newline fixits.
32530         (diagnostic_show_locus): Move logic for printing one row into...
32531         (layout::print_line): ...this new function.  Move the
32532         location_get_source_line call and error-handling from
32533         print_source_line to here.  Call print_leading_fixits, and rename
32534         print_any_fixits to print_trailing_fixits.
32535         (selftest::test_fixit_insert_containing_newline): Update now that
32536         newlines are partially supported.
32537         (selftest::test_fixit_insert_containing_newline_2): New test.
32538         (selftest::test_fixit_replace_containing_newline): Update comments.
32539         (selftest::diagnostic_show_locus_c_tests): Call the new test.
32540         * edit-context.c (class added_line): New class.
32541         (class edited_line): Describe newline handling in comment.
32542         (edited_line::actually_edited_p): New method.
32543         (edited_line::print_content): Delete redundant decl.
32544         (edited_line::m_predecessors): New field.
32545         (edited_file::print_content): Call edited_line::print_content.
32546         (edited_file::print_diff): Update to support newlines.
32547         (edited_file::print_diff_hunk): Likewise.
32548         (edited_file::print_run_of_changed_lines): New function.
32549         (edited_file::print_diff_line): Convert to...
32550         (print_diff_line): ...this.
32551         (edited_file::get_effective_line_count): New function.
32552         (edited_line::edited_line): Initialize new field m_predecessors.
32553         (edited_line::~edited_line): Clean up m_predecessors.
32554         (edited_line::apply_fixit): Handle newlines.
32555         (edited_line::get_effective_line_count): New function.
32556         (edited_line::print_content): New function.
32557         (edited_line::print_diff_lines): New function.
32558         (selftest::test_applying_fixits_insert_containing_newline): New
32559         test.
32560         (selftest::test_applying_fixits_replace_containing_newline): New
32561         test.
32562         (selftest::insert_line): New function.
32563         (selftest::test_applying_fixits_multiple_lines): Add example of
32564         inserting a line.
32565         (selftest::edit_context_c_tests): Call the new tests.
32566
32567 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32568
32569         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete
32570         parameter cand.  Update dump information.
32571         (get_computation_cost): Update uses.
32572
32573 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32574
32575         * tree-ssa-loop-ivopts.c (get_computation_aff_1): New.
32576         (get_computation_aff): Reorder parameters.  Use get_computation_aff_1.
32577         (get_computation_at, rewrite_use_address): Update use of
32578         get_computation_aff.
32579
32580 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32581
32582         * tree-ssa-loop-ivopts.c (get_computation_at): Reorder parameters.
32583         (get_computation): Delete.
32584         (get_computation_cost): Implement like get_computation_cost_at.
32585         Use get_computation_at.
32586         (get_computation_cost_at): Delete.
32587         (rewrite_use_nonlinear_expr): Use get_computation_at.
32588         (rewrite_use_compare, remove_unused_ivs): Ditto.
32589
32590 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32591
32592         * tree-ssa-loop-ivopts.c (rewrite_use_address): Simple refactor.
32593
32594 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32595
32596         * tree-ssa-loop-ivopts.c (struct iv_ca): Rename n_regs to n_invs.
32597         (ivopts_global_cost_for_size): Rename parameter and update uses.
32598         (iv_ca_recount_cost): Update uses.
32599         (iv_ca_set_remove_invs, iv_ca_set_no_cp): Record invariants and
32600         candidates seperately in n_invs and n_cands.
32601         (iv_ca_set_add_invs, iv_ca_set_cp, iv_ca_new): Ditto.
32602
32603 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32604
32605         * tree-ssa-loop-ivopts.c (struct walk_tree_data): New.
32606         (find_inv_vars_cb): New.
32607         (find_depends): Renamed to ...
32608         (find_inv_vars): ... this.
32609         (add_candidate_1, force_var_cost): Call find_inv_vars.
32610         (split_address_cost, determine_group_iv_cost_cond): Ditto.
32611
32612 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32613
32614         * tree-ssa-loop-ivopts.c (struct cost_pair): Rename depends_on to
32615         inv_vars.  Add inv_exprs.
32616         (struct iv_cand): Rename depends_on to inv_vars.
32617         (struct ivopts_data): Rename max_inv_id/n_invariant_uses to
32618         max_inv_var_id/n_inv_var_uses.  Move max_inv_expr_id around.
32619         Refactor field used_inv_exprs from has_map to array n_inv_expr_uses.
32620         (dump_cand): Dump inv_vars.
32621         (tree_ssa_iv_optimize_init): Support inv_vars and inv_exprs.
32622         (record_invariant, find_depends, add_candidate_1): Ditto.
32623         (set_group_iv_cost, force_var_cost): Ditto.
32624         (split_address_cost, ptr_difference_cost, difference_cost): Ditto.
32625         (get_computation_cost_at, get_computation_cost): Ditto.
32626         (determine_group_iv_cost_generic): Ditto.
32627         (determine_group_iv_cost_address): Ditto.
32628         (determine_group_iv_cost_cond, autoinc_possible_for_pair): Ditto.
32629         (determine_group_iv_costs): Ditto.
32630         (iv_ca_recount_cost): Update call to ivopts_global_cost_for_size.
32631         (iv_ca_set_remove_invariants): Renamed to ...
32632         (iv_ca_set_remove_invs): ... this.  Support inv_vars and inv_exprs.
32633         (iv_ca_set_no_cp): Use iv_ca_set_remove_invs.
32634         (iv_ca_set_add_invariants):  Renamed to ...
32635         (iv_ca_set_add_invs): ... this.  Support inv_vars and inv_exprs.
32636         (iv_ca_set_cp): Use iv_ca_set_add_invs.
32637         (iv_ca_has_deps): Support inv_vars and inv_exprs.
32638         (iv_ca_new, iv_ca_free, iv_ca_dump, free_loop_data): Ditto.
32639         (create_new_ivs): Remove useless dump.
32640
32641 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32642
32643         * tree-ssa-loop-ivopts.c (get_computation_cost_at): Remove pseudo
32644         iv_cand code.
32645         (determine_group_iv_cost_cond, determine_iv_cost): Ditto.
32646         (iv_ca_set_no_cp, create_new_iv): Ditto.
32647
32648 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32649
32650         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
32651
32652 2017-05-02  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
32653
32654         * tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of
32655         function tree_check2.
32656
32657 2017-05-02  Martin Liska  <mliska@suse.cz>
32658
32659         * doc/gcov.texi: Add missing preposition.
32660         * gcov.c (function_info::function_info): Properly fill up
32661         all member variables.
32662
32663 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
32664
32665         * expr.c (expand_expr_real_2): Re-cost if previous costs are the same.
32666
32667 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
32668
32669         * simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case.
32670
32671 2017-05-02  Martin Liska  <mliska@suse.cz>
32672
32673         PR lto/77954.
32674         * lto-streamer-in.c (lto_read_tree_1): Remove
32675         LTO_STREAMER_DEBUG.
32676         * lto-streamer.c (struct tree_hash_entry): Likewise.
32677         (struct tree_entry_hasher): Likewise.
32678         (tree_entry_hasher::hash): Likewise.
32679         (tree_entry_hasher::equal): Likewise.
32680         (lto_streamer_init): Likewise.
32681         (lto_orig_address_map): Likewise.
32682         (lto_orig_address_get): Likewise.
32683         (lto_orig_address_remove): Likewise.
32684         * lto-streamer.h: Likewise.
32685         * tree-streamer-in.c (streamer_alloc_tree): Likewise.
32686         * tree-streamer-out.c (streamer_write_tree_header): Likewise.
32687
32688 2017-05-02  Sebastian Peryt  <sebastian.peryt@intel.com>
32689
32690         * config/i386/avx512fintrin.h (_mm_mask_add_round_sd)
32691         (_mm_maskz_add_round_sd, _mm_mask_add_round_ss)
32692         (mm_maskz_add_round_ss, _mm_mask_sub_round_sd)
32693         (mm_maskz_sub_round_sd, _mm_mask_sub_round_ss)
32694         (mm_maskz_sub_round_ss, _mm_mask_add_sd)
32695         (mm_maskz_add_sd, _mm_mask_add_ss, _mm_maskz_add_ss)
32696         (mm_mask_sub_sd, _mm_maskz_sub_sd, _mm_mask_sub_ss)
32697         (mm_maskz_sub_ss): New intrinsics.
32698         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
32699         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
32700         * config/i386/i386-builtin.def (__builtin_ia32_addsd_mask_round)
32701         (__builtin_ia32_addss_mask_round, __builtin_ia32_subsd_mask_round)
32702         (__builtin_ia32_subss_mask_round): New builtins.
32703         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
32704         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
32705         * config/i386/sse.md (<sse>_vm<plusminus_insn><mode>3<round_name>):
32706         Renamed to ...
32707         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): ... this.
32708         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
32709         Changed to ...
32710         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
32711         ... this.
32712
32713 2017-05-02  Martin Jambor  <mjambor@suse.cz>
32714
32715         PR tree-optimization/78687
32716         * tree-sra.c (access): New field parent.
32717         (process_subtree_disqualification): New function.
32718         (disqualify_candidate): Call it.
32719         (build_accesses_from_assign): Reset write flag if creating an
32720         assighnment link.
32721         (build_access_subtree): Fill in parent field and also prpagate
32722         down grp_write flag.
32723         (create_artificial_child_access): New parameter set_grp_write, set
32724         grp_write to its value.
32725         (propagate_subaccesses_across_link): Also propagate grp_write flag
32726         values.
32727         (propagate_all_subaccesses): Push the closest parent back to work
32728         queue if add_access_to_work_queue returned true.
32729
32730 2017-05-02  Richard Biener  <rguenther@suse.de>
32731
32732         * common.opt (fstrict-overflow): Alias negative to fwrapv.
32733         * doc/invoke.texi (fstrict-overflow): Remove all traces of
32734         -fstrict-overflow documentation.
32735         * tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow.
32736         (POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of
32737         flag_strict_overflow.
32738         * ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow.
32739         * lto-opts.c (lto_write_options): Do not stream it.
32740         * lto-wrapper.c (merge_and_complain): Do not handle it.
32741         * opts.c (default_options_table): Do not set -fstrict-overflow.
32742         (finish_options): Likewise do not clear it when sanitizing.
32743         * simplify-rtx.c (simplify_const_relational_operation): Do not
32744         test flag_strict_overflow.
32745
32746 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
32747
32748         * config/alpha/alpha.md (*add<mode>3_ieee): Merge to add<mode>3
32749         using enabled attribute.
32750         (*sub<mode>3_ieee): Merge to sub<mode>3 using enabled attribute.
32751         (*mul<mode>3_ieee): Merge to mul<mode>3 using enabled attribute.
32752         (*div<mode>3_ieee): Merge to div<mode>3 using enabled attribute.
32753         (*sqrt<mode>2_ieee): Merge to sqrt<mode>2 using enabled attribute.
32754         (*fix_truncdfdi_ieee): Merge to *fix_truncdfdi2 using enabled attribute.
32755         (*fix_truncsfdi_ieee): Merge to *fix_truncsfdi2 using enabled attribute.
32756         (*floatdisf_ieee): Merge to floatdisf2 using enabled attribute.
32757         (*floatdidf_ieee): Merge to floatdidf2 using enabled attribute.
32758         (*truncdfsf2_ieee): Merge to truncdfsf2 using enabled attribute.
32759         (*cmpdf_ieee): Merge to *cmpdf_internal using enabled attribute.
32760
32761 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
32762
32763         * config/i386/i386.c (ix86_code_end): Use {FIRST,LAST}_INT_REG.
32764
32765 2017-05-02  Richard Biener  <rguenther@suse.de>
32766
32767         PR tree-optimization/80591
32768         Revert
32769         2017-04-10  Richard Biener  <rguenther@suse.de>
32770
32771         * tree-ssa-structalias.c (find_func_aliases): Properly handle
32772         asm inputs.
32773
32774 2017-05-02  Richard Biener  <rguenther@suse.de>
32775
32776         PR tree-optimization/80549
32777         * tree-cfgcleanup.c (mfb_keep_latches): New helper.
32778         (cleanup_tree_cfg_noloop): Create forwarders to known loop
32779         headers if they do not have a preheader.
32780
32781 2017-05-02  Martin Liska  <mliska@suse.cz>
32782
32783         PR other/80589
32784         * common.opt: Fix typo.
32785         * doc/invoke.texi: Likewise.
32786
32787 2017-05-01  Jan Beulich  <jbeulich@suse.com>
32788
32789         * config/i386/sse.md (xop_vpermil2<mode>3): Do not allow operand
32790         swapping, add (x,x,m,x,n) alternative.
32791
32792 2017-05-01  Nathan Sidwell  <nathan@acm.org>
32793
32794         * calls.c (combine_pending_stack_adjustment_and_call): Remove
32795         unnecessary unadjusted_alignment check.
32796
32797 2017-05-01  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
32798
32799         PR c++/80038
32800         * cilk_common.c (expand_builtin_cilk_detach): Move pedigree
32801         operations here.
32802         * gimplify.c (gimplify_cilk_detach): New function.
32803         (gimplify_call_expr, gimplify_modify_expr): Call it as needed.
32804         * tree-core.h: Document EXPR_CILK_SPAWN.
32805         * tree.h (EXPR_CILK_SPAWN): Define.
32806
32807 2017-05-01  David Malcolm  <dmalcolm@redhat.com>
32808
32809         * diagnostic-show-locus.c (layout::get_expanded_location): Rewrite
32810         to use new fixit_hint representation, using the "replace" logic.
32811         (get_line_span_for_fixit_hint): Likewise.
32812         (layout::print_any_fixits): Likewise.
32813         (selftest::test_one_liner_many_fixits): Rename to...
32814         (selftest::test_one_liner_many_fixits_1): ...this, and update
32815         comment and expected output to reflect that the multiple fix-it
32816         hints are now consolidated into one insertion.
32817         (selftest::test_one_liner_many_fixits_2): New test.
32818         (selftest::test_diagnostic_show_locus_one_liner): Update for
32819         above.
32820         (selftest::test_fixit_consolidation): Update for fix-it API
32821         change.
32822         * diagnostic.c (print_parseable_fixits): Likewise.
32823         * edit-context.c (edited_line::m_line_events): Convert from
32824         auto_vec <line_event *> to auto_vec <line_event>.
32825         (class line_event): Convert from abstract base class to a concrete
32826         class, taking over the role of replace_event.
32827         (class insert_event): Delete.
32828         (class replace_event): Rename to class line_event.  Convert to
32829         half-open range.
32830         (edit_context::add_fixits): Reimplement.
32831         (edit_context::apply_insert): Delete.
32832         (edit_context::apply_replace): Rename to...
32833         (edit_context::apply_fixit): ...this.  Convert to half-open range.
32834         (edited_file::apply_insert): Delete.
32835         (edited_file::apply_replace): Rename to...
32836         (edited_file::apply_fixit): ...this.
32837         (edited_line::~edited_line): Drop deletion of events.
32838         (edited_line::apply_insert): Delete.
32839         (edited_line::apply_replace): Rename to...
32840         (edited_line::apply_fixit): ...this.  Convert to half-open range.
32841         Update for change to type of m_line_events.
32842         * edit-context.h (edit_context::apply_insert): Delete.
32843         (edit_context::apply_replace): Rename to...
32844         (edit_context::apply_fixit): ...this.
32845
32846 2017-05-01  Martin Sebor  <msebor@redhat.com>
32847
32848         * gimple-ssa-sprintf.c (format_integer): Set knownrange when it's
32849         known.
32850
32851 2017-05-01  Uros Bizjak  <ubizjak@gmail.com>
32852
32853         PR target/68491
32854         * config/i386/cpuid.h (__get_cpuid): Always return 0 when
32855         __get_cpuid_max returns 0.
32856         (__get_cpuid_count): Ditto.
32857
32858 2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>
32859
32860         * tree.c (substitute_in_expr) <tcc_vl_exp>: Also inline a call if the
32861         replacement expression is another instance of one of its arguments.
32862
32863 2017-05-01  Jakub Jelinek  <jakub@redhat.com>
32864
32865         PR target/79430
32866         * rtlanal.c (reg_set_p): If reg is a stack_pointer_rtx, also
32867         check for stack push/pop autoinc.
32868         * config/i386/i386.c (ix86_agi_dependent): Return false
32869         if the only reason why modified_in_p returned true is that
32870         addr is SP based and set_insn is a push or pop.
32871
32872 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
32873
32874         * ipa-inline.c (compute_inlined_call_time): Remove now unnecesary
32875         overflow check.
32876
32877 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
32878
32879         PR ipa/79224
32880         * ipa-inline-analysis.c (dump_predicate): Add optional parameter NL.
32881         (account_size_time): Use two predicates - exec_pred and
32882         nonconst_pred_ptr.
32883         (evaluate_conditions_for_known_args): Compute both clause and
32884         nonspec_clause.
32885         (evaluate_properties_for_edge): Evaulate both clause and nonspec_clause.
32886         (inline_summary_t::duplicate): Update.
32887         (estimate_function_body_sizes): Caluculate exec and nonconst predicates
32888         separately.
32889         (compute_inline_parameters): Likewise.
32890         (estimate_edge_size_and_time): Update caluclation of time.
32891         (estimate_node_size_and_time): Compute both time and nonspecialized
32892         time.
32893         (estimate_ipcp_clone_size_and_time): Update.
32894         (inline_merge_summary): Update.
32895         (do_estimate_edge_time): Update.
32896         (do_estimate_edge_size): Update.
32897         (do_estimate_edge_hints): Update.
32898         (inline_read_section, inline_write_summary): Stream both new predicates.
32899         * ipa-inline.c (compute_uninlined_call_time): Take uninlined_call_time
32900         as argument.
32901         (compute_inlined_call_time): Cleanup.
32902         (big_speedup_p): Update.
32903         (edge_badness): Update.
32904         * ipa-inline.h (INLINE_TIME_SCALE): Remove.
32905         (size_time_entry): Replace predicate by exec_predicate and
32906         nonconst_predicate.
32907         (edge_growth_cache_entry): Cache both time nad nonspecialized time.
32908         (estimate_edge_time): Return also nonspec_time.
32909         (reset_edge_growth_cache): Update.
32910
32911 2017-04-29  Jakub Jelinek  <jakub@redhat.com>
32912
32913         PR rtl-optimization/80491
32914         * ifcvt.c (noce_process_if_block): When looking for x setter
32915         with missing else_bb, don't check only the insn right before
32916         cond_earliest, but look for the last insn that x is modified in
32917         within the same bb.
32918
32919         PR rtl-optimization/80491
32920         * alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs.
32921
32922 2017-04-29  Marc Glisse  <marc.glisse@inria.fr>
32923
32924         PR tree-optimization/80487
32925         * tree-ssa-alias.c (stmt_kills_ref_p): Handle stpncpy and strncpy.
32926
32927 2017-04-29  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32928
32929         PR tree-optimization/79697
32930         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Check if callee
32931         is BUILT_IN_STRDUP, BUILT_IN_STRNDUP, BUILT_IN_REALLOC.
32932         (propagate_necessity): Check if def_callee is BUILT_IN_STRDUP or
32933         BUILT_IN_STRNDUP.
32934         * gimple-fold.c (gimple_fold_builtin_realloc): New function.
32935         (gimple_fold_builtin): Call gimple_fold_builtin_realloc.
32936
32937 2017-04-28  Martin Sebor  <msebor@redhat.com>
32938
32939         PR tree-optimization/80523
32940         * gimple-ssa-sprintf.c (target_to_host_charmap): New global variable.
32941         (init_target_to_host_charmap, target_to_host, target_strtol10): New
32942         functions.
32943         (maybe_warn, format_directive, parse_directive): Use new functions.
32944         (pass_sprintf_length::execute): Call init_target_to_host_charmap.
32945
32946 2017-04-28  Marc Glisse  <marc.glisse@inria.fr>
32947
32948         * match.pd (X+Z OP Y+Z, X-Z OP Y-Z, Z-X OP Z-Y): New transformations.
32949
32950 2017-04-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
32951
32952         * configure.ac (SYSTEM_HEADER_DIR, BUILD_SYSTEM_HEADER_DIR,
32953         target_header_dir): Set correctly.
32954         * configure: Regenerated.
32955         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
32956         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
32957         instead of SYSTEM_HEADER_DIR.
32958
32959 2017-04-28  Jan Hubicka  <hubicka@ucw.cz>
32960
32961         * ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal.
32962         (estimate_local_effects): Likewise.
32963         * ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p,
32964         edge_badness, inline_small_functions, dump_overall_stats): LIkewise.
32965         * ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining,
32966         estimate_ipcp_clone_size_and_time, do_estimate_edge_time,
32967         do_estimate_edge_time, estimate_edge_time): Likewise.
32968         * ipa-inline-analysis.c (estimate_node_size_and_time,
32969         estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise.
32970         (estimate_time_after_inlining): Remove.
32971
32972 2017-04-28  Martin Liska  <mliska@suse.cz>
32973
32974         * doc/gcov.texi: Enhance documentation of gcov.
32975
32976 2017-04-28  Martin Liska  <mliska@suse.cz>
32977
32978         * doc/gcov.texi: Sort options in alphabetic order.
32979         * doc/gcov-dump.texi: Likewise.
32980         * doc/gcov-tool.texi: Likewise.
32981         * gcov.c (print_usage): Likewise.
32982         * gcov-dump.c (print_usage): Likewise.
32983         * gcov-tool.c (print_merge_usage_message): Likewise.
32984         (print_rewrite_usage_message): Likewise.
32985         (print_overlap_usage_message): Likewise.
32986
32987 2017-04-28  Martin Liska  <mliska@suse.cz>
32988
32989         PR gcov-profile/53915
32990         * gcov.c (format_gcov): Print 'NAN %' when top > bottom.
32991
32992 2017-04-28  Martin Liska  <mliska@suse.cz>
32993
32994         PR gcov-profile/79891
32995         * gcov.c (add_line_counts): Assign BBs to lines just if the BB
32996         is marked by compiler as living on a line.
32997         (get_cycles_count): Remove usage of the union.
32998         (output_intermediate_file): Likewise.
32999         (find_source): Fix GNU coding style.
33000         (accumulate_line_counts): Remove old non-all block mode.
33001         (output_lines): Remove usage of the union.
33002         * profile.c (output_location): Include all BBs, even if
33003         belonging to a same line (and file) as a previous BB.
33004
33005 2017-04-28  Martin Liska  <mliska@suse.cz>
33006
33007         * gcov.c (process_args): Handle new argument 'w'.
33008         (read_graph_file): Assign ID to BBs.
33009         (output_branch_count): Display BB # if verbose flag is set.
33010         (output_lines): Likewise for arcs.
33011         (print_usage): Add '--verbose' option help.
33012         * doc/gcov.texi: Document --verbose (-w) option.
33013
33014 2017-04-28  Martin Liska  <mliska@suse.cz>
33015
33016         * gcov.c (struct block_location_info): New struct.
33017         (process_file): Fill up the new structure.
33018         (read_graph_file): Replace usage of encoding by the newly added
33019         struct.
33020         (add_line_counts): Likewise.
33021         (accumulate_line_counts): Remove usage of the union.
33022         (function_info::function_info): New function.
33023         (function_info::~function_info): Likewise.
33024         (process_file): Call delete instead of release_function.
33025         (release_function): Release the function.
33026         (release_structures): Call delete instead of release_function.
33027         (solve_flow_graph): Replace usage of num_blocks.
33028         (find_exception_blocks): Likewise.
33029         (output_lines): Fix GNU coding style.
33030
33031 2017-04-28  Martin Liska  <mliska@suse.cz>
33032
33033         PR driver/56469
33034         * coverage.c (coverage_remove_note_file): New function.
33035         * coverage.h: Declare the function.
33036         * toplev.c (finalize): Clean if an error has been seen.
33037
33038 2017-04-28  Martin Liska  <mliska@suse.cz>
33039
33040         PR gcov-profile/80031
33041         * gcov-dump.c (tag_blocks): Just print number of basic blocks.
33042         * gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro.
33043         * gcov.c (read_graph_file): Read just number of blocks.
33044         * profile.c (branch_prob): Do not stream 0 flags per a basic
33045         block.
33046
33047 2017-04-28  Martin Liska  <mliska@suse.cz>
33048
33049         * gcov-dump.c (tag_*): Add new argument to declarations.
33050         (dump_gcov_file): Likewise.
33051         (tag_blocks): Add and use new argument depth.
33052         (tag_arcs): Likewise.
33053         (tag_lines): Likewise.
33054         (tag_counters): Likewise.
33055         (tag_summary): Likewise.
33056         (dump_working_sets): Use depth to do a proper indentation.
33057
33058 2017-04-28  Jakub Jelinek  <jakub@redhat.com>
33059
33060         PR bootstrap/80531
33061         * cgraph.h (symtab_node::debug_symtab): No longer inline.
33062         * symtab.c (symtab_node::debug_symtab): Move definition here.
33063
33064 2017-04-28  Richard Biener  <rguenther@suse.de>
33065
33066         * lto-streamer.h (LTO_major_version): Bump to 7.
33067
33068 2017-04-28  Richard Biener  <rguenther@suse.de>
33069
33070         * tree-vrp.c (assert_info): New struct.
33071         (add_assert_info): New helper.
33072         (register_edge_assert_for_2): Refactor to add asserts to a vector
33073         of assert_info.
33074         (register_edge_assert_for_1): Likewise.
33075         (register_edge_assert_for): Likewise.
33076         (finish_register_edge_assert_for): New helper actually registering
33077         asserts where live on edge.
33078         (find_conditional_asserts): Adjust.
33079         (find_switch_asserts): Likewise.
33080         (evrp_dom_walker::try_find_new_range): Generalize.
33081         (evrp_dom_walker::before_dom_children): Use register_edge_assert_for.
33082
33083 2017-04-27  Marek Polacek  <polacek@redhat.com>
33084
33085         PR sanitizer/80349
33086         * fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Convert
33087         arg10 and arg11 to itype.
33088
33089 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
33090
33091         * doc/extend.texi (Object Size Checking): Improve grammar.
33092
33093 2017-04-27  Richard Earnshaw  <rearnsha@arm.com>
33094
33095         PR target/80530
33096         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure
33097         that the logic for permitting reciprocal estimates matches that
33098         in use_rsqrt_p.
33099
33100 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
33101
33102         PR c++/80534
33103         * tree.c (type_cache_hasher::equal): Only compare
33104         TYPE_TYPELESS_STORAGE flag on non-aggregate element types.
33105         (build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on
33106         non-aggregate element types.
33107         * tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details
33108         about the flag on ARRAY_TYPEs in the comment, formatting fix.
33109
33110 2017-04-27  Richard Biener  <rguenther@suse.de>
33111
33112         PR middle-end/80533
33113         * emit-rtl.c (set_mem_attributes_minus_bitpos): When
33114         stripping ARRAY_REFs from MEM_EXPR make sure we're not
33115         keeping a reference to a trailing array.
33116
33117 2017-04-27  Richard Biener  <rguenther@suse.de>
33118
33119         PR middle-end/80539
33120         * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
33121         being in loop-closed SSA form conservatively.
33122         (chrec_fold_multiply_poly_poly): Likewise.
33123
33124 2017-04-27  Tamar Christina  <tamar.christina@arm.com>
33125
33126         PR middle-end/79665
33127         * expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR,
33128         CEIL_MOD_EXPR, ROUND_MOD_EXPR cases.
33129
33130 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
33131
33132         PR target/77728
33133         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove.
33134         (aarch64_function_arg_alignment): Return unsigned int again, but still
33135         ignore TYPE_FIELDS chain decls other than FIELD_DECLs.
33136         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
33137         Don't emit -Wpsabi note.
33138         (aarch64_function_arg_boundary): Likewise.
33139         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
33140         caller.
33141
33142 2017-04-26  Nathan Sidwell  <nathan@acm.org>
33143
33144         * tree.h (crc32_unsigned_n): Declare.
33145         (crc32_unsigned, crc32_unsigned): Make inline.
33146         * tree.c (crc32_unsigned_bits): Replace with ...
33147         (crc32_unsigned_n): ... this.
33148         (crc32_unsigned, crc32_byte): Remove.
33149         (crc32_string): Remove unnecessary braces.
33150
33151 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
33152
33153         * ipa-cp.c (estimate_local_effects): Convert sreal to int.
33154         * ipa-inline-analysis.c (MAX_TIME): Remove.
33155         (account_size_time): Use sreal for time.
33156         (dump_inline_summary): Update.
33157         (estimate_function_body_sizes): Update.
33158         (estimate_edge_size_and_time): Update.
33159         (estimate_calls_size_and_time): Update.
33160         (estimate_node_size_and_time): Update.
33161         (inline_merge_summary): Update.
33162         (inline_update_overall_summary): Update.
33163         (estimate_time_after_inlining): Update.
33164         (inline_read_section): Update.
33165         (inline_write_summary): Update.
33166         * ipa-inline.c (compute_uninlined_call_time): Update.
33167         (compute_inlined_call_time): Update.
33168         (recursive_inlining): Update.
33169         (inline_small_functions): Update.
33170         (dump_overall_stats): Update.
33171         * ipa-inline.h: Include sreal.h.
33172         (size_time_entry): Turn time to sreal.
33173         (inline_summary): Turn self_time nad time to sreal.
33174
33175 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
33176
33177         * sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and
33178         data-streamer.h
33179         (sreal::stream_out, sreal::stream_in): New.
33180         * sreal.h (sreal::stream_out, sreal::stream_in): Declare.
33181
33182 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
33183
33184         * Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
33185         environment.
33186
33187 2017-04-25  Uros Bizjak  <ubizjak@gmail.com>
33188
33189         PR target/70799
33190         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
33191         Handle ASHIFTRT.
33192         (dimode_scalar_chain::compute_convert_gain): Ditto.
33193         (dimode_scalar_chain::make_vector_copies): Ditto.
33194         (dimode_scalar_chain::convert_reg): Ditto.
33195         (dimode_scalar_chain::convert_insn): Ditto.
33196         * config/i386/sse.md (VI24_AVX512BW_1): Remove mode iterator.
33197         (VI248_AVX512BW_1): New mode iterator.
33198         (<mask_codefor>ashr<mode>3<mask_name>): Merge insn pattern with
33199         <mask_codefor>ashrv2di3<mask_name> insn using VI248_AVX512BW_1
33200         mode iterator.
33201
33202 2017-04-25  Martin Sebor  <msebor@redhat.com>
33203
33204         PR tree-optimization/80497
33205         * gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer
33206         constants are representable in HOST_WIDE_INT.
33207         (parse_directive): Ditto.
33208
33209 2017-04-25  Martin Sebor  <msebor@redhat.com>
33210
33211         PR bootstrap/80486
33212         * dominance.c (dom_info::m_n_basic_blocks): Change type to unsigned.
33213         (new_zero_array): Adjust signature.
33214         (dom_info::dom_init): Used unsigned rather that size_t.
33215         (dom_info::dom_info): Same.
33216
33217 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
33218             Jakub Jelinek  <jakub@redhat.com>
33219
33220         PR target/77728
33221         * config/arm/arm.c: Include gimple.h.
33222         (aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align
33223         returns negative, increment ncrn only if it returned positive.
33224         (arm_needs_doubleword_align): Return int instead of bool,
33225         ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain
33226         members, but if there is any such non-FIELD_DECL
33227         > PARM_BOUNDARY aligned decl, return -1 instead of false.
33228         (arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align
33229         returns negative, increment nregs only if it returned positive.
33230         (arm_setup_incoming_varargs): Likewise.
33231         (arm_function_arg_boundary): Emit -Wpsabi note if
33232         arm_needs_doubleword_align returns negative, return
33233         DOUBLEWORD_ALIGNMENT only if it returned positive.
33234
33235 2017-04-25  Marek Polacek  <polacek@redhat.com>
33236
33237         PR sanitizer/80349
33238         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
33239         first argument to type.
33240
33241 2017-04-25  Bill Seurer  <seurer@linux.vnet.ibm.com>
33242
33243         PR target/80482
33244         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change
33245         type checks to test for compatibility instead of equality.
33246
33247 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
33248             Jakub Jelinek  <jakub@redhat.com>
33249
33250         PR target/77728
33251         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New
33252         type.
33253         (aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment
33254         struct.  Ignore DECL_ALIGN of decls other than FIELD_DECL for
33255         the alignment computation, but return their maximum in warn_alignment.
33256         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
33257         Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment
33258         is smaller.
33259         (aarch64_function_arg_boundary): Likewise.  Simplify using MIN/MAX.
33260         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
33261         caller.
33262
33263 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33264
33265         * config/arc/simdext.md (dmpyh): Fix typo.
33266
33267 2017-04-25  Richard Biener  <rguenther@suse.de>
33268
33269         PR tree-optimization/80492
33270         * alias.c (compare_base_decls): Handle registers with asm
33271         specification conservatively.
33272         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
33273         compare_base_decls returning dont-know properly.
33274
33275 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33276
33277         * config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro.
33278         (legitimate_offset_address_p): New function.
33279         (arc_legitimate_address_p): Use above function.
33280
33281 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33282
33283         * config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls.
33284
33285 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33286
33287         * config/arc/arc.c (arc_conditional_register_usage): Use ACCL,
33288         ACCH registers whenever they are available.
33289
33290 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33291
33292         * config/arc/arc.c (arc_conditional_register_usage): Make D0, D1
33293         double regs fix when not used.
33294
33295 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33296
33297         * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension
33298         core registers.
33299         (REG_OK_FOR_INDEX_P_NONSTRICT): Likewise.
33300         (REG_OK_FOR_BASE_P_NONSTRICT): Likewise.
33301
33302 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33303
33304         * config/arc/arc.c (arc_output_addsi): Check for h-register class
33305         when emitting short ADD instructions.
33306
33307 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33308
33309         * config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register
33310         constraint.
33311         (cmpsi_cc_c_insn): Likewise.
33312         (cbranchsi4_scratch): Compute proper instruction length using
33313         compact_hreg_operand.
33314         * config/arc/predicates.md (compact_hreg_operand): New predicate.
33315
33316 2017-04-25  Richard Biener  <rguenther@suse.de>
33317
33318         PR middle-end/80509
33319         * passes.c (pass_manager::pass_manager): Initialize
33320         m_name_to_pass_map.
33321
33322 2017-04-25  Richard Biener  <rguenther@suse.de>
33323
33324         PR tree-optimization/79201
33325         * tree-ssa-sink.c (statement_sink_location): Handle calls.
33326
33327 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33328
33329         PR target/80464
33330         * config/s390/vector.md: Split MEM->GPR vector moves for
33331         non-s_operand addresses.
33332
33333 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33334
33335         PR target/79895
33336         * config/s390/predicates.md (reload_const_wide_int_operand): New
33337         predicate.
33338         * config/s390/s390.md ("movti"): Remove d/P alternative.
33339         ("movti_bigconst"): New pattern definition.
33340
33341 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33342
33343         PR target/80080
33344         * s390-protos.h (s390_expand_cs_hqi): Removed.
33345         (s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
33346         * config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
33347         modes as well as CCZ1mode and CCZmode.
33348         (s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
33349         signature of s390_emit_compare_and_swap.
33350         (s390_expand_cs_hqi): Likewise, make static.
33351         (s390_expand_cs_tdsi): Generate an explicit compare before trying
33352         compare-and-swap, in some cases.
33353         (s390_expand_cs): Wrapper function.
33354         (s390_expand_atomic_exchange_tdsi): New backend specific expander for
33355         atomic_exchange.
33356         (s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
33357         * config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
33358         patterns for small and large integers.  Forbid symref memory operands.
33359         Move expander to s390.c.  Require cc register.
33360         ("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
33361         ("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
33362         ("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
33363         ("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
33364         symref memory operands.  Remove CC mode and call s390_match_ccmode
33365         instead.
33366         ("atomic_exchange<mode>"): Allow and implement all integer modes.
33367
33368 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33369
33370         * config/s390/s390.md (define_peephole2): New peephole to help
33371         combining the load-and-test pattern with volatile memory.
33372
33373 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33374
33375         * config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
33376         with CCZmode for TARGET_Z196.
33377
33378 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
33379
33380         PR rtl-optimization/80501
33381         * combine.c (make_compound_operation_int): Set subreg_code to SET
33382         even for AND with mask of the sign bit of mode.
33383
33384         PR rtl-optimization/80500
33385         * loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
33386         sum's initial value.
33387
33388 2017-04-25  Julian Brown  <julian@codesourcery.com>
33389             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
33390
33391         * config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation.
33392
33393 2017-04-25  Marc Glisse  <marc.glisse@inria.fr>
33394
33395         * fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME.
33396
33397 2017-04-25  Julian Brown  <julian@codesourcery.com>
33398             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
33399
33400         * config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation.
33401         (thunderx2t99_sha): New Reservation.
33402
33403 2017-04-25  Julian Brown  <julian@codesourcery.com>
33404             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
33405
33406         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix
33407         type for 1-element load.
33408
33409 2017-04-24  Marc Glisse  <marc.glisse@inria.fr>
33410
33411         * match.pd (X/[ex]C CMP Y/[ex]C): New transformation.
33412
33413 2017-04-24  Martin Jambor  <mjambor@suse.cz>
33414
33415         PR tree-optimization/80293
33416         * tree-sra.c (scalarizable_type_p): New parameter const_decl, make
33417         char arrays not totally scalarizable if it is false.
33418         (analyze_all_variable_accesses): Pass correct value in the new
33419         parameter.  Add a statistics counter.
33420
33421 2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
33422
33423         PR middle-end/79931
33424         * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
33425
33426 2017-04-24  Richard Biener  <rguenther@suse.de>
33427
33428         PR tree-optimization/80494
33429         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
33430         out for complex types.
33431
33432 2017-04-24  Richard Biener  <rguenther@suse.de>
33433
33434         * tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
33435         * tree-ssa-sccvn.c (print_scc): Print SCC size.
33436         (extract_and_process_scc_for_name): Never fail but drop SCC to varying.
33437         (DFS): Adjust and never fail.
33438         (sccvn_dom_walker::fail): Remove.
33439         (sccvn_dom_walker::before_dom_children): Adjust.
33440         (run_scc_vn): Likewise and never fail.
33441         * tree-ssa-pre.c (pass_pre::execute): Adjust.
33442         (pass_fre::execute): Likewise.
33443
33444 2017-04-24  Richard Biener  <rguenther@suse.de>
33445
33446         PR tree-optimization/79725
33447         * tree-ssa-sink.c (statement_sink_location): Return whether
33448         failure reason was zero uses.  Move that check later.
33449         (sink_code_in_bb): Deal with zero uses by removing the stmt
33450         if possible.
33451
33452 2017-04-24  Richard Biener  <rguenther@suse.de>
33453
33454         PR c++/2972
33455         * tree-ssa-uninit.c (warn_uninitialized_vars): Handle some
33456         pointer-based references.
33457
33458 2017-04-24  Richard Biener  <rguenther@suse.de>
33459
33460         PR bootstrap/79814
33461         * pass_manager.h (pass_manager::operator new): Remove.
33462         (pass_manager::operator delete): Likewise.
33463         * passes.c (pass_manager::operator new): Remove.
33464         (pass_manager::operator delete): Likewise.
33465         (pass_manager::pass_manager): Zero individual pass members.
33466
33467 2017-04-23  Uros Bizjak  <ubizjak@gmail.com>
33468
33469         PR target/70799
33470         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
33471         <case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
33472         Check "XEXP (src, 1)" operand here.
33473         <case PLUS, case MINUS, case IOR, case XOR, case AND>:
33474         Check "XEXP (src, 1)" operand here.
33475         (dimode_scalar_chain::make_vector_copies): Detect count register
33476         of a shift instruction.  Zero extend count register from QImode
33477         to DImode to satisfy vector shift pattern count operand predicate.
33478         Substitute vector shift count operand with a DImode copy.
33479         (dimode_scalar_chain::convert_reg): Ditto, zero-extend from
33480         vector register.
33481
33482 2017-04-21  Uros Bizjak  <ubizjak@gmail.com>
33483
33484         * config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
33485         Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
33486         (*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
33487         UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
33488         (UNSPEC_NOREX_MEM): Remove definition.
33489
33490 2017-04-21  Richard Biener  <rguenther@suse.de>
33491
33492         PR tree-optimization/79547
33493         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
33494         Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp,
33495         bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p
33496         without any constraints.
33497
33498 2017-04-21  Richard Biener  <rguenther@suse.de>
33499
33500         PR tree-optimization/78847
33501         * fold-const.c (split_tree): Handle POINTER_PLUS_EXPR.
33502
33503 2017-04-21  Richard Biener  <rguenther@suse.de>
33504
33505         * tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.
33506         (build_distinct_type_copy): Likewise.
33507         (build_variant_type_copy): Likewise.
33508         * tree.c (build_qualified_type): Pass down mem-stat info.
33509         (build_distinct_type_copy): Likewise.
33510         (build_variant_type_copy): Likewise.
33511
33512 2017-04-21  Richard Biener  <rguenther@suse.de>
33513
33514         PR tree-optimization/80237
33515         * tree-ssa-pre.c (find_leader_in_sets): Add third set argument,
33516         defaulted to NULL.
33517         (phi_translate_1): Also allow a leader in AVAIL_OUT of pred
33518         for a simplified result.
33519
33520 2016-04-21  Richard Biener  <rguenther@suse.de>
33521
33522         * tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require
33523         sth as strict as a simple_iv but a chrec without symbols and an
33524         operand defined in the loop we are peeling (and not some subloop).
33525         (propagate_constants_for_unrolling): Propagate all constants.
33526
33527 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
33528
33529         PR target/79804
33530         * config/i386/i386.c (print_reg): Remove assert for disalowed
33531         regno values, call output_operand_lossage instead.
33532
33533 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
33534
33535         PR target/78090
33536         * config/i386/constraints.md (Yc): New register constraint.
33537         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
33538         Use Yc constraint for alternative 2 of operand 0.  Remove
33539         preferred_for_speed attribute.
33540
33541 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
33542
33543         * omp-low.c (lower_lastprivate_clauses): Correct handling of linear and
33544         lastprivate clauses in SIMT case.
33545
33546 2017-04-20  Volker Reichelt  <v.reichelt@netcologne.de>
33547
33548         * doc/invoke.texi (-Wextra-semi): Document new warning option.
33549
33550 2017-04-20  Richard Biener  <rguenther@suse.de>
33551
33552         PR tree-optimization/57796
33553         * tree-vect-stmts.c (vect_model_store_cost): Cost scatters
33554         as N scalar stores.
33555         (vect_model_load_cost): Cost gathers as N scalar loads.
33556
33557 2017-04-20  Richard Biener  <rguenther@suse.de>
33558
33559         * ggc-page.c (ggc_allocated_p): Rename to ...
33560         (safe_lookup_page_table_entry): ... this and return the lookup
33561         result.
33562         (gt_ggc_m_S): Use safe_lookup_page_table_entry.
33563
33564 2017-04-20  Richard Biener  <rguenther@suse.de>
33565
33566         PR tree-optimization/80453
33567         * tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members.
33568         * tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs
33569         from the conditions.
33570         (vn_phi_eq): Pass them down.
33571         (vn_phi_lookup): Record them.
33572         (vn_phi_insert): Likewise.
33573
33574 2017-04-20  Matthew Fortune  <matthew.fortune@imgtec.com>
33575
33576         * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix
33577         uninitialized variable warning to avoid buffer overrun.
33578
33579 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
33580
33581         PR other/71250
33582         * doc/invoke.texi (-Wmissing-field-initializers): Mention that warning
33583         is suppressed for '{ 0 }' in C.
33584
33585 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
33586
33587         * BASE-VER: Set to 8.0.0.
33588
33589 2017-04-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
33590
33591         * config/arm/arm.c (arm_elf_asm_cdtor): Create non-default
33592         priority .init_array and .fini_array section with SECTION_NOTYPE
33593         flag.
33594
33595 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
33596
33597         PR middle-end/80423
33598         * tree.h (build_array_type): Add typeless_storage default argument.
33599         * tree.c (type_cache_hasher::equal): Also compare
33600         TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs.
33601         (build_array_type): Add typeless_storage argument, set
33602         TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to
33603         recursive call.
33604         (build_nonshared_array_type): Adjust build_array_type_1 caller.
33605         (build_array_type): Likewise.  Add typeless_storage argument.
33606
33607 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
33608             Jakub Jelinek  <jakub@redhat.com>
33609
33610         PR tree-optimization/80426
33611         * tree-vrp.c (extract_range_from_binary_expr_1): For an additive
33612         operation on symbolic operands, also compute the overflow for the
33613         invariant part when the operation degenerates into a negation.
33614
33615 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
33616
33617         PR debug/80461
33618         * dwarf2out.c (modified_type_die, gen_type_die_with_usage):
33619         Check for t with zero TYPE_QUALS_NO_ADDR_SPACE.
33620
33621         PR debug/80436
33622         * tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses.
33623
33624 2017-04-19  Georg-Johann Lay  <avr@gjlay.de>
33625
33626         PR target/80462
33627         * config/avr/avr.c (tree.h): Include it.
33628         (cgraph.h): Include it.
33629         (avr_encode_section_info): Don't warn for uninitialized progmem
33630         variable if it's just an alias.
33631
33632 2017-04-19  Richard Biener  <rguenther@suse.de>
33633
33634         PR ipa/65972
33635         * auto-profile.c (afdo_vpt_for_early_inline): Update SSA
33636         when needed by AutoPGO.
33637
33638 2017-04-19  Paulo J. Matos  <paulo@matos-sorge.com>
33639
33640         PR lto/50345
33641         * doc/lto.texi: Remove an extra 'that'.
33642
33643 2017-04-19  Segher Boessenkool  <segher@kernel.crashing.org>
33644
33645         PR rtl-optimization/80429
33646         * ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that
33647         are only used in debug insns.
33648
33649 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
33650             Vladimir Makarov  <vmakarov@redhat.com>
33651
33652         * config/sparc/predicates.md (input_operand): Add comment.  Return
33653         true for any memory operand when LRA is in progress.
33654         * config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.
33655
33656 2017-04-18  Jeff Law  <law@redhat.com>
33657
33658         PR target/74563
33659         * mips.md ({return,simple_return}_internal): Do not overwrite
33660         operands[0].
33661
33662 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33663
33664         PR tree-optimization/80443
33665         * tree-vrp.c (intersect_ranges): For signed 1-bit precision type,
33666         instead of adding 1, subtract -1 and similarly instead of subtracting
33667         1 add -1.
33668
33669 2017-04-18  Richard Sandiford  <richard.sandiford@arm.com>
33670
33671         PR rtl-optimization/80357
33672         * haifa-sched.c (tmp_bitmap): New variable.
33673         (model_recompute): Handle duplicate use records.
33674         (alloc_global_sched_pressure_data): Initialize tmp_bitmap.
33675         (free_global_sched_pressure_data): Free it.
33676
33677 2017-04-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33678
33679         Revert:
33680         2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33681         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
33682         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
33683         instead of SYSTEM_HEADER_DIR.
33684
33685 2017-04-18  Jeff Law  <law@redhat.com>
33686
33687         PR middle-end/80422
33688         * cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have
33689         predecessors after walking up the insn chain.
33690
33691 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33692
33693         PR debug/80263
33694         * dwarf2out.c (modified_type_die): Try harder not to emit internal
33695         sizetype type into debug info.
33696
33697 2017-04-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
33698
33699         PR target/80099
33700         * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate
33701         unneeded test for TARGET_UPPER_REGS_SF.
33702         * config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise.
33703
33704 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33705
33706         PR sanitizer/80444
33707         * sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb
33708         instead of gsi_after_labels.
33709
33710 2017-04-18  Jeff Law  <law@redhat.com>
33711
33712         * regcprop.c (maybe_mode_change): Avoid creating copies of the
33713         stack pointer.
33714
33715         Revert:
33716         2017-04-13  Jeff Law  <law@redhat.com>
33717         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
33718         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
33719
33720 2017-04-18  Georg-Johann Lay  <avr@gjlay.de>
33721
33722         PR target/79453
33723         * config/avr/avr.c (intl.h): Include it.
33724         (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _().
33725
33726 2017-04-18  Martin Liska  <mliska@suse.cz>
33727
33728         PR gcov-profile/78783
33729         * gcov-tool.c (gcov_output_files): Validate that destination
33730         file is either removed by the tool or by a user.
33731
33732 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
33733             Guy Benyei  <guybe@mellanox.com>
33734
33735         * config/arc/arc.c (arc_reorg): Move loop_end_id into a more local
33736         block, and do not negate it, the stored id is already negative.
33737
33738 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
33739
33740         * config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax.
33741
33742 2017-04-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
33743
33744         PR target/80098
33745         * config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define
33746         masks of options that should be turned off if the VSX vector
33747         options are turned off.
33748         (OTHER_P8_VECTOR_MASKS): Likewise.
33749         (OTHER_VSX_VECTOR_MASKS): Likewise.
33750         * config/rs6000/rs6000.c (rs6000_option_override_internal): Call
33751         rs6000_disable_incompatible_switches to validate no type switches
33752         like -mvsx.
33753         (rs6000_incompatible_switch): New function to disallow turning on
33754         other vector options if -mno-vsx, -mno-power8-vector, or
33755         -mno-power9-vector are specified.
33756
33757 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33758
33759         * config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls.
33760
33761 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33762
33763         * config/arc/arc-protos.h (arc_decl_pretend_args): Remove.
33764         * config/arc/arc.c (arc_decl_pretend_args): Likewise.
33765         * config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise.
33766         (ARG_POINTER_CFA_OFFSET): Likewise.
33767
33768 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33769
33770         * config/arc/arc.c (arc_mode_dependent_address_p): Relax
33771         conditions to take advantage of various optimizations.
33772
33773 2017-04-13  Jeff Law  <law@redhat.com>
33774
33775         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
33776         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
33777         (zero_extendsidi2_dext): Likewise.
33778
33779 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
33780
33781         PR sanitizer/80403
33782         * fold-const.c (fold_ternary_loc): Revert
33783         use op0 instead of fold_convert_loc (loc, type, arg0) part of
33784         2017-04-12 change.
33785
33786 2017-04-13  Vladimir Makarov  <vmakarov@redhat.com>
33787
33788         PR rtl-optimization/80343
33789         * lra-remat.c (update_scratch_ops): Assign original hard reg to
33790         new scratch pseudo.
33791
33792 2017-04-13  Denis Khalikov <d.khalikov@partner.samsung.com>
33793
33794         PR sanitizer/80414
33795         * ubsan.c (ubsan_expand_bounds_ifn): Pass original index
33796         to ubsan_encode_value.
33797
33798 2017-04-13  Jeff Law  <law@redhat.com>
33799
33800         * reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs
33801         appearing in DEBUG_INSNs.
33802
33803 2017-04-13  Martin Liska  <mliska@suse.cz>
33804
33805         PR gcov-profile/80413
33806         * gcov-io.c (gcov_write_string): Copy to buffer just when
33807         allocated size is greater than zero.
33808
33809 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
33810
33811         PR debug/80321
33812         * dwarf2out.c (decls_for_scope): Ignore declarations of
33813         current_function_decl in BLOCK_NONLOCALIZED_VARS.
33814
33815 2017-04-12  Jan Hubicka  <hubicka@ucw.cz>
33816
33817         PR lto/69953
33818         * ipa-visibility.c (non_local_p): Fix typos.
33819         (localize_node): When localizing symbol in same comdat group,
33820         dissolve the group only when we know external symbols are going
33821         to be privatized.
33822         (function_and_variable_visibility): Do not localize DECL_EXTERNAL.
33823
33824 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33825
33826         PR tree-optimization/79390
33827         * optabs.c (emit_conditional_move): If the preferred op2/op3 operand
33828         order does not result in usable sequence, retry with reversed operand
33829         order.
33830
33831         PR sanitizer/80403
33832         PR sanitizer/80404
33833         PR sanitizer/80405
33834         * fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument
33835         to fold_build2_loc.  Convert TREE_OPERAND (tem, 0) to type.  Use
33836         op0 instead of fold_convert_loc (loc, type, arg0).
33837
33838 2017-04-12  Jeff Law  <law@redhat.com>
33839
33840         * genattrtab.c (write_eligible_delay): Verify DELAY_INSN still
33841         has a delay slot in the generated code.
33842
33843         * config/cris/cris.md (cris_preferred_reload_class): Return
33844         GENNONACR_REGS rather than GENERAL_REGS.
33845
33846 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33847
33848         PR c/80163
33849         * expr.c <CASE_CONVERT>: For EXPAND_INITIALIZER determine SIGN_EXTEND
33850         vs. ZERO_EXTEND based on signedness of treeop0's type rather than
33851         signedness of the result type.
33852
33853 2017-04-12  Richard Biener  <rguenther@suse.de>
33854             Jeff Law  <law@redhat.com>
33855
33856         PR tree-optimization/80359
33857         * tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not
33858         trim stores to TARGET_MEM_REFs.
33859
33860 2017-04-12  Richard Biener  <rguenther@suse.de>
33861
33862         PR tree-optimization/79390
33863         * gimple-ssa-split-paths.c (is_feasible_trace): Restrict
33864         threading case even more.
33865
33866 2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
33867
33868         PR target/80382
33869         * config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
33870         for quad_address_p for TImode, instead of just not indexed_address.
33871
33872 2017-04-12  Richard Biener  <rguenther@suse.de>
33873             Bernd Edlinger  <bernd.edlinger@hotmail.de>
33874
33875         PR middle-end/79671
33876         * alias.c (component_uses_parent_alias_set_from): Handle
33877         TYPE_TYPELESS_STORAGE.
33878         (get_alias_set): Likewise.
33879         * tree-core.h (tree_type_common): Add typeless_storage flag.
33880         * tree.h (TYPE_TYPELESS_STORAGE): New macro.
33881         * stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE
33882         for types containing members with TYPE_TYPELESS_STORAGE.
33883         (place_field): Likewise.
33884         (layout_type): Likewise for ARRAY_TYPE.
33885         * lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE.
33886         * tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream
33887         TYPE_TYPELESS_STORAGE.
33888         * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
33889
33890 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33891
33892         PR sanitizer/80349
33893         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
33894         first argument to type.
33895
33896 2017-04-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33897
33898         PR target/80376
33899         PR target/80315
33900         * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
33901         CONST0_RTX (mode) rather than const0_rtx where appropriate.
33902         (rs6000_expand_binop_builtin): Likewise.
33903         (rs6000_expand_ternop_builtin): Likewise; also add missing
33904         vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
33905         vshasigma built-ins.
33906         * doc/extend.texi: Document that vec_xxpermdi's third argument
33907         must be a constant.
33908
33909 2017-04-11  Uros Bizjak  <ubizjak@gmail.com>
33910
33911         * config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
33912         Use shift_const cost parameter when calculating gain of STV shifts.
33913
33914 2017-04-11  Vladimir Makarov  <vmakarov@redhat.com>
33915
33916         PR rtl-optimization/70478
33917         * lra-constraints.c (process_alt_operands): Check memory for
33918         disfavoring memory insn operand.
33919
33920 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
33921
33922         PR middle-end/80100
33923         * simplify-rtx.c (simplify_binary_operation_1) <case IOR>: Perform
33924         left shift in unsigned HOST_WIDE_INT type.
33925
33926         PR rtl-optimization/80385
33927         * simplify-rtx.c (simplify_unary_operation_1): Don't transform
33928         (not (neg X)) into (plus X -1) for complex or non-integral modes.
33929
33930         PR libgomp/80394
33931         * omp-low.c (scan_omp_task): Don't optimize away empty tasks
33932         if they have any depend clauses.
33933
33934 2017-04-11  Martin Liska  <mliska@suse.cz>
33935
33936         PR ipa/80212
33937         * cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
33938         * ipa-split.c (split_function): Create a local comdat symbol
33939         if caller is in a comdat group.
33940
33941 2017-04-11  Martin Liska  <mliska@suse.cz>
33942
33943         PR ipa/80212
33944         * ipa-cp.c (determine_versionability): Handle calls_comdat_local
33945         flags.
33946
33947 2017-04-11  Martin Sebor  <msebor@redhat.com>
33948
33949         PR middle-end/80364
33950         * gimple-ssa-sprintf.c (get_int_range): Remove second argument and
33951         always use the int type.  Use INTEGRAL_TYPE_P() rather than testing
33952         for INTEGER_TYPE.
33953         (directive::set_width, directive::set_precision, format_character):
33954         Adjust.
33955         (parse_directive): Use INTEGRAL_TYPE_P() rather than testing for
33956         INTEGER_TYPE.
33957
33958 2017-04-11  Richard Earnshaw  <rearnsha@arm.com>
33959
33960         PR target/80389
33961         * config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch
33962         conflict, set target->arch_name instead of target->cpu_name.
33963
33964 2017-04-11  Richard Biener  <rguenther@suse.de>
33965
33966         PR tree-optimization/80374
33967         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use
33968         build_zero_cst, remove fold_convertible_p check again.
33969
33970 2017-04-11  Martin Liska  <mliska@suse.cz>
33971
33972         PR sanitizer/70878
33973         * ubsan.c (instrument_object_size): Do not instrument register
33974         variables.
33975
33976 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
33977
33978         PR target/80381
33979         * config/i386/i386-builtin-types.def
33980         (V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT,
33981         V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT,
33982         V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT,
33983         V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT,
33984         V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT,
33985         V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT,
33986         V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT,
33987         V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT,
33988         V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT,
33989         V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT,
33990         V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT,
33991         V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT,
33992         V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT,
33993         V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT,
33994         V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT,
33995         V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT,
33996         V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT,
33997         V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases.
33998         * config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask,
33999         __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask,
34000         __builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask,
34001         __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask,
34002         __builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask,
34003         __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask,
34004         __builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask,
34005         __builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask,
34006         __builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask,
34007         __builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask,
34008         __builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask,
34009         __builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask,
34010         __builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask,
34011         __builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask,
34012         __builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask,
34013         __builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask,
34014         __builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask,
34015         __builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask,
34016         __builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask,
34017         __builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask,
34018         __builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask,
34019         __builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask,
34020         __builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask,
34021         __builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask,
34022         __builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask,
34023         __builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask,
34024         __builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask,
34025         __builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type
34026         aliases.
34027         * config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count
34028         flag to second_arg_count, handle 4 argument function type _COUNT
34029         aliases, handle second_arg_count on second argument rather than last.
34030
34031 2017-04-10  Jeff Law  <law@redhat.com>
34032
34033         PR tree-optimization/80374
34034         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
34035         record anything if we can not convert integer_zero_node to the
34036         desired type.
34037
34038 2017-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34039
34040         PR target/80108
34041         * config/rs6000/rs6000.c (rs6000_option_override_internal):
34042         Enhance special handling given to the TARGET_P9_MINMAX option in
34043         relation to certain other options.
34044
34045 2017-04-10  Bin Cheng  <bin.cheng@arm.com>
34046
34047         PR tree-optimization/80153
34048         * tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and
34049         remove POINTER_PLUS_EXPR's base part directly, rather than through
34050         aff_tree.
34051
34052 2017-04-10  Richard Biener  <rguenther@suse.de>
34053             Bin Cheng  <bin.cheng@arm.com>
34054
34055         PR tree-optimization/80153
34056         * tree-affine.c (aff_combination_to_tree): Get base pointer from
34057         the first element of pointer type aff_tree.  Build result expr in
34058         aff_tree's type.
34059         (add_elt_to_tree): Convert to type unconditionally.  Remove other
34060         fold_convert calls.
34061         * tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types.
34062         (rewrite_use_nonlinear_expr): Check invariant using iv information.
34063
34064 2017-04-10  Richard Biener  <rguenther@suse.de>
34065
34066         * tree-ssa-structalias.c (find_func_aliases): Properly handle
34067         asm inputs.
34068
34069 2017-04-10  Vladimir Makarov  <vmakarov@redhat.com>
34070
34071         PR rtl-optimization/70478
34072         * lra-constraints.c (curr_small_class_check): New.
34073         (update_and_check_small_class_inputs): New.
34074         (process_alt_operands): Update curr_small_class_check.  Disfavor
34075         alternative insn memory operands.  Check available regs for small
34076         class operands.
34077
34078 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
34079
34080         PR target/80057
34081         * config/mips/mips.opt (-mvirt): Update description.
34082         * doc/invoke.texi (-mvirt): Likewise.
34083
34084 2017-04-10  Richard Biener  <rguenther@suse.de>
34085
34086         PR middle-end/80362
34087         * fold-const.c (fold_binary_loc): Look at unstripped ops when
34088         looking for NEGATE_EXPR in -A / -B to A / B folding.
34089
34090 2017-04-10  Martin Liska  <mliska@suse.cz>
34091
34092         PR gcov-profile/80224
34093         * gcov.c (print_usage): Fix usage string.
34094         (get_gcov_intermediate_filename): Remove.
34095         (output_gcov_file): Use both for normal and intermediate format.
34096         (generate_results): Do not initialize special file for
34097         intermediate format.
34098
34099 2017-04-10  Richard Biener  <rguenther@suse.de>
34100
34101         PR tree-optimization/80304
34102         * tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse
34103         for safelen.
34104
34105 2017-04-10  Nathan Sidwell  <nathan@acm.org>
34106
34107         PR target/79905
34108         * config/rs6000/rs6000.c (rs6000_vector_type): New.
34109         (rs6000_init_builtins): Use it.
34110
34111 2016-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34112
34113         * config/arm/arm.md (<mrc>): Add mode to SET source.
34114         (<mrrc>): Likewise.
34115
34116 2017-04-10  Richard Biener  <rguenther@suse.de>
34117
34118         PR middle-end/80344
34119         * gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs.
34120
34121 2017-04-10  Jakub Jelinek  <jakub@redhat.com>
34122
34123         PR target/80324
34124         * config/i386/avx512fintrin.h (_mm512_reduce_add_epi32,
34125         _mm512_reduce_mul_epi32, _mm512_reduce_and_epi32,
34126         _mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32,
34127         _mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32,
34128         _mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32,
34129         _mm512_reduce_max_epi32, _mm512_reduce_min_epu32,
34130         _mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32,
34131         _mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32,
34132         _mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps,
34133         _mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps,
34134         _mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps,
34135         _mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps,
34136         _mm512_reduce_add_epi64, _mm512_reduce_mul_epi64,
34137         _mm512_reduce_and_epi64, _mm512_reduce_or_epi64,
34138         _mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64,
34139         _mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64,
34140         _mm512_reduce_min_epi64, _mm512_reduce_max_epi64,
34141         _mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64,
34142         _mm512_reduce_min_epu64, _mm512_reduce_max_epu64,
34143         _mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64,
34144         _mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd,
34145         _mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd,
34146         _mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics.
34147
34148 2017-04-08  Vladimir Makarov  <vmakarov@redhat.com>
34149
34150         PR rtl-optimization/70478
34151         * lra-constraints.c: Reverse the last patch.
34152
34153 2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
34154
34155         * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
34156         Add comment for WCHAR_T.
34157
34158 2017-04-08  Martin Liska  <mliska@suse.cz>
34159
34160         Revert:
34161         2017-04-07  Martin Liska  <mliska@suse.cz>
34162
34163         PR ipa/80212
34164         * ipa-split.c (split_function): Add function part to a same comdat
34165         group.
34166
34167 2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
34168
34169         PR target/80358
34170         * config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.
34171
34172 2017-04-07  Pat Haugen  <pthaugen@us.ibm.com>
34173
34174         * rs6000/rs6000.c (vec_load_pendulum): Rename...
34175         (vec_pairing): ...to this.
34176         (power9_sched_reorder2): Rewrite code for pairing vector/vecload insns.
34177         (rs6000_sched_init): Adjust for name change.
34178         (struct rs6000_sched_context): Likewise.
34179         (rs6000_init_sched_context): Likewise.
34180         (rs6000_set_sched_context): Likewise.
34181
34182 2017-04-07  Jakub Jelinek  <jakub@redhat.com>
34183
34184         PR target/80322
34185         PR target/80323
34186         PR target/80325
34187         PR target/80326
34188         * config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New
34189         intrinsics.
34190         * config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int,
34191         _mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd,
34192         _mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise.
34193
34194 2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
34195
34196         * config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE.
34197
34198 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
34199
34200         PR rtl-optimization/70703
34201         * ira-color.c (update_conflict_hard_regno_costs): Use
34202         int64_t instead of HOST_WIDE_INT.
34203
34204 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
34205
34206         PR rtl-optimization/70478
34207         * lra-constraints.c (process_alt_operands): Disfavor alternative
34208         insn memory operands.
34209
34210 2017-04-07  Jeff Law  <law@redhat.com>
34211
34212         * config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
34213         CALL and NOTE_INSN_CALL_ARG_LOCATION.
34214
34215 2017-04-07  Martin Liska  <mliska@suse.cz>
34216
34217         PR target/79889
34218         * config/aarch64/aarch64.c (aarch64_process_target_attr):
34219         Show error message instead of an ICE.
34220
34221 2017-04-07  Martin Liska  <mliska@suse.cz>
34222
34223         PR ipa/80212
34224         * ipa-split.c (split_function): Add function part to a same comdat
34225         group.
34226
34227 2017-04-07  Richard Biener  <rguenther@suse.de>
34228
34229         PR middle-end/80341
34230         * tree.c (get_unwidened): Also handle ! for_type case for
34231         INTEGER_CSTs.
34232         * convert.c (do_narrow): Split out from ...
34233         (convert_to_integer_1): ... here.  Do not pass final truncation
34234         type to get_unwidened for TRUNC_DIV_EXPR.
34235
34236 2017-04-07  Richard Biener  <rguenther@suse.de>
34237
34238         * tree-affine.c (wide_int_ext_for_comb): Take type rather
34239         than aff_tree.
34240         (aff_combination_const): Adjust.
34241         (aff_combination_scale): Likewise.
34242         (aff_combination_add_elt): Likewise.
34243         (aff_combination_add_cst): Likewise.
34244         (aff_combination_convert): Likewise.
34245         (add_elt_to_tree): Likewise.  Remove unused argument.
34246         (aff_combination_to_tree): Adjust calls to add_elt_to_tree.
34247
34248 2017-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
34249
34250         * config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default
34251         definition.
34252         * config/arm/arm.c (arm_default_short_enums): Use
34253         ARM_DEFAULT_SHORT_ENUMS.
34254         * config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define.
34255
34256 2017-04-06  Jakub Jelinek  <jakub@redhat.com>
34257
34258         PR debug/80234
34259         * dwarf2out.c (gen_member_die): Handle C++17 inline static data
34260         members with redundant out-of-class redeclaration.
34261
34262 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
34263
34264         PR target/80286
34265         * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern.
34266         * config/i386/i386.md (*zero_extendsidi2):
34267         Add (?*x,*x) and (?*v,*v) alternatives.
34268
34269 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
34270
34271         PR target/79733
34272         * config/i386/i386.c (ix86_expand_builtin)
34273         <case IX86_BUILTIN_K{,OR}TEST{C,Z}{8,16,32,64}>: Determine insn operand
34274         mode from insn data. Convert operands to insn operand mode.
34275         Copy operands that don't satisfy insn predicate to a register.
34276
34277 2017-04-06  Sam Thursfield  <sam.thursfield@codethink.co.uk>
34278
34279         * config/rs6000/x-aix: Increase memory limit for genautomata on AIX.
34280         Update comments.
34281
34282 2017-04-06  Richard Biener  <rguenther@suse.de>
34283
34284         PR tree-optimization/80334
34285         * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
34286         preserve alignment of accesses.
34287
34288 2017-04-06  Richard Biener  <rguenther@suse.de>
34289
34290         PR tree-optimization/80262
34291         * tree-sra.c (build_ref_for_offset): Preserve address-space
34292         information.
34293         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
34294         Drop useless address-space information on MEM_REF offsets.
34295
34296 2017-04-05  Andreas Schwab  <schwab@linux-m68k.org>
34297
34298         * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type.
34299
34300 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
34301
34302         PR rtl-optimization/70703
34303         * ira-color.c (update_conflict_hard_regno_costs): Use
34304         HOST_WIDE_INT instead of long.
34305
34306 2017-04-05  Uros Bizjak  <ubizjak@gmail.com>
34307
34308         PR target/80298
34309         * config/i386/mmintrin.h: Add -msse target option when __SSE__ is
34310         not defined for x86_64 target.  Add -mmmx target option when __SSE2__
34311         is not defined.
34312         * config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined
34313         for x86_64 target.  Handle -m3dnowa option.
34314
34315 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
34316
34317         PR rtl-optimization/70703
34318         * ira-color.c (update_costs_from_allocno): Use the smallest mode.
34319         (update_conflict_hard_regno_costs): Use long instead of unsigned
34320         arithmetic for cost calculation.
34321
34322 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
34323             Bernd Edlinger  <bernd.edlinger@hotmail.de>
34324
34325         PR sanitizer/80308
34326         * asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value
34327         for big endian.
34328
34329 2017-04-05  Eric Botcazou  <ebotcazou@adacore.com>
34330
34331         PR target/78002
34332         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace
34333         ptr_mode with Pmode throughout.
34334         * config/aarch64/aarch64.md (probe_stack_range_<PTR:mode): Rename
34335         into probe_stack_range and use DImode.
34336
34337 2017-04-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>
34338
34339         PR target/79890
34340         * config/s390/s390.c (s390_register_info_gprtofpr): Return if
34341         call_eh_return is true.
34342
34343 2017-04-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34344
34345         * config/s390/s390-c.c (s390_resolve_overloaded_builtin):
34346         Initialize last_match_fntype_index.
34347
34348 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
34349
34350         PR target/80310
34351         * tree-nvr.c: Include internal-fn.h.
34352         (pass_return_slot::execute): Ignore internal calls without
34353         direct optab.
34354
34355 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
34356             Richard Biener  <rguenther@suse.de>
34357
34358         PR c++/80297
34359         * genmatch.c (capture::gen_transform): For GENERIC unshare_expr
34360         captures used multiple times, except for the last use.
34361         * generic-match-head.c: Include gimplify.h.
34362
34363 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
34364
34365         PR tree-optimization/79390
34366         * target.h (struct noce_if_info): Declare.
34367         * targhooks.h (default_noce_conversion_profitable_p): Declare.
34368         * target.def (noce_conversion_profitable_p): New target hook.
34369         * ifcvt.h (struct noce_if_info): New type, moved from ...
34370         * ifcvt.c (struct noce_if_info): ... here.
34371         (noce_conversion_profitable_p): Renamed to ...
34372         (default_noce_conversion_profitable_p): ... this.  No longer
34373         static nor inline.
34374         (noce_try_store_flag_constants, noce_try_addcc,
34375         noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith,
34376         noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p
34377         instead of noce_conversion_profitable_p.
34378         * config/i386/i386.c: Include ifcvt.h.
34379         (ix86_option_override_internal): Don't override
34380         PARAM_MAX_RTL_IF_CONVERSION_INSNS default.
34381         (ix86_noce_conversion_profitable_p): New function.
34382         (TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine.
34383         * config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment.
34384         * doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add.
34385         * doc/tm.texi: Regenerated.
34386
34387 2017-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34388
34389         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar
34390         correction.
34391
34392 2017-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
34393
34394         PR target/80307
34395         * config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32
34396         instructions for small multiply cores.
34397
34398 2017-04-04  Jeff Law  <law@redhat.com>
34399
34400         * config/mips/mips.c (mips_multi_add): Zero initialize the newly
34401         added member.
34402         (mips_expand_vec_perm_const): Initialize elements in orig_perm
34403         that are not set by the loop over the elements.
34404
34405 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
34406
34407         PR target/80286
34408         * config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
34409         int mode, convert_modes it to mode as unsigned, otherwise use
34410         lowpart_subreg to mode rather than SImode.
34411         * config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
34412         ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
34413         Use DImode instead of SImode for the shift count operand.
34414         * config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
34415         Likewise.
34416
34417 2017-04-04  Richard Biener  <rguenther@suse.de>
34418
34419         PR middle-end/80281
34420         * match.pd (A + (-B) -> A - B): Make sure to preserve unsigned
34421         arithmetic done for the negate or the plus.  Simplify.
34422         (A - (-B) -> A + B): Likewise.
34423         * fold-const.c (split_tree): Make sure to not negate pointers.
34424
34425 2017-04-04  Segher Boessenkool  <segher@kernel.crashing.org>
34426
34427         PR rtl-optimization/60818
34428         * simplify-rtx.c (simplify_binary_operation_1): Do not replace
34429         a compare of comparisons with the thing compared if this results
34430         in a different machine mode.
34431
34432 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
34433
34434         * alias.c (base_alias_check): Fix typo in comment.
34435         * cgraph.h (class ipa_polymorphic_call_context): Likewise.
34436         * cgraphunit.c (symbol_table::compile): Likewise.
34437         * collect2.c (maybe_run_lto_and_relink): Likewise.
34438         * config/arm/arm.c (arm_thumb1_mi_thunk): Likewise.
34439         * config/avr/avr-arch.h (avr_arch_info_t): Likewise.
34440         * config/avr/avr.c (avr_map_op_t): Likewise.
34441         * config/cr16/cr16.h (DATA_ALIGNMENT): Likewise.
34442         * config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise.
34443         * config/epiphany/epiphany.md (movcc): Likewise.
34444         * config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise.
34445         * config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue):
34446         Likewise.
34447         * config/mips/mips.c (mips_save_restore_reg): Likewise.
34448         * config/rx/rx.c (rx_is_restricted_memory_address): Likewise.
34449         * config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise.
34450         * config/sh/sh.c (sh_rtx_costs): Likewise.
34451         * fold-const.c (fold_truth_andor): Likewise.
34452         * genautomata.c (collapse_flag): Likewise.
34453         * gengtype.h (struct type::u::s): Likewise.
34454         * gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise.
34455         * input.c (FORMAT_AMOUNT): Likewise.
34456         * ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector)
34457         (known_aggs_to_agg_replacement_list): Likewise.
34458         * ipa-inline-analysis.c: Likewise.
34459         * ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise.
34460         * ipa-polymorphic-call.c
34461         (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
34462         * loop-unroll.c (analyze_insn_to_expand_var): Likewise.
34463         * lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos):
34464         Likewise.
34465         * modulo-sched.c (apply_reg_moves): Likewise.
34466         * omp-expand.c (build_omp_regions_1): Likewise.
34467         * trans-mem.c (struct tm_wrapper_hasher): Likewise.
34468         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise.
34469         * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise.
34470         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
34471         * value-prof.c: Likewise.
34472         * var-tracking.c (val_reset): Likewise.
34473
34474 2017-04-03  Richard Biener  <rguenther@suse.de>
34475
34476         PR tree-optimization/80275
34477         * fold-const.c (split_address_to_core_and_offset): Handle
34478         POINTER_PLUS_EXPR.
34479
34480 2017-04-03  Eric Botcazou  <ebotcazou@adacore.com>
34481
34482         * tree-nested.c (get_descriptor_type): Make sure that the alignment of
34483         descriptors is at least equal to that of functions.
34484
34485 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
34486
34487         * config/i386/sse.md (movdi_to_sse): Add missing DONE.
34488
34489 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
34490
34491         PR target/80250
34492         * config/i386/sse.md (mov<IMOD4:mode>): Remove insn pattern.
34493         (mov<IMOD4:mode>): New expander.
34494         (*mov<IMOD4:mode>_internal): New insn and split pattern.
34495
34496 2017-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
34497
34498         PR rtl-optimization/79405
34499         * fwprop.c (propagations_left): New variable.
34500         (forward_propagate_into): Decrement it.
34501         (fwprop_init): Initialize it.
34502         (fw_prop): If the variable has reached zero, stop propagating.
34503         (fwprop_addr): Ditto.
34504
34505 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
34506
34507         PR debug/79255
34508         * dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
34509         a FUNCTION_DECL, pass it as decl instead of origin to
34510         process_scope_var.
34511
34512 2017-03-31  Alexander Monakov  <amonakov@ispras.ru>
34513
34514         * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format
34515         string.
34516
34517 2017-03-31  Pat Haugen  <pthaugen@us.ibm.com>
34518
34519         PR target/80107
34520         * config/rs6000/rs6000.md (extendhi<mode>2): Add test for
34521         TARGET_VSX_SMALL_INTEGER.
34522
34523 2017-03-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34524
34525         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
34526         reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.
34527
34528 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
34529
34530         * config/mips/mips-msa.md (msa_vec_extract_<msafmt_f>): Update
34531         extraction from odd-numbered MSA register.
34532
34533 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
34534
34535         PR middle-end/80173
34536         * expmed.c (store_bit_field_1): Don't attempt to create
34537         a word subreg out of hard registers wider than word if they
34538         have HARD_REGNO_NREGS of 1 for their mode.
34539
34540         PR middle-end/80163
34541         * varasm.c (initializer_constant_valid_p_1): Disallow sign-extending
34542         conversions to integer types wider than word and pointer.
34543
34544         PR debug/80025
34545         * cselib.h (rtx_equal_for_cselib_1): Add depth argument.
34546         (rtx_equal_for_cselib_p): Pass 0 to it.
34547         * cselib.c (cselib_hasher::equal): Likewise.
34548         (rtx_equal_for_cselib_1): Add depth argument.  If depth
34549         is 128, don't look up VALUE locs and punt.  Increment
34550         depth in recursive calls when walking VALUE locs.
34551
34552 2017-03-31  Bernd Edlinger  <bernd.edlinger@hotmail.de>
34553
34554         * gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
34555         (make_gcov_file_name): Use the canonical path name for generating
34556         the MD5 value.
34557         (read_line): Fix handling of files with ascii null bytes.
34558
34559 2017-03-30  Matthew Fortune  <matthew.fortune@imgtec.com>
34560
34561         * config/mips/mips.c (mips_expand_vector_init): Create a const_vector
34562         to initialise a vector register instead
34563         of using a const_int.
34564
34565 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
34566
34567         PR translation/80189
34568         * gimplify.c (omp_default_clause): Use %qs instead of %s in
34569         diagnostic messages.
34570
34571 2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
34572
34573         PR target/80246
34574         * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
34575         (dfp_diex_<mode>): Update mode of operand 1.
34576         * doc/extend.texi (dxex, dxexq): Document change to return type.
34577         (diex, diexq): Document change to argument type.
34578
34579 2017-03-30  Martin Jambor  <mjambor@suse.cz>
34580
34581         PR ipa/77333
34582         * cgraph.h (cgraph_build_function_type_skip_args): Declare.
34583         * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
34584         it reflects the signature changes performed at the callee side.
34585         * cgraphclones.c (build_function_type_skip_args): Make public, renamed
34586         to cgraph_build_function_type_skip_args.
34587         (build_function_decl_skip_args): Adjust call to the above function.
34588
34589 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
34590
34591         PR target/80206
34592         * config/i386/sse.md
34593         (<extract_type>_vextract<shuffletype><extract_suf>_mask): Use
34594         register as dest whenever it is a MEM not rtx_equal_p to the
34595         corresponding dup operand, and when forcing into reg move the
34596         reg into the memory afterwards.
34597         (<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask):
34598         Likewise.  Use <ssehalfvecmode> instead of <ssequartermode>
34599         for the force_reg mode.
34600         (avx512vl_vextractf128<mode>): Use register as dest either
34601         always when a MEM, or when it is a MEM not rtx_equal_p to the
34602         corresponding dup operand, or even not when it is a CONST_VECTOR
34603         depending on the mode and lo vs. hi.
34604         (avx512dq_vextract<shuffletype>64x2_1_maskm): Remove extraneous
34605         parens.
34606         (avx512f_vextract<shuffletype>32x4_1_maskm): Likewise.
34607         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>):
34608         Likewise.  Require that operands[2] is even.
34609         (<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>):
34610         Remove extraneous parens.  Require that operands[2] is a multiple
34611         of 4.
34612         (vec_extract_lo_<mode><mask_name>): Don't bother testing if
34613         operands[0] is a MEM if <mask_applied>, the predicates/constraints
34614         disallow memory then.
34615
34616 2017-03-30  Richard Biener  <rguenther@suse.de>
34617
34618         PR tree-optimization/77498
34619         * tree-ssa-pre.c (phi_translate_1): Do not allow simplifications
34620         to non-constants over backedges.
34621
34622 2017-03-29  Segher Boessenkool  <segher@kernel.crashing.org>
34623
34624         PR rtl-optimization/80233
34625         * combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns
34626         as last_combined_insn.  Do not test for BARRIER_P separately.
34627
34628 2017-03-29  Andreas Schwab  <schwab@suse.de>
34629
34630         PR ada/80146
34631         * calls.c (prepare_call_address): Convert funexp to Pmode before
34632         copying to temp reg.
34633
34634 2017-03-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34635
34636         PR tree-optimization/80158
34637         * gimple-ssa-strength-reduction.c (replace_mult_candidate):
34638         Handle possible future case of more than one alternate
34639         interpretation.
34640         (replace_rhs_if_not_dup): Likewise.
34641         (replace_one_candidate): Likewise.
34642
34643 2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>
34644
34645         PR rtl-optimization/80193
34646         * ira.c (ira): Do not check allocation for LRA.
34647
34648 2017-03-28  Alexander Monakov  <amonakov@ispras.ru>
34649
34650         * config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare.
34651         (nvptx_output_simt_exit): Declare.
34652         * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
34653         cfun->machine->unisimt_location.  Handle NULL unisimt_predicate.
34654         (init_softstack_frame): Move initialization of crtl->is_leaf to...
34655         (nvptx_declare_function_name): ...here.  Emit declaration of local
34656         memory space buffer for omp_simt_enter insn.
34657         (nvptx_output_unisimt_switch): New.
34658         (nvptx_output_softstack_switch): New.
34659         (nvptx_output_simt_enter): New.
34660         (nvptx_output_simt_exit): New.
34661         * config/nvptx/nvptx.h (struct machine_function): New fields
34662         has_simtreg, unisimt_location, simt_stack_size, simt_stack_align.
34663         * config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec.
34664         (UNSPECV_SIMT_EXIT): Ditto.
34665         (omp_simt_enter_insn): New insn.
34666         (omp_simt_enter): New expansion.
34667         (omp_simt_exit): New insn.
34668         * config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option.
34669
34670         * internal-fn.c (expand_GOMP_SIMT_ENTER): New.
34671         (expand_GOMP_SIMT_ENTER_ALLOC): New.
34672         (expand_GOMP_SIMT_EXIT): New.
34673         * internal-fn.def (GOMP_SIMT_ENTER): New internal function.
34674         (GOMP_SIMT_ENTER_ALLOC): Ditto.
34675         (GOMP_SIMT_EXIT): Ditto.
34676         * target-insns.def (omp_simt_enter): New insn.
34677         (omp_simt_exit): Ditto.
34678         * omp-low.c (struct omplow_simd_context): New fields simt_eargs,
34679         simt_dlist.
34680         (lower_rec_simd_input_clauses): Implement SIMT privatization.
34681         (lower_rec_input_clauses): Likewise.
34682         (lower_lastprivate_clauses): Handle SIMT privatization.
34683
34684         * omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h.
34685         (ompdevlow_adjust_simt_enter): New.
34686         (find_simtpriv_var_op): New.
34687         (execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER,
34688         IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT.
34689
34690         * tree-inline.h (struct copy_body_data): New field dst_simt_vars.
34691         * tree-inline.c (expand_call_inline): Handle SIMT privatization.
34692         (copy_decl_for_dup_finish): Ditto.
34693
34694         * tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER.
34695
34696 2017-03-28  Uros Bizjak  <ubizjak@gmail.com>
34697
34698         PR target/53383
34699         * config/i386/i386.c (ix86_option_override_internal): Always
34700         allow -mpreferred-stack-boundary=3 for 64-bit targets.
34701
34702 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
34703
34704         * tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop.
34705
34706 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
34707
34708         * tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and
34709         mark new edge's irreducible flag accordign to it.
34710         (vect_do_peeling): Check loop preheader edge's irreducible flag
34711         and pass it to function slpeel_add_loop_guard.
34712
34713 2017-03-28  Richard Sandiford  <richard.sandiford@arm.com>
34714
34715         PR tree-optimization/80218
34716         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
34717         Update block frequencies and counts.
34718
34719 2017-03-28  Richard Biener  <rguenther@suse.de>
34720
34721         PR tree-optimization/78644
34722         * tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
34723         of a simplification result we may not use it at all.
34724
34725 2017-03-28  Richard Biener  <rguenther@suse.de>
34726
34727         PR ipa/80205
34728         * tree-inline.c (copy_phis_for_bb): Do not create PHI node
34729         without arguments, generate default definition of a SSA name.
34730
34731 2017-03-28  Richard Biener  <rguenther@suse.de>
34732
34733         PR middle-end/80222
34734         * gimple-fold.c (gimple_fold_indirect_ref): Do not touch
34735         TYPE_REF_CAN_ALIAS_ALL references.
34736         * fold-const.c (fold_indirect_ref_1): Likewise.
34737
34738 2017-03-28  Martin Liska  <mliska@suse.cz>
34739
34740         PR ipa/80104
34741         * cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
34742         thunk call as DECL_GIMPLE_REG_P when vector or complex type.
34743
34744 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
34745             Thomas Petazzoni  <thomas.petazzoni@free-electrons.com>
34746
34747         * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec.
34748         (EXTRA_SPECS): Define.
34749         (SUBTARGET_EXTRA_SPECS): Likewise.
34750         (SUBTARGET_CPP_SPEC): Likewise.
34751         * config/arc/elf.h (EXTRA_SPECS): Renamed to
34752         SUBTARGET_EXTRA_SPECS.
34753         * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define.
34754
34755 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
34756
34757         * config/arc/simdext.md (vst64_insn): Update pattern.
34758         (vld32wh_insn): Likewise.
34759         (vld32wl_insn): Likewise.
34760         (vld64_insn): Likewise.
34761         (vld32_insn): Likewise.
34762
34763 2017-03-28  Marek Polacek  <polacek@redhat.com>
34764
34765         PR sanitizer/80067
34766         * fold-const.c (fold_comparison): Use protected_set_expr_location
34767         instead of SET_EXPR_LOCATION.
34768
34769 2017-03-28  Markus Trippelsdorf  <markus@trippelsdorf.de>
34770
34771         * tree.c (add_expr): Avoid name lookup warning.
34772
34773 2017-03-27  Jeff Law  <law@redhat.com>
34774
34775         PR tree-optimization/80216
34776         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in
34777         function name.  Limit recursion depth.
34778         (record_temporary_equivalences): Corresponding changes.
34779
34780 2017-03-27  Jonathan Wakely  <jwakely@redhat.com>
34781
34782         * doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is
34783         covered first.
34784
34785 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
34786
34787         PR target/80102
34788         * reg-notes.def (REG_CFA_NOTE): Define.  Use it for CFA related
34789         notes.
34790         * cfgcleanup.c (reg_note_cfa_p): New array.
34791         (insns_have_identical_cfa_notes): New function.
34792         (old_insns_match_p): Don't cross-jump in between /f
34793         and non-/f instructions.  If both i1 and i2 are frame related,
34794         verify all CFA notes, their order and content.
34795
34796 2017-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
34797
34798         PR target/78543
34799         * config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
34800         HImode and SImode with zero extend to DImode to one insn.
34801         (bswap<mode>2_extenddi): Likewise.
34802         (bswapsi2_extenddi): Likewise.
34803         (bswaphi2_extendsi): Likewise.
34804         (bswaphi2): Combine bswap HImode and SImode into one insn.
34805         Separate memory insns from swapping register.
34806         (bswapsi2): Likewise.
34807         (bswap<mode>2): Likewise.
34808         (bswaphi2_internal): Delete, no longer used.
34809         (bswapsi2_internal): Likewise.
34810         (bswap<mode>2_load): Split bswap HImode/SImode into separate load,
34811         store, and gpr<-gpr swap insns.
34812         (bswap<mode>2_store): Likewise.
34813         (bswaphi2_reg): Register only splitter, combine with the splitter.
34814         (bswaphi2 splitter): Likewise.
34815         (bswapsi2_reg): Likewise.
34816         (bswapsi2 splitter): Likewise.
34817         (bswapdi2): If we have the LDBRX and STDBRX instructions, split
34818         the insns into load, store, and register/register insns.
34819         (bswapdi2_ldbrx): Likewise.
34820         (bswapdi2_load): Likewise.
34821         (bswapdi2_store): Likewise.
34822         (bswapdi2_reg): Likewise.
34823
34824 2017-03-27  Gunther Nikl  <gnikl@users.sourceforge.net>
34825
34826         * system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case.
34827         (HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise.
34828
34829 2017-03-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34830
34831         PR target/80103
34832         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and
34833         add comments.
34834         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
34835         special handling for target option conflicts between dform
34836         options (-mpower9-dform, -mpower9-dform-vector,
34837         -mpower9-dform-scalar) and -mno-direct-move.
34838
34839 2017-03-27  Richard Biener  <rguenther@suse.de>
34840
34841         PR tree-optimization/80181
34842         * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
34843
34844 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34845
34846         * config/arc/predicates.md (move_double_src_operand): Replace the
34847         call to move_double_src_operand with a call to address_operand.
34848
34849 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34850
34851         * config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
34852         * config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise.
34853         * config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT.
34854
34855 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34856
34857         * config/arc/predicates.md (long_immediate_loadstore_operand):
34858         Consider scaled addresses cases.
34859
34860 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34861
34862         * config/arc/arc.c (arc_epilogue_uses): BLINK should be also
34863         restored when in interrupt.
34864         * config/arc/arc.md (simple_return): ARCv2 rtie instruction
34865         doesn't have delay slot.
34866
34867 2017-03-27  Richard Biener  <rguenther@suse.de>
34868
34869         PR ipa/79776
34870         * tree-ssa-structalias.c (associate_varinfo_to_alias): Skip
34871         inlined thunk clones.
34872
34873 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
34874
34875         PR sanitizer/80168
34876         * asan.c (instrument_derefs): Copy over last operand from
34877         original COMPONENT_REF to the new COMPONENT_REF with
34878         DECL_BIT_FIELD_REPRESENTATIVE.
34879         * ubsan.c (instrument_object_size): Likewise.
34880
34881 2017-03-27  Richard Biener  <rguenther@suse.de>
34882
34883         PR tree-optimization/80170
34884         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
34885         sure DR/SCEV didnt fold in constants we do not see when looking
34886         at the reference base alignment.
34887
34888 2017-03-27  Richard Biener  <rguenther@suse.de>
34889
34890         PR middle-end/80171
34891         * gimple-fold.c (fold_ctor_reference): Properly guard against
34892         NULL return value from canonicalize_constructor_val.
34893
34894 2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
34895
34896         PR target/80180
34897         * config/i386/i386.c (ix86_expand_builtin)
34898         <IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
34899         flags reg setting and flags reg using instructions.
34900         <IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
34901         clobbering instructions to zero extend op2.
34902
34903 2017-03-25  Gerald Pfeifer  <gerald@pfeifer.com>
34904
34905         * doc/install.texi (Configuration) <--with-aix-soname>:
34906         Update link to AIX ld.
34907
34908 2017-03-25  Bernd Schmidt  <bschmidt@redhat.com>
34909
34910         PR rtl-optimization/80160
34911         PR rtl-optimization/80159
34912         * lra-assigns.c (must_not_spill_p): Tighten new test to also take
34913         reg_alternate_class into account.
34914
34915 2017-03-24  Vladimir Makarov  <vmakarov@redhat.com>
34916
34917         PR target/80148
34918         * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos
34919         to consider in curr_insn_transform.
34920
34921 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
34922
34923         * genrecog.c (validate_pattern): Add VEC_SELECT validation.
34924         * genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits
34925         and emit_mode_inner.
34926
34927 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34928
34929         * config/s390/s390-builtins.def: Add VXE builtins.  Add a flags
34930         argument to the overloaded builtin variants.  Use the new flag to
34931         deprecate certain builtin variants.
34932         * config/s390/s390-builtin-types.def: Add new builtin types.
34933         * config/s390/s390-builtins.h: Support new flags field for
34934         overloaded builtins.
34935         * config/s390/s390-c.c (OB_DEF_VAR): New flags field.
34936         (s390_macro_to_expand): Enable vector float data type.
34937         (s390_cpu_cpp_builtins_internal): Indicate support of the new
34938         builtins by incrementing the __VEC__ version number.
34939         (s390_expand_overloaded_builtin): Support expansion of vec_xl and
34940         vec_xst.
34941         (s390_resolve_overloaded_builtin): Emit error messages depending
34942         on the builtin flags.
34943         * config/s390/s390.c (s390_expand_builtin): Support additional
34944         flags argument.  Change error message to match the messages
34945         emitted in s390-c.c.
34946         * config/s390/s390.md: New UNSPEC_* constants.
34947         (op_type): Add new instruction types.
34948         * config/s390/vecintrin.h: Add new builtins and test data class
34949         constants.
34950         * config/s390/vx-builtins.md (V_HW_32_64): Add V4SF.
34951         (V_HW_4, VEC_HW, VECF_HW): New mode iterators.
34952         (VEC_INEXACT, VEC_NOINEXACT): New constants.
34953         ("vec_splats<mode>", "vec_insert<mode>", "vec_promote<mode>")
34954         ("vec_insert_and_zero<mode>", "vec_mergeh<mode>")
34955         ("vec_mergel<mode>"): V_HW -> VEC_HW.
34956
34957         ("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di")
34958         ("vmslg", "*vftci<mode>_cconly", "vftci<mode>_intcconly")
34959         ("*vftci<mode>", "vftci<mode>_intcc", "vec_double_s64")
34960         ("vec_double_u64", "vfmin<mode>", "vfmax<mode>"): New definition.
34961
34962         ("and_av2df3", "and_cv2df3", "vec_andc_av2df3")
34963         ("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3")
34964         ("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs")
34965         ("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition.
34966
34967         ("vec_all_<fpcmpcc:code>v2df", "vec_any_<fpcmpcc:code>v2df")
34968         ("vec_scatter_elementv4si_DI", "vec_cmp<fpcmp:code>v2df")
34969         ("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64")
34970         ("vfidb", "*vldeb", "*vledb", "*vec_cmp<insn_cmp>v2df_cconly")
34971         ("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc")
34972         ("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc")
34973         ("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ...
34974
34975         ("vec_all_<fpcmpcc:code><mode>", "vec_any_<fpcmpcc:code><mode>")
34976         ("vec_scatter_element<V_HW_4:mode>_DI")
34977         ("vec_cmp<fpcmp:code><mode>", "vcdgb", "vcdlgb", "vclgdb")
34978         ("vec_fpint<mode>", "vflls")
34979         ("vflrd", "*vec_cmp<insn_cmp><mode>_cconly", "vec_cmpeq<mode>_cc")
34980         ("vec_cmpeq<mode>_cc", "vec_cmph<mode>_cc", "vec_cmphe<mode>_cc")
34981         ("*vec_cmpeq<mode>_cc", "*vec_cmph<mode>_cc")
34982         ("*vec_cmphe<mode>_cc"): ... these.
34983
34984         ("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding
34985         mode constant instead of magic value.
34986
34987 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34988
34989         * config/s390/s390.c (s390_expand_vec_compare): Support other
34990         vector floating point modes than just V2DF.
34991         (s390_expand_vcond): Likewise.
34992         (s390_hard_regno_mode_ok): Allow SFmode values in VRs.
34993         (s390_cannot_change_mode_class): Prevent mode changes between TF
34994         and V1TF in vector registers.
34995         * config/s390/s390.md (DF, SF): New mode attributes.
34996         ("*cmp<mode>_ccs", "add<mode>3", "sub<mode>3", "mul<mode>3")
34997         ("fma<mode>4", "fms<mode>4", "div<mode>3", "*neg<mode>2"): Add
34998         SFmode support for VRs.
34999         * config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new
35000         vector fp modes.
35001         (VFT, VF_HW): New mode iterators.
35002         (vw, sdx): New mode attributes.
35003         ("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2")
35004         ("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2")
35005         ("smaxv2df3", "sminv2df3", "*vec_cmp<VFCMP_HW_OP:code>v2df_nocc")
35006         ("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df")
35007         ("vec_unorderedv2df"): Adjust the v2df only patterns to support
35008         also the new vector floating point modes.  Renaming to ...
35009
35010         ("add<mode>3", "sub<mode>3", "mul<mode>3", "div<mode>3")
35011         ("sqrt<mode>2", "fma<mode>4", "fms<mode>4", "neg<mode>2")
35012         ("abs<mode>2", "negabs<mode>2", "smax<mode>3")
35013         ("smin<mode>3", "*vec_cmp<VFCMP_HW_OP:code><mode>_nocc")
35014         ("vec_cmpuneq<mode>", "vec_cmpltgt<mode>", "vec_ordered<mode>")
35015         ("vec_unordered<mode>"): ... these.
35016
35017         ("neg_fma<mode>4", "neg_fms<mode>4", "*smax<mode>3_vxe")
35018         ("*smin<mode>3_vxe", "*sminv2df3_vx", "*vec_extendv4sf")
35019         ("*vec_extendv2df"): New insn definitions.
35020
35021 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35022
35023         * config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3")
35024         ("mulditi3_2", "*muldi3_sign"): New patterns.
35025         ("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and
35026         rename the pattern definition.
35027
35028 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35029
35030         * config/s390/s390.md ("indirect_jump"): Turn insn definition into
35031         expander.
35032         ("*indirect_jump", "*indirect2_jump"): New pattern definitions.
35033
35034 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35035
35036         * config/s390/s390.c (s390_expand_vec_init): Use vllezl
35037         instruction if possible.
35038         * config/s390/vector.md (vec_halfnumelts): New mode
35039         attribute.
35040         ("*vec_vllezlf<mode>"): New pattern.
35041
35042 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35043
35044         * config/s390/vector.md ("popcountv16qi2", "popcountv8hi2")
35045         ("popcountv4si2", "popcountv2di2"): Rename to ...
35046         ("popcount<mode>2", "popcountv8hi2_vx", "popcountv4si2_vx")
35047         ("popcountv2di2_vx"): ... these and add !TARGET_VXE to the
35048         condition.
35049         ("popcount<mode>2_vxe"): New pattern.
35050
35051 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35052
35053         * common/config/s390/s390-common.c (processor_flags_table): Add
35054         arch12.
35055         * config.gcc: Add arch12.
35056         * config/s390/driver-native.c (s390_host_detect_local_cpu):
35057         Default to arch12 for unknown CPU model numbers.
35058         * config/s390/s390-builtins.def: Add B_VXE builtin flag.
35059         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust
35060         PROCESSOR_max sanity check.
35061         * config/s390/s390-opts.h (enum processor_type): Add
35062         PROCESSOR_ARCH12.
35063         * config/s390/s390.c (processor_table): Add arch12.
35064         (s390_expand_builtin): Add check for B_VXE flag.
35065         (s390_issue_rate): Add PROCESSOR_ARCH12.
35066         (s390_get_sched_attrmask): Likewise.
35067         (s390_get_unit_mask): Likewise.
35068         (s390_sched_score): Enable z13 scheduling for arch12.
35069         (s390_sched_reorder): Likewise.
35070         (s390_sched_variable_issue): Likewise.
35071         * config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and
35072         PF_VXE.
35073         (s390_tune_attr): Use z13 scheduling also for arch12.
35074         (TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE)
35075         (TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE)
35076         (TARGET_VXE_P): New macros.
35077         * config/s390/s390.md: Add arch12 to cpu attribute.  Add arch12
35078         and vxe to cpu_facility.  Add arch12 and vxe to enabled attribute.
35079         * config/s390/s390.opt: Add arch12 as processor_type.
35080
35081 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35082
35083         * config/s390/s390.md
35084         ("fixuns_truncdddi2", "fixuns_trunctddi2")
35085         ("fixuns_trunc<BFP:mode><GPR:mode>2"): Merge into ...
35086         ("fixuns_trunc<FP:mode><GPR:mode>2"): New expander.
35087
35088         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fixuns_trunc<mode>si2"):
35089         Rename expanders to ...
35090
35091         ("fixuns_trunc<BFP:mode><GPR:mode>2_emu")
35092         ("fixuns_truncdddi2_emu"): ... these.
35093
35094         ("fixuns_trunc<mode>si2_emu"): New expander.
35095
35096         ("*fixuns_truncdfdi2_z13"): Rename to ...
35097         ("*fixuns_truncdfdi2_vx"): ... this.
35098
35099 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35100
35101         * config/s390/2964.md: Remove the single element vector compare
35102         instructions which are no longer used.
35103         * config/s390/s390.c (s390_select_ccmode): Remove handling of
35104         vector CCmodes.
35105         (s390_canonicalize_comparison): Remove handling of DFmode
35106         compares.
35107         (s390_expand_vec_compare_scalar): Remove function.
35108         (s390_emit_compare): Don't call s390_expand_vec_compare_scalar.
35109         * config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly"): Remove
35110         pattern.
35111         ("*cmp<mode>_ccs"): Add wfcdb instruction.
35112
35113 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35114
35115         * config/s390/s390.md ("mov<mode>_64dfp" DD_DF): Use vleig for loading a
35116         FP zero.
35117         ("*mov<mode>_64" DD_DF): Remove the vector instructions. These
35118         will anyway by matched by mov<mode>_64dfp.
35119
35120 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35121
35122         * config/s390/s390.md ("mov<mode>" SD_SF): Change vleg/vsteg to
35123         vlef/vstef.  Add missing operand to vleif.
35124
35125 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35126
35127         * config/s390/s390.c (s390_expand_vec_init): Enable vector load
35128         pair for all vector types with 64 bit elements.
35129         * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ...
35130         * config/s390/vector.md (V_HW_64): ... here.
35131         (V_128_NOSINGLE): New mode iterator.
35132         ("vec_init<V_HW:mode>"): Use V_128 as mode iterator.
35133         ("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator.
35134         ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions.
35135         ("*vec_load_pairv2di"): Change to ...
35136         ("*vec_load_pair<mode>"): ... this one.
35137
35138 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35139
35140         * config/s390/constraints.md: Add comments.
35141         (jKK): Reject element sizes > 8 bytes.
35142         * config/s390/s390.c (s390_split_ok_p): Enable splitting also for
35143         s_operands.
35144         * config/s390/s390.md: Add the s_operand checks formerly in
35145         s390_split_ok_p to various splitters where they are still
35146         required.
35147         * config/s390/vector.md ("mov<mode>" V_128): Add GPR alternatives
35148         for 128 bit vectors.  Plus two splitters.
35149
35150 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35151
35152         * config/s390/s390.md: Rename the cpu facilty vec to vx throughout
35153         the file.
35154
35155 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35156
35157         PR target/79893
35158         * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
35159         error if the boundary argument is not constant.
35160
35161 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
35162
35163         PR rtl-optimization/80112
35164         * loop-doloop.c (doloop_condition_get): Don't check condition
35165         if cmp isn't SET with IF_THEN_ELSE src.
35166
35167 2017-03-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35168
35169         PR tree-optimization/80158
35170         * gimple-ssa-strength-reduction.c (replace_mult_candidate): When
35171         replacing a candidate statement, also replace it for the
35172         candidate's alternate interpretation.
35173         (replace_rhs_if_not_dup): Likewise.
35174         (replace_one_candidate): Likewise.
35175
35176 2017-03-24  Richard Biener  <rguenther@suse.de>
35177
35178         PR tree-optimization/80167
35179         * graphite-isl-ast-to-gimple.c
35180         (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
35181         properly.
35182         (translate_isl_ast_to_gimple::get_rename): Likewise.
35183
35184 2017-03-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35185
35186         * config/rs6000/rs6000.c (rs6000_option_override_internal): Change
35187         handling of certain combinations of target options, including the
35188         combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs.
35189         -mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.
35190
35191 2017-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35192
35193         PR target/71436
35194         * config/arm/arm.md (*load_multiple): Add reload_completed to
35195         matching condition.
35196
35197 2017-03-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35198             Richard Biener  <rguenth@suse.de>
35199
35200         PR tree-optimization/79908
35201         PR tree-optimization/80136
35202         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
35203         been cast away, gimplify_and_add suffices.
35204
35205 2017-03-23  Markus Trippelsdorf  <markus@trippelsdorf.de>
35206
35207         * tree-vrp.c (identify_jump_threads): Delete avail_exprs.
35208
35209 2017-03-23  Richard Biener  <rguenther@suse.de>
35210
35211         PR tree-optimization/80032
35212         * gimplify.c (gimple_push_cleanup): Forced unconditional
35213         cleanups still have to go to the conditional_cleanups
35214         sequence.
35215
35216 2017-03-22  Jakub Jelinek  <jakub@redhat.com>
35217
35218         PR tree-optimization/80072
35219         * tree-ssa-reassoc.c (struct operand_entry): Change id field type
35220         to unsigned int.
35221         (next_operand_entry_id): Change type to unsigned int.
35222         (sort_by_operand_rank): Make sure to return the right return value
35223         even if unsigned fields are bigger than INT_MAX.
35224         (struct oecount): Change cnt and id type to unsigned int.
35225         (oecount_hasher::equal): Formatting fix.
35226         (oecount_cmp): Make sure to return the right return value
35227         even if unsigned fields are bigger than INT_MAX.
35228         (undistribute_ops_list): Change next_oecount_id type to unsigned int.
35229
35230         PR c++/80129
35231         * gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
35232         TREE_READONLY on result if writing it more than once.
35233
35234         PR sanitizer/80110
35235         * doc/invoke.texi (-fsanitize=thread): Document that with
35236         -fnon-call-exceptions atomics are not able to throw
35237         exceptions.
35238
35239         PR sanitizer/80110
35240         * tsan.c: Include tree-eh.h.
35241         (instrument_builtin_call): Call maybe_clean_eh_stmt or
35242         maybe_clean_or_replace_eh_stmt where needed.
35243         (instrument_memory_accesses): Add cfg_changed argument.
35244         Call gimple_purge_dead_eh_edges on each block and set *cfg_changed
35245         if it returned true.
35246         (tsan_pass): Adjust caller.  Return TODO_cleanup_cfg if cfg_changed.
35247
35248         PR rtl-optimization/63191
35249         * config/i386/i386.c (ix86_delegitimize_address): Turn into small
35250         wrapper function, moved the whole old content into ...
35251         (ix86_delegitimize_address_1): ... this.  New inline function.
35252         (ix86_find_base_term): Use ix86_delegitimize_address_1 with
35253         true as last argument instead of ix86_delegitimize_address.
35254
35255 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
35256
35257         * config/aarch64/aarch64.c (generic_branch_cost): Copy
35258         cortexa57_branch_cost.
35259
35260 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
35261
35262         * config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
35263
35264 2017-03-21  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
35265
35266         PR target/80123
35267         * doc/md.texi (Constraints): Document wA constraint.
35268         * config/rs6000/constraints.md (wA): New.
35269         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
35270         (rs6000_init_hard_regno_mode_ok): Init wA constraint.
35271         * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
35272         * config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
35273
35274 2017-03-22  Cesar Philippidis  <cesar@codesourcery.com>
35275
35276         PR c++/80029
35277         * gimplify.c (is_oacc_declared): New function.
35278         (oacc_default_clause): Use it to set default flags for acc declared
35279         variables inside parallel regions.
35280         (gimplify_scan_omp_clauses): Strip firstprivate pointers for acc
35281         declared variables.
35282         (gimplify_oacc_declare): Gimplify the declare clauses.  Add the
35283         declare attribute to any decl as necessary.
35284
35285 2017-03-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
35286
35287         PR target/80082
35288         * config/arm/arm-isa.h (isa_bit_lpae): New feature bit.
35289         (ISA_ARMv7ve): Add isa_bit_lpae to the definition.
35290         * config/arm/arm-protos.h (arm_arch7ve): Rename into ...
35291         (arm_arch_lpae): This.
35292         * config/arm/arm.c (arm_arch7ve): Rename into ...
35293         (arm_arch_lpae): This.  Define it in term of isa_bit_lpae.
35294         * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
35295         arm_arch_lpae.
35296
35297 2017-03-22  Martin Liska  <mliska@suse.cz>
35298
35299         PR target/79906
35300         * config/rs6000/rs6000.c (rs6000_inner_target_options): Show
35301         error message instead of an ICE.
35302
35303 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35304
35305         * doc/extend.texi (6.11 Additional Floating Types): Revise.
35306
35307 2017-03-21  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35308
35309         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
35310         comments.
35311         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
35312         comments.
35313
35314 2017-03-21  Martin Sebor  <msebor@redhat.com>
35315
35316         * doc/extend.texi: Use "cannot" instead of "can't."
35317         * doc/hostconfig.texi: Same.
35318         * doc/install.texi: Same.
35319         * doc/invoke.texi: Same.
35320         * doc/loop.texi: Same.
35321         * doc/md.texi: Same.
35322         * doc/objc.texi: Same.
35323         * doc/rtl.texi: Same.
35324         * doc/tm.texi: Same.
35325         * doc/tm.texi.in: Same.
35326         * doc/trouble.texi: Same.
35327
35328 2017-03-21  Alexandre Oliva  <aoliva@redhat.com>
35329
35330         PR debug/63238
35331         * dwarf2out.c (struct checksum_attributes): Add at_alignment.
35332         (collect_checksum_attributes): Set it.
35333         (die_checksum_ordered): Use it.
35334
35335 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35336
35337         PR tree-optimization/79908
35338         * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
35339         change: For a VA_ARG whose LHS has been cast away, use
35340         force_gimple_operand to construct the side effects.
35341
35342 2017-03-21  David Malcolm  <dmalcolm@redhat.com>
35343
35344         PR translation/80001
35345         * omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics
35346         more amenable to translation.
35347         (oacc_loop_auto_partitions): Likewise.
35348
35349 2017-03-21  Marek Polacek  <polacek@redhat.com>
35350             Martin Sebor  <msebor@redhat.com>
35351
35352         PR tree-optimization/80109
35353         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
35354         on INTEGRAL_TYPE_P.
35355
35356 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
35357             Segher Boessenkool  <segher@kernel.crashing.org>
35358
35359         PR target/80125
35360         * combine.c (can_combine_p): Revert the 2017-03-20 change, only
35361         check reg_used_between_p between insn and one of succ or succ2
35362         depending on if succ is artificial insn not inserted into insn
35363         stream.
35364
35365 2017-03-21  Martin Liska  <mliska@suse.cz>
35366
35367         PR gcov-profile/80081
35368         * Makefile.in: Add gcov-dump and fix installation of gcov-tool.
35369         * doc/gcc.texi: Include gcov-dump stuff.
35370         * doc/gcov-dump.texi: New file.
35371
35372 2017-03-21  Toma Tabacu  <toma.tabacu@imgtec.com>
35373
35374         PR rtl-optimization/79150
35375         * config/mips/mips.c (mips_block_move_loop): Emit a NOP after the
35376         conditional jump, if the jump is the last insn of the loop.
35377
35378 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35379             Richard Biener  <rguenth@suse.de>
35380
35381         PR tree-optimization/79908
35382         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
35383         been cast away, use force_gimple_operand to construct the side
35384         effects.
35385
35386 2017-03-21  Martin Liska  <mliska@suse.cz>
35387
35388         PR libfortran/79956
35389         * simplify-rtx.c (simplify_immed_subreg): Initialize a variable
35390         to NULL.
35391
35392 2017-03-21  Brad Spengler <spender@grsecurity.net>
35393
35394         PR plugins/80094
35395         * plugin.c (htab_hash_plugin): New function.
35396         (add_new_plugin): Use it and adjust.
35397         (parse_plugin_arg_opt): Adjust.
35398         (init_one_plugin): Likewise.
35399
35400 2017-03-21  Richard Biener  <rguenther@suse.de>
35401
35402         PR tree-optimization/80032
35403         * gimplify.c (gimple_push_cleanup): Add force_uncond parameter,
35404         if set force the cleanup to happen unconditionally.
35405         (gimplify_target_expr): Push inserted clobbers with force_uncond
35406         to avoid them being removed by control-dependent DCE.
35407
35408 2017-03-21  Richard Biener  <rguenther@suse.de>
35409
35410         PR tree-optimization/80122
35411         * tree-inline.c (copy_bb): Do not expans va-arg packs or
35412         va_arg_pack_len when the inlined call stmt requires pack
35413         expansion itself.
35414         * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
35415
35416 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
35417
35418         PR sanitizer/78158
35419         * tsan.c (instrument_builtin_call): If the memory model argument
35420         is not a constant, assume it is valid.
35421
35422         PR c/67338
35423         * fold-const.c (round_up_loc): Negate divisor in unsigned type to
35424         avoid UB.
35425
35426 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
35427
35428         PR rtl-optimization/79910
35429         * combine.c (can_combine_p): Do not allow combining an I0 or I1
35430         if its dest is used by an insn before I2 (other than the combined
35431         insns themselves, which are properly handled already).
35432
35433 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
35434
35435         Revert:
35436         2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
35437
35438         * combine.c (record_used_regs): New static function.
35439         (try_combine): Handle situations where there is an additional
35440         instruction between I2 and I3 which needs to have a LOG_LINK
35441         updated.
35442
35443         Revert:
35444         2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
35445
35446         * combine.c (try_combine): Delete redundant i1 test.  Call
35447         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
35448
35449 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
35450
35451         PR target/80083
35452         * config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for
35453         alternatives 13/14.
35454
35455 2017-03-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35456
35457         PR tree-optimization/80054
35458         * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail
35459         the optimization if a PHI or any of its arguments is not dominated
35460         by the candidate's basis.  Use gphi* rather than gimple* as
35461         appropriate.
35462         (replace_profitable_candidates): Clean up a gimple* variable that
35463         should be a gphi* variable.
35464
35465 2017-03-20  Martin Sebor  <msebor@redhat.com>
35466
35467         PR c++/52477
35468         * doc/extend.texi (attribute constructor): Document present limitation.
35469
35470 2017-03-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35471
35472         PR target/79963
35473         * config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and
35474         __POWER9_VECTOR__ #ifdef control, change template definition to
35475         use Power9-specific built-in function.
35476         (vec_any_eq): Likewise.
35477         * config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used
35478         to control outcomes from this test.
35479         (vector_ae_<mode>p): For VEC_F modes, likewise.
35480
35481 2017-03-20  Ian Lance Taylor  <iant@google.com>
35482
35483         * config/i386/i386.c (ix86_function_regparm): Save an extra
35484         register for -fsplit-stack with DECL_STATIC_CHAIN.
35485
35486 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
35487
35488         PR target/79912
35489         * config/riscv/riscv.c (riscv_preferred_reload_class): Remove.
35490         (TARGET_PREFERRED_RELOAD_CLASS): Likewise.
35491
35492 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
35493
35494         * config/riscv/riscv.c (riscv_print_operand): Use "fence
35495         iorw,ow".
35496         * config/riscv/sync.mc (mem_thread_fence_1): Use "fence
35497         iorw,iorw".
35498
35499 2017-03-20  Marek Polacek  <polacek@redhat.com>
35500
35501         PR sanitizer/80063
35502         * asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0).
35503
35504 2017-03-20  Richard Biener  <rguenther@suse.de>
35505
35506         PR tree-optimization/80113
35507         * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
35508         allocate extra SSA name for PHI def.
35509         (add_close_phis_to_outer_loops): Likewise.
35510         (add_close_phis_to_merge_points): Likewise.
35511         (copy_loop_close_phi_args): Likewise.
35512         (copy_cond_phi_nodes): Likewise.
35513
35514 2017-03-20  Martin Liska  <mliska@suse.cz>
35515
35516         PR middle-end/79753
35517         * tree-chkp.c (chkp_build_returned_bound): Do not build
35518         returned bounds for a LHS that's not a BOUNDED_P type.
35519
35520 2017-03-20  Martin Liska  <mliska@suse.cz>
35521
35522         PR target/79769
35523         PR target/79770
35524         * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
35525         COMPLEX_CST and VECTOR_CST.
35526
35527 2017-03-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35528
35529         PR target/78857
35530         * config/s390/s390.md ("cmp<mode>_ccs_0"): Add a clobber of the
35531         target operand.  A new splitter adds the clobber statement in case
35532         the target operand is dead anyway.
35533
35534 2017-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
35535
35536         * doc/install.texi (Specific) <sparc-*-linux*>: No longer refer
35537         to age-old versions of binutils and glibc.
35538
35539 2017-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
35540
35541         * doc/contrib.texi (Contributors): Remove duplicate entry for myself.
35542
35543 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
35544
35545         * doc/contrib.texi (Contributors): Add Segher Boessenkool.
35546
35547 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
35548
35549         * doc/install.texi (Specific) <arm-*-eabi>: Remove old
35550         requirement for binutils 2.13.
35551
35552 2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
35553
35554         * combine.c (try_combine): Delete redundant i1 test.  Call
35555         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
35556
35557 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com
35558
35559         * doc/install.texi (Specific) <riscv32-*-elf>: Add riscv32-*-elf,
35560         riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of
35561         contents.
35562         <riscv64-*-elf>: Re-arrange section
35563         <riscv32-*-elf>: Add a note about requiring binutils 2.28.
35564         <riscv32-*-linux>: Likewise.
35565         <riscv64-*-elf>: Likewise
35566         <riscv64-*-linux>: Likewise.
35567
35568 2017-03-17  Richard Earnshaw  <rearnsha@arm.com>
35569
35570         PR target/80052
35571         * aarch64.opt(verbose-cost-dump): Fix typo.
35572
35573 2017-03-17  Pat Haugen  <pthaugen@us.ibm.com>
35574
35575         PR target/79951
35576         * config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
35577         for VECTOR_UNIT_VSX_P (<MODE>mode) too.
35578
35579 2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
35580
35581         * reload.c (find_reloads): When reloading a nonoffsettable address,
35582         use RELOAD_OTHER for it and its address reloads.
35583
35584         PR rtl-optimization/79910
35585         * combine.c (record_used_regs): New static function.
35586         (try_combine): Handle situations where there is an additional
35587         instruction between I2 and I3 which needs to have a LOG_LINK
35588         updated.
35589
35590 2017-03-17  Jeff Law  <law@redhat.com>
35591
35592         PR tree-optimization/71437
35593         * tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the
35594         conditional in the hash table first.
35595         (vrp_dom_walker::before_dom_children): Extract condition from
35596         ASSERT_EXPR.  Record condition, its inverion and any implied
35597         conditions as well.
35598
35599 2017-03-17  Marek Polacek  <polacek@redhat.com>
35600             Markus Trippelsdorf  <markus@trippelsdorf.de>
35601
35602         PR tree-optimization/80079
35603         * gimple-ssa-store-merging.c (class pass_store_merging): Initialize
35604         m_stores_head.
35605
35606 2017-03-17  Richard Biener  <rguenther@suse.de>
35607
35608         PR middle-end/80075
35609         * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
35610         Properly verify the LHS before the RHS possibly claims to be
35611         handled.
35612         (stmt_could_throw_p): Hande gimple conds fully here.  Clobbers
35613         do not throw.
35614
35615 2017-03-17  Martin Jambor  <mjambor@suse.cz>
35616
35617         * doc/invoke.texi (Option Options): Include -fipa-vrp in the list.
35618         (List of -O2 options): Likewise.
35619         (-fipa-bit-cp): Replace "ipa" with "interprocedural."
35620         (-fipa-vrp) New.
35621
35622 2017-03-17  Tom de Vries  <tom@codesourcery.com>
35623
35624         * gcov-dump.c (print_usage): Print bug_report_url.
35625
35626 2017-03-17  Richard Biener  <rguenther@suse.de>
35627
35628         PR middle-end/80050
35629         * genmatch.c (parser::next): Remove pointless check for CPP_EOF.
35630         (parser::peek): Likewise.
35631
35632 2017-03-17  Richard Biener  <rguenther@suse.de>
35633
35634         PR tree-optimization/80048
35635         * sese.c (free_sese_info): Properly release rename_map and
35636         copied_bb_map elements.
35637
35638 2017-03-16  Alexandre Oliva  <aoliva@redhat.com>
35639
35640         * gimple-ssa-store-merging.c (struct imm_store_chain_info):
35641         Add linked-list forward and backlinks.  Insert on
35642         construction, remove on destruction.
35643         (class pass_store_merging): Add m_stores_head field.
35644         (pass_store_merging::terminate_and_process_all_chains):
35645         Iterate over m_stores_head list.
35646         (pass_store_merging::terminate_all_aliasing_chains):
35647         Likewise.
35648         (pass_store_merging::execute): Check for debug stmts first.
35649         Push new chains onto the m_stores_head stack.
35650
35651 2017-03-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
35652
35653         PR target/71294
35654         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
35655         SPLAT operation on ISA 2.07 64-bit systems that have direct move,
35656         but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
35657
35658 2017-03-16  Jeff Law  <law@redhat.com>
35659
35660         PR tree-optimization/71437
35661         * tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge
35662         member function.  Implementation moved into after_dom_children
35663         member function and into the threader's thread_outgoing_edges
35664         function.
35665         (dom_opt_dom_walker::after_dom_children): Simplify by moving
35666         some code into new thread_outgoing_edges.
35667         * tree-ssa-threadedge.c (thread_across_edge): Make static and simplify
35668         definition.  Simplify marker handling (do it here).   Assume we always
35669         have the available expression and the const/copies tables.
35670         (thread_outgoing_edges): New function extracted from tree-ssa-dom.c
35671         and tree-vrp.c
35672         * tree-ssa-threadedge.h (thread_outgoing_edges): Declare.
35673         * tree-vrp.c (equiv_stack): No longer file scoped.
35674         (vrp_dom_walker): New class.
35675         (vrp_dom_walker::before_dom_children): New member function.
35676         (vrp_dom_walker::after_dom_children): Likewise.
35677         (identify_jump_threads):  Setup domwalker.  Use it rather than
35678         walking edges in a random order by hand.  Simplify setup/finalization.
35679         (finalize_jump_threads): Remove.
35680         (vrp_finalize): Do not call identify_jump_threads here.
35681         (execute_vrp): Do it here instead and call thread_through_all_blocks
35682         here too.
35683
35684         PR tree-optimization/71437
35685         * tree-ssa-dom.c (pfn_simplify): Add basic_block argument.  All
35686         callers changed.
35687         (simplify_stmt_for_jump_threading): Add basic_block argument.  All
35688         callers changed.
35689         (lhs_of_dominating_assert): Moved from here into tree-vrp.c.
35690         (dom_opt_dom_walker::thread_across_edge): Remove
35691         handle_dominating_asserts argument.  All callers changed.
35692         (record_temporary_equivalences_from_stmts_at_dest): Corresponding
35693         changes.  Remove calls to lhs_of_dominating_assert.  Other
35694         uses of handle_dominating_asserts turn into unconditional code
35695         (simplify_control_stmt_condition_1): Likewise.
35696         (simplify_control_stmt_condition): Likewise.
35697         (thread_through_normal_block, thread_across_edge): Likewise.
35698         * tree-ssa-threadedge.h (thread_across_edge): Corresponding changes.
35699         * tree-vrp.c (lhs_of_dominating_assert): Move here.  Return original
35700         object if it is not an SSA_NAME.
35701         (simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert
35702         before calling into the VRP specific simplifiers.
35703         (identify_jump_threads): Remove handle_dominating_asserts
35704         argument.
35705
35706 2017-03-16  Jakub Jelinek  <jakub@redhat.com>
35707
35708         PR fortran/79886
35709         * tree-diagnostic.c (default_tree_printer): No longer static.
35710         * tree-diagnostic.h (default_tree_printer): New prototype.
35711
35712 2017-03-16  Tamar Christina  <tamar.christina@arm.com>
35713
35714         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
35715         Change ins into fmov.
35716
35717 2017-03-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35718
35719         * config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF.
35720         * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup<mode>):
35721         Use h_con constraint for operand 1.
35722         (*aarch64_fnma4_elt_from_dup<mode>): Likewise.
35723         (*aarch64_mulx_elt_from_dup<mode>): Likewise for operand 2.
35724
35725 2017-03-15  Jeff Law  <law@redhat.com>
35726
35727         PR tree-optimization/71437
35728         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function.
35729         (record_temporary_equivalences): Use it.
35730
35731         PR tree-optimization/71437
35732         * tree-ssa-dom.c (struct cond_equivalence): Moved from here into
35733         tree-ssa-scopedtables.
35734         (lookup_avail_expr, build_and_record_new_cond): Likewise.
35735         (record_conditions, record_cond, vuse_eq): Likewise.
35736         (record_edge_info): Adjust to API tweak of record_conditions.
35737         (simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr.
35738         (record_temporary_equivalences, optimize_stmt): Likewise.
35739         (eliminate_redundant_computations): Likewise.
35740         (record_equivalences_from_stmt): Likewise.
35741         * tree-ssa-scopedtables.c: Include options.h and params.h.
35742         (vuse_eq): New function, moved from tree-ssa-dom.c
35743         (build_and_record_new_cond): Likewise.
35744         (record_conditions): Likewise.  Accept vector of conditions rather
35745         than edge_equivalence structure for first argument.
35746         for the first argument.
35747         (avail_exprs_stack::lookup_avail_expr): New member function, moved
35748         from tree-ssa-dom.c.
35749         (avail_exprs_stack::record_cond): Likewise.
35750         * tree-ssa-scopedtables.h (struct cond_equivalence): Moved here
35751         from tree-ssa-dom.c.
35752         (avail_exprs_stack): Add new member functions lookup_avail_expr
35753         and record_cond.
35754         (record_conditions): Declare.
35755
35756 2017-03-15  Vladimir Makarov  <vmakarov@redhat.com>
35757
35758         PR target/80017
35759         * lra-constraints.c (process_alt_operands): Increase reject for
35760         reloading an input/output operand.
35761
35762 2017-03-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
35763
35764         PR target/79038
35765         * config/rs6000/rs6000.md (float<QHI:mode><IEEE128:mode>2): Define
35766         insns to convert from signed/unsigned char/short to IEEE 128-bit
35767         floating point.
35768         (floatuns<QHI:mode><IEEE128:mode>2): Likewise.
35769
35770 2017-03-15  Uros Bizjak  <ubizjak@gmail.com>
35771
35772         PR target/80019
35773         * config/i386/i386.c (ix86_vector_duplicate_value): Create
35774         subreg of inner mode for values already in registers.
35775
35776 2017-03-15  Bernd Schmidt  <bschmidt@redhat.com>
35777
35778         * config/c6x/c6x.c (hwloop_optimize): Handle case where the old
35779         iteration reg is used after the loop.
35780
35781 2017-03-14  Martin Sebor  <msebor@redhat.com>
35782
35783         PR tree-optimization/79800
35784         * gimple-ssa-sprintf.c (format_floating: Add argument.  Handle
35785         precision in negative-positive range.
35786         (format_floating): Call non-const overload with adjusted precision.
35787
35788 2017-03-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
35789
35790         PR target/79947
35791         * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
35792         -mpowerpc-gfxopt.
35793
35794 2017-03-14  Martin Sebor  <msebor@redhat.com>
35795
35796         PR middle-end/80020
35797         * builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro.
35798         * builtins.def (aligned_alloc): Use it.
35799
35800         PR c/79936
35801         * Makefile.in (GTFILES): Add calls.c.
35802         * calls.c: Include "gt-calls.h".
35803
35804 2017-03-14  Bernd Schmidt  <bschmidt@redhat.com>
35805
35806         PR rtl-optimization/79728
35807         * regs.h (struct target_regs): New field
35808         x_contains_allocatable_regs_of_mode.
35809         (contains_allocatable_regs_of_mode): New macro.
35810         * reginfo.c (init_reg_sets_1): Initialize it, and change
35811         contains_reg_of_mode so it includes global regs as well.
35812         * reload.c (push_reload): Use contains_allocatable_regs_of_mode
35813         rather than contains_regs_of_mode.
35814
35815 2017-03-14  Martin Liska  <mliska@suse.cz>
35816
35817         * doc/invoke.texi: Document options that can't be combined with
35818         -fcheck-pointer-bounds.
35819
35820 2017-03-14  Martin Liska  <mliska@suse.cz>
35821
35822         PR middle-end/79831
35823         * doc/invoke.texi (-Wchkp): Document the option.
35824
35825 2017-03-14  Martin Liska  <mliska@suse.cz>
35826
35827         * Makefile.in: Install gcov-dump.
35828
35829 2017-03-14  Martin Liska  <mliska@suse.cz>
35830
35831         * multiple_target.c (expand_target_clones): Bail out for
35832         an invalid attribute.
35833
35834 2017-03-14  Richard Biener  <rguenther@suse.de>
35835
35836         * alias.c (struct alias_set_entry): Pack properly.
35837         * cfgloop.h (struct loop): Likewise.
35838         * cse.c (struct set): Likewise.
35839         * ipa-utils.c (struct searchc_env): Likewise.
35840         * loop-invariant.c (struct invariant): Likewise.
35841         * lra-remat.c (struct cand): Likewise.
35842         * recog.c (struct change_t): Likewise.
35843         * rtl.h (struct address_info): Likewise.
35844         * symbol-summary.h (function_summary): Likewise.
35845         * tree-loop-distribution.c (struct partition): Likewise.
35846         * tree-object-size.c (struct object_size_info): Likewise.
35847         * tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
35848         * tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
35849         * tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
35850         * tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
35851         * tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
35852         * tree-vectorizer.h (struct _loop_vec_info): Likewise.
35853         (struct _stmt_vec_info): Likewise.
35854
35855 2017-03-14  Martin Liska  <mliska@suse.cz>
35856
35857         PR target/79892
35858         * multiple_target.c (create_dispatcher_calls): Check that
35859         a target can create a function dispatcher.
35860
35861 2017-03-14  Martin Liska  <mliska@suse.cz>
35862
35863         PR lto/66295
35864         * multiple_target.c (expand_target_clones): Drop local.local
35865         flag for default implementation.
35866
35867 2017-03-14  Richard Biener  <rguenther@suse.de>
35868
35869         PR tree-optimization/80030
35870         * tree-vect-stmts.c (vectorizable_store): Plug memleak.
35871
35872 2017-03-13  Kito Cheng  <kito.cheng@gmail.com>
35873
35874         * config/riscv/riscv.c (riscv_emit_float_compare>: Use
35875         gcc_fallthrough() instead of __attribute__((fallthrough));
35876
35877 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
35878
35879         * doc/gcc.texi: Remove "up" link to (DIR).
35880         * doc/gccint.texi: Ditto.
35881
35882 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
35883
35884         * doc/install.texi (Specific) <avr>: Remove reference to
35885         binutils 2.13.
35886
35887 2017-03-13  Jeff Law  <law@redhat.com>
35888
35889         * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru
35890         attribute rather than comments.
35891
35892         * config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to
35893         match_scratch operand is highest.
35894
35895 2017-03-13  Martin Liska  <mliska@suse.cz>
35896
35897         PR middle-end/78339
35898         * ipa-pure-const.c (warn_function_noreturn): If the declarations
35899         is a CHKP clone, use original declaration.
35900
35901 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35902
35903         * config/arc/arc.c (arc_init): Use multiplier whenever we have it.
35904         (arc_conditional_register_usage): Use a different allocation order
35905         when optimizing for size.
35906         * common/config/arc/arc-common.c (arc_option_optimization_table):
35907         Section anchors default on when optimizing for size.
35908
35909 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35910
35911         * config/arc/arc.md (*tst_bitfield_tst): Fix pattern.
35912
35913 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35914
35915         * config/arc/arc.c (arc_output_addsi): Emit code density adds.
35916         * config/arc/arc.md (cpu_facility): Add cd variant.
35917         (*movqi_insn): Add code density variant.
35918         (*movhi_insn): Likewise.
35919         (*movqi_insn): Likewise.
35920         (*addsi3_mixed): Likewise.
35921         (subsi3_insn): Likewise.
35922
35923 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35924
35925         * config/arc/arc.md (movsi_cond_exec): Update constraint.
35926
35927 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35928
35929         * config/arc/arc.c (arc_legitimize_pic_address): Handle PIC
35930         expressions with MINUS and UNARY ops.
35931
35932 2017-03-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35933
35934         PR target/79911
35935         * config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3):
35936         Rename to...
35937         (vec_sel_widen_ssum_lo<mode><V_half>3): ... This. Avoid mismatch
35938         between vec_select and vector argument.
35939         (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): Rename to...
35940         (vec_sel_widen_ssum_hi<mode><V_half>3): ... This. Likewise.
35941         (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): Rename to...
35942         (vec_sel_widen_usum_lo<mode><V_half>3): ... This.
35943         (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): Rename to...
35944         (vec_sel_widen_usum_hi<mode><V_half>3): ... This.
35945
35946 2017-03-13  Richard Biener  <rguenther@suse.de>
35947
35948         PR other/79991
35949         * params.def (vect-max-peeling-for-alignment): Fix typo.
35950
35951 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35952
35953         * doc/install.texi (Specific) <mips-*-*>: Remove description of
35954         issue that only occurred with binutils below 2.18.
35955
35956 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35957
35958         * doc/install.texi (Specific) <cris-axis-elf>: No longer
35959         refer to binutils 2.11/2.12 minimum.
35960
35961 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35962
35963         * doc/install.texi (Specific) <powerpc-*-*>: Remove link to
35964         ftp.kernel.org and simplify binutils requirement.
35965
35966 2017-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
35967
35968         * doc/invoke.texi (Warning Options): Fix spelling of link-time
35969         optimization.
35970         (Optimize Options): Ditto.  Also remove redundancy.
35971
35972 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35973
35974         PR translation/79848
35975         * ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to
35976         "%qs".
35977         * ipa-pure-const.c (suggest_attribute): Likewise.  Convert _
35978         to G_ to avoid double translation.
35979
35980 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35981
35982         PR translation/79923
35983         * auto-profile.c (get_combined_location): Convert leading
35984         character of diagnostics to lower case and remove trailing period.
35985         (read_profile): Likewise for various diagnostics.
35986         * config/arm/arm.c (arm_option_override): Remove trailing period
35987         from various diagnostics.
35988         * config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise.
35989         (msp430_expand_delay_cycles): Likewise.
35990
35991 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35992
35993         PR target/79925
35994         * config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the
35995         full command-line argument, rather than just "str".
35996         (aarch64_validate_march): Likewise.
35997         (aarch64_validate_mtune): Likewise.
35998
35999 2017-03-10  Bernd Schmidt  <bschmidt@redhat.com>
36000
36001         PR rtl-optimization/78911
36002         * lra-assigns.c (must_not_spill_p): New function.
36003         (spill_for): Use it.
36004
36005 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
36006
36007         PR tree-optimization/79981
36008         * tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of
36009         ATOMIC_COMPARE_EXCHANGE ifn result.
36010         (stmt_interesting_for_vrp, vrp_visit_stmt): Handle
36011         IFN_ATOMIC_COMPARE_EXCHANGE.
36012
36013 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
36014
36015         PR driver/79875
36016         * opts.c (parse_sanitizer_options): Add missing question mark to
36017         "did you mean" message.
36018
36019 2017-03-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36020
36021         * config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned
36022         built-in.
36023         (VMULEUH_UNS): Likewise.
36024         (VMULOUB_UNS): Likewise.
36025         (VMULOUH_UNS): Likewise.
36026         * config/rs6000/rs6000.c (builtin_function_type): Remove
36027         references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS.
36028
36029 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
36030
36031         PR bootstrap/79952
36032         * read-rtl-function.c (function_reader::read_rtx_operand): Update
36033         x with result of extra_parsing_for_operand_code_0.
36034         (function_reader::extra_parsing_for_operand_code_0): Convert
36035         return type from void to rtx, returning x.  When reading
36036         SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the
36037         larger size containing struct block_symbol.
36038
36039 2017-03-10  Segher Boessenkool  <segher@kernel.crashing.org>
36040
36041         * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
36042         -mfloat128-hardware without -m64.
36043
36044 2017-03-10  Will Schmidt <will_schmidt@vnet.ibm.com>
36045
36046         PR target/79941
36047         * config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB]
36048         entries to the case statement that marks unsigned arguments to
36049         overloaded functions.
36050
36051 2017-03-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
36052
36053         * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix
36054         two typographic errors in the handling of TARGET_UPPER_REGS_DI.
36055
36056 2017-03-10  Pat Haugen  <pthaugen@us.ibm.com>
36057
36058         PR target/79907
36059         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test
36060         TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass.
36061
36062 2017-03-10  Martin Liska  <mliska@suse.cz>
36063
36064         PR target/65705
36065         PR target/69804
36066         * toplev.c (process_options): Enable MPX with LSAN and UBSAN.
36067         * tree-chkp.c (chkp_walk_pointer_assignments): Verify that
36068         FIELD != NULL.
36069
36070 2017-03-10  Olivier Hainque  <hainque@adacore.com>
36071
36072         * tree-switch-conversion (array_value_type): Start by resetting
36073         candidate type to it's main variant.
36074
36075 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
36076
36077         PR rtl-optimization/79909
36078         * combine.c (try_combine): Use simplify_replace_rtx on individual
36079         CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx
36080         of the whole CALL_INSN_FUNCTION_USAGE.
36081
36082         PR tree-optimization/79972
36083         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call
36084         get_range_info on SSA_NAMEs.  Formatting fixes.
36085
36086 2017-03-10  Richard Biener  <rguenther@suse.de>
36087             Jakub Jelinek  <jakub@redhat.com>
36088
36089         PR tree-optimization/77975
36090         * tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch
36091         edge to be constant.
36092         (get_val_for): For constant x return it.  Formatting fix.
36093         (loop_niter_by_eval): Avoid pointless looping if the next iteration
36094         would use the same bases as the current one.
36095
36096 2017-03-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36097
36098         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate
36099         instead of vec_select for V1TImode.
36100         * conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no
36101         longer needed.
36102         (VSX_LE_128): Add V1TI to this mode iterator.
36103         (*vsx_le_perm_load_<mode>): Change to use VSX_D mode iterator.
36104         (*vsx_le_perm_store_<mode>): Likewise.
36105         (pre-reload splitter for VSX stores): Likewise.
36106         (post-reload splitter for VSX stores): Likewise.
36107         (*vsx_xxpermdi2_le_<mode>): Likewise.
36108         (*vsx_lxvd2x2_le_<mode>): Likewise.
36109         (*vsx_stxvd2x2_le_<mode>): Likewise.
36110
36111 2017-03-09  Michael Eager  <eager@eagercon.com>
36112
36113         Correct failures with --enable-checking=yes,rtl.
36114
36115         * config/microblaze/microblaze.c (microblaze_expand_shift):
36116         Replace GET_CODE test with CONST_INT_P and INTVAL test with
36117         test for const0_rtx.
36118         * config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone,
36119         lshrsi3_byone): Replace INTVAL with test for const1_rtx.
36120
36121 2017-03-09  Richard Biener  <rguenther@suse.de>
36122
36123         PR tree-optimization/79977
36124         * graphite-scop-detection.c (scop_detection::merge_sese):
36125         Handle the case of extra exits to blocks dominating the entry.
36126
36127 2017-03-09  Toma Tabacu  <toma.tabacu@imgtec.com>
36128
36129         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
36130         Document rdynamic.
36131
36132 2017-03-09  Vladimir Makarov  <vmakarov@redhat.com>
36133
36134         PR rtl-optimization/79949
36135         * lra-constraints.c (process_alt_operands): Check memory when
36136         trying to predict a cycle.  Print about the overall increase.
36137
36138 2017-03-09  Richard Biener  <rguenther@suse.de>
36139
36140         PR middle-end/79971
36141         * gimple-expr.c (useless_type_conversion_p): Preserve
36142         TYPE_SATURATING for fixed-point types.
36143
36144 2017-03-09  Richard Biener  <rguenther@suse.de>
36145
36146         PR ipa/79970
36147         * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing
36148         alignment of BLKmode params.
36149
36150 2017-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36151
36152         PR target/79913
36153         * config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
36154         (VALL_NO_V2Q): Likewise.
36155         (VDQF_DF): Delete.
36156         * config/aarch64/aarch64-simd.md
36157         (aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
36158         iterator.
36159         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
36160         VALL_NO_V2Q mode iterator.
36161         (*aarch64_vgetfmulx<mode>): Use VDQF iterator.
36162
36163 2017-03-09  Martin Liska  <mliska@suse.cz>
36164
36165         PR tree-optimization/79631
36166         * tree-chkp-opt.c (chkp_is_constant_addr): Call
36167         tree_int_cst_sign_bit just for INTEGER constants.
36168
36169 2017-03-09  Martin Liska  <mliska@suse.cz>
36170
36171         PR target/65705
36172         PR target/69804
36173         * toplev.c (process_options): Disable -fcheck-pointer-bounds with
36174         sanitizers.
36175
36176 2017-03-09  Marek Polacek  <polacek@redhat.com>
36177
36178         PR c++/79672
36179         * tree.c (inchash::add_expr): Handle TREE_VEC.
36180
36181 2017-03-09  Martin Liska  <mliska@suse.cz>
36182
36183         PR ipa/79764
36184         (chkp_narrow_size_and_offset): New function.
36185         (chkp_parse_array_and_component_ref): Support BIT_FIELD_REF.
36186         (void chkp_parse_bit_field_ref): New function.
36187         (chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF.
36188         (chkp_process_stmt): Use chkp_parse_bit_field_ref.
36189
36190 2017-03-09  Martin Liska  <mliska@suse.cz>
36191
36192         PR ipa/79761
36193         * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
36194         (chkp_find_bounds_1): Remove gcc_unreachable.
36195
36196 2017-03-09  Jakub Jelinek  <jakub@redhat.com>
36197
36198         PR sanitizer/79944
36199         * asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
36200         BUILT_IN_SYNC*, determine the access type from the size suffix and
36201         always build a MEM_REF with that type.  Handle forgotten
36202         BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
36203
36204         PR target/79932
36205         * config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
36206         _mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
36207         _mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
36208         _mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
36209         _mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
36210         _mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
36211         _mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
36212         _mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
36213         _mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
36214         _mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
36215         _mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
36216         _mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
36217         _mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
36218         _mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
36219         _mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
36220         _mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
36221         _mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
36222         _mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
36223         _mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
36224         _mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
36225         _mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
36226         _mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
36227         _mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
36228         _mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
36229         _mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
36230         _mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
36231         _mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
36232         _mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
36233         _mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
36234         _mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
36235         definitions outside of __OPTIMIZE__ guarded section.
36236
36237         PR target/79932
36238         * config/i386/avx512bwintrin.h (_mm512_packs_epi32,
36239         _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
36240         _mm512_packus_epi32, _mm512_maskz_packus_epi32,
36241         _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
36242         guarded section.
36243
36244 2017-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
36245
36246         * config/s390/vx-builtins.md ("vfee<mode>", "vfeez<mode>")
36247         ("vfenez<mode>"): Add missing constraints.
36248
36249 2017-03-08  Martin Sebor  <msebor@redhat.com>
36250
36251         PR target/79928
36252         * config/nds32/nds32.c (nds32_option_override):
36253         Fix misspelled diagnostic.
36254
36255 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
36256
36257         PR c/79940
36258         * gimplify.c (gimplify_omp_for): Replace index var in outer
36259         taskloop statement with an artificial variable and add
36260         OMP_CLAUSE_PRIVATE clause for it.
36261
36262 2017-03-08  Richard Biener  <rguenther@suse.de>
36263
36264         PR tree-optimization/79955
36265         * tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn
36266         for accesses that are completely outside of the variable.
36267
36268 2017-03-08  Andrew Haley  <aph@redhat.com>
36269
36270         PR tree-optimization/79943
36271         * tree-ssa-loop-split.c (compute_new_first_bound): When
36272         calculating the new upper bound, (END-BEG) should be added, not
36273         subtracted.
36274
36275 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
36276
36277         * config/avr/avr.md (setmemhi): Make sure match_dup
36278         operand number comes before match_scratch.
36279
36280 2017-03-08  Richard Biener  <rguenther@suse.de>
36281
36282         PR tree-optimization/79920
36283         * tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline
36284         with ncopies == 1 to ...
36285         (vect_transform_slp_perm_load): ... here.  Properly compute
36286         all element loads by iterating VF times over the group.  Do
36287         not handle ncopies (computed in a broken way) in
36288         vect_create_mask_and_perm.
36289
36290 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
36291
36292         PR sanitizer/79904
36293         * internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1
36294         is a uniform vector, use uniform_vector_p return value instead of
36295         building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type.
36296
36297 2017-03-07  Marek Polacek  <polacek@redhat.com>
36298
36299         PR middle-end/79809
36300         * gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT.
36301         (alloca_call_type): Likewise.
36302
36303 2017-03-07  Martin Liska  <mliska@suse.cz>
36304
36305         * gcov.c (process_args): Put comment to correct location.
36306
36307 2017-03-07  Martin Liska  <mliska@suse.cz>
36308
36309         PR middle-end/68270
36310         * tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref.
36311         Use array_at_struct_end_p instead of DECL_CHAIN (field).
36312         (chkp_narrow_bounds_for_field): Likewise.
36313         (chkp_parse_array_and_component_ref): Pass one more argument to
36314         call.
36315
36316 2017-03-07  Richard Biener  <rguenther@suse.de>
36317
36318         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve
36319         preheaders.
36320
36321 2017-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
36322
36323         * config/i386/i386.c (ix86_local_alignment): Align most aggregates
36324         of 16 bytes and more to 16 bytes, not those of 16 bits and more.
36325
36326 2017-03-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36327
36328         PR c/79855
36329         * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop
36330         to end of description.
36331         (PARAM_MAX_STORES_TO_MERGE): Likewise.
36332
36333 2017-03-07  Jakub Jelinek  <jakub@redhat.com>
36334
36335         PR rtl-optimization/79901
36336         * config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
36337         ...
36338         (*avx512f_<code><mode>3<mask_name>): ... this.
36339         (<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
36340         iterator instead of VI8_AVX2_AVX512BW.
36341
36342         PR rtl-optimization/79901
36343         * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
36344         min/max expander, expand it using expand_vec_cond_expr.
36345
36346         PR sanitizer/79897
36347         * ubsan.c (ubsan_encode_value): Call mark_addressable on the
36348         temporary.
36349
36350 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
36351
36352         PR c++/79821
36353         * dwarf2out.h (dw_vec_const): Change array type from unsigned char *
36354         to void * for PCH reasons.
36355         * dwarf2out.c (output_loc_operands, output_die): Cast
36356         v.val_vec.array to unsigned char *.
36357
36358 2017-03-06  John David Anglin  <danglin@gcc.gnu.org>
36359
36360         PR target/77850
36361         * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
36362         vector types.
36363
36364 2017-03-06  Vladimir Makarov  <vmakarov@redhat.com>
36365
36366         PR rtl-optimization/79571
36367         * lra-constraints.c (process_alt_operands): Calculate static
36368         reject and subtract it from overall when only addresses will be
36369         reloaded.
36370
36371 2017-03-06  Julia Koval  <julia.koval@intel.com>
36372
36373         PR target/79793
36374         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set
36375         incoming stack boundary to 128 for 64-bit targets.
36376
36377 2017-03-06  Richard Biener  <rguenther@suse.de>
36378
36379         PR tree-optimization/79894
36380         * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call
36381         to NULL after folding it.
36382
36383 2017-03-06  Richard Biener  <rguenther@suse.de>
36384
36385         PR tree-optimization/79824
36386         * tree-vect-stmts.c (get_group_load_store_type): Fix alignment
36387         check disabling peeling for gaps.
36388
36389 2017-03-06  Toma Tabacu  <toma.tabacu@imgtec.com>
36390
36391         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
36392         attributes): Document gettimeofday.
36393
36394 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
36395
36396         * config/s390/s390.c (s390_option_override_internal): Set
36397         PARAM_MIN_VECT_LOOP_BOUND
36398
36399 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
36400
36401         * config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
36402         * config/s390/s390.md: Likewise.
36403
36404 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
36405
36406         PR target/79812
36407         * config/i386/sse.md (VI8F_256_512): Remove mode iterator.
36408         (<avx2_avx512>_perm<mode>): Rename to ...
36409         (avx2_perm<mode>): ... this.  Use VI8F_256 iterator instead
36410         of VI8F_256_512.
36411         (<avx512>_perm<mode>_mask): Rename to ...
36412         (avx512vl_perm<mode>_mask): ... this.  Use VI8F_256 iterator instead
36413         of VI8F_256_512.
36414         (<avx2_avx512>_perm<mode>_1<mask_name>): Rename to ...
36415         (avx2_perm<mode>_1<mask_name): ... this.  Use VI8F_256 iterator
36416         instead of VI8F_256_512.
36417         (avx512f_perm<mode>): New define_expand.
36418         (avx512f_perm<mode>_mask): Likewise.
36419         (avx512f_perm<mode>_1<mask_name>): New define_insn.
36420         (<avx512>_vec_dup<mode>_1): Fix up vec_select mode.
36421
36422 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
36423
36424         * config/mips/mips-msa.md (msa_fmax_a_<msafmt>, msa_fmin_a_<msafmt>,
36425         msa_max_a_<msafmt>, msa_min_a_<msafmt>): Introduce mode interator for
36426         if_then_else.
36427         (smin<mode>3, smax<mode>3): Change operand print code from 'B' to 'E'.
36428
36429 2017-03-06  Martin Liska  <mliska@suse.cz>
36430
36431         PR sanitize/79783
36432         * asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON
36433         when having a SSA NAME w/o VAR_DECL assigned to it.
36434
36435 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
36436
36437         * config/mips/mips-msa.md (msa_dotp_<su>_d, msa_dpadd_<su>_d,
36438         msa_dpsub_<su>_d): Fix MODE for vec_select.
36439
36440 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
36441
36442         * config/mips/mips.c (mips_gen_const_int_vector): Change type of last
36443         argument.
36444         * config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.
36445
36446 2017-03-06  Richard Biener  <rguenther@suse.de>
36447
36448         * lto-streamer.c (lto_check_version): Use %qs in diagnostics.
36449         * plugin.c (register_plugin_info): Likewise.
36450         * tree-chkp.c (chkp_make_static_const_bounds): Likewise.
36451
36452 2017-03-05  Jakub Jelinek  <jakub@redhat.com>
36453
36454         * config/i386/sse.md (sse_storehps, sse_storelps,
36455         avx_<castmode><avxsizesuffix>_<castmode>,
36456         avx512f_<castmode><avxsizesuffix>_<castmode>,
36457         avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
36458         in condition that at least one operand is not a MEM.
36459
36460 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
36461
36462         PR middle-end/79805
36463         * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET,
36464         ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove
36465         ECF_NOTHROW.
36466         * gimple-fold.c (fold_builtin_atomic_compare_exchange): Set
36467         gimple_call_nothrow_p flag based on whether original builtin can throw.
36468         If it can, emit following stmts on the fallthrough edge.
36469         * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except
36470         don't create new bb if inserting just debug stmts on the edge, try to
36471         insert them on the fallthru bb or just reset debug stmts.
36472
36473 2017-03-03  Segher Boesssenkool  <segher@kernel.crashing.org>
36474
36475         PR target/43763
36476         * config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and
36477         restore recog_data (including the operand rtxes inside it) around
36478         the call to get_insn_template.
36479
36480 2017-03-03  Martin Sebor  <msebor@redhat.com>
36481
36482         PR tree-optimization/79699
36483         * context.c (context::~context): Free MPFR caches to avoid
36484         a memory leak on program exit.
36485
36486 2017-03-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36487
36488         * config/aarch64/aarch64.c (aarch64_float_const_representable_p):
36489         Use wide_int::ulow () instead of .elt (0).
36490
36491 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
36492
36493         * config/i386/i386.md (*pushtf): Change *roF constraint to *roC.
36494         (*pushxf): Limit oF constraint to 32bit targets and add oC
36495         constraint for 64bit targets.
36496         (pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment.
36497         (*pushdf): Change rmF constraint to rmC.
36498
36499 2017-03-03  Martin Liska  <mliska@suse.cz>
36500
36501         * tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute):
36502         Remove unused variable.
36503
36504 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
36505
36506         PR target/79807
36507         * config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
36508         is a memory operand, increase num_memory.
36509         (ix86_expand_args_builtin): Likewise.
36510
36511 2017-03-03  Jan Hubicka  <jh@suse.cz>
36512
36513         PR lto/79760
36514         * ipa-devirt.c (maybe_record_node): Properly handle
36515         __cxa_pure_virtual visibility.
36516
36517 2017-03-03  Martin Liska  <mliska@suse.cz>
36518
36519         PR tree-optimization/79803
36520         * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
36521         assert.
36522         (pass_loop_prefetch::execute): Disabled optimization if an
36523         assumption about L1 cache size is not met.
36524
36525 2017-03-03  Martin Liska  <mliska@suse.cz>
36526
36527         PR rtl-optimization/79574
36528         * gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
36529         (hash_scan_set): Likewise.
36530         (dump_hash_table): Likewise.
36531         (hoist_code): Likewise.
36532
36533 2017-03-03  Richard Biener  <rguenther@suse.de>
36534
36535         * fixed-value.c (fixed_from_string): Restore use of elt (1)
36536         in place of uhigh ().
36537         (fixed_convert_from_real): Likewise.
36538
36539 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
36540
36541         PR target/79514
36542         * config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode.
36543
36544 2017-03-03  Richard Biener  <rguenther@suse.de>
36545
36546         PR middle-end/79818
36547         * match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing
36548         TYPE_OVERFLOW_UNDEFINED check.
36549
36550 2017-03-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36551
36552         * config/rs6000/vector.md (vector_ne_<mode>_p): Correct operand
36553         numbers.
36554         (vector_ae_<mode>_p): Likewise.
36555         (vector_nez_<mode>_p): Likewise.
36556         (vector_ne_v2di_p): Likewise.
36557         (vector_ae_v2di_p): Likewise.
36558         (vector_ne_<mode>_p): Likewise.
36559         * config/rs6000/vsx.md (vsx_tsqrt<mode>2_fg): Correct operand
36560         numbers.
36561         (vsx_tsqrt<mode>2_fe): Likewise.
36562
36563 2017-03-02  Uros Bizjak  <ubizjak@gmail.com>
36564
36565         PR target/79514
36566         * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
36567
36568 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
36569
36570         PR rtl-optimization/79780
36571         * cprop.c (one_cprop_pass): When second and further conditional trap
36572         in a single basic block is turned into an unconditional trap, turn it
36573         into a deleted note to avoid RTL verification failures.
36574
36575 2017-03-02  Richard Biener  <rguenther@suse.de>
36576
36577         * fold-const.c (const_binop): Use ulow () instead of elt (0).
36578
36579 2017-03-02  Richard Biener  <rguenther@suse.de>
36580
36581         PR tree-optimization/79345
36582         PR c++/42000
36583         * tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit
36584         param and abort the walk, returning -1 if it is hit.
36585         (walk_aliased_vdefs): Take a limit param and pass it on.
36586         * tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param,
36587         defaulting to 0 and return a signed int.
36588         * tree-ssa-uninit.c (struct check_defs_data): New struct.
36589         (check_defs): New helper.
36590         (warn_uninitialized_vars): Use walk_aliased_vdefs to warn
36591         about uninitialized memory.
36592         * fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid
36593         bogus uninitialized warning.
36594         (fixed_convert_from_real): Likewise.
36595
36596 2017-03-02  Bin Cheng  <bin.cheng@arm.com>
36597
36598         PR tree-optimization/66768
36599         * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
36600         iv_use if base object can't be determined.
36601
36602 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
36603
36604         PR tree-optimization/79345
36605         * gensupport.h (struct pattern_stats): Add min_scratch_opno field.
36606         * gensupport.c (get_pattern_stats_1) <case MATCH_SCRATCH>: Update it.
36607         (get_pattern_stats): Initialize it.
36608         * genemit.c (gen_expand): Verify match_scratch numbers come after
36609         match_operand/match_dup numbers.
36610         * config/i386/i386.md (<s>mul<mode>3_highpart): Swap match_dup and
36611         match_scratch numbers.
36612         * config/i386/sse.md (avx2_gathersi<mode>, avx2_gatherdi<mode>):
36613         Likewise.
36614         * config/s390/s390.md (trunctdsd2): Likewise.
36615
36616 2017-03-02  Richard Biener  <rguenther@suse.de>
36617
36618         * wide-int.h (wide_int_storage::operator=): Implement in terms
36619         of wi::copy.
36620
36621 2017-03-02  Richard Biener  <rguenther@suse.de>
36622
36623         PR tree-optimization/79777
36624         * tree-ssa-pre.c (eliminate_insert): Give up if we simplify
36625         the to insert expression to sth existing.
36626
36627 2017-03-01  Martin Sebor  <msebor@redhat.com>
36628
36629         PR middle-end/79692
36630         * gimple-ssa-sprintf.c
36631         (directive::known_width_and_precision): New function.
36632         (format_integer): Use it.
36633         (get_mpfr_format_length): Consider the full range of precision
36634         when computing %g output with the # flag.  Set the likely byte
36635         count to 3 rather than 1 when precision is indeterminate.
36636         (format_floating): Correct the lower bound of precision.
36637
36638 2017-03-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36639
36640         * doc/invoke.texi: Document default code model for 64-bit Linux.
36641
36642 2017-03-01  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
36643
36644         PR target/79752
36645         * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
36646         udiv rather than div since input pattern is unsigned.
36647
36648 2017-03-01  Uros Bizjak  <ubizjak@gmail.com>
36649
36650         * config/i386/i386.c (print_reg): Warn for values of
36651         unsupported size in integer register.
36652
36653 2017-03-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
36654
36655         PR target/79439
36656         * config/rs6000/predicates.md (current_file_function_operand): Do
36657         not allow self calls to be local if the function is replaceable.
36658
36659 2017-03-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>
36660
36661         PR target/79395
36662         * config/rs6000/altivec.h (vec_ctz and others): Change the
36663         preprocessor macro that controls conditional compilation from
36664         _ARCH_PWR9 to __POWER9_VECTOR__.
36665         (vec_all_ne): Change parameterization of __altivec_scalar_pred
36666         macro expansion under preprocessor #ifdef __POWER9_VECTOR__
36667         control (instead of _ARCH_PWR9 control) so that template
36668         definition uses power9-specific function.
36669         (vec_any_eq): Likewise.
36670         (vec_all_ne): Change macro definition to use a power9-specific
36671         expansion under #ifdef __POWER9_VECTOR__ control (instead of
36672         _ARCH_PWR9 control).
36673         (vec_any_eq) Likewise.
36674         * config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2
36675         expansion for CMPNEF to remove support for xvcmpnesp instruction.
36676         (CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove
36677         support for xvcmpnedp instruction.
36678         (VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2
36679         macro expansion so that Power9 implementation of vec_all_ne does
36680         not use the AltiVec predicate framework.
36681         (VCMPNEH_P): Likewise.
36682         (VCMPNEW_P): Likewise.
36683         (VCMPNED_P): Likewise.
36684         (VCMPNEFP_P): Likewise.
36685         (VCMPNEDP_P): Likewise.
36686         (VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change
36687         implementation of vec_any_eq to not use AltiVec predicate
36688         framework.
36689         (VCMPAEH_P): Likewise.
36690         (VCMPAEW_P): Likewise.
36691         (VCMPAED_P): Likewise.
36692         (VCMPAEFP_P): Likewise.
36693         (VCMPAEDP_P): Likewise.
36694         (VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with
36695         BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does
36696         not use the AltiVec predicate framework.
36697         (VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation
36698         of vec_any_eq to not use AltiVec predicate framework.
36699         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
36700         support for predefined __POWER9_VECTOR__ macro to indicate that
36701         Power9 instruction selection is enabled.
36702         (altivec_overloaded_builtins): Remove extraneous
36703         ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded
36704         function argument types RS6000_BTI_bool_V16QI and
36705         RS6000_BTI_bool_V16QI.  Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE
36706         entry for overloaded function argument types RS6000_BTI_bool_V4SI
36707         andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB.  Remove
36708         two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to
36709         P9V_BUILTIN_CMPNEF to force use of instructions not specific to
36710         Power9 for implementations of vec_cmpne.  Change the signature for
36711         all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function
36712         (representing vec_all_ne) to remove the previously described first
36713         argument of type RS6000_BTI_INTSI, as this was an artifact of
36714         reliance on the AltiVec predicate framework, which is no longer
36715         used in the implementation of these functions.  Add
36716         P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq
36717         function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries
36718         since, unlike the AltiVec predicate framework implementation, we
36719         do not share function descriptors between vec_alle and vec_anyeq.
36720         (altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the
36721         set of modes that receive special treatment even when
36722         TARGET_P9_VECTOR is true.  The special treatment emits code that
36723         does not depend on Power9 instructions.
36724         * config/rs6000/vector.md (vector_ne_<mode>_p): Change this
36725         define_expand to not rely on AltiVec predicate framework.
36726         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
36727         function.
36728         (vector_ne_v2di_p): Change this define_expand to not rely on
36729         AltiVec predicate framework.
36730         (vector_ae_v2di_p): New define_expand to represent vec_any_eq
36731         function.
36732         (vector_ne_<mode>_p): Change this define_expand to not rely on
36733         AltiVec predicate framework.
36734         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
36735         function.
36736         * config/rs6000/vsx.md (*vsx_ne_<mode>_p): For modes VSX_EXTRACT_I
36737         (V16QI, V8HI, V4SI), correct a typo in the code emitted for this
36738         define_insn pattern.
36739         (*vsx_ne_<mode>_p): For modes VSX_F (V4SF and V2DF), remove this
36740         define_insn pattern because the xvcmpne<VSs>. instruction is not
36741         supported.
36742         (vcmpne<VSs>): Remove this define_insn because xvcmpne<VSs>
36743         instruction is not supported.
36744
36745 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36746
36747         * config/nvptx/nvptx.c: Include intl.h.
36748
36749 2017-03-01  Martin Jambor  <mjambor@suse.cz>
36750
36751         PR lto/78140
36752         * ipa-prop.h (ipa_bits): Removed field known.
36753         (ipa_jump_func): Removed field vr_known.  Changed fields bits and m_vr
36754         to pointers.  Adjusted their comments to warn about their sharing.
36755         (ipcp_transformation_summary): Change bits to a vector of pointers.
36756         (ipa_check_create_edge_args): Moved to ipa-prop.c, declare.
36757         (ipa_get_ipa_bits_for_value): Declare.
36758         * tree-vrp.h (value_range): Mark as GTY((for_user)).
36759         * ipa-prop.c (ipa_bit_ggc_hash_traits): New.
36760         (ipa_bits_hash_table): Likewise.
36761         (ipa_vr_ggc_hash_traits): Likewise.
36762         (ipa_vr_hash_table): Likewise.
36763         (ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr
36764         being pointers and vr_known being removed.
36765         (ipa_set_jf_unknown): Likewise.
36766         (ipa_get_ipa_bits_for_value): New function.
36767         (ipa_set_jfunc_bits): Likewise.
36768         (ipa_get_value_range): New overloaded functions.
36769         (ipa_set_jfunc_vr): Likewise.
36770         (ipa_compute_jump_functions_for_edge): Use the above functions to
36771         construct bits and vr parts of jump functions.
36772         (ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate
36773         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
36774         exist.
36775         (ipcp_grow_transformations_if_necessary): Also allocate
36776         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
36777         exist.
36778         (ipa_node_params_t::duplicate): Do not copy bits, just pointers to
36779         them.  Fix too long lines.
36780         (ipa_write_jump_function): Adjust for bits and m_vr being pointers and
36781         vr_known being removed.
36782         (ipa_read_jump_function): Use new setter functions to construct bits
36783         and vr parts of jump functions or set them to NULL.
36784         (write_ipcp_transformation_info): Adjust for bits being pointers.
36785         (read_ipcp_transformation_info): Likewise.
36786         (ipcp_update_bits): Likewise.  Fix excessively long lines a trailing
36787         space.
36788         Include gt-ipa-prop.h.
36789         * ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits
36790         being pointers.
36791         (ipcp_store_bits_results): Likewise.
36792         (propagate_vr_across_jump_function): Adjust for m_vr being a pointer.
36793         Do not write to existing jump functions but use a temporary instead.
36794
36795 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36796
36797         PR c++/79681
36798         * fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF,
36799         attempt to use its first operand as BIT_FIELD_REF base.
36800
36801 2017-03-01  Richard Biener  <rguenther@suse.de>
36802
36803         PR middle-end/79721
36804         * tree-chrec.c (chrec_evaluate): Perform computation of Newtons
36805         interpolating formula in wrapping arithmetic.
36806         (chrec_apply): Convert chrec_evaluate return value to wanted type.
36807
36808 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36809
36810         PR tree-optimization/79734
36811         * tree-vect-generic.c (expand_vector_condition): Optimize
36812         AVX512 vector boolean VEC_COND_EXPRs into bitwise operations.
36813         Handle VEC_COND_EXPR where comparison has different inner width from
36814         type's inner width.
36815
36816 2017-02-28  Sandra Loosemore  <sandra@codesourcery.com>
36817
36818         * doc/invoke.texi (ARC Options): Copy-edit to fix punctuation,
36819         markup, and similar issues.  Remove @opindex entries for things
36820         that aren't options.  Add missing -mmpy-option entries.
36821
36822 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36823
36824         PR tree-optimization/79737
36825         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is
36826         a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear
36827         tmpbuf[byte_size - 1].  Call natice_encode_expr with byte_size - 1
36828         instead of byte_size.  Formatting fix.
36829         (shift_bytes_in_array_right): Formatting fix.
36830
36831 2017-02-28  Eric Botcazou  <ebotcazou@adacore.com>
36832
36833         PR target/79749
36834         * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
36835         condition on optimize for the leaf function test.
36836
36837 2017-02-28  Martin Liska  <mliska@suse.cz>
36838
36839         PR lto/79625
36840         * read-rtl-function.c (function_reader::handle_unknown_directive):
36841         Bail out when one uses -flto.
36842
36843 2017-02-28  Martin Liska  <mliska@suse.cz>
36844
36845         * common.opt: Replace space with tabular for options of <number>
36846         type.
36847         * config/i386/i386.opt: Show <number> value for
36848         -mlarge-data-threshold.
36849         * opts.c (print_filtered_help): Do not display number in hexadecimal
36850         format.
36851
36852 2017-02-28  Martin Liska  <mliska@suse.cz>
36853
36854         * common.opt: Fix --help=option -Q for options which are of
36855         an enum type.
36856
36857 2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
36858
36859         * config/i386/i386.c (print_reg): Error out for values
36860         of 8-bit size in invalid integer register.
36861
36862 2017-02-28  Martin Sebor  <msebor@redhat.com>
36863
36864         PR tree-optimization/79691
36865         * passes.def (pass_all_optimizations_g): Enable pass_sprintf_length.
36866
36867 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36868
36869         PR target/79729
36870         * config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
36871         gcc_unreachable with output_operand_lossage.
36872
36873 2017-02-28  Richard Biener  <rguenther@suse.de>
36874
36875         PR tree-optimization/79740
36876         * tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant
36877         inserts.
36878         (visit_nary_op): Insert the nary into the hashtable if we
36879         pattern-matched sth.
36880         * tree-ssa-pre.c (eliminate_insert): Robustify.
36881
36882 2017-02-28  Richard Biener  <rguenther@suse.de>
36883
36884         PR middle-end/79731
36885         * fold-const.c (decode_field_reference): Reject out-of-bound
36886         accesses.
36887
36888 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36889
36890         * config/i386/i386.c: Include intl.h.
36891         (ix86_option_override_internal): Use cond ? G_("...") : G_("...")
36892         instead of just cond ? "..." : "...".
36893         * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise.
36894         * coverage.c (read_counts_file): Likewise.
36895         * omp-offload.c: Include intl.h.
36896         (oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead
36897         of just cond ? "..." : "...".
36898         * gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead
36899         of just cond ? "..." : "...".
36900
36901 2017-02-28  Richard Earnshaw  <rearnsha@arm.com>
36902
36903         PR target/79742
36904         * config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for'
36905         entry, if present.
36906         * config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct
36907         'tune for' CPU name.
36908         * config/arm/arm-cpu-data.h: Regenerated.
36909
36910 2017-02-28  Richard Biener  <rguenther@suse.de>
36911
36912         PR tree-optimization/79732
36913         * tree-inline.c (expand_call_inline): Do not shadow var.
36914
36915 2017-02-28  Richard Biener  <rguenther@suse.de>
36916
36917         PR tree-optimization/79723
36918         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve
36919         address-space properly.
36920
36921 2017-02-28  Thomas Schwinge  <thomas@codesourcery.com>
36922
36923         * doc/optinfo.texi (Optimization groups): Fix option used for
36924         OPTGROUP_ALL.
36925         * doc/invoke.texi (-fopt-info): Document "omp".
36926         * dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC.
36927         (OPTGROUP_ALL): Add OPTGROUP_OMP.
36928         * hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP.
36929         * ipa-hsa.c (pass_data_ipa_hsa): Likewise.
36930         * omp-simd-clone.c (pass_data_omp_simd_clone): Likewise.
36931
36932         * dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP.  Adjust
36933         all users.
36934         * dumpfile.c (optgroup_options): Instead of "openmp", associate
36935         OPTGROUP_OMP with "omp".
36936
36937 2017-02-27  Pat Haugen  <pthaugen@us.ibm.com>
36938
36939         PR target/79544
36940         * config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD
36941         for arithmetic shift of unsigned V2DI.
36942
36943 2017-02-27  Claudiu Zissulescu  <claziss@synopsys.com>
36944
36945         * config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and
36946         arc/linux.h headers.
36947         * config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove.
36948         (LINK_SPEC): Likewise.
36949         (ARC_TLS_EXTRA_START_SPEC): Likewise.
36950         (EXTRA_SPECS): Likewise.
36951         (STARTFILE_SPEC): Likewise.
36952         (ENDFILE_SPEC): Likewise.
36953         (LIB_SPEC): Likewise.
36954         (TARGET_SDATA_DEFAULT): Likewise.
36955         (TARGET_MMEDIUM_CALLS_DEFAULT): Likewise.
36956         (MULTILIB_DEFAULTS): Likewise.
36957         (DWARF2_UNWIND_INFO): Likewise.
36958         * config/arc/big.h: New file.
36959         * config/arc/elf.h: Likewise.
36960         * config/arc/linux.h: Likewise.
36961         * config/arc/t-uClibc: Remove.
36962
36963 2017-02-27  Bin Cheng  <bin.cheng@arm.com>
36964
36965         PR tree-optimization/77536
36966         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function.
36967         (tree_transform_and_unroll_loop): Use above function to compute the
36968         estimated niter of unrolled loop and use it when scaling profile.
36969         Also use count info rather than frequency if it's non-zero.
36970         * tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration.
36971         * tree-vect-loop.c (scale_profile_for_vect_loop): New function.
36972         (vect_transform_loop): Call above function.
36973
36974 2017-02-27  Richard Biener  <rguenther@suse.de>
36975
36976         PR tree-optimization/45397
36977         * tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR.
36978         * tree-ssa-sccvn.c (valueized_wider_op): New helper.
36979         (visit_nary_op): Add pattern matching for CSEing sign-changed
36980         or truncated operations with wider ones.
36981
36982 2017-02-27  Richard Biener  <rguenther@suse.de>
36983
36984         PR tree-optimization/79690
36985         * tree-vect-stmts.c (vectorizable_store): Use vector type
36986         built from the DR with address-space.
36987
36988 2017-02-26  Gerald Pfeifer  <gerald@pfeifer.com>
36989
36990         * doc/invoke.texi (Optimize Options): Refine the description
36991         of asan-use-after-return.
36992
36993 2017-02-25  Alan Modra  <amodra@gmail.com>
36994
36995         PR rtl-optimization/79584
36996         * lra-constraints.c (base_to_reg): Reload ad->base, the entire
36997         base, not ad->base_term, the reg within base.  Remove assertion
36998         that ad->base == ad->base_term.  Replace gen_int_mode using
36999         bogus mode with const0_rtx.
37000
37001 2017-02-25  Jakub Jelinek  <jakub@redhat.com>
37002
37003         PR middle-end/79396
37004         * tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
37005         FMA_EXPR like tcc_binary or tcc_unary.
37006
37007         * tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
37008
37009         PR debug/77589
37010         * dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
37011         bitfield.
37012         (size_of_loc_descr): Handle DW_OP_GNU_variable_value.
37013         (output_loc_operands): Handle DW_OP_call_ref and
37014         DW_OP_GNU_variable_value.
37015         (struct variable_value_struct): New type.
37016         (struct variable_value_hasher): Likewise.
37017         (variable_value_hash): New variable.
37018         (string_types): Remove.
37019         (copy_loc_descr): New function.
37020         (add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
37021         (prepend_loc_descr_to_each): New function.
37022         (add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
37023         instead of add_loc_descr_to_each if the first argument is single
37024         location list and the second has multiple.
37025         (resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
37026         (loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
37027         when looking for variable value which doesn't have other location info.
37028         (loc_list_from_tree): Formatting fix.
37029         (gen_array_type_die): Simplify DW_AT_string_length handling.
37030         (adjust_string_types): Remove.
37031         (gen_subprogram_die): Don't call adjust_string_types nor test/set
37032         string_types.  Call resolve_variable_values.
37033         (prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
37034         (resolve_addr_in_expr): Likewise.  Add A argument.
37035         (copy_deref_exprloc): Remove deref argument.  Adjust for the
37036         original expression being DW_OP_GNU_variable_value with optionally
37037         DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
37038         optionally after it.
37039         (optimize_string_length): Rework for DW_OP_GNU_variable_value.
37040         (resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
37041         callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
37042         (variable_value_hasher::hash, variable_value_hasher::equal): New
37043         methods.
37044         (resolve_variable_value_in_expr, resolve_variable_value,
37045         resolve_variable_values, note_variable_value_in_expr,
37046         note_variable_value): New functions.
37047         (dwarf2out_early_finish): Call note_variable_value on all toplevel
37048         DIEs.
37049
37050 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
37051
37052         PR c/79677
37053         * opts.h (handle_generated_option): Add GENERATED_P argument.
37054         * opts-common.c (handle_option): Adjust function comment.
37055         (handle_generated_option): Add GENERATED_P argument, pass it to
37056         handle_option.
37057         (control_warning_option): Pass false to handle_generated_option
37058         GENERATED_P.
37059         * opts.c (maybe_default_option): Pass true to handle_generated_option
37060         GENERATED_P.
37061         * optc-gen.awk: Likewise.
37062
37063 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
37064
37065         * config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
37066         a REG, look at the REG it is a SUBREG of.
37067         (splitter for cmpeqsi_t): Ditto.
37068
37069 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
37070
37071         * config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
37072         the special USEs with the pattern of the insn, not the insn itself.
37073
37074 2017-02-24  Matthew Fortune  <matthew.fortune@imgtec.com>
37075
37076         PR target/79473
37077         * doc/invoke.texi: Document -mload-store-pairs.
37078
37079 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
37080             Sandra Loosemore  <sandra@codesourcery.com>
37081
37082         * config/nios2/nios2.c (nios2_simple_const_p): Returns false if the
37083         argument isn't a CONST_INT.
37084         (nios2_alternate_compare_const): Assert op is a CONST_INT.
37085         (nios2_valid_compare_const_p): Assert op is a CONST_INT.
37086         (nios2_validate_compare): Bypass alternate compare logic if *op2
37087         is not a CONST_INT.
37088         (ldstwm_operation_p): Return false if first_base is not a REG or
37089         if first_offset is not a CONST_INT.
37090
37091 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
37092
37093         * config/cris/cris.md: Use correct operand in a define_peephole2.
37094
37095 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
37096
37097         * config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL.
37098
37099 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
37100
37101         * config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of
37102         this_insn if it is an INSN or JUMP_INSN.
37103         (force_offsettable): Look at base, not at addr.
37104         * config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL
37105         on things that aren't necessarily CONST_INTs.
37106
37107 2017-02-24  Uros Bizjak  <ubizjak@gmail.com>
37108
37109         * doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that
37110         -mfpmath=sse is the default also for x86-32 targets with SSE2
37111         instruction set when @option{-ffast-math} is enabled
37112
37113 2017-02-24  Jeff Law  <law@redhat.com>
37114
37115         PR rtl-optimizatoin/79286
37116         * ira.c (update_equiv_regs): Drop may_trap_p exception to
37117         dominance test.
37118
37119 2017-02-24  Richard Biener  <rguenther@suse.de>
37120
37121         PR tree-optimization/79389
37122         * gimple-ssa-split-paths.c (is_feasible_trace): Properly skip
37123         debug insns.
37124
37125 2017-02-24  Aldy Hernandez  <aldyh@redhat.com>
37126
37127         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update
37128         function comment to reflect reality.
37129         (loop_exits_before_overflow): Fix typo in function description.
37130
37131 2017-02-24  Richard Biener  <rguenther@suse.de>
37132
37133         PR tree-optimization/79389
37134         * gimple-ssa-split-paths.c (is_feasible_trace): Verify more
37135         properly that a threading opportunity exists.  Detect conditional
37136         copy/constant propagation opportunities.
37137
37138 2017-02-23  Eric Botcazou  <ebotcazou@adacore.com>
37139
37140         * config/visium/visium.md (type): Add trap.
37141         (b): New mode attribute.
37142         (*btst): Rename into...
37143         (*btst<mode>): ...this and adjust.
37144         (*cbranchsi4_btst_insn): Rename into...
37145         (*cbranch<mode>4_btst_insn): ...this and adjust.
37146         (trap): New define_insn.
37147
37148 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
37149
37150         PR tree-optimization/79389
37151         * ifcvt.c (struct noce_if_info): Add rev_cond field.
37152         (noce_reversed_cond_code): New function.
37153         (noce_emit_store_flag): Use rev_cond if non-NULL instead of
37154         reversed_comparison_code.  Formatting fix.
37155         (noce_try_store_flag): Test rev_cond != NULL in addition to
37156         reversed_comparison_code.
37157         (noce_try_store_flag_constants): Likewise.
37158         (noce_try_store_flag_mask): Likewise.
37159         (noce_try_addcc): Use rev_cond if non-NULL instead of
37160         reversed_comparison_code.
37161         (noce_try_cmove_arith): Likewise.  Formatting fixes.
37162         (noce_try_minmax, noce_try_abs): Clear rev_cond.
37163         (noce_find_if_block): Initialize rev_cond.
37164         (find_cond_trap): Call noce_get_condition with then_bb == trap_bb
37165         instead of false as last argument never attempt to reverse it
37166         afterwards.
37167
37168 2017-02-23  Bin Cheng  <bin.cheng@arm.com>
37169
37170         PR tree-optimization/79663
37171         * tree-predcom.c (combine_chains): Process refs in reverse order
37172         only for ZERO length chains, and add explaining comment.
37173
37174 2017-02-23  Jeff Law  <law@redhat.com>
37175
37176         PR tree-optimization/79578
37177         * tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF
37178         in call to operand_equal_p.
37179
37180 2017-01-23  Dominique d'Humieres  <dominiq@lps.ens.fr>
37181
37182         PR target/71017
37183         * config/i386/cpuid.h: Fix another undefined behavior.
37184
37185 2017-02-23  Richard Biener  <rguenther@suse.de>
37186
37187         PR tree-optimization/79683
37188         * tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite
37189         vector types for data-refs.
37190
37191 2017-02-23  Martin Liska  <mliska@suse.cz>
37192
37193         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0.
37194
37195 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
37196
37197         PR middle-end/79665
37198         * internal-fn.c (get_range_pos_neg): Moved to ...
37199         * tree.c (get_range_pos_neg): ... here.  No longer static.
37200         * tree.h (get_range_pos_neg): New prototype.
37201         * expr.c (expand_expr_real_2) <case TRUNC_DIV_EXPR>: If both arguments
37202         are known to be in between 0 and signed maximum inclusive, try to
37203         expand both unsigned and signed divmod and use the cheaper one from
37204         those.
37205
37206 2017-02-22  Jeff Law  <law@redhat.com>
37207
37208         PR tree-optimization/79578
37209         * tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p
37210         to compare base operands.
37211
37212 2017-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
37213
37214         PR target/79211
37215         * config/rs6000/rs6000.md (*fsel<SFDF:mode><SFDF2:mode>4): Use
37216         gpc_reg_operand instead of fpr_reg_operand.
37217
37218 2017-02-22  Sameera Deshpande  <sameera.deshpande@imgtec.com>
37219
37220         * config/mips/mips.c (mips_return_in_memory): Force FP
37221         vector types to be returned in memory for o32 ABI.
37222
37223 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
37224
37225         * dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable
37226         instead of DW_TAG_member for static data member declarations and don't
37227         set no_linkage_name for static inline data members.
37228         (gen_member_die): For -gdwarf-5 don't change DW_TAG_variable
37229         to DW_TAG_member.
37230
37231 2017-02-22  Martin Liska  <mliska@suse.cz>
37232
37233         * doc/invoke.texi: Replace inequality signs with square brackets
37234         for -Wnormalized.
37235
37236 2017-02-22  Matthew Fortune  <matthew.fortune@imgtec.com>
37237
37238         PR target/78660
37239         * lra-constraints.c (simplify_operand_subreg): Handle
37240         WORD_REGISTER_OPERATIONS targets.
37241
37242 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
37243
37244         PR target/70465
37245         * reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
37246         and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
37247         elimination by swapping fld*.
37248
37249 2017-02-22  Richard Biener  <rguenther@suse.de>
37250
37251         PR tree-optimization/79673
37252         * tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to
37253         convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off
37254         irrelevant address-space qualifiers and avoiding a
37255         ADDR_SPACE_CONVERT_EXPR from fold_convert.
37256
37257 2017-02-22  Richard Biener  <rguenther@suse.de>
37258
37259         PR tree-optimization/79666
37260         * tree-vrp.c (extract_range_from_binary_expr_1): Make sure
37261         to not symbolically negate if that may introduce undefined
37262         overflow.
37263
37264 2017-02-22  Martin Liska  <mliska@suse.cz>
37265
37266         PR lto/79587
37267         * data-streamer-in.c (streamer_read_gcov_count): Remove assert.
37268         * data-streamer-out.c (streamer_write_gcov_count_stream):
37269         Likewise.
37270         * value-prof.c (stream_out_histogram_value): Make assert more
37271         precise based on type of counter.
37272
37273 2017-02-21  Uros Bizjak  <ubizjak@gmail.com>
37274
37275         PR target/79593
37276         * config/i386/i386.md (standard_x87sse_constant_load splitter):
37277         Use nonimmediate_operand instead of memory_operand for operand 1.
37278         (float-extend standard_x87sse_constant_load splitter): Ditto.
37279
37280 2017-02-21  Jeff Law  <law@redhat.com>
37281
37282         PR tree-optimization/79621
37283         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
37284         blocks with edges to themselves.
37285
37286 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
37287
37288         PR target/79633
37289         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Use
37290         is_gimple_call instead of comparing gimple_code with GIMPLE_CALL.
37291         Use gimple_call_builtin_p.
37292
37293         PR target/79570
37294         * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
37295         on temporarily removed DEBUG_INSNs.
37296
37297         PR tree-optimization/79649
37298         * tree-loop-distribution.c (classify_partition): Give up on
37299         non-generic address space loads/stores.
37300
37301 2017-02-21  Aldy Hernandez  <aldyh@redhat.com>
37302
37303         * doc/loop.texi (Loop manipulation): Remove nonexistent
37304         tree_ssa_loop_version from the documentation.
37305         * cfgloopmanip.c (loop_version): Document CONDITION_BB argument.
37306
37307 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
37308
37309         PR target/79494
37310         * config/i386/i386.c (ix86_expand_split_stack_prologue): Call
37311         make_reg_eh_region_note_nothrow_nononlocal on call_insn.
37312         * config/rs6000/rs6000.c: Include except.h.
37313         (rs6000_expand_split_stack_prologue): Call
37314         make_reg_eh_region_note_nothrow_nononlocal on the call insn.
37315
37316 2017-02-21  Martin Jambor  <mjambor@suse.cz>
37317
37318         PR lto/79579
37319         * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
37320         have been analyzed.
37321
37322 2017-02-21  Martin Jambor  <mjambor@suse.cz>
37323
37324         * common.opt (-fipa-cp-alignment): Mark as ignored and preserved
37325         for backward compatibility only.
37326         * doc/invoke.texi (Option Summary): Remove all references to
37327         -fipa-cp-alignment.
37328
37329 2017-02-21  Matthew Fortune  <matthew.fortune@imgtec.com>
37330
37331         PR target/78660
37332         Revert:
37333         2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37334
37335         * lra-constraints.c (curr_insn_transform): Handle
37336         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
37337
37338 2017-02-21  Martin Liska  <mliska@suse.cz>
37339
37340         * config/i386/i386.opt: Replace -masm-dialect with -masm.
37341
37342 2017-02-21  Thomas Schwinge  <thomas@codesourcery.com>
37343
37344         PR translation/79638
37345         * config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y".
37346
37347 2017-02-21  Eric Botcazou  <ebotcazou@adacore.com>
37348
37349         PR ada/67205
37350         * config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
37351         (arm_function_ok_for_sibcall): Return false for an indirect call by
37352         descriptor if all the argument registers are used.
37353         (arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the
37354         alignment of the function.
37355
37356 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
37357
37358         PR tree-optimization/61441
37359         * simplify-rtx.c (simplify_const_unary_operation): For
37360         -fsignaling-nans and sNaN operand, return NULL_RTX rather than
37361         the sNaN unmodified.
37362
37363 2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
37364
37365         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
37366         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
37367         instead of SYSTEM_HEADER_DIR.
37368
37369 2017-02-20  Gerald Pfeifer  <gerald@pfeifer.com>
37370             Martin LiÅ¡ka  <mliska@suse.cz>
37371
37372         * doc/invoke.texi (use-after-scope-direct-emission-threshold):
37373         Fix typos and grammar, use active voice, and clarify.
37374
37375 2017-02-20  Marek Polacek  <polacek@redhat.com>
37376
37377         PR middle-end/79537
37378         * gimplify.c (gimplify_expr): Handle unused *&&L;.
37379
37380         PR sanitizer/79558
37381         * ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null.
37382
37383 2017-02-20  Jakub Jelinek  <jakub@redhat.com>
37384
37385         PR target/79568
37386         * config/i386/i386.c (ix86_expand_builtin): Handle
37387         OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
37388         ix86_builtins_isa[fcode].isa as a requirement of those
37389         flags and any other flag in the bitmask.
37390         (ix86_init_mmx_sse_builtins): Use 0 instead of
37391         ~OPTION_MASK_ISA_64BIT as mask.
37392         * config/i386/i386-builtin.def (__builtin_ia32_rdtsc,
37393         __builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi,
37394         __builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi,
37395         __builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise.
37396
37397 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37398
37399         PR target/78012
37400         * lra-constraints.c (split_reg): Check requested split mode
37401         is supported by the register.
37402
37403 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37404
37405         * lra-constraints.c (simplify_operand_subreg): Remove early
37406         return false.
37407
37408 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37409
37410         PR target/78660
37411         * lra-constraints.c (curr_insn_transform): Tighten condition
37412         for converting SUBREG reloads from OP_OUT to OP_INOUT.
37413
37414 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37415
37416         PR target/78660
37417         * lra-constraints.c (curr_insn_transform): Handle
37418         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
37419
37420 2017-02-19  Uros Bizjak  <ubizjak@gmail.com>
37421
37422         Revert:
37423         2016-05-30  Uros Bizjak  <ubizjak@gmail.com>
37424
37425         * config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".
37426
37427 2017-02-19  Jonathan Wakely  <jwakely@redhat.com>
37428
37429         PR c++/69523
37430         * doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update
37431         description.
37432
37433 2017-02-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
37434
37435         * gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format
37436         for FMA_EXPR.
37437
37438 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
37439
37440         * final.c (last_columnnum, override_columnnum): New variables.
37441         (final_start_function): Set last_columnnum, pass it to begin_prologue
37442         hook and pass 0 to dwarf2out_begin_prologue.
37443         (final_scan_insn): Update override_columnnum.  Pass last_columnnum
37444         to source_line debug hook.
37445         (notice_source_line): Compute last_columnnum and for debug_column_info
37446         return true on column changes.
37447         * debug.h (struct gcc_debug_hooks): Add column argument to
37448         source_line and begin_prologue hooks.
37449         (debug_nothing_int_charstar_int_bool): Remove prototype.
37450         (debug_nothing_int_int_charstar,
37451         debug_nothing_int_int_charstar_int_bool): New prototypes.
37452         (dwarf2out_begin_prologue): Add column argument.
37453         * debug.c (do_nothing_debug_hooks): Adjust source_line and
37454         begin_prologue hooks.
37455         (debug_nothing_int_charstar_int_bool): Remove.
37456         (debug_nothing_int_int_charstar,
37457         debug_nothing_int_int_charstar_int_bool): New functions.
37458         * dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it
37459         through to dwarf2out_source_line.
37460         (dwarf2_lineno_debug_hooks): Adjust begin_prologue hook.
37461         (dwarf2out_source_line): Add column argument, emit it if requested.
37462         * sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column
37463         arguments.
37464         * xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
37465         * xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
37466         * vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it
37467         through to dwarf2out_begin_prologue.
37468         (vmsdbgout_source_line): Add column argument, pass it through to
37469         dwarf2out_source_line.
37470         * dbxout.c (dbxout_begin_prologue): Add column argument, adjust
37471         dbxout_source_line caller.
37472         (dbxout_source_line): Add column argument.
37473
37474         * common.opt (gno-column-info, gcolumn-info): New options.
37475         * dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix.
37476         (check_die): Also test for multiple DW_AT_decl_column attributes.
37477         (add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add
37478         DW_AT_decl_column if requested.
37479         (gen_subprogram_die): Compare and/or add also DW_AT_decl_column
37480         if requested.
37481         (gen_variable_die): Likewise.
37482         (add_call_src_coords_attributes): Add DW_AT_call_column if requested.
37483         * doc/invoke.texi (-gcolumn-info, -gno-column-info): Document.
37484
37485         PR target/79569
37486         * config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
37487         * common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
37488         (ix86_handle_option): Handle OPT_m3dnowa.
37489         * doc/invoke.texi (-m3dnowa): Document.
37490         * doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
37491         -m3dnowa instead of -m3dnow -march=athlon.
37492
37493         PR target/79559
37494         * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
37495         instead of gcc_assert for K, r and R code checks.  Formatting fixes.
37496
37497 2017-02-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
37498
37499         PR target/79261
37500         * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
37501         support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
37502         * config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
37503         generator for vsx_xxpermdi_<mode>_be.
37504         * config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
37505         force big-endian semantics.
37506         (vsx_xxpermdi_<mode>_be): New define_expand with same
37507         implementation as previous version of vsx_xxpermdi_<mode>.
37508
37509 2017-02-17  Jakub Jelinek  <jakub@redhat.com>
37510
37511         PR tree-optimization/79327
37512         * gimple-ssa-sprintf.c (format_integer): Remove likely_adjust
37513         variable, its initialization and use.
37514
37515 2017-02-17  Julia Koval  <julia.koval@intel.com>
37516
37517         * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New.
37518         (OPTION_MASK_ISA_PKU_UNSET): New.
37519         (ix86_handle_option): Handle -mrdpid.
37520         * config/i386/cpuid.h (bit_RDPID): New.
37521         * config/i386/driver-i386.c (host_detect_local_cpu):
37522         Detect RDPID feature.
37523         * config/i386/i386-builtin.def (__builtin_ia32_rdpid): New.
37524         * config/i386/i386-c.c (ix86_target_macros_internal):
37525         Handle RDPID flag.
37526         * config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts.
37527         (ix86_valid_target_attribute_inner_p): Add "rdpid".
37528         (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
37529         * config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New.
37530         * config/i386/i386.md (define_insn "rdpid"): New.
37531         * config/i386/i386.opt Add -mrdpid.
37532         * config/i386/immintrin.h (_rdpid_u32): New.
37533
37534 2017-02-17  Vladimir Makarov  <vmakarov@redhat.com>
37535
37536         PR rtl-optimization/79541
37537         * lra-constraints.c (curr_insn_transform): Remove wrong asm insn
37538         instead of transforming it into USE.
37539
37540 2017-02-17  Segher Boessenkool  <segher@kernel.crashing.org>
37541
37542         * config/rs6000/rs6000.md (extendsfdf2): Remove default arguments.
37543         If HONOR_SNANS (SFmode) force the input to a register.
37544         (*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition.
37545         (*extendsfdf2_snan): New pattern, used when using SNaNs; it generates
37546         an frsp or similar insn.
37547
37548 2017-02-17  Martin Liska  <mliska@suse.cz>
37549
37550         PR rtl-optimization/79577
37551         * params.def (selsched-max-sched-times): Increase minimum to 1.
37552
37553 2017-02-17  Martin Liska  <mliska@suse.cz>
37554
37555         PR rtl-optimization/79574
37556         * gcse.c (want_to_gcse_p): Prevent integer overflow.
37557
37558 2017-02-17  Martin Liska  <mliska@suse.cz>
37559
37560         PR tree-optimization/79529
37561         * tree-ssa-loop-unswitch.c (is_maybe_undefined): Use
37562         ssa_defined_default_def_p to handle cases which are implicitly
37563         defined.
37564         * tree-ssa.c (ssa_defined_default_def_p): New function.
37565         (ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases
37566         which are implicitly defined.
37567         * tree-ssa.h (ssa_defined_default_def_p): Declare.
37568
37569 2017-02-17  Richard Biener  <rguenther@suse.de>
37570
37571         PR middle-end/79576
37572         * params.def (max-ssa-name-query-depth): Limit to 10.
37573
37574 2017-02-17  Richard Biener  <rguenther@suse.de>
37575
37576         PR tree-optimization/79552
37577         * tree-ssa-structalias.c (visit_loadstore): Properly verify
37578         default defs.
37579
37580 2017-02-17  Richard Biener  <rguenther@suse.de>
37581
37582         PR bootstrap/79567
37583         * genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2.
37584
37585 2017-02-17  Marek Polacek  <polacek@redhat.com>
37586
37587         PR middle-end/79536
37588         * fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr.
37589         (fold_negate_expr): New wrapper.
37590
37591 2017-02-16  Sandra Loosemore  <sandra@codesourcery.com>
37592
37593         * doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: 
37594         Correct terminology and de-emphasize pre-standard behavior.
37595
37596 2017-02-16  Alan Modra  <amodra@gmail.com>
37597
37598         PR rtl-optimization/79286
37599         * ira.c (def_dominates_uses): New function.
37600         (update_equiv_regs): Don't create an equivalence for insns that
37601         may trap where the register def does not dominate the use.
37602
37603 2017-02-16  Vladimir Makarov  <vmakarov@redhat.com>
37604
37605         PR rtl-optimization/78127
37606         * lra.c (lra): Call lra_eliminate before finish the loop after
37607         lra_constraint.
37608
37609 2017-02-16  Richard Biener  <rguenther@suse.de>
37610
37611         * graphite.h: Do not include isl/isl_val_gmp.h, instead include
37612         isl/isl_val.h.
37613         * graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove.
37614         (gcc_expression_from_isl_expr_int): Use generic isl_val interface.
37615         * graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h.
37616         (isl_val_int_from_wi): New function.
37617         (extract_affine_gmp): Rename to ...
37618         (extract_affine_wi): ... this, take a widest_int.
37619         (extract_affine_int): Just wrap extract_affine_wi.
37620         (add_param_constraints): Use isl_val_int_from_wi.
37621         (add_loop_constraints): Likewise, and extract_affine_wi.
37622
37623 2017-02-15  Jeff Law  <law@redhat.com>
37624
37625         PR middle-end/79521
37626         * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
37627         ira_init_register_move_cost_if_necessary.
37628
37629 2017-02-15  Martin Sebor  <msebor@redhat.com>
37630
37631         PR middle-end/32003
37632         * doc/invoke.texi (-fdump-final-insns): Replace option accidentally
37633         removed in a prior commit.
37634
37635 2017-02-15  Bin Cheng  <bin.cheng@arm.com>
37636
37637         PR tree-optimization/79347
37638         * tree-vect-loop-manip.c (vect_do_peeling): Maintain profile
37639         counters during peeling.
37640
37641 2017-02-15  Thomas Schwinge  <thomas@codesourcery.com>
37642
37643         * Makefile.in (site.exp): Remove "set ISLVER".
37644
37645 2017-02-15  Jakub Jelinek  <jakub@redhat.com>
37646
37647         PR target/79487
37648         * real.c (real_from_integer): Call real_convert even for decimal.
37649
37650 2017-02-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37651
37652         PR target/79421
37653         * config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS.
37654
37655 2017-02-14  Andrew Pinski  <apinski@cavium.com>
37656
37657         * config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C"
37658         cores and change the partno/implementer to be correct.
37659         (thunderx2t99p1): New core which replaces thunderx2t99 and still has
37660         the 'B" as the implementer.
37661         * config/aarch64/aarch64-tune.md: Regenerate.
37662
37663 2017-02-14  Carl Love  <cel@us.ibm.com>
37664
37665         * config/rs6000/rs6000.c: Add case statement entry to make the
37666         xvcvuxdsp built-in argument unsigned.
37667         * config/rs6000/vsx.md: Fix the source and return operand types so they
37668         match the instruction definitions from the ISA document.  Fix typo
37669         in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
37670         statement.
37671
37672 2017-02-14  Vladimir Makarov  <vmakarov@redhat.com>
37673
37674         PR target/79282
37675         * lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add
37676         member early_clobber_alts.
37677         * lra-lives.c (reg_early_clobber_p): New.
37678         (process_bb_lives): Use it.
37679         * lra.c (new_insn_reg): New arg early_clobber_alts.  Use it.
37680         (debug_operand_data): Initialize early_clobber_alts.
37681         (setup_operand_alternative): Set up early_clobber_alts.
37682         (collect_non_operand_hard_regs): Ditto.  Pass early clobber
37683         alternatives to new_insn_reg.
37684         (add_regs_to_insn_regno_info): Add arg early_clobber_alts.  Use
37685         it.
37686         (lra_update_insn_regno_info): Pass the new arg.
37687
37688 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
37689
37690         PR middle-end/79505
37691         * omp-offload.c (free_oacc_loop): Release loop->ifns vector.
37692         (new_oacc_loop_raw): Don't clear already cleared fields.
37693
37694         PR target/79481
37695         * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
37696         _mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
37697         _mm512_prefetch_i64gather_ps): New inline functions and macros.
37698
37699 2017-02-14  Uros Bizjak  <ubizjak@gmail.com>
37700
37701         PR target/79495
37702         * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
37703
37704 2017-02-14  H.J. Lu  <hongjiu.lu@intel.com>
37705
37706         PR target/79498
37707         * config/i386/i386.c (timode_scalar_chain::convert_insn): Insert
37708         the extra instruction to the right place to store 128-bit constant
37709         when needed.
37710
37711 2017-02-14  Martin Sebor  <msebor@redhat.com>
37712
37713         PR middle-end/79448
37714         * gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX
37715           warning for strings of unknown length.
37716
37717 2017-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
37718
37719         * config.gcc (supported_defaults) [powerpc*-*-*]: Update.
37720
37721 2017-02-14  Jeff Law  <law@redhat.com>
37722
37723         PR target/79404
37724         * ira-costs.c (scan_one_insn): Initialize register move costs
37725         for pseudos seen in USE/CLOBBER insns.
37726
37727         PR tree-optimization/79095
37728         * tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR,
37729         if the numerator has the range ~[0,0] make the resultant range ~[0,0].
37730         (extract_range_from_binary_expr): For MINUS_EXPR with no derived range,
37731         if the operands are known to be not equal, then the resulting range
37732         is ~[0,0].
37733         (intersect_ranges): If the new range is ~[0,0] and the old range is
37734         wide, then prefer ~[0,0].
37735         * tree-vrp.c (overflow_comparison_p_1): New function.
37736         (overflow_comparison_p): New function.
37737         * tree-vrp.c (register_edge_assert_for_2): Register additional asserts
37738         if NAME is used in an overflow test.
37739         (vrp_evaluate_conditional_warnv_with_ops): If the ops represent an
37740         overflow check that can be expressed as an equality test, then adjust
37741         ops to be that equality test.
37742
37743 2017-02-14  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37744
37745         * config/s390/s390-builtin-types.def: Remove flags argument.
37746         * config/s390/s390.c (s390_init_builtins): Likewise.
37747
37748 2017-02-14  Martin Liska  <mliska@suse.cz>
37749
37750         * tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body
37751         vector.  Fix trailing white spaces.
37752
37753 2017-02-14  James Greenhalgh  <james.greenhalgh@arm.com>
37754
37755         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle
37756         HFmode.
37757
37758 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37759
37760         PR rtl-optimization/68664
37761         * config/arm/arm.c (arm_sched_can_speculate_insn):
37762         New function.  Declare prototype.
37763         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
37764
37765 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37766
37767         PR rtl-optimization/68664
37768         * config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn):
37769         New function.
37770         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
37771
37772 2017-02-14  Amit Pawar  <amit.pawar@amd.com>
37773
37774         * config/i386/i386.c (znver1_cost): Fix the alignment for function and
37775         max skip bytes for function, loop and jump.
37776
37777 2017-02-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
37778
37779         * gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for
37780         ABS_EXPR for gimple dump.
37781
37782 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
37783
37784         PR target/79462
37785         * config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4].
37786
37787         PR tree-optimization/79408
37788         * tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the
37789         case when on TRUNC_MOD_EXPR op0 is INTEGER_CST.
37790         (simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges
37791         also if rhs1 is INTEGER_CST.
37792
37793 2017-02-14  Richard Biener  <rguenther@suse.de>
37794
37795         PR middle-end/79432
37796         * tree-into-ssa.c (insert_phi_nodes): When the function can
37797         have abnormal edges rewrite SSA names with broken use-def
37798         dominance out of SSA and register them for PHI insertion.
37799
37800 2017-02-13  Martin Sebor  <msebor@redhat.com>
37801
37802         PR middle-end/79496
37803         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid
37804         clearing info.nowrite flag when snprintf size argument is a range.
37805
37806 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
37807
37808         * cprop.c (cprop_jump): Add missing space in string literal.
37809         * tree-ssa-structalias.c (rewrite_constraints): Likewise.
37810         (get_constraint_for_component_ref): Likewise.
37811         * df-core.c (df_worklist_dataflow_doublequeue): Likewise.
37812         * tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise.
37813         * lra-constraints.c (process_alt_operands): Likewise.
37814         * ipa-inline.c (inline_small_functions): Likewise.
37815         * tree-ssa-sccvn.c (visit_reference_op_store): Likewise.
37816         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
37817         * trans-mem.c (diagnose_tm_1_op): Likewise.
37818         * omp-grid.c (grid_find_single_omp_among_assignments): Likewise.
37819         (grid_parallel_clauses_gridifiable): Likewise.
37820
37821         * config/nvptx/mkoffload.c (process): Add space in between
37822         , and %d.
37823
37824         * config/i386/i386.h (REG_CLASS_NAMES): Add , in between
37825         "MOD4_SSE_REGS" and "ALL_REGS".
37826
37827         * spellcheck.c (test_data): Add , in between "foo" and "food".
37828
37829 2017-02-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37830
37831         PR target/79449
37832         * config/rs6000/rs6000.c (expand_block_compare): Make sure runtime
37833         boundary crossing check and subsequent code generation agree.
37834
37835 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37836
37837         * config/aarch64/aarch64.c (has_memory_op): Delete.
37838         (aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of
37839         has_memory_op.
37840
37841 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
37842
37843         PR rtl-optimization/79388
37844         PR rtl-optimization/79450
37845         * combine.c (distribute_notes): When removing TEM_INSN for which
37846         corresponding dest has last value recorded, invalidate that last
37847         value.
37848
37849 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37850
37851         * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead
37852         of explicit '@'.  Add missing assembly comment marker on branch costs
37853         printout.
37854
37855 2017-02-13  Nathan Sidwell  <nathan@acm.org>
37856
37857         * gengtype-lex.l (<in_struct>): Add '/'.
37858
37859 2017-02-13  Martin Liska  <mliska@suse.cz>
37860
37861         PR c/79471
37862         * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
37863
37864 2017-02-13  Richard Biener  <rguenther@suse.de>
37865
37866         * configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS):
37867         Remove.
37868         * configure: Re-generate.
37869         * config.in: Likewise.
37870         * graphite-dependences.c: Simplify as if
37871         HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined.
37872         * graphite-isl-ast-to-gimple.c: Likewise.
37873         * graphite-optimize-isl.c: Likewise.
37874         * graphite-poly.c: Likewise.
37875         * graphite-sese-to-poly.c: Likewise.
37876         * graphite.h: Likewise.
37877         * toplev.c: Include isl/version.h and use isl_version () for
37878         printing the ISL version.
37879         * doc/install.texi: Update ISL requirement.
37880
37881 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
37882
37883         * doc/standards.texi (Standards): Update reference to
37884         Objective-C 2.0.
37885
37886 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
37887
37888         * doc/extend.texi (Named Address Spaces): sourceware.org now
37889         defaults to https.
37890         * doc/install.texi (Binaries): Ditto.
37891         (Specific): Ditto.
37892
37893 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
37894
37895         * doc/cpp.texi: Replace "stringify"/"stringification" with C
37896         standard terminology "stringize"/"stringizing" throughout.
37897         * doc/cppinternals.texi: Likewise.
37898
37899 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
37900
37901         * doc/extend.texi: Fix some spelling mistakes and typos.
37902         * doc/invoke.texi: Likewise.
37903
37904 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
37905
37906         PR ipa/79224
37907         * params.def (inline-min-speedup) Change from 10 to 8.
37908
37909 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
37910
37911         * doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to
37912         4.5.
37913
37914 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
37915
37916         PR ipa/79224
37917         * ipa-inline-analysis.c (get_minimal_bb): New function.
37918         (record_modified): Use it.
37919         (remap_edge_change_prob): Handle also ancestor functions.
37920
37921 2017-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
37922
37923         * doc/contrib.texi (Contributors): Remove broken link into
37924         the Mauve CVS repository.
37925
37926 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
37927
37928         PR middle-end/79454
37929         * internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise
37930         result computation whenever lhs doesn't have vector mode, not
37931         just when it has BLKmode.
37932
37933 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
37934
37935         * doc/makefile.texi (profiledbootstrap): Refer to the
37936         installation instructions only in textual form.
37937
37938 2017-02-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37939
37940         PR target/79295
37941         * config/rs6000/altivec.md (bcd<bcd_add_sub>): Fix constraints.
37942
37943 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
37944
37945         * doc/install.texi (Specific): Use https for blackfin.uclinux.org.
37946         (Specific): Update mingw-w64 reference.
37947         (Binaries): Ditto.
37948         (Specific): Remove broken link to Renesas RX processor.
37949
37950 2017-02-10  Richard Biener  <rguenther@suse.de>
37951
37952         * toplev.c (process_options): Do not mention obsolete graphite
37953         options when printing sorry message about missing graphite support.
37954         Mention -floop-nest-optimize.
37955
37956 2017-02-10  Christophe Lyon  <christophe.lyon@linaro.org>
37957
37958         * config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm.
37959         (vtst_p16): Likewise.
37960         (vtstq_p8): Likewise.
37961         (vtstq_p16): Likewise.
37962         (vtst_p64): New.
37963         (vtstq_p64): Likewise.
37964         * config/arm/arm_neon.h (vgetq_lane_p64): New.
37965         (vset_lane_p64): New.
37966         (vsetq_lane_p64): New.
37967
37968 2017-02-10  Jakub Jelinek  <jakub@redhat.com>
37969
37970         PR tree-optimization/79411
37971         * tree-ssa-reassoc.c (is_reassociable_op): Return false if
37972         stmt operands are SSA_NAMEs used in abnormal phis.
37973         (can_reassociate_p): Return false if op is SSA_NAME used in abnormal
37974         phis.
37975
37976 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
37977
37978         PR ipa/70795
37979         * cgraphunit.c (cgraph_node::add_new_function): Set externally_visible
37980         flag if needed.
37981
37982 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
37983
37984         * tree-ssa-loop-unswitch.c (hoist_guard): Update profile.
37985
37986 2017-02-09  Jakub Jelinek  <jakub@redhat.com>
37987
37988         * omp-offload.c (oacc_loop_auto_partitions): Use || instead of |
37989         to avoid warning.
37990
37991         PR c/79413
37992         * gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants,
37993         not arbitrary TREE_CONSTANT.
37994
37995         PR c/79431
37996         * gimplify.c (gimplify_adjust_omp_clauses): Ignore
37997         "omp declare target link" attribute unless is_global_var.
37998         * omp-offload.c (find_link_var_op): Likewise.
37999
38000 2017-02-09  Nathan Sidwell  <nathan@codesourcery.com>
38001             Chung-Lin Tang  <cltang@codesourcery.com>
38002
38003         * gimplify.c (gimplify_scan_omp_clauses): No special handling for
38004         OMP_CLAUSE_TILE.
38005         (gimplify_adjust_omp_clauses): Don't delete TILE.
38006         (gimplify_omp_for): Deal with TILE.
38007         * internal-fn.c (expand_GOACC_TILE): New function.
38008         * internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative.
38009         (GOACC_TILE): New.
38010         * omp-expand.c (struct oacc_collapse): Add tile and outer fields.
38011         (expand_oacc_collapse_init): Add LOC paramter.  Initialize tile
38012         element fields.
38013         (expand_oacc_collapse_vars): Add INNER parm, adjust for tiling,
38014         avoid DIV for outermost collapse var.
38015         (expand_oacc_for): Insert tile element loop as needed.  Adjust.
38016         Remove out of date comments, fix whitespace.
38017         * omp-general.c (omp_extract_for_data): Deal with tiling.
38018         * omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag,
38019         adjust OLF_DIM_BASE value.
38020         (struct omp_for_data): Add tiling field.
38021         * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE.
38022         (lower_oacc_head_mark): Add OLF_TILE as appropriate.  Ensure 2 levels
38023         for auto loops.  Remove default auto determining, moved to
38024         oacc_loop_fixed_partitions.
38025         * omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call
38026         stmts, add e_mask field.
38027         (oacc_dim_call): New function, abstracted out from oacc_thread_numbers.
38028         (oacc_thread_numbers): Use oacc_dim_call.
38029         (oacc_xform_tile): New.
38030         (new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector.
38031         (finish_oacc_loop): Adjust for ifns vector.
38032         (oacc_loop_discover_walk): Append loop abstraction sites to list,
38033         add case for GOACC_TILE fns.
38034         (oacc_loop_xform_loop): Delete.
38035         (oacc_loop_process): Iterate over call list directly, and add
38036         handling for GOACC_TILE fns.
38037         (oacc_loop_fixed_partitions): Determine default auto, deal with TILE,
38038         dump partitioning.
38039         (oacc_loop_auto_partitions): Add outer_assign parm. Assign all but
38040         vector partitioning to outer loops.  Assign 2 partitions to loops
38041         when available. Add TILE handling.
38042         (oacc_loop_partition): Adjust oacc_loop_auto_partitions call.
38043         (execite_oacc_device_lower): Process GOACC_TILE fns,
38044         ignore unknown specs.
38045         * tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE.
38046         * tree.c (omp_clause_num_ops): Adjust TILE ops.
38047         * tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New.
38048
38049 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
38050
38051         * configure.ac (ACX_BUGURL): Update.
38052         * configure: Regenerate.
38053
38054 2017-02-09  Richard Biener  <rguenther@suse.de>
38055
38056         PR tree-optimization/69823
38057         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
38058         Properly enumerate all BBs in the region.  Use auto_vec/auto_bitmap.
38059
38060 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
38061
38062         * config/arc/arc-c.def: Add __NPS400__ definition.
38063         * config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here.
38064         (TARGET_NPS400): Define.
38065
38066 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
38067
38068         * config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in
38069         file.
38070         (arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t
38071         pointer, arch_info.
38072         (arc_cpu_types): Fill the arch_info field with a pointer into the
38073         arc_arch_types table.
38074         (arc_selected_cpu): Declare.
38075         * config/arc/arc.c (arc_selected_cpu): Make global.
38076         (arc_selected_arch): Delete.
38077         (arc_base_cpu): Delete.
38078         (arc_override_options): Remove references to deleted variables,
38079         update access to arch information.
38080         (ARC_OPT): Update access to arch information.
38081         (ARC_OPTX): Likewise.
38082         * config/arc/arc.h (arc_base_cpu): Remove declaration.
38083         (TARGET_ARC600): Update access to arch information.
38084         (TARGET_ARC601): Likewise.
38085         (TARGET_ARC700): Likewise.
38086         (TARGET_EM): Likewise.
38087         (TARGET_HS): Likewise.
38088         * config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch
38089         information.
38090
38091 2017-02-08  Pat Haugen  <pthaugen@us.ibm.com>
38092
38093         PR target/78604
38094         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert
38095         condition/operands for integer GE/LE/GEU/LEU operations.
38096
38097 2017-02-08  Segher Boessenkool  <segher@kernel.crashing.org>
38098
38099         PR translation/79397
38100         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
38101         of AltiVec.
38102
38103 2017-02-08  Martin Jambor  <mjambor@suse.cz>
38104
38105         PR ipa/79375
38106         * ipa-prop.c (ipa_alloc_node_params): Make static, return bool
38107         whether allocation happened.
38108         (ipa_initialize_node_params): Do not call ipa_alloc_node_params if
38109         nothing was allocated.
38110
38111 2017-02-08  Jakub Jelinek  <jakub@redhat.com>
38112
38113         PR tree-optimization/79408
38114         * tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not
38115         constant, but SSA_NAME with a known integer range, use the minimum
38116         of that range instead of op1 to determine if modulo can be replaced
38117         with its first operand.
38118
38119 2016-02-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38120
38121         * config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX.
38122
38123 2017-02-08  Richard Biener  <rguenther@suse.de>
38124
38125         PR tree-optimization/71824
38126         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
38127         Check all loops contained in the merged region.
38128
38129 2017-02-07  Andrew Pinski  <apinski@cavium.com>
38130
38131         * config/aarch64/aarch64.md (popcount<mode>2): New pattern.
38132
38133 2017-02-07  Andrew Pinski  <apinski@cavium.com>
38134
38135         * config/aarch64/aarch64-cores.def (thunderx): Disable LSE.
38136         (thunderxt88): Likewise.
38137         (thunderxt81): Disable LSE and change v8.1 to v8.
38138         (thunderxt83): Likewise.
38139
38140 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
38141             Richard Biener  <rguenther@suse.de>
38142
38143         PR middle-end/79399
38144         * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
38145         type from int to size_t.
38146         * ira-costs.c (struct_costs_size): Change type from int to size_t.
38147
38148 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
38149
38150         PR rtl-optimization/79386
38151         * cprop.c (bypass_conditional_jumps): Initialize
38152         bypass_last_basic_block already before splitting bbs after
38153         unconditional traps...
38154         (bypass_conditional_jumps): ... rather than here.
38155
38156         PR target/79299
38157         * config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs.
38158         (*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2,
38159         *avx512f_gatherdi<mode>, *avx512f_gatherdi<mode>_2): Use them,
38160         fix -masm=intel patterns.
38161
38162 2017-02-07  Richard Biener  <rguenther@suse.de>
38163
38164         PR tree-optimization/79256
38165         PR middle-end/79278
38166         * builtins.c (get_object_alignment_2): Use min_align_of_type
38167         to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT
38168         and ADJUST_FIELD_ALIGN.
38169
38170         * doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional
38171         type parameter.
38172         * doc/tm.texi: Regenerate.
38173         * stor-layout.c (layout_decl): Adjust.
38174         (update_alignment_for_field): Likewise.
38175         (place_field): Likewise.
38176         (min_align_of_type): Likewise.
38177         * config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust.
38178         * config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise.
38179         * config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise.
38180         * config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise.
38181         * config/frv/frv.c (frv_adjust_field_align): Likewise.
38182         * config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise.
38183         * config/i386/i386.c (x86_field_alignment): Likewise.
38184         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
38185         * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise.
38186         * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
38187         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
38188         * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise.
38189         * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p):
38190          Likewise.
38191
38192         Revert
38193         2017-01-30  Richard Biener  <rguenther@suse.de>
38194
38195         PR tree-optimization/79256
38196         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
38197         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
38198         alignment on TYPE.
38199
38200 2017-02-07  Toma Tabacu  <toma.tabacu@imgtec.com>
38201
38202         * config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode
38203         argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw
38204         builtins to SImode and emit a zero-extend, if necessary.
38205
38206 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
38207
38208         * docs/invoke.texi (RISC-V Options): Alphabetize.
38209
38210 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
38211
38212         * doc/invoke.texi (RISC-V Options): Use two spaces to separate
38213         options.
38214
38215 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
38216
38217         * config/riscv/riscv.c: New file.
38218         * common/config/riscv/riscv-common.c: Likewise.
38219         * config.gcc: Likewise.
38220         * config/riscv/constraints.md: Likewise.
38221         * config/riscv/elf.h: Likewise.
38222         * config/riscv/generic.md: Likewise.
38223         * config/riscv/linux.h: Likewise.
38224         * config/riscv/multilib-generator: Likewise.
38225         * config/riscv/peephole.md: Likewise.
38226         * config/riscv/pic.md: Likewise.
38227         * config/riscv/predicates.md: Likewise.
38228         * config/riscv/riscv-builtins.c: Likewise.
38229         * config/riscv/riscv-c.c: Likewise.
38230         * config/riscv/riscv-ftypes.def: Likewise.
38231         * config/riscv/riscv-modes.def: Likewise.
38232         * config/riscv/riscv-opts.h: Likewise.
38233         * config/riscv/riscv-protos.h: Likewise.
38234         * config/riscv/riscv.h: Likewise.
38235         * config/riscv/riscv.md: Likewise.
38236         * config/riscv/riscv.opt: Likewise.
38237         * config/riscv/sync.md: Likewise.
38238         * config/riscv/t-elf-multilib: Likewise.
38239         * config/riscv/t-linux: Likewise.
38240         * config/riscv/t-linux-multilib: Likewise.
38241         * config/riscv/t-riscv: Likewise.
38242         * configure.ac: Likewise.
38243         * doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew
38244         Waterman as RISC-V maintainers.
38245         * doc/install.texi: Add RISC-V entries.
38246         * doc/invoke.texi: Add RISC-V options section.
38247         * doc/md.texi: Add RISC-V constraints section.
38248         * configure: Regenerated.
38249
38250 2017-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
38251
38252         PR target/66144
38253         * config/rs6000/vector.md (vcond<mode><mode>): Allow the true and
38254         false values to be constant vectors with all 0 or all 1 bits set.
38255         (vcondu<mode><mode>): Likewise.
38256         * config/rs6000/predicates.md (vector_int_reg_or_same_bit): New
38257         predicate.
38258         (fpmask_comparison_operator): Update comment.
38259         (vecint_comparison_operator): New predicate.
38260         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize
38261         vector conditionals when the true and false values are constant
38262         vectors with all 0 bits or all 1 bits set.
38263
38264 2017-02-06  Martin Sebor  <msebor@redhat.com>
38265
38266         PR  tree-optimization/79376
38267         * gimple-fold.c (get_range_strlen): Set the minimum length to zero.
38268
38269 2017-02-06  Uros Bizjak  <ubizjak@gmail.com>
38270
38271         * config/i386/sse.md (vector modes -> vec_extract* splitter): Use
38272         explicit subreg RTX with operand 1.  Use VECTOR_MODE_P predicate
38273         to simplify split condition.
38274
38275 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
38276
38277         * omp-expand.c (oxpand_omp_atomic_fetch_op,
38278         expand_omp_atomic_pipeline): Return false if can_atomic_load_p is
38279         false.
38280
38281 2017-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
38282
38283         PR rtl-optimization/68664
38284         * target.def (can_speculate_insn): New hook.
38285         * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook.
38286         * doc/tm.texi: Regenerate.
38287         * sched-rgn.c (can_schedule_ready_p): Use the new hook.
38288         * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro.
38289         (rs6000_sched_can_speculate_insn): New function.
38290
38291 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
38292
38293         PR tree-optimization/79284
38294         * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define.
38295         * tree-vect-stmts.c (vect_get_vec_def_for_operand,
38296         vectorizable_mask_load_store, vectorizable_operation,
38297         vect_is_simple_cond, get_same_sized_vectype): Use it instead
38298         of comparing TREE_CODE of a type against BOOLEAN_TYPE.
38299         * tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1,
38300         vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise.
38301         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
38302         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
38303         Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after
38304         is_gimple_assign (stmt).  Replace another such test with
38305         is_gimple_assign (stmt).
38306
38307 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
38308
38309         PR target/78883
38310         * config/avr/avr.c (rtl-iter.h): Include it.
38311         (TARGET_LEGITIMATE_COMBINED_INSN): New hook define...
38312         (avr_legitimate_combined_insn): ...and implementation.
38313
38314 2017-02-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38315
38316         * config/s390/predicates.md ("larl_operand"): Use macros from hwint.h.
38317         * config/s390/s390.c (s390_const_operand_ok)
38318         (s390_canonicalize_comparison, s390_extract_part)
38319         (s390_single_part, s390_contiguous_bitmask_nowrap_p)
38320         (s390_contiguous_bitmask_p, s390_rtx_costs)
38321         (legitimize_pic_address): Likewise.
38322         * config/s390/s390.md ("clzdi2", "clztidi2"): Likewise.
38323         * config/s390/vx-builtins.md ("vec_genbytemaskv16qi")
38324         ("vec_permi<mode>", "vfae<mode>", "*vfaes<mode>", "vstrc<mode>")
38325         ("*vstrcs<mode>"): Use UINTVAL() to set unsigned HOST_WIDE_INT.
38326         * config/s390/vector.md ("vec_vfenes<mode>"): Likewise.
38327
38328 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
38329
38330         * config/avr/avr.md (*addhi3_zero_extend): Add alternative where
38331         REGNO($0) == REGNO($1).
38332
38333 2017-02-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38334
38335         * config/s390/linux.h(SIZE_TYPE): Add comment.
38336
38337 2017-02-06  Julian Brown  <julian@codesourcery.com>
38338             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
38339             Virendra Pathak  <virendra.pathak@broadcom.com>
38340
38341         * config/aarch64/aarch64-cores.def: Change the scheduler
38342         to Thunderx2t99.
38343         * config/aarch64/aarch64.md: Include thunderx2t99.md.
38344         * config/aarch64/thunderx2t99.md: New file.
38345
38346 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
38347
38348         * doc/standards.texi (Go Language): Update link to language
38349         standard.
38350
38351 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
38352
38353         * tree-eh.c (lower_resx): Sanitize profile.
38354         (cleanup_empty_eh_move_lp): Likewise.
38355
38356 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
38357
38358         PR tree-ssa/79347
38359         * cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add
38360         ELSE_PROB.
38361         * cfgloopmanip.h (loop_version): Update prototype.
38362         * modulo-sched.c (sms_schedule): Update call of loop_version.
38363         * tree-if-conv.c(version_loop_for_if_conversion): Likewise.
38364         * tree-parloops.c (gen_parallel_loop): Likewise.
38365         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise.
38366         * tree-ssa-loop-split.c (split_loop): Likewise.
38367         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise.
38368         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
38369
38370 2017-02-05  Martin Liska  <mliska@suse.cz>
38371
38372         PR bootstrap/78985
38373         * config/s390/s390.c (s390_gimplify_va_arg): Initialize local
38374         variable to NULL.
38375         (print_operand_address): Initialize a struct to zero.
38376
38377 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
38378
38379         * doc/contrib.texi (Contributors): Refer to Hans Boehm's
38380         garbage collector only in textual form.
38381
38382 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
38383
38384         * doc/extend.texi (x86 specific memory model extensions for
38385         transactional memory): Simplify a phrase.
38386
38387 2017-02-05  Eric Botcazou  <ebotcazou@adacore.com>
38388
38389         PR target/79353
38390         * config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with
38391         'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32.
38392         (atomic_storedi_1): Likewise.
38393
38394 2017-02-04  Jakub Jelinek  <jakub@redhat.com>
38395
38396         PR tree-optimization/79338
38397         * tree-parloops.c (gather_scalar_reductions): Don't call
38398         vect_analyze_loop_form for loop->inner before destroying loop's
38399         loop_vinfo.
38400
38401 2017-02-03  Martin Sebor  <msebor@redhat.com>
38402
38403         PR tree-optimization/79327
38404         * gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix
38405         when precision has resulted in leading zeros.
38406         (format_integer): Adjust the likely counter to assume an unknown
38407         argument that may be zero is non-zero.
38408
38409 2017-02-03  Jason Merrill  <jason@redhat.com>
38410
38411         PR c++/78689
38412         * tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to
38413         avoid copying non-taken branch.
38414
38415 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
38416
38417         PR tree-optimization/79340
38418         * tree-vect-loop.c (vectorizable_reduction): Release
38419         vec_defs elements after safe_splicing them into other vectors.
38420         Formatting fixes.
38421
38422         PR tree-optimization/79327
38423         * gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning
38424         true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of
38425         dirtype.
38426         (format_integer): Use wide_int_to_tree instead of build_int_cst
38427         + to_?hwi.  If argmin is NULL, just set argmin and argmax to
38428         TYPE_{MIN,MAX}_VALUE of argtype.  Simplify and fix computation
38429         of shortest and longest sequence.
38430
38431 2017-02-03  Uros Bizjak  <ubizjak@gmail.com>
38432
38433         * config/i386/i386.c (dimode_scalar_chain::convert_reg):
38434         Use pextrd for TARGET_SSE4_1 when creating scalar copy.
38435
38436 2017-02-03  Walter Lee  <walt@tilera.com>
38437
38438         PR target/78862
38439         * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
38440         after initial stackframe link reg save.
38441         * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
38442
38443 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
38444
38445         PR target/79354
38446         * config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of
38447         wu for stxssp alternative.
38448
38449 2017-02-03  Martin Sebor  <msebor@redhat.com>
38450
38451         PR tree-optimization/79352
38452         * gimple-fold.c (get_range_strlen): Add argument.
38453         (get_range_strlen): Change return type to bool.
38454         (get_maxval_strlen): Pass in a dummy argument.
38455         * gimple-fold.h (get_range_strlen): Change return type to bool.
38456         * gimple-ssa-sprintf.c (get_string_length): Set unlikely counter.
38457         * tree.h (array_at_struct_end_p): Add argument.
38458         * tree.c (array_at_struct_end_p): Handle it.
38459
38460 2017-02-03  Martin Liska  <mliska@suse.cz>
38461
38462         PR lto/66295
38463         * multiple_target.c (create_dispatcher_calls): Redirect edge
38464         from a caller of a dispatcher.
38465         (expand_target_clones): Make the clones local.
38466         (ipa_target_clone): Do both target clones and resolvers.
38467         (ipa_dispatcher_calls): Remove the pass.
38468         (pass_dispatcher_calls::gate): Likewise.
38469         (make_pass_dispatcher_calls): Likewise.
38470         * passes.def (pass_target_clone): Put as very first IPA early
38471         pass.
38472
38473 2017-02-03  Martin Liska  <mliska@suse.cz>
38474
38475         * symtab.c (symtab_node::binds_to_current_def_p): Bail out
38476         in case of a function with ifunc attribute.
38477
38478 2017-02-03  Martin Liska  <mliska@suse.cz>
38479
38480         * cgraph.c (cgraph_node::dump): Dump function version info.
38481         * symtab.c (symtab_node::dump_base): Add missing new line.
38482
38483 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
38484
38485         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function.
38486         (ifcombine_ifandif): Use it.
38487
38488 2017-02-03  Martin Liska  <mliska@suse.cz>
38489
38490         * doc/invoke.texi: Document default value for
38491         use-after-scope-direct-emission-threshold.
38492
38493 2017-02-03  Martin Liska  <mliska@suse.cz>
38494
38495         PR tree-optimization/79339
38496         * gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
38497         (format_floating): Likewise.
38498
38499 2017-02-03  Martin Liska  <mliska@suse.cz>
38500
38501         PR ipa/79337
38502         * ipa-prop.c (ipa_node_params_t::insert): Remove current
38503         implementation.
38504         (ipa_node_params_t::remove): Likewise.
38505         * ipa-prop.h (ipa_node_params::ipa_node_params): Make default
38506         initialization from removed ipa_node_params_t::insert.
38507         (ipa_node_params::~ipa_node_params): Move from removed
38508         ipa_node_params_t::release.
38509         * symbol-summary.h (symbol_summary::m_released): New member.
38510         Do not release a summary twice.  Do not allow to call finalizer
38511         for types of a summary that live in GGC memory.
38512
38513 2017-02-02  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
38514
38515         * config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and
38516         cmp_branch fusion.
38517
38518 2017-02-02  Martin Sebor  <msebor@redhat.com>
38519
38520         PR middle-end/79275
38521         * gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero.
38522         (format_string): Tighten up the range of output for non-constant
38523         strings and correct the expected range for wide non-constant strings.
38524
38525 2017-02-02  Martin Sebor  <msebor@redhat.com>
38526
38527         * doc/invoke.texi (-maccumulate-args): Fix bad grammar.
38528
38529         PR middle-end/32003
38530         * doc/invoke.texi (-fdump-tree-): Remove pass-specific options from
38531         index.
38532         (-fdump-tree-@var): Add to index and document how to come up
38533         with pass-specific option and dump file names.
38534         (-fdump-passes): Clarify where to look for output.
38535
38536 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
38537
38538         PR middle-end/77445
38539         * tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump
38540         statistics of the analyzed path; allow threading for speed when
38541         any of BBs along the path are optimized for speed.
38542
38543 2017-02-02  Eric Botcazou  <ebotcazou@adacore.com>
38544
38545         PR middle-end/78468
38546         * emit-rtl.c (init_emit): Add ??? comment for problematic alignment
38547         settings of the virtual registers.
38548
38549         Revert again
38550         2016-08-23  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38551
38552         * explow.c (get_dynamic_stack_size): Take known alignment of stack
38553         pointer + STACK_DYNAMIC_OFFSET into account when calculating the size
38554         needed.
38555
38556 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38557
38558         * config/s390/vx-builtins.md ("vec_ceil", "vec_floor")
38559         ("vec_trunc", "vec_roundc", "vec_round"): Remove expanders.
38560
38561 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38562
38563         * config/s390/s390.md: Add missing comments with the expanded
38564         mnemonics.
38565         * config/s390/vector.md: Likewise.
38566         * config/s390/vx-builtins.md: Likewise.
38567
38568 2017-02-02  Jakub Jelinek  <jakub@redhat.com>
38569
38570         PR target/79197
38571         * config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
38572         (fixuns_trunc<mode>di2): ... this, remove previous expander.  Put all
38573         conditions on a single line.
38574
38575 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38576
38577         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
38578         __S390_VX__ to __VX__.
38579
38580 2017-02-01  Andrew Pinski  <apinski@cavium.com>
38581
38582         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass
38583         stmt_info to record_stmt_cost.
38584         (vect_get_known_peeling_cost): Pass stmt_info if known to
38585         record_stmt_cost.
38586         * config/aarch64/aarch64-protos.h (cpu_vector_cost): Split
38587         cpu_vector_cost field into
38588         scalar_int_stmt_cost and scalar_fp_stmt_cost.  Split vec_stmt_cost
38589         field into vec_int_stmt_cost and vec_fp_stmt_cost.
38590         * config/aarch64/aarch64.c (generic_vector_cost): Update for the
38591         splitting of scalar_stmt_cost and vec_stmt_cost.
38592         (thunderx_vector_cost): Likewise.
38593         (cortexa57_vector_cost): LIkewise.
38594         (exynosm1_vector_cost): Likewise.
38595         (xgene1_vector_cost): Likewise.
38596         (thunderx2t99_vector_cost): Improve after the splitting of the two
38597         fields.
38598         (aarch64_builtin_vectorization_cost): Update for the splitting of
38599         scalar_stmt_cost and vec_stmt_cost.
38600
38601 2017-02-01  Torvald Riegel  <triegel@redhat.com>
38602             Richard Henderson  <rth@redhat.com>
38603
38604         * builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free"
38605         conditional on existance of a fast atomic load.
38606         * optabs-query.c (can_atomic_load_p): New function.
38607         * optabs-query.h (can_atomic_load_p): Declare it.
38608         * optabs.c (expand_atomic_exchange): Always delegate to libatomic if
38609         no fast atomic load is available for the particular size of access.
38610         (expand_atomic_compare_and_swap): Likewise.
38611         (expand_atomic_load): Likewise.
38612         (expand_atomic_store): Likewise.
38613         (expand_atomic_fetch_op): Likewise.
38614         * testsuite/lib/target-supports.exp
38615         (check_effective_target_sync_int_128): Remove x86 because it provides
38616         no fast atomic load.
38617         (check_effective_target_sync_int_128_runtime): Likewise.
38618
38619 2017-02-01  Richard Biener  <rguenther@suse.de>
38620
38621         * graphite.c: Include tree-vectorizer.h for find_loop_location.
38622         (graphite_transform_loops): Provide opt-info for optimized nests.
38623         * tree-parloop.c (parallelize_loops): Provide opt-info for
38624         parallelized loops.
38625
38626 2017-02-01  Richard Biener  <rguenther@suse.de>
38627
38628         PR middle-end/79315
38629         * tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it
38630         was not set before.
38631
38632 2017-02-01  Richard Biener  <rguenther@suse.de>
38633
38634         PR tree-optimization/71824
38635         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
38636         Verify the loops are valid in the merged SESE region.
38637         (scop_detection::can_represent_loop_1): Check analyzing the
38638         evolution of the number of iterations in the region succeeds.
38639
38640 2017-01-31  Ian Lance Taylor  <iant@golang.org>
38641
38642         * config/i386/i386.c (ix86_expand_split_stack_prologue): Add
38643         REG_ARGS_SIZE note to 32-bit push insns and call insn.
38644
38645 2017-01-31  David Malcolm  <dmalcolm@redhat.com>
38646
38647         PR preprocessor/79210
38648         * input.c (get_substring_ranges_for_loc): Replace line_width
38649         assertion with error-handling.
38650
38651 2017-01-31  Richard Biener  <rguenther@suse.de>
38652
38653         PR tree-optimization/77318
38654         * graphite-sese-to-poly.c (extract_affine): Fix assert.
38655         (create_pw_aff_from_tree): Take loop parameter.
38656         (add_condition_to_pbb): Pass loop of the condition to
38657         create_pw_aff_from_tree.
38658
38659 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
38660
38661         * config/s390/s390.c (s390_asan_shadow_offset): New function.
38662         (TARGET_ASAN_SHADOW_OFFSET): Redefine.
38663
38664 2017-01-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
38665
38666         PR target/78597
38667         PR target/79038
38668         * config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
38669         no longer used.
38670         (convert_int_to_float128): Likewise.
38671         * config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
38672         (convert_int_to_float128): Likewise.
38673         * config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
38674         (UNSPEC_IEEE128_CONVERT): Likewise.
38675         (floatsi<mode>2, FLOAT128 iterator): Bypass calling
38676         rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
38677         Use local variables for IBM extended format.
38678         (fix_trunc<mode>si2, FLOAT128 iterator): Likewise.
38679         (fix_trunc<mode>si2_fprs): Likewise.
38680         (fixuns_trunc<IEEE128:mode><SDI:mode>2): Likewise.
38681         (floatuns<IEEE128:mode>2, IEEE128 iterator): Likewise.
38682         (fix<uns>_<mode>si2_hw): Rework the IEEE 128-bt hardware support
38683         to know that we can now have integers of all sizes in vector
38684         registers.
38685         (fix<uns>_<mode>di2_hw): Likewise.
38686         (float<uns>_<mode>si2_hw): Likewise.
38687         (fix_<mode>si2_hw): Likewise.
38688         (fixuns_<mode>si2_hw): Likewise.
38689         (float<uns>_<mode>di2_hw): Likewise.
38690         (float_<mode>di2_hw): Likewise.
38691         (float_<mode>si2_hw): Likewise.
38692         (floatuns_<mode>di2_hw): Likewise.
38693         (floatuns_<mode>si2_hw): Likewise.
38694         (xscvqp<su>wz_<mode>): Delete, no longer used.
38695         (xscvqp<su>dz_<mode>): Likewise.
38696         (xscv<su>dqp_<mode>): Likewise.
38697         (ieee128_mfvsrd_64bit): Likewise.
38698         (ieee128_mfvsrd_32bit): Likewise.
38699         (ieee128_mfvsrwz): Likewise.
38700         (ieee128_mtvsrw): Likewise.
38701         (ieee128_mtvsrd_64bit): Likewise.
38702         (ieee128_mtvsrd_32bit): Likewise.
38703
38704 2017-01-31  Martin Liska  <mliska@suse.cz>
38705
38706         PR ipa/79285
38707         * ipa-prop.c (ipa_free_all_node_params): Call release method
38708         instead of ~sumbol_summary to not to trigger double times
38709         dtor of hash_map.
38710
38711 2017-01-31  Aldy Hernandez  <aldyh@redhat.com>
38712
38713         PR tree-optimization/71691
38714         * bitmap.h (class auto_bitmap): New.
38715         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call
38716         is_maybe_undefined instead of ssa_undefined_value_p.
38717
38718 2017-01-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38719
38720         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
38721         __S390_ARCH_LEVEL__ to __ARCH__.
38722
38723 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
38724
38725         PR tree-optimization/79267
38726         * value-prof.c (gimple_ic): Only drop lhs for noreturn calls
38727         if should_remove_lhs_p is true.
38728
38729 2017-01-30  Alexandre Oliva  <aoliva@redhat.com>
38730
38731         PR debug/63238
38732         * dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment.
38733         (add_alignment_attribute): New.
38734         (base_type_die): Add alignment attribute.
38735         (subrange_type_die): Likewise.
38736         (modified_type_die): Likewise.
38737         (gen_array_type_die): Likewise.
38738         (gen_descr_array_type_die: Likewise.
38739         (gen_enumeration_type_die): Likewise.
38740         (gen_subprogram_die): Likewise.
38741         (gen_variable_die): Likewise.
38742         (gen_field_die): Likewise.
38743         (gen_ptr_to_mbr_type_die): Likewise.
38744         (gen_struct_or_union_type_die): Likewise.
38745         (gen_subroutine_type_die): Likewise.
38746         (gen_typedef_die): Likewise.
38747         (base_type_cmp): Compare alignment attribute.
38748
38749 2017-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
38750
38751         PR target/79170
38752         * config/rs6000/altivec.md (*setb_internal): Rename to setb_signed.
38753         (setb_unsigned) New pattern for setb with CCUNS.
38754         * config/rs6000/rs6000.c (expand_block_compare): Use a different
38755         subfc./subfe sequence to avoid overflow problems.  Generate a
38756         shorter sequence with cmpld/setb for power9.
38757         * config/rs6000/rs6000.md (subf<mode>3_carry_dot2): Add a new pattern
38758         for generating subfc. instruction.
38759         (cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence
38760         now uses this instruction.
38761
38762 2017-01-30  Ian Lance Taylor  <iant@google.com>
38763
38764         PR debug/79289
38765         * dwarf2out.c (gen_type_die_with_usage): When picking a variant
38766         for FUNCTION_TYPE/METHOD_TYPE, use the first matching one.
38767
38768 2017-01-30  Martin Sebor  <msebor@redhat.com>
38769
38770         * gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision):
38771         Move constant to the right of a relational operator.
38772         (get_mpfr_format_length, format_character, format_string): Ditto.
38773         (should_warn_p, maybe_warn): Same.
38774
38775         * doc/invoke.texi (-Wformat-truncation=1): Fix typo.
38776
38777 2017-01-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
38778
38779         PR lto/79061
38780         * asan.c (get_translation_unit_decl): Remove function.
38781         (asan_add_global): Force has_dynamic_init to zero in LTO mode.
38782
38783 2017-01-30  Martin Liska  <mliska@suse.cz>
38784
38785         PR gcov-profile/79259
38786         * opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
38787         -fprofile-generate.
38788
38789 2017-01-30  Martin Liska  <mliska@suse.cz>
38790
38791         PR bootstrap/78985
38792         * config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze):
38793         Initialize variables with NULL value.
38794
38795 2017-01-30  Richard Earnshaw  <rearnsh@arm.com>
38796
38797         PR target/79260
38798         * config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to
38799         tm_p_file.
38800         * arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h.
38801
38802 2017-01-30  Richard Biener  <rguenther@suse.de>
38803
38804         PR tree-optimization/79276
38805         * tree-vrp.c (process_assert_insertions): Properly adjust common
38806         when removing a duplicate.
38807
38808 2017-01-30  Richard Biener  <rguenther@suse.de>
38809
38810         PR tree-optimization/79256
38811         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
38812         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
38813         alignment on TYPE.
38814         * tree.c (build_aligned_type): Set TYPE_USER_ALIGN.
38815
38816 2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38817
38818         PR target/79240
38819         * config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
38820         ("*r<noxa>sbg_<mode>_sll_bitmask")
38821         ("*extzv_<mode>_srl<clobbercc_or_nocc>")
38822         ("*extzv_<mode>_sll<clobbercc_or_nocc>"):
38823         Use contiguous_bitmask_nowrap_operand.
38824
38825 2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
38826
38827         PR target/79268
38828         * config/rs6000/altivec.h (vec_xl): Revise #define.
38829         (vec_xst): Likewise.
38830
38831 2017-01-27  Uros Bizjak  <ubizjak@gmail.com>
38832
38833         * config/i386/i386.c (print_reg): Use REGNO instead of true_regnum.
38834
38835 2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>
38836
38837         PR rtl-optimization/79194
38838         * cprop.c (one_cprop_pass): Move deletion of code after unconditional
38839         traps before call to bypass_conditional_jumps.
38840
38841 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
38842
38843         PR tree-optimization/71374
38844         * lra-constraints.c (check_conflict_input_operands): New.
38845         (match_reload): Use it.
38846
38847 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
38848
38849         PR target/79131
38850         * lra-assigns.c (find_hard_regno_for_1): Take endianess for into
38851         account to calculate conflict_set.
38852
38853 2017-01-27  Bin Cheng  <bin.cheng@arm.com>
38854
38855         PR rtl-optimization/78559
38856         * combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for
38857         other_insn in combine.
38858
38859 2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
38860
38861         * builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
38862         uint16_type_node for BT_UINT16.
38863
38864 2017-01-27  David Malcolm  <dmalcolm@redhat.com>
38865
38866         * doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and
38867         "RTL Tests" to menu.
38868         (GIMPLE Tests): New node.
38869         (RTL Tests): New node.
38870
38871 2017-01-27  Richard Biener  <rguenther@suse.de>
38872
38873         PR tree-optimization/79245
38874         * tree-loop-distribution.c (distribute_loop): Apply cost
38875         modeling also to detected patterns.
38876
38877 2017-01-27  Richard Biener  <rguenther@suse.de>
38878
38879         PR tree-optimization/71433
38880         * tree-vrp.c (register_new_assert_for): Revert earlier changes.
38881         (compare_assert_loc): New function.
38882         (process_assert_insertions): Sort and optimize assert locations
38883         to remove duplicates and push down identical assertions on
38884         edges to their destination block.
38885
38886 2017-01-27  Richard Biener  <rguenther@suse.de>
38887
38888         PR tree-optimization/79244
38889         * tree-vrp.c (remove_range_assertions): Forcefully propagate
38890         out SSA names even if abnormal.
38891
38892 2017-01-27  Jakub Jelinek  <jakub@redhat.com>
38893
38894         * realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
38895         * gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN
38896         instead of MPFR_RNDN.
38897
38898 2017-01-27  Richard Earnshaw  <rearnsha@arm.com>
38899
38900         PR target/79239
38901         * arm.c (arm_option_override): Don't call build_target_option_node
38902         until after doing all option overrides.
38903         (arm_valid_target_attribute_tree): Likewise.
38904
38905 2017-01-27  Martin Liska  <mliska@suse.cz>
38906
38907         * doc/invoke.texi (-fprofile-arcs): Document profiling support
38908         for {cd}tors and C++ {cd}tors.
38909
38910 2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38911
38912         * config/s390/s390.md ("*setmem_long_and")
38913         ("*setmem_long_and_31z"): Use zero_extend instead of and.
38914
38915 2017-01-26  Martin Sebor  <msebor@redhat.com>
38916
38917         * gimple-ssa-sprintf.c (format_floating): Simplify the computation
38918         of precision.
38919
38920 2017-01-26  Martin Sebor  <msebor@redhat.com>
38921
38922         * gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and
38923         HAVE_DFmode before using XFmode or DFmode.
38924         (parse_directive): Avoid using the z length modifier to avoid
38925         the ISO C++98 does not support the â€˜z’ gnu_printf length modifier.
38926
38927         PR middle-end/78703
38928         * gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change
38929         to accept adjustment as an array.
38930         (get_int_range): New function.
38931         (struct directive): Make width and prec arrays.
38932         (directive::set_width, directive::set_precision): Call get_int_range.
38933         (format_integer, format_floating): Handle width and precision ranges.
38934         (format_string, parse_directive): Same.
38935
38936 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38937
38938         PR debug/79129
38939         * dwarf2out.c (generate_skeleton_bottom_up): For children with
38940         comdat_type_p set, just clone them, but keep the children in the
38941         original DIE.
38942
38943         PR debug/78835
38944         * dwarf2out.c (prune_unused_types): Mark all functions with DIEs
38945         which have direct callers with -fvar-tracking-assignments enabled
38946         in the current TU.
38947         (resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin
38948         inside of type units.
38949
38950 2017-01-26  Martin Sebor  <msebor@redhat.com>
38951
38952         PR middle-end/78703
38953         * gimple-ssa-sprintf.c (struct result_range): Add likely and
38954         unlikely counters.
38955         (struct format_result): Replace number_chars, number_chars_min,
38956         and number_chars_max with a single member of struct result_range.
38957         Remove bounded.
38958         (format_result::operator+=): Adjust.
38959         (struct fmtresult): Remove bounded.  Handle likely and unlikely
38960         counters.
38961         (fmtresult::adjust_for_width_or_precision): New function.
38962         (fmtresult:type_max_digits): New function.
38963         (bytes_remaining): Handle likely and unlikely counters.
38964         (min_bytes_remaining): Remove.
38965         (format_percent): Simplify.
38966         (format_integer, format_floating): Set likely and unlikely counters.
38967         (get_string_length, format_character, format_string): Same.
38968         (format_plain, should_warn_p): New function.
38969         (maybe_warn): Call should_warn_p.  Update diagnostic messages
38970         and handle those for all directives, including plain strings.
38971         (format_directive): Handle likely and unlikely counters.
38972         Remove unnecessary quoting from diagnostics.  Add an informational
38973         note.
38974         (add_bytes): Remove.
38975         (pass_sprintf_length::compute_format_length): Simplify.
38976         (try_substitute_return_value): Handle likely and unlikely counters.
38977
38978 2017-01-26  Carl Love  <cel@us.ibm.com>
38979
38980         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove
38981         bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins
38982
38983 2017-01-26  Vladimir Makarov  <vmakarov@redhat.com>
38984
38985         PR target/79131
38986         * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take
38987         endianess for subregs into account.
38988         * lra-constraints.c (lra_constraints): Do risky transformations
38989         always on the first iteration.
38990         * lra-lives.c (check_pseudos_live_through_calls): Add arg
38991         last_call_used_reg_set.
38992         (process_bb_lives): Define and use last_call_used_reg_set.
38993         * lra.c (lra): Always continue after lra_constraints on the first
38994         iteration.
38995
38996 2017-01-26  Kirill Yukhin  <kirill.yukhin@gmail.com>
38997
38998         * gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long
38999         constant.
39000         * gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto.
39001
39002 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
39003
39004         * config/i386/avx512fintrin.h (_ktest_mask16_u8,
39005         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
39006         * config/i386/avx512dqintrin.h (_ktest_mask16_u8,
39007         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
39008         * config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
39009         __builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
39010         OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
39011         * config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
39012         (kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
39013
39014 2017-01-26  Marek Polacek  <polacek@redhat.com>
39015
39016         PR c/79199
39017         * fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL
39018         for the third operand.
39019
39020 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
39021
39022         PR middle-end/79236
39023         * omp-low.c (struct omp_context): Add simt_stmt field.
39024         (scan_omp_for): Return omp_context *.
39025         (scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD
39026         context to the _simt_ SIMD stmt.
39027         (lower_omp_for): For combined SIMD with sibling _simt_
39028         SIMD, make sure to use the same decls in _looptemp_
39029         clauses as in the sibling.
39030
39031 2017-01-26  David Sherwood  <david.sherwood@arm.com>
39032
39033         PR middle-end/79212
39034         * gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in
39035         all contexts.
39036
39037 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
39038
39039         PR target/70465
39040         * reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1);
39041         emit fld b; fld a; if possible.
39042
39043         * brig-builtins.def: Update copyright years.
39044         * config/arm/arm_acle_builtins.def: Update copyright years.
39045
39046 2017-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
39047
39048         PR target/79179
39049         * config/rs6000/vsx.md (vsx_extract_<mode>_store): Use wY
39050         constraint instead of o for the stxsd instruction.
39051
39052 2017-01-25  Carl Love  <cel@us.ibm.com>
39053
39054         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
39055         of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD.
39056
39057 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
39058
39059         * doc/invoke.texi (C++ Dialect Options): Fix typo.
39060
39061 2017-01-25  Richard Biener  <rguenther@suse.de>
39062
39063         PR tree-optimization/69264
39064         * target.def (vector_alignment_reachable): Improve documentation.
39065         * doc/tm.texi: Regenerate.
39066         * targhooks.c (default_builtin_vector_alignment_reachable): Simplify
39067         and add a comment.
39068         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert
39069         earlier changes with respect to TYPE_USER_ALIGN.
39070         (vector_alignment_reachable_p): Likewise.  Improve dumping.
39071
39072 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39073
39074         PR target/79145
39075         * config/arm/arm.md (xordi3): Force constant operand into a register
39076         for TARGET_IWMMXT.
39077
39078 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39079
39080         * doc/invoke.texi (-fstore-merging): Correct default optimization
39081         levels at which it is enabled.
39082         (-O): Move -fstore-merging from list to...
39083         (-O2): ... Here.
39084
39085 2017-01-25  Richard Biener  <rguenther@suse.de>
39086
39087         PR debug/78363
39088         * omp-expand.c: Include debug.h.
39089         (expand_omp_taskreg): Make sure to generate early debug before
39090         outlining anything from a function.
39091         (expand_omp_target): Likewise.
39092         (grid_expand_target_grid_body): Likewise.
39093
39094 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
39095
39096         PR lto/79061
39097         * asan.c (get_translation_unit_decl): New function.
39098         (asan_add_global): Extract modules file name from globals
39099         TRANSLATION_UNIT_DECL name.
39100
39101 2017-01-24  Eric Botcazou  <ebotcazou@adacore.com>
39102
39103         PR target/77439
39104         * config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction
39105         for long calls with APCS frame and VFP.
39106
39107 2017-01-24  David Malcolm  <dmalcolm@redhat.com>
39108
39109         * cfg.c (original_copy_tables_initialized_p): New function.
39110         * cfg.h (original_copy_tables_initialized_p): New decl.
39111         * cfgrtl.c (relink_block_chain): Guard the call to
39112         free_original_copy_tables with a call to
39113         original_copy_tables_initialized_p.
39114         * cgraph.h (symtab_node::native_rtl_p): New decl.
39115         * cgraphunit.c (symtab_node::native_rtl_p): New function.
39116         (symtab_node::needed_p): Don't assert for early assembly output
39117         for __RTL functions.
39118         (cgraph_node::finalize_function): Set "force_output" for __RTL
39119         functions.
39120         (cgraph_node::analyze): Bail out early for __RTL functions.
39121         (analyze_functions): Update assertion to support __RTL functions.
39122         (cgraph_node::expand): Bail out early for __RTL functions.
39123         * final.c (rest_of_clean_state): Don't call delete_tree_ssa for
39124         __RTL functions.
39125         * function.h (struct function): Update comment for field
39126         "pass_startwith".
39127         * gimple-expr.c: Include "tree-pass.h".
39128         (gimple_has_body_p): Return false for __RTL functions.
39129         * Makefile.in (OBJS): Add run-rtl-passes.o.
39130         * pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New
39131         accessor.
39132         (gcc::pass_manager::get_clean_slate): New accessor.
39133         * passes.c: Include "insn-addr.h".
39134         (should_skip_pass_p): Add logging.  Update logic for running
39135         "expand" to be compatible with both __GIMPLE and __RTL.  Guard
39136         property-provider override so it is only done for gimple passes.
39137         Don't skip dfinit.
39138         (skip_pass): New function.
39139         (execute_one_pass): Call skip_pass when skipping passes.
39140         * read-md.c (md_reader::read_char): Support filtering
39141         the input to a subset of line numbers.
39142         (md_reader::md_reader): Initialize fields
39143         m_first_line and m_last_line.
39144         (md_reader::read_file_fragment): New function.
39145         * read-md.h (md_reader::read_file_fragment): New decl.
39146         (md_reader::m_first_line): New field.
39147         (md_reader::m_last_line): New field.
39148         * read-rtl-function.c (function_reader::create_function): Only
39149         create cfun if it doesn't already exist.  Set PROP_rtl on cfun's
39150         curr_properties.  Set DECL_INITIAL to a dummy block.
39151         (read_rtl_function_body_from_file_range): New function.
39152         * read-rtl-function.h (read_rtl_function_body_from_file_range):
39153         New decl.
39154         * run-rtl-passes.c: New file.
39155         * run-rtl-passes.h: New file.
39156
39157 2017-01-24  Jeff Law  <law@redhat.com>
39158
39159         * config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase
39160         buffer size.
39161
39162 2017-01-24  Bin Cheng  <bin.cheng@arm.com>
39163
39164         PR tree-optimization/79159
39165         * tree-ssa-loop-niter.c (get_cst_init_from_scev): New function.
39166         (record_nonwrapping_iv): Improve boundary using above function if no
39167         value range information.
39168
39169 2017-01-24  Pekka Jääskeläinen  <pekka@parmance.com>
39170             Martin Jambor  <mjambor@suse.cz>
39171
39172         * brig-builtins.def: New file.
39173         * builtins.def (DEF_HSAIL_BUILTIN): New macro.
39174         (DEF_HSAIL_ATOMIC_BUILTIN): Likewise.
39175         (DEF_HSAIL_SAT_BUILTIN): Likewise.
39176         (DEF_HSAIL_INTR_BUILTIN): Likewise.
39177         (DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise.
39178         * builtin-types.def (BT_INT8): New.
39179         (BT_INT16): Likewise.
39180         (BT_UINT8): Likewise.
39181         (BT_UINT16): Likewise.
39182         (BT_FN_ULONG): Likewise.
39183         (BT_FN_UINT_INT): Likewise.
39184         (BT_FN_UINT_ULONG): Likewise.
39185         (BT_FN_UINT_LONG): Likewise.
39186         (BT_FN_UINT_PTR): Likewise.
39187         (BT_FN_ULONG_PTR): Likewise.
39188         (BT_FN_INT8_FLOAT): Likewise.
39189         (BT_FN_INT16_FLOAT): Likewise.
39190         (BT_FN_UINT32_FLOAT): Likewise.
39191         (BT_FN_UINT16_FLOAT): Likewise.
39192         (BT_FN_UINT8_FLOAT): Likewise.
39193         (BT_FN_UINT64_FLOAT): Likewise.
39194         (BT_FN_UINT16_UINT32): Likewise.
39195         (BT_FN_UINT32_UINT16): Likewise.
39196         (BT_FN_UINT16_UINT16_UINT16): Likewise.
39197         (BT_FN_INT_PTR_INT): Likewise.
39198         (BT_FN_UINT_PTR_UINT): Likewise.
39199         (BT_FN_LONG_PTR_LONG): Likewise.
39200         (BT_FN_ULONG_PTR_ULONG): Likewise.
39201         (BT_FN_VOID_UINT64_UINT64): Likewise.
39202         (BT_FN_UINT8_UINT8_UINT8): Likewise.
39203         (BT_FN_INT8_INT8_INT8): Likewise.
39204         (BT_FN_INT16_INT16_INT16): Likewise.
39205         (BT_FN_INT_INT_INT): Likewise.
39206         (BT_FN_UINT_FLOAT_UINT): Likewise.
39207         (BT_FN_FLOAT_UINT_UINT): Likewise.
39208         (BT_FN_ULONG_UINT_UINT): Likewise.
39209         (BT_FN_ULONG_UINT_PTR): Likewise.
39210         (BT_FN_ULONG_ULONG_ULONG): Likewise.
39211         (BT_FN_UINT_UINT_UINT): Likewise.
39212         (BT_FN_VOID_UINT_PTR): Likewise.
39213         (BT_FN_UINT_UINT_PTR: Likewise.
39214         (BT_FN_UINT32_UINT64_PTR): Likewise.
39215         (BT_FN_INT_INT_UINT_UINT): Likewise.
39216         (BT_FN_UINT_UINT_UINT_UINT): Likewise.
39217         (BT_FN_UINT_UINT_UINT_PTR): Likewise.
39218         (BT_FN_UINT_ULONG_ULONG_UINT): Likewise.
39219         (BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise.
39220         (BT_FN_LONG_LONG_UINT_UINT): Likewise.
39221         (BT_FN_ULONG_ULONG_UINT_UINT): Likewise.
39222         (BT_FN_VOID_UINT32_UINT64_PTR): Likewise.
39223         (BT_FN_VOID_UINT32_UINT32_PTR): Likewise.
39224         (BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise.
39225         (BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise.
39226         (BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise.
39227         * doc/frontends.texi: List BRIG FE.
39228         * doc/install.texi (Testing): Add BRIG tesring requirements.
39229         * doc/invoke.texi (Overall Options): Mention BRIG.
39230         * doc/standards.texi (Standards): Doucment BRIG HSA version.
39231
39232 2017-01-24  Richard Biener  <rguenther@suse.de>
39233
39234         PR translation/79208
39235         * ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic.
39236
39237 2017-01-24  Martin Jambor  <mjambor@suse.cz>
39238
39239         PR bootstrap/79198
39240         * ipa-prop.c (ipa_free_all_node_params): Call summary destructor.
39241         * ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts
39242         and known_contexts.
39243
39244 2017-01-24  Aldy Hernandez  <aldyh@redhat.com>
39245
39246         PR middle-end/79123
39247         * gimple-ssa-warn-alloca.c (alloca_call_type): Make sure
39248         casts from signed to unsigned really don't have a range.
39249
39250 2017-01-24  Markus Trippelsdorf  <markus@trippelsdorf.de>
39251
39252         * gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to
39253         GMP_RNDx for compatiblity.
39254
39255 2017-01-24  Martin Liska  <mliska@suse.cz>
39256
39257         PR bootstrap/79132
39258         * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert
39259         that would prevent us to call alloca with -1 as argument.
39260
39261 2017-01-24  Jakub Jelinek  <jakub@redhat.com>
39262
39263         * dwarf2out.c (output_compilation_unit_header, output_file_names):
39264         Avoid -Wformat-security warning.
39265
39266 2017-01-23  Andrew Pinski  <apinski@cavium.com>
39267
39268         * config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve
39269         cost table.
39270
39271 2017-01-23  Martin Sebor  <msebor@redhat.com>
39272
39273         PR middle-end/78703
39274         * gimple-ssa-sprintf.c (warn_level): New global.
39275         (format_integer): Use it here and throughout the rest of the file.
39276         Use the same switch to compute sign as base.
39277         (maybe_warn): New function.
39278         (format_directive): Factor out warnings into maybe_warn.
39279         Add debugging output.  Use warn_level.
39280         (add_bytes): Use warn_level.
39281         (pass_sprintf_length::compute_format_length): Add debugging output.
39282         (try_substitute_return_value): Same.
39283         (pass_sprintf_length::handle_gimple_call): Set and use warn_level.
39284
39285         PR middle-end/78703
39286         * gimple-ssa-sprintf.c (struct format_result): Remove constant member.
39287         (struct fmtresult, format_integer, format_floating): Adjust.
39288         (fmtresult::fmtresult): Set max correctly in two argument ctor.
39289         (get_string_length, format_string,format_directive): Same.
39290         (pass_sprintf_length::compute_format_length): Same.
39291         (try_substitute_return_value): Simplify slightly.
39292
39293         PR middle-end/78703
39294         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting.
39295         (fmtresult::operator+=): Outlined.
39296         (struct fmtresult): Add ctors.
39297         (struct conversion_spec): Rename...
39298         (struct directive): ...to this.  Add and remove data members.
39299         (directive::set_width, directive::set_precision): New functions.
39300         (format_percent): Use fmtresult ctor.
39301         (get_width_and_precision): Remove.
39302         (format_integer): Make naming changes.  Avoid computing width and
39303         precision.
39304         (format_floating): Same.  Adjust indentation.
39305         (format_character, format_none): New functions.
39306         (format_string): Moved character handling to format_character.
39307         (format_directive): Remove arguments, change return type.
39308         (parse_directive): New function.
39309         (pass_sprintf_length::compute_format_length): Move directive
39310         parsing to parse_directive.
39311
39312 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
39313
39314         * tree.h (assign_assembler_name_if_neeeded): Rename to ...
39315         (assign_assembler_name_if_needed): ... this.
39316         * tree.c (assign_assembler_name_if_neeeded): Rename to ...
39317         (assign_assembler_name_if_needed): ... this.
39318         (free_lang_data_in_cgraph): Adjust callers.
39319         * cgraphunit.c (cgraph_node::analyze): Likewise.
39320         * omp-expand.c (expand_omp_taskreg, expand_omp_target):
39321         Likewise.
39322
39323 2017-01-23  Richard Biener  <rguenther@suse.de>
39324
39325         PR tree-optimization/79088
39326         PR tree-optimization/79188
39327         * tree-ssa-threadupdate.c (mark_threaded_blocks): Move code
39328         resetting loop bounds after last path deletion.  Reset loop
39329         bounds of the target loop, make code match the comments.
39330         * tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute):
39331         Make sure loops need no fixups.
39332
39333 2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
39334
39335         * config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
39336         exponent support with double type for first argument.
39337         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
39338         type returned by __builtin_vec_extract_sig,
39339         __builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
39340         functions from "vector int" to "vector unsigned int" or from
39341         "vector long long int" to "vector unsigned long long int".
39342         Changed type returned by __builtin_vec_extract_exp,
39343         __builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
39344         functions from "vector int" to "vector unsigned int" or from
39345         "vector long long int" to "vector unsigned long long int".
39346         Changed return type of __builtin_vec_test_data_class,
39347         __builtin_vec_test_data_class_sp, and
39348         __builtin_vec_test_data_class_dp from "vector int" to
39349         "vector bool int" or from "vector long long int" to "vector bool
39350         long long int" and changed second argument type from "unsigned
39351         int" to "int".  Added new overloaded function forms "vector float
39352         __builtin_vec_insert_exp (vector float, vector unsigned int)" and
39353         "vector float __builtin_vec_insert_exp_sp (vector float, vector
39354         unsigned int)" and "vector double __builtin_vec_insert_exp (vector
39355         double, vector unsigned long long int)" and "vector double
39356         __builtin_vec_insert_exp_dp (vector double, vector unsigned long
39357         long int)".  Changed return type of
39358         __builtin_scalar_test_data_class and
39359         __builtin_scalar_test_data_class_sp and
39360         __builtin_scalar_test_data_class_dp from "unsigned int" to "bool
39361         int" and changed second argument from "unsigned int" to "int".
39362         Changed type returned by __builtin_scalar_test_neg,
39363         __builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
39364         from "int" to "bool int".  Added new overloaded function form
39365         "double __builtin_scalar_insert_exp (double, unsigned long long int)".
39366         * config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
39367         exponent double-precision with floating point first argument.
39368         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
39369         documentation of scalar_test_data_class, scalar_test_neg,
39370         scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
39371         vector_extract_exp, vec_extract_sig, vec_insert_exp, and
39372         vec_test_data_class built-in functions to reflect refinements in
39373         their type signatures.
39374
39375 2017-01-23  Andreas Tobler  <andreast@gcc.gnu.org>
39376
39377         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase
39378         size of buf.
39379         (aarch64_elf_asm_destructor): Likewise.
39380
39381 2017-01-23  Bernd Schmidt  <bschmidt@redhat.com>
39382
39383         PR rtl-optimization/78634
39384         * config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function.
39385         (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define.
39386         * ifcvt.c (noce_try_cmove): Add missing cost check.
39387
39388         PR rtl-optimization/71724
39389         * combine.c (if_then_else_cond): Look for situations where it is
39390         beneficial to undo the work of one of the recursive calls.
39391
39392 2017-01-23  Bin Cheng  <bin.cheng@arm.com>
39393
39394         PR tree-optimization/70754
39395         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
39396         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
39397         combined stmt before it if not NULL.
39398         (combine_chains): Process refs reversely and compute dominance point
39399         for root ref.
39400
39401 2017-01-23  Martin Liska  <mliska@suse.cz>
39402
39403         PR tree-optimization/79196
39404         * tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ...
39405         (fold_strstr_to_strncmp): ... this.  Fold the pattern to strncmp
39406         instead of memcmp.
39407         (strlen_optimize_stmt): Call the renamed function.
39408
39409 2017-01-23  Michael Matz  <matz@suse.de>
39410
39411         PR tree-optimization/78384
39412         * tree-ssa-loop-split.c (patch_loop_exit): Use correct edge.
39413
39414 2017-01-23  Richard Biener  <rguenther@suse.de>
39415
39416         PR tree-optimization/79186
39417         * tree-vrp.c (register_new_assert_for): Make sure we've seen
39418         both incoming edges before moving an assert.
39419
39420 2017-01-23  Martin Jambor  <mjambor@suse.cz>
39421
39422         * ipa-prop.c (load_from_param_1): Removed.
39423         (load_from_unmodified_param): Bits from load_from_param_1 put back
39424         here.
39425         (load_from_param): Removed.
39426         (compute_complex_assign_jump_func): Removed stmt2 and just replaced it
39427         with stmt.  Reverted back to use of load_from_unmodified_param.
39428
39429 2017-01-23  Martin Jambor  <mjambor@suse.cz>
39430
39431         PR ipa/79108
39432         * ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()).
39433         (ipa_node_params): Annotate with GTY((for_user)).  Make descriptors
39434         field a pointer to garbage collected vector, mark lattices and
39435         ipcp_orig_node with GTY((skip)).
39436         (ipa_get_param_count): Adjust to descriptors being a pointer.
39437         (ipa_get_param): Likewise.
39438         (ipa_get_type): Likewise.
39439         (ipa_get_param_move_cost): Likewise.
39440         (ipa_set_param_used): Likewise.
39441         (ipa_get_controlled_uses): Likewise.
39442         (ipa_set_controlled_uses): Likewise.
39443         (ipa_is_param_used): Likewise.
39444         (ipa_node_params_t): Move into garbage collector.  New methods insert
39445         and remove.
39446         (ipa_node_params_sum): Annotate wth GTY(()).
39447         (ipa_check_create_node_params): Adjust to ipa_node_params_sum being
39448         garbage collected.
39449         (ipa_load_from_parm_agg): Adjust declaration.
39450         * ipa-icf.c (param_used_p): Adjust to descriptors being a pointer.
39451         * ipa-profile.c (ipa_profile): Likewise.
39452         * ipa-prop.c (ipa_get_param_decl_index_1): Likewise.
39453         (ipa_populate_param_decls): Make descriptors parameter garbage
39454         collected.
39455         (ipa_dump_param): Adjust to descriptors being a pointer.
39456         (ipa_alloc_node_params): Likewise.
39457         (ipa_initialize_node_params): Likewise.
39458         (load_from_param_1): Make descriptors parameter garbage collected.
39459         (load_from_unmodified_param): Likewise.
39460         (load_from_param): Likewise.
39461         (ipa_load_from_parm_agg): Likewise.
39462         (ipa_node_params::~ipa_node_params): Removed.
39463         (ipa_free_all_node_params): Remove call to delete operator.
39464         (ipa_node_params_t::insert): New.
39465         (ipa_node_params_t::remove): Likewise.
39466         (ipa_node_params_t::duplicate): Adjust to descriptors being a pointer,
39467         copy known_csts and known_contexts vectors.
39468         (ipa_read_node_info): Adjust to descriptors being a pointer.
39469         (ipcp_modif_dom_walker): Make m_descriptors field garbage
39470         collected.
39471         (ipcp_transform_function): Make descriptors variable garbage
39472         collected.
39473
39474 2017-01-23  Andrew Senkevich  <andrew.senkevich@intel.com>
39475
39476         * config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics.
39477         * config/i386/avx512dqintrin.h: Ditto.
39478         * config/i386/avx512fintrin.h: Ditto.
39479         * config/i386/i386.c: Handle new builtins.
39480         * config/i386/i386-builtin.def: Add new builtins.
39481         * config/i386/sse.md (ktest<mode>, kortest<mode>): New.
39482         (UNSPEC_KORTEST, UNSPEC_KTEST): New.
39483
39484 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
39485             Martin Liska  <mliska@suse.cz>
39486
39487         * asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE.
39488         * asan.c (asan_expand_poison_ifn): Support stores and use
39489         appropriate ASAN report function.
39490         * internal-fn.c (expand_ASAN_POISON_USE): New function.
39491         * internal-fn.def (ASAN_POISON_USE): Declare.
39492         * tree-into-ssa.c (maybe_add_asan_poison_write): New function.
39493         (maybe_register_def): Create ASAN_POISON_USE when sanitizing.
39494         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove
39495         ASAN_POISON calls w/o LHS.
39496         * tree-ssa.c (execute_update_addresses_taken): Create clobber
39497         for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS
39498         from ASAN_MARK (POISON, &x, ...) coming to a PHI node.
39499         * gimplify.c (asan_poison_variables): Add attribute
39500         use_after_scope_memory to variables that really needs to live
39501         in memory.
39502         * tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when
39503         having the attribute.
39504
39505 2017-01-23  Martin Liska  <mliska@suse.cz>
39506
39507         * asan.c (create_asan_shadow_var): New function.
39508         (asan_expand_poison_ifn): Likewise.
39509         * asan.h (asan_expand_poison_ifn): New declaration.
39510         * internal-fn.c (expand_ASAN_POISON): Likewise.
39511         * internal-fn.def (ASAN_POISON): New builtin.
39512         * sanopt.c (pass_sanopt::execute): Expand
39513         asan_expand_poison_ifn.
39514         * tree-inline.c (copy_decl_for_dup_finish): Make function
39515         external.
39516         * tree-inline.h (copy_decl_for_dup_finish): Likewise.
39517         * tree-ssa.c (is_asan_mark_p): New function.
39518         (execute_update_addresses_taken): Rewrite local variables
39519         (identified just by use-after-scope as addressable) into SSA.
39520
39521 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
39522
39523         * doc/install.texi (Specific): opensource.apple.com uses https
39524         now. Remove trailing slash.
39525
39526 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
39527
39528         * README.Portability: Remove note on an Irix compatibility issue.
39529
39530 2017-01-22  Dimitry Andric <dim@FreeBSD.org>
39531
39532         * gcov.c (INCLUDE_ALGORITHM): Define.
39533         (INCLUDE_VECTOR): Define.
39534         No longer include <vector> and <algorithm> directly.
39535
39536 2017-01-21  Gerald Pfeifer  <gerald@pfeifer.com>
39537
39538         * doc/extend.texi (Thread-Local): Change www.akkadia.org reference
39539         to https.
39540         * doc/invoke.texi (Code Gen Options): Ditto.
39541
39542 2017-01-21  Jan Hubicka  <hubicka@ucw.cz>
39543
39544         PR lto/78407
39545         * cfg.c (update_bb_profile_for_threading): Fix updating of probablity.
39546
39547 2017-01-21  Bernd Schmidt  <bschmidt@redhat.com>
39548
39549         rtl-optimization/79125
39550         * cprop.c (local_cprop_pass): Handle cases where we make an
39551         unconditional trap.
39552
39553 2017-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
39554
39555         PR target/61729
39556         PR target/77850
39557         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
39558         read from, for big endian.
39559
39560 2017-01-20  Jiong Wang  <jiong.wang@arm.com>
39561
39562         * config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register
39563         register pauth builtins for LP64 only.
39564
39565 2017-01-20  Marek Polacek  <polacek@redhat.com>
39566
39567         PR c/79152
39568         * gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive
39569         non-case labels.
39570
39571 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
39572
39573         * omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless
39574         of safelen status.
39575         * omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev.
39576         * passes.c (dump_properties): Handle PROP_gimple_lomp_dev.
39577         * tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev.
39578
39579 2017-01-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39580
39581         PR target/71270
39582         * config/arm/arm.c (neon_valid_immediate): Reject vector constants
39583         in big-endian mode when they are not a single duplicated value.
39584
39585 2017-01-20  Richard Biener  <rguenther@suse.de>
39586
39587         * BASE-VER: Bump to 7.0.1.
39588
39589 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
39590
39591         * omp-low.c (omplow_simd_context): New struct.  Use it...
39592         (lower_rec_simd_input_clauses): ...here and...
39593         (lower_rec_input_clauses): ...here to hold common data.  Adjust all
39594         references to idx, lane, max_vf, is_simt.
39595
39596 2017-01-20  Graham Markall  <graham.markall@embecosm.com>
39597
39598         * config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when
39599         mcpu=nps400.
39600
39601 2017-01-20  Martin Jambor  <mjambor@suse.cz>
39602
39603         * hsa.h: Renaed to hsa-common.h.  Adjusted a comment.
39604         * hsa.c: Renaed to hsa-common.c.  Change include of gt-hsa.h to
39605         gt-hsa-common.h.
39606         * Makefile.in (OBJS): Rename hsa.o to hsa-common.o.
39607         (GTFILES): Rename hsa.c to hsa-common.c.
39608         * hsa-brig.c: Change include of hsa.h to hsa-common.h.
39609         * hsa-dump.c: Likewise.
39610         * hsa-gen.c: Likewise.
39611         * hsa-regalloc.c: Likewise.
39612         * ipa-hsa.c: Likewise.
39613         * omp-expand.c: Likewise.
39614         * omp-low.c: Likewise.
39615         * toplev.c: Likewise.
39616
39617 2017-01-20  Marek Polacek  <polacek@redhat.com>
39618
39619         PR c/64279
39620         * doc/invoke.texi: Document -Wduplicated-branches.
39621         * fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR,
39622         COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR,
39623         POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT,
39624         STATEMENT_LIST, and RETURN_EXPR.  For non-pure non-const functions
39625         return 0 only when not OEP_LEXICOGRAPHIC.
39626         (fold_build_cleanup_point_expr): Use the expression
39627         location when building CLEANUP_POINT_EXPR.
39628         * tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC.
39629         * tree.c (add_expr): Handle error_mark_node.
39630
39631 2017-01-20  Martin Liska  <mliska@suse.cz>
39632
39633         PR lto/69188
39634         * tree-profile.c (init_ic_make_global_vars): Do not call
39635         finalize_decl.
39636         (gimple_init_gcov_profiler): Likewise.
39637
39638 2017-01-20  Martin Liska  <mliska@suse.cz>
39639
39640         PR ipa/71190
39641         * cgraph.h (maybe_create_reference): Remove argument and
39642         update comment.
39643         * cgraphclones.c (cgraph_node::create_virtual_clone): Remove one
39644         argument.
39645         * ipa-cp.c (create_specialized_node): Likewise.
39646         * symtab.c (symtab_node::maybe_create_reference): Handle
39647         VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type.
39648
39649 2017-01-20  Martin Liska  <mliska@suse.cz>
39650
39651         * read-rtl-function.c (function_reader::create_function): Use
39652         build_decl instread of build_decl_stat.
39653
39654 2017-01-20  Andrew Senkevich  <andrew.senkevich@intel.com>
39655
39656         * config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics.
39657         * config/i386/avx512dqintrin.h: Ditto.
39658         * config/i386/avx512fintrin.h: Ditto.
39659         * config/i386/i386-builtin-types.def: Add new types.
39660         * config/i386/i386.c: Handle new types.
39661         * config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi)
39662         (__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi)
39663         (__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi)
39664         (__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi)
39665         (__builtin_ia32_kshiftridi): New.
39666         * config/i386/sse.md (k<code><mode>): Rename *k<code><mode>.
39667
39668 2017-01-19  Segher Boessenkool  <segher@kernel.crashing.org>
39669
39670         PR target/78875
39671         PR target/79140
39672         * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally
39673         define to rs6000_init_stack_protect_guard.
39674         (rs6000_init_stack_protect_guard): New function.
39675
39676 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
39677             Yunqiang Su  <yunqiang.su@imgtec.com>
39678
39679         * config.gcc (supported_defaults): Add madd4.
39680         (with_madd4): Add validation.
39681         (all_defaults): Add madd4.
39682         * config/mips/mips.opt (mmadd4): New option.
39683         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
39684         mmadd4.
39685         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
39686         __mips_no_madd4.
39687         (ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4.
39688         (ISA_HAS_FUSED_MADD4): Likewise.
39689         * doc/invoke.texi (-mmadd4): Document the new option.
39690         * doc/install.texi (--with-madd4): Document the new option.
39691
39692 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39693
39694         * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New
39695         entries for AARCH64_PAUTH_BUILTIN_XPACLRI,
39696         AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716.
39697         (aarch64_init_pauth_hint_builtins): New.
39698         (aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins.
39699         (aarch64_expand_builtin): Expand new builtins.
39700
39701 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39702
39703         * reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note.
39704         * combine-stack-adj.c (no_unhandled_cfa): Handle
39705         REG_CFA_TOGGLE_RA_MANGLE.
39706         * dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE.
39707         * config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF
39708         info for return address signing.
39709         (aarch64_expand_epilogue): Likewise.
39710
39711 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39712
39713         * config/aarch64/aarch64-opts.h (aarch64_function_type): New enum.
39714         * config/aarch64/aarch64-protos.h
39715         (aarch64_return_address_signing_enabled): New declaration.
39716         * config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
39717         New function.
39718         (aarch64_expand_prologue): Sign return address before it's pushed onto
39719         stack.
39720         (aarch64_expand_epilogue): Authenticate return address fetched from
39721         stack.
39722         (aarch64_override_options): Sanity check for ILP32 and ISA level.
39723         (aarch64_attributes): New function attributes for "sign-return-address".
39724         * config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP,
39725         UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs.
39726         ("*do_return"): Generate combined instructions according to key index.
39727         ("<pauth_mnem_prefix>sp", "<pauth_mnem_prefix1716", "xpaclri"): New.
39728         * config/aarch64/iterators.md (PAUTH_LR_SP, PAUTH_17_16): New integer
39729         iterators.
39730         (pauth_mnem_prefix, pauth_hint_num_a): New integer attributes.
39731         * config/aarch64/aarch64.opt (msign-return-address=): New.
39732         * doc/extend.texi (AArch64 Function Attributes): Documents
39733         "sign-return-address=".
39734         * doc/invoke.texi (AArch64 Options): Documents "-msign-return-address=".
39735
39736 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
39737
39738         * doc/invoke.texi: Add missing -mlxc1-sxc1 options to
39739         overall option summary.
39740
39741 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39742
39743         * config/aarch64/aarch64-arches.def: New entry for "armv8.3-a".
39744         * config/aarch64/aarch64.h (AARCH64_FL_V8_3, AARCH64_FL_FOR_ARCH8_3,
39745         AARCH64_ISA_V8_3, TARGET_ARMV8_3): New.
39746         * doc/invoke.texi (AArch64 Options): Document "armv8.3-a".
39747
39748 2017-01-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
39749
39750         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable
39751         -mpower9-minmax by default for -mcpu=power9.
39752         (ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE
39753         128-bit floating point.
39754
39755 2017-01-20  Alan Modra  <amodra@gmail.com>
39756
39757         * config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if
39758         optimizing for size.
39759
39760 2017-01-20  Alan Modra  <amodra@gmail.com>
39761
39762         PR target/79144
39763         * config/rs6000/rs6000.c (expand_strn_compare): Get the asm name
39764         for strcmp and strncmp from corresponding builtin decl.
39765
39766 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
39767
39768         * config.gcc (x86_64-*-rtems*): Use i386/rtemself.h
39769         instead of i386/rtems-64.h.
39770         * config/i386/rtems-64.h: Remove.
39771
39772 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
39773
39774         PR target/78478
39775         Revert:
39776         2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
39777
39778         * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
39779
39780 2017-01-19  Tamar Christina  <tamar.christina@arm.com>
39781
39782         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
39783         Change int to HOST_WIDE_INT.
39784         * config/aarch64/aarch64-protos.h
39785         (aarch64_simd_gen_const_vector_dup): Likewise.
39786         * config/aarch64/aarch64-simd.md: Add copysign<mode>3.
39787
39788 2017-01-19  David Malcolm  <dmalcolm@redhat.com>
39789
39790         * langhooks-def.h (lhd_type_for_size): New decl.
39791         (LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size.
39792         * langhooks.c (lhd_type_for_size): New function, taken from
39793         lto_type_for_size.
39794
39795 2017-01-19  Pat Haugen  <pthaugen@us.ibm.com>
39796
39797         * config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add
39798         define_bypass for CR latency.
39799         (power9-cracked-alu): Update bypass latency and remove power9-branch.
39800         (power9-alu2): Add define_bypass for CR latency.
39801         (power9-cmp): New.
39802         (power9-mul): Update insn latency.
39803         (power9-mul-compare): Update insn latency, bypass latency and remove
39804         power9-branch.
39805
39806 2016-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39807
39808         * config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads):
39809         Delete.
39810         * config/aarch64/aarch64.md
39811         (aarch64_reload_movcp<GPF_TF:mode><P:mode>): Delete reference to
39812         aarch64_nopcrelative_literal_loads.
39813         (aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
39814
39815 2017-01-19  Chenghua Xu  <paul.hua.gm@gmail.com>
39816
39817         * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for
39818         TARGET_LOONGSON_3A.
39819         (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A.
39820
39821 2017-01-19  Doug Gilmore  <doug.gilmore@imgtec.com>
39822
39823         PR target/78176
39824         * config.gcc (supported_defaults): Add lxc1-sxc1.
39825         (with_lxc1_sxc1): Add validation.
39826         (all_defaults): Add lxc1-sxc1.
39827         * config/mips/mips.opt (mlxc1-sxc1): New option.
39828         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
39829         mlxc1-sxc1.
39830         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
39831         __mips_no_lxc1_sxc1.
39832         (ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1.
39833         * doc/invoke.texi (-mlxc1-sxc1): Document the new option.
39834         * doc/install.texi (--with-lxc1-sxc1): Document the new option.
39835
39836 2017-01-19  Richard Biener  <rguenther@suse.de>
39837
39838         PR tree-optimization/72488
39839         * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
39840         sure to restore SSA info.
39841         * tree-ssa.c (verify_ssa): Verify SSA info is not shared.
39842
39843 2017-01-19  Richard Earnshaw  <rearnsha@arm.com>
39844
39845         PR rtl-optimization/79121
39846         * expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness
39847         of the inner type when shifting an extended value.
39848
39849 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
39850
39851         PR lto/78407
39852         * symtab.c (symtab_node::equal_address_to): Fix comparing of
39853         interposable aliases.
39854
39855 2017-01-18  Peter Bergner  <bergner@vnet.ibm.com>
39856
39857         PR target/78516
39858         * config/rs6000/spe.md (mov_si<mode>_e500_subreg0): Fix constraints.
39859         Use the evmergelohi instruction.
39860         (mov_si<mode>_e500_subreg4_2_le): Likewise.
39861         (mov_sitf_e500_subreg8_2_be): Likewise.
39862         (mov_sitf_e500_subreg12_2_le): Likewise.
39863         (mov_si<mode>_e500_subreg0_2_le): Fix constraints.
39864         (mov_si<mode>_e500_subreg4_2_be): Likewise.
39865         (mov_sitf_e500_subreg8_2_le): Likewise.
39866         (mov_sitf_e500_subreg12_2_be): Likewise.
39867
39868 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39869
39870         * config/rs6000/altivec.md (altivec_vbpermq): Change "type"
39871         attribute from vecsimple to vecperm.
39872         (altivec_vbpermq2): Likewise.
39873
39874 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39875
39876         PR target/79040
39877         * config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz.
39878
39879 2017-01-18  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
39880         * config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg.
39881         * config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand
39882         strcmp. Fix bug where comparison didn't stop with zero byte. Fix
39883         case where N arg is SIZE_MAX.
39884         * config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare.
39885         (cmpstrsi): Add pattern.
39886
39887 2017-01-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
39888
39889         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
39890         __builtin_vec_revb builtins.
39891         * config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add
39892         built-in functions to support generation of the ISA 3.0 XXBR<x>
39893         vector byte reverse instructions.
39894         (P9V_BUILTIN_XXBRQ_V1TI): Likewise.
39895         (P9V_BUILTIN_XXBRD_V2DI): Likewise.
39896         (P9V_BUILTIN_XXBRD_V2DF): Likewise.
39897         (P9V_BUILTIN_XXBGW_V4SI): Likewise.
39898         (P9V_BUILTIN_XXBGW_V4SF): Likewise.
39899         (P9V_BUILTIN_XXBGH_V8HI): Likewise.
39900         (P9V_BUILTIN_VEC_REVB): Likewise.
39901         * config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to
39902         generate the ISA 3.0 XXBR<x> vector byte reverse instructions.
39903         (p9_xxbrq_v16qi): Likewise.
39904         (p9_xxbrd_<mode>, VSX_D iterator): Likewise.
39905         (p9_xxbrw_<mode>, VSX_W iterator): Likewise.
39906         (p9_xxbrh_v8hi): Likewise.
39907         * config/rs6000/altivec.h (vec_revb): Define if ISA 3.0.
39908         * doc/extend.texi (RS/6000 Altivec Built-ins): Document the
39909         vec_revb built-in functions.
39910
39911 2017-01-18  Uros Bizjak  <ubizjak@gmail.com>
39912
39913         PR rtl-optimization/78952
39914         * config/i386/i386.md (any_extract): New code iterator.
39915         (*insvqi_2): Use any_extract for source operand.
39916         (*insvqi_3): Use any_shiftrt for source operand.
39917
39918 2017-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
39919
39920         * config/aarch64/aarch64.c (aarch64_sched_adjust_priority)
39921         New function.
39922         (TARGET_SCHED_ADJUST_PRIORITY): Define target hook.
39923
39924 2017-01-18  Matthias Klose  <doko@ubuntu.com>
39925
39926         * doc/install.texi: Allow default for --with-target-bdw-gc-include.
39927
39928 2016-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39929
39930         * config/rs6000/altivec.h (vec_bperm): Change #define.
39931         * config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant.
39932         (altivec_vbpermq2): New define_insn.
39933         (altivec_vbpermd): Likewise.
39934         * config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic
39935         function interface.
39936         (VBPERMD): Likewise.
39937         (VBPERM): New polymorphic function interface.
39938         * config/rs6000/r6000-c.c (altivec_overloaded_builtins_table):
39939         Add entries for P9V_BUILTIN_VEC_VBPERM.
39940         * doc/extend.texi: Add interfaces for vec_bperm.
39941
39942 2017-01-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
39943
39944         * config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase
39945         first letter of error messages.
39946         (s390_resolve_overloaded_builtin): Likewise.
39947         * config/s390/s390.c (s390_expand_builtin): Likewise.
39948         (s390_invalid_arg_for_unprototyped_fn): Likewise.
39949         (s390_valid_target_attribute_inner_p): Likewise.
39950         * config/s390/s390.md ("tabort"): Likewise.
39951
39952 2017-01-18  Toma Tabacu  <toma.tabacu@imgtec.com>
39953
39954         * config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro.
39955         (ISA_AVOID_DIV_HILO): New macro.
39956         (ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro.
39957         (ISA_HAS_DDIV): Likewise.
39958
39959 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39960
39961         * doc/invoke.texi (fabi-version): Correct number of occurrences.
39962
39963 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39964
39965         * doc/invoke.texi (fabi-version): Spelling fix.
39966
39967 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39968
39969         PR c++/70182
39970         * doc/invoke.texi (fabi-version): Mention mangling fix for
39971         operator names.
39972
39973 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39974
39975         PR c++/77489
39976         * doc/invoke.texi (fabi-version): Document discriminator mangling.
39977
39978 2017-01-17  Segher Boessenkool  <segher@kernel.crashing.org>
39979
39980         PR target/78875
39981         * config/rs6000/rs6000-opts.h (stack_protector_guard): New enum.
39982         * config/rs6000/rs6000.c (rs6000_option_override_internal): Handle
39983         the new options.
39984         * config/rs6000/rs6000.md (stack_protect_set): Handle the new more
39985         flexible settings.
39986         (stack_protect_test): Ditto.
39987         * config/rs6000/rs6000.opt (mstack-protector-guard=,
39988         mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
39989         options.
39990         * doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]:
39991         Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
39992         -mstack-protector-guard-offset=.
39993         (RS/6000 and PowerPC Options): Ditto.
39994
39995 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
39996
39997         * config/i386/i386.h (MASK_CLASS_P): New define.
39998         * config/i386/i386.c (inline_secondary_memory_needed): Ensure that
39999         there are no registers from different register sets also when
40000         mask registers are used.  Update function comment.
40001         * config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative
40002         to (*k/*r) and (*k/*km) alternatives.
40003
40004 2017-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
40005
40006         * config/aarch64/aarch64.md (eh_return): Remove pattern and splitter.
40007         * config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove.
40008         (EH_RETURN_HANDLER_RTX): New define.
40009         * config/aarch64/aarch64.c (aarch64_frame_pointer_required):
40010         Force frame pointer in EH return functions.
40011         (aarch64_expand_epilogue): Add barrier for eh_return.
40012         (aarch64_final_eh_return_addr): Remove.
40013         (aarch64_eh_return_handler_rtx): New function.
40014         * config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr):
40015         Remove.
40016         (aarch64_eh_return_handler_rtx): New prototype.
40017
40018 2017-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
40019
40020         * config/rs6000/altivec.h (vec_rlmi): New #define.
40021         (vec_vrlnm): Likewise.
40022         (vec_rlnm): Likewise.
40023         * config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value.
40024         (UNSPEC_VRLNM): Likewise.
40025         (VIlong): New mode iterator.
40026         (altivec_vrl<VI_char>mi): New define_insn.
40027         (altivec_vrl<VI_char>nm): Likewise.
40028         * config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic
40029         function entry.
40030         (VRLDNM): Likewise.
40031         (RLNM): New polymorphic function entry.
40032         (VRLWMI): New monomorphic function entry.
40033         (VRLDMI): Likewise.
40034         (RLMI): New polymorphic function entry.
40035         * config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add
40036         new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM.
40037         * doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and
40038         vec_vrlnm.
40039
40040 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
40041
40042         PR debug/78839
40043         * dwarf2out.c (field_byte_offset): Restore the
40044         PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET
40045         and DECL_FIELD_BIT_OFFSET.  Use fold_build2 instead of build2 + fold.
40046         (analyze_variants_discr, gen_variant_part): Use fold_build2 instead
40047         of build2 + fold.
40048
40049 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
40050
40051         PR ada/67205
40052         * config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define
40053
40054 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
40055
40056         PR debug/71669
40057         * dwarf2out.c (add_data_member_location_attribute): For constant
40058         offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute
40059         instead of DW_AT_data_member_location, DW_AT_bit_offset and
40060         DW_AT_byte_size attributes.
40061
40062 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
40063
40064         * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
40065         after forcing to constant memory when the code model is medium.
40066
40067 2017-01-17  Julia Koval  <julia.koval@intel.com>
40068
40069         PR target/76731
40070         * config/i386/avx512fintrin.h
40071         (_mm512_i32gather_ps): Change __addr type to void const*.
40072         (_mm512_mask_i32gather_ps): Ditto.
40073         (_mm512_i32gather_pd): Ditto.
40074         (_mm512_mask_i32gather_pd): Ditto.
40075         (_mm512_i64gather_ps): Ditto.
40076         (_mm512_mask_i64gather_ps): Ditto.
40077         (_mm512_i64gather_pd): Ditto.
40078         (_mm512_mask_i64gather_pd): Ditto.
40079         (_mm512_i32gather_epi32): Ditto.
40080         (_mm512_mask_i32gather_epi32): Ditto.
40081         (_mm512_i32gather_epi64): Ditto.
40082         (_mm512_mask_i32gather_epi64): Ditto.
40083         (_mm512_i64gather_epi32): Ditto.
40084         (_mm512_mask_i64gather_epi32): Ditto.
40085         (_mm512_i64gather_epi64): Ditto.
40086         (_mm512_mask_i64gather_epi64): Ditto.
40087         (_mm512_i32scatter_ps): Change __addr type to void*.
40088         (_mm512_mask_i32scatter_ps): Ditto.
40089         (_mm512_i32scatter_pd): Ditto.
40090         (_mm512_mask_i32scatter_pd): Ditto.
40091         (_mm512_i64scatter_ps): Ditto.
40092         (_mm512_mask_i64scatter_ps): Ditto.
40093         (_mm512_i64scatter_pd): Ditto.
40094         (_mm512_mask_i64scatter_pd): Ditto.
40095         (_mm512_i32scatter_epi32): Ditto.
40096         (_mm512_mask_i32scatter_epi32): Ditto.
40097         (_mm512_i32scatter_epi64): Ditto.
40098         (_mm512_mask_i32scatter_epi64): Ditto.
40099         (_mm512_i64scatter_epi32): Ditto.
40100         (_mm512_mask_i64scatter_epi32): Ditto.
40101         (_mm512_i64scatter_epi64): Ditto.
40102         (_mm512_mask_i64scatter_epi64): Ditto.
40103         * config/i386/avx512pfintrin.h
40104         (_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*.
40105         (_mm512_mask_prefetch_i32gather_ps): Ditto.
40106         (_mm512_mask_prefetch_i64gather_pd): Ditto.
40107         (_mm512_mask_prefetch_i64gather_ps): Ditto.
40108         (_mm512_prefetch_i32scatter_pd): Change __addr type to void*.
40109         (_mm512_prefetch_i32scatter_ps): Ditto.
40110         (_mm512_mask_prefetch_i32scatter_pd): Ditto.
40111         (_mm512_mask_prefetch_i32scatter_ps): Ditto.
40112         (_mm512_prefetch_i64scatter_pd): Ditto.
40113         (_mm512_prefetch_i64scatter_ps): Ditto.
40114         (_mm512_mask_prefetch_i64scatter_pd): Ditto.
40115         (_mm512_mask_prefetch_i64scatter_ps): Ditto.
40116         * config/i386/avx512vlintrin.h
40117         (_mm256_mmask_i32gather_ps): Change __addr type to void const*.
40118         (_mm_mmask_i32gather_ps): Ditto.
40119         (_mm256_mmask_i32gather_pd): Ditto.
40120         (_mm_mmask_i32gather_pd): Ditto.
40121         (_mm256_mmask_i64gather_ps): Ditto.
40122         (_mm_mmask_i64gather_ps): Ditto.
40123         (_mm256_mmask_i64gather_pd): Ditto.
40124         (_mm_mmask_i64gather_pd): Ditto.
40125         (_mm256_mmask_i32gather_epi32): Ditto.
40126         (_mm_mmask_i32gather_epi32): Ditto.
40127         (_mm256_mmask_i32gather_epi64): Ditto.
40128         (_mm_mmask_i32gather_epi64): Ditto.
40129         (_mm256_mmask_i64gather_epi32): Ditto.
40130         (_mm_mmask_i64gather_epi32): Ditto.
40131         (_mm256_mmask_i64gather_epi64): Ditto.
40132         (_mm_mmask_i64gather_epi64): Ditto.
40133         (_mm256_i32scatter_ps): Change __addr type to void*.
40134         (_mm256_mask_i32scatter_ps): Ditto.
40135         (_mm_i32scatter_ps): Ditto.
40136         (_mm_mask_i32scatter_ps): Ditto.
40137         (_mm256_i32scatter_pd): Ditto.
40138         (_mm256_mask_i32scatter_pd): Ditto.
40139         (_mm_i32scatter_pd): Ditto.
40140         (_mm_mask_i32scatter_pd): Ditto.
40141         (_mm256_i64scatter_ps): Ditto.
40142         (_mm256_mask_i64scatter_ps): Ditto.
40143         (_mm_i64scatter_ps): Ditto.
40144         (_mm_mask_i64scatter_ps): Ditto.
40145         (_mm256_i64scatter_pd): Ditto.
40146         (_mm256_mask_i64scatter_pd): Ditto.
40147         (_mm_i64scatter_pd): Ditto.
40148         (_mm_mask_i64scatter_pd): Ditto.
40149         (_mm256_i32scatter_epi32): Ditto.
40150         (_mm256_mask_i32scatter_epi32): Ditto.
40151         (_mm_i32scatter_epi32): Ditto.
40152         (_mm_mask_i32scatter_epi32): Ditto.
40153         (_mm256_i32scatter_epi64): Ditto.
40154         (_mm256_mask_i32scatter_epi64): Ditto.
40155         (_mm_i32scatter_epi64): Ditto.
40156         (_mm_mask_i32scatter_epi64): Ditto.
40157         (_mm256_i64scatter_epi32): Ditto.
40158         (_mm256_mask_i64scatter_epi32): Ditto.
40159         (_mm_i64scatter_epi32): Ditto.
40160         (_mm_mask_i64scatter_epi32): Ditto.
40161         (_mm256_i64scatter_epi64): Ditto.
40162         (_mm256_mask_i64scatter_epi64): Ditto.
40163         (_mm_i64scatter_epi64): Ditto.
40164         (_mm_mask_i64scatter_epi64): Ditto.
40165         * config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
40166         (V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
40167         (V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
40168         (V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
40169         (V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
40170         (V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
40171         (V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
40172         (V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
40173         (V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
40174         (V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
40175         (V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
40176         (V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
40177         (V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
40178         (VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
40179         (VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
40180         (VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
40181         (VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
40182         (VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
40183         (VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
40184         (VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
40185         (VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
40186         (VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
40187         (VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
40188         (VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
40189         (VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
40190         (VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
40191         (VOID_QI_V8DI_PCINT_INT_INT): Remove.
40192         (V16SF_V16SF_PCVOID_V16SI_HI_INT,  V8DF_V8DF_PCVOID_V8SI_QI_INT)
40193         (V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
40194         (V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
40195         (V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
40196         (VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
40197         (VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
40198         (VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
40199         (VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
40200         (V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
40201         (V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
40202         (V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
40203         (V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
40204         (V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
40205         (V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
40206         (V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
40207         (V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
40208         (VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
40209         (VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
40210         (VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
40211         (VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
40212         (VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
40213         (VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
40214         (VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
40215         (VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
40216         (VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
40217         (VOID_QI_V8DI_PCVOID_INT_INT): Add.
40218         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
40219         definitions accordingly.
40220
40221 2017-01-17  Kito Cheng  <kito.cheng@gmail.com>
40222             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
40223
40224         PR target/79079
40225         * internal-fn.c (expand_mul_overflow): Use convert_modes instead of
40226         gen_lowpart.
40227
40228 2017-01-17  Vladimir Makarov  <vmakarov@redhat.com>
40229
40230         PR target/79058
40231         * ira-conflicts.c (ira_build_conflicts): Update total conflict
40232         hard regs for inner regno.
40233
40234 2017-01-17  Martin Liska  <mliska@suse.cz>
40235
40236         PR ipa/71207
40237         * ipa-polymorphic-call.c (contains_type_p): Fix wrong
40238         assumption and add comment.
40239
40240 2017-01-17  Nathan Sidwell  <nathan@acm.org>
40241
40242         * ipa-visibility.c (localize_node): New function, broken out of ...
40243         (function_and_variable_visibility): ... here. Call it.
40244
40245 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
40246
40247         PR middle-end/77445
40248         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
40249         correctly set frequency of oudgoing edge.
40250         (duplicate_thread_path): Fix profile updating.
40251
40252 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
40253
40254         PR other/79046
40255         * configure.ac: Add GCC_BASE_VER.
40256         * Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
40257         version from BASE-VER file.
40258         (CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
40259         (gcc.o): Depend on $(BASEVER).
40260         * common.opt (dumpfullversion): New option.
40261         * gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
40262         * doc/invoke.texi: Document -dumpfullversion.
40263         * doc/install.texi: Document --with-gcc-major-version-only.
40264         * configure: Regenerated.
40265
40266 2017-01-17  Richard Biener  <rguenther@suse.de>
40267
40268         PR tree-optimization/71433
40269         * tree-vrp.c (register_new_assert_for): Merge same asserts
40270         on all incoming edges.
40271         (process_assert_insertions_for): Handle insertions at the
40272         beginning of BBs.
40273
40274 2017-01-17  Gerald Pfeifer  <gerald@pfeifer.com>
40275
40276         * config/i386/cygwin.h (LIBGCJ_SONAME): Remove.
40277         * config/i386/mingw32.h (LIBGCJ_SONAME): Remove.
40278
40279 2017-01-17  Kaz Kojima  <kkojima@gcc.gnu.org>
40280
40281         PR target/78633
40282         * config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid
40283         RTL sharing.
40284
40285 2017-01-17  Alan Modra  <amodra@gmail.com>
40286
40287         PR target/79066
40288         * config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic.
40289         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow
40290         symbolic stack limit when pic.
40291
40292 2017-01-16  Martin Sebor  <msebor@redhat.com>
40293
40294         PR tree-optimization/78608
40295         * gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN.
40296
40297 2017-01-16  Jeff Law  <law@redhat.com>
40298
40299         Revert:
40300         2016-12-02  Tadek Kijkowski  <tkijkowski@gmail.com>
40301         * Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection
40302         for several include directories that may be relative to sysroot.
40303         * config/i386/x-mingw32 (gplus_includedir): Define.
40304         (gplus_tool_includedir, gplus_backward_include_dir): Likewise.
40305         (native_system_includedir): Likewise.
40306         * config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not
40307         override if TARGET_SYSTEM_ROOT is defined.
40308         (NATIVE_SYSTEM_HEADER_DIR): Likewise.
40309
40310         PR tree-optimization/79090
40311         PR tree-optimization/33562
40312         PR tree-optimization/61912
40313         PR tree-optimization/77485
40314         * tree-ssa-dse.c (compute_trims): Accept STMT argument.  Dump STMT
40315         and computed trims into the dump file.
40316
40317 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
40318
40319         * config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove.
40320
40321 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
40322
40323         PR c/79089
40324         * gimplify.c (gimplify_init_constructor): If want_value and
40325         object == lhs, unshare lhs to avoid invalid tree sharing.  Formatting
40326         fix.
40327
40328         PR target/79080
40329         * loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on
40330         sequence.  Formatting fixes.
40331         (doloop_optimize): Formatting fixes.
40332
40333         PR driver/49726
40334         * gcc.c (debug_level_greater_than_spec_func): New function.
40335         (static_spec_functions): Add debug-level-gt spec function.
40336         (ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of
40337         !g0.
40338         * config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
40339         * config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
40340         * common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames,
40341         gpubnames, ggnu-pubnames, gno-record-gcc-switches,
40342         grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs,
40343         gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag.
40344
40345 2017-01-16  Uros Bizjak  <ubizjak@gmail.com>
40346
40347         * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
40348         QImode fixups to general and mask registers only.
40349
40350 2017-01-16  Carl Love  <cel@us.ibm.com>
40351
40352         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
40353         for built-in functions
40354         vector signed char vec_nabs (vector signed char)
40355         vector signed short vec_nabs (vector signed short)
40356         vector signed int vec_nabs (vector signed int)
40357         vector signed long long vec_nabs (vector signed long long)
40358         vector float vec_nabs (vector float)
40359         vector double vec_nabs (vector double)
40360         * config/rs6000/rs6000-builtin.def: Add definitions for NABS functions
40361         and NABS overload.
40362         * config/rs6000/altivec.md: New define_expand nabs<mode>2 types
40363         * config/rs6000/altivec.h: New define for vec_nabs built-in function.
40364         * doc/extend.texi: Update the documentation file for the new built-in
40365         functions.
40366
40367 2017-01-16  Martin Sebor  <msebor@redhat.com>
40368
40369         * gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning
40370         message.
40371
40372 2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
40373
40374         * config/rs6000/rs6000.c (rtx_is_swappable_p): Change
40375         UNSPEC_VSX__XXSPLTD to require special splat handling.
40376
40377 2017-01-16  David Malcolm  <dmalcolm@redhat.com>
40378
40379         PR bootstrap/78616
40380         * system.h: Poison strndup.
40381
40382 2017-01-16  Alan Modra  <amodra@gmail.com>
40383
40384         PR target/79098
40385         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't
40386         use a switch.
40387
40388 2017-01-16  Georg-Johann Lay  <avr@gjlay.de>
40389
40390         * config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4.
40391
40392 2017-01-15  Uros Bizjak  <ubizjak@gmail.com>
40393
40394         * config/i386/i386.c (ix86_legitimate_combined_insn): Do not
40395         call recog here.  Assert that INSN_CODE (insn) is non-negative.
40396
40397 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
40398
40399         PR target/72749
40400         * cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
40401         fallthrough.
40402         * haifa-sched.c (dump_insn_stream): Don't crash if there is a label
40403         in the currently scheduled RTL fragment.
40404
40405 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
40406
40407         PR rtl-optimization/78751
40408         * ifcvt.c (find_cond_trap): If we generated a non-existing insn,
40409         give up.
40410
40411 2017-01-14  Jeff Law  <law@redhat.com>
40412
40413         PR tree-optimization/79090
40414         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and
40415         variable length stores.
40416         (compute_trims): Delete dead assignment to *trim_tail.
40417         (dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with
40418         zero length.
40419
40420 2017-01-14  Bernd Schmidt  <bschmidt@redhat.com>
40421
40422         PR rtl-optimization/78626
40423         PR rtl-optimization/78727
40424         * cprop.c (one_cprop_pass): Collect unconditional traps in the middle
40425         of a block, and split such blocks after everything else is finished.
40426
40427 2017-01-14  Alan Modra  <amodra@gmail.com>
40428
40429         PR target/72749
40430         * combine.c (recog_for_combine_1): Set INSN_CODE before calling
40431         target legitimate_combined_insn.
40432         * config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
40433         (rs6000_legitimate_combined_insn): New function.
40434         * config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
40435         all uses.
40436         (ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
40437         (ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
40438         (ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.
40439
40440 2017-01-14  Gerald Pfeifer  <gerald@pfeifer.com>
40441
40442         * doc/frontends.texi (G++ and GCC): Remove references to Java.
40443
40444 2017-01-13  Jeff Law  <law@redhat.com>
40445
40446         PR tree-optimization/33562
40447         PR tree-optimization/61912
40448         PR tree-optimization/77485
40449         * tree-ssa-dse.c (delete_dead_call): Accept gsi rather than
40450         a statement.
40451         (delete_dead_assignment): Likewise.
40452         (dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than
40453         statement to delete_dead_call and delete_dead_assignment.
40454
40455 2017-01-13  David Malcolm  <dmalcolm@redhat.com>
40456
40457         PR c/78304
40458         * substring-locations.c (format_warning_va): Strengthen case 1 so
40459         that both endpoints of the substring must be within the format
40460         range for just the substring to be printed.
40461
40462 2017-01-13  Uros Bizjak  <ubizjak@gmail.com>
40463
40464         * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable.
40465         * config/i386/i386.c (ix86_target_string): Add missing options
40466         to isa_opts and reorder options by implied ISAs.  Rename isa_opts2 to
40467         isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to
40468         flags_other and ix86_target_other to flags2_other.  Display unknown
40469         isa2 options.
40470         (ix86_valid_target_attribute_inner_p): Add missing options and
40471         reorder options by implied ISAs, as in ix86_target_string.
40472
40473 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
40474
40475         * hash-table.h (hash_table::too_empty_p): New function.
40476         (hash_table::expand): Use it.
40477         (hash_table::traverse): Likewise.
40478         (hash_table::empty_slot): Use sizeof (value_type) instead of
40479         sizeof (PTR) to convert bytes to elements.  Shrink the table
40480         if the current size is excessive for the current number of
40481         elements.
40482
40483 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
40484
40485         * ira-costs.c (record_reg_classes): Break from the inner loop
40486         early once alt_fail is known to be true.  Update outer loop
40487         handling accordingly.
40488
40489 2017-01-13  Jeff Law  <law@redhat.com>
40490
40491         * tree-ssa-dse.c (decrement_count): New function.
40492         (increment_start_addr, maybe_trim_memstar_call): Likewise.
40493         (dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
40494         when we know the partially dead statement is a mem* function.
40495
40496         PR tree-optimization/61912
40497         PR tree-optimization/77485
40498         * tree-ssa-dse.c: Include expr.h.
40499         (maybe_trim_constructor_store): New function.
40500         (maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.
40501
40502         PR tree-optimization/33562
40503         PR tree-optimization/61912
40504         PR tree-optimization/77485
40505         * doc/invoke.texi: Document new dse-max-object-size param.
40506         * params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
40507         * tree-ssa-dse.c: Include params.h.
40508         (dse_store_status): New enum.
40509         (initialize_ao_ref_for_dse): New, partially extracted from
40510         dse_optimize_stmt.
40511         (valid_ao_ref_for_dse, normalize_ref): New.
40512         (setup_live_bytes_from_ref, compute_trims): Likewise.
40513         (clear_bytes_written_by, maybe_trim_complex_store): Likewise.
40514         (maybe_trim_partially_dead_store): Likewise.
40515         (maybe_trim_complex_store): Likewise.
40516         (dse_classify_store): Renamed from dse_possibly_dead_store_p.
40517         Track what bytes live from the original store.  Return tri-state
40518         for dead, partially dead or live.
40519         (dse_dom_walker): Add constructor, destructor and new private members.
40520         (delete_dead_call, delete_dead_assignment): New extracted from
40521         dse_optimize_stmt.
40522         (dse_optimize_stmt): Make a member of dse_dom_walker.
40523         Use initialize_ao_ref_for_dse.
40524
40525         PR tree-optimization/33562
40526         PR tree-optimization/61912
40527         PR tree-optimization/77485
40528         * sbitmap.h (bitmap_count_bits): Prototype.
40529         (bitmap_clear_range, bitmap_set_range): Likewise.
40530         * sbitmap.c (bitmap_clear_range): New function.
40531         (bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.
40532
40533 2017-01-13  Martin Liska  <mliska@suse.cz>
40534
40535         PR ipa/79043
40536         * function.c (set_cfun): Add new argument force.
40537         * function.h (set_cfun): Likewise.
40538         * ipa-inline-transform.c (inline_call): Use the function when
40539         strict alising from is dropped for function we inline to.
40540
40541 2017-01-13  Richard Biener  <rguenther@suse.de>
40542
40543         * tree-pretty-print.c (dump_generic_node): Fix inverted condition
40544         for dumping GIMPLE INTEGER_CSTs.
40545
40546 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
40547
40548         * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
40549         to 201112L since C++17.
40550
40551 2017-01-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
40552
40553         PR sanitizer/78887
40554         * asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
40555         if -fsanitize=kernel-address is present.
40556
40557 2017-01-13  Richard Biener  <rguenther@suse.de>
40558
40559         * tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
40560         as _Literal ( type ) number in case usual suffixes do not
40561         preserve all information.
40562
40563 2017-01-13  Richard Biener  <rguenther@suse.de>
40564
40565         PR tree-optimization/77283
40566         * gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
40567         and ssa-iterators.h.
40568         (is_feasible_trace): Implement a cost model based on joiner
40569         PHI node uses.
40570
40571 2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
40572
40573         PR target/79004
40574         * config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
40575         char or short to __float128/_Float128 directly.
40576
40577 2017-01-12  Martin Sebor  <msebor@redhat.com>
40578
40579         to -Wformat-overflow.
40580         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust.
40581         (min_bytes_remaining): Same.
40582         (get_string_length): Same.
40583         (format_string): Same.
40584         (format_directive): Same.
40585         (add_bytes): Same.
40586         (pass_sprintf_length::handle_gimple_call): Same.
40587
40588 2017-01-12  Jakub Jelinek  <jakub@redhat.com>
40589
40590         * gimple-ssa-sprintf.c (try_substitute_return_value): Remove
40591         info.nowrite calls with no lhs that can't throw.  Return bool
40592         whether gsi_remove has been called or not.
40593         (pass_sprintf_length::handle_gimple_call): Return bool whether
40594         try_substitute_return_value called gsi_remove.  Formatting fix.
40595         (pass_sprintf_length::execute): Don't use gsi_remove if
40596         handle_gimple_call returned true.
40597
40598         PR bootstrap/79069
40599         * cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't
40600         be removed due to side-effects, don't remove following barrier nor
40601         turn the successor edge into fallthru edge.
40602
40603 2017-01-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
40604
40605         PR target/79044
40606         * config/rs6000/rs6000.c (insn_is_swappable_p): Mark
40607         element-reversing loads and stores as not swappable.
40608
40609 2017-01-12  Nathan Sidwell  <nathan@acm.org>
40610             Nicolai Stange  <nicstange@gmail.com>
40611
40612         * combine.c (try_combine): Don't ignore result of overlap checking
40613         loop.  Combine overlap & asm check into single loop.
40614
40615 2017-01-12  Richard Biener  <rguenther@suse.de>
40616
40617         * tree-pretty-print.c (dump_generic_node): Provide -gimple
40618         variant for MEM_REF.  Sanitize INTEGER_CST for -gimple.
40619
40620 2017-01-12  Richard Biener  <rguenther@suse.de>
40621
40622         * tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
40623         and TS_TARGET_OPTION directly derive from TS_BASE.
40624         * tree-core.h (tree_optimization_option): Derive from tree_base.
40625         (tree_target_option): Likewise.
40626
40627 2017-01-11  Uros Bizjak  <ubizjak@gmail.com>
40628
40629         * config/i386/i386.c (memory_address_length): Increase len
40630         only when rip_relative_addr_p returns false.
40631
40632 2017-01-11  Julia Koval  <julia.koval@intel.com>
40633
40634         * common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
40635         (OPTION_MASK_ISA_SGX_SET): New.
40636         (ix86_handle_option): Handle OPT_msgx.
40637         * config.gcc: Added sgxintrin.h.
40638         * config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx.
40639         * config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__.
40640         * config/i386/i386.c (ix86_target_string): Add -msgx.
40641         (PTA_SGX): New.
40642         (ix86_option_override_internal): Handle new options.
40643         (ix86_valid_target_attribute_inner_p): Add sgx.
40644         * config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New.
40645         * config/i386/i386.opt: Add msgx.
40646         * config/i386/sgxintrin.h: New file.
40647         * config/i386/x86intrin.h: Add sgxintrin.h.
40648
40649 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
40650
40651         PR c++/71537
40652         * fold-const.c (maybe_nonzero_address): Return 1 for function
40653         local objects.
40654         (tree_single_nonzero_warnv_p): Don't handle function local objects
40655         here.
40656
40657         PR c++/72813
40658         * gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps
40659         of c-header.
40660
40661 2017-01-11  David Malcolm  <dmalcolm@redhat.com>
40662
40663         PR driver/78877
40664         * opts.c: Include "spellcheck.h"
40665         (struct string_fragment): New struct.
40666         (struct edit_distance_traits<const string_fragment &>): New
40667         struct.
40668         (get_closest_sanitizer_option): New function.
40669         (parse_sanitizer_options): Offer suggestions for unrecognized arguments.
40670
40671 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
40672
40673         * dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease
40674         by 12.
40675         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always
40676         DWARF_COMPILE_UNIT_HEADER_SIZE plus 12.
40677         (DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define.
40678         (calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE
40679         for initial die_offset if dwarf_split_debug_info.
40680         (output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for
40681         initial next_die_offset if dwo_id is non-NULL.  Don't emit padding
40682         fields.
40683         (output_skeleton_debug_sections): Formatting fix.  Use
40684         DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of
40685         DWARF_COMPILE_UNIT_HEADER_SIZE.  Don't emit padding.
40686
40687 2017-01-11  Wilco Dijkstra  <wdijkstr@arm.com>
40688
40689         * config/arm/cortex-a53.md: Add bypasses for
40690         cortex_a53_r2f_cvt.
40691         (cortex_a53_r2f): Only use for transfers.
40692         (cortex_a53_f2r): Likewise.
40693         (cortex_a53_r2f_cvt): Add reservation for conversions.
40694         (cortex_a53_f2r_cvt): Likewise.
40695
40696 2017-01-11  Tamar Christina  <tamar.christina@arm.com>
40697
40698         * config/arm/arm_neon.h: Add __artificial__ and gnu_inline
40699         to all inlined functions, change static to extern.
40700
40701 2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
40702
40703         PR target/78253
40704         * config/arm/arm.c (legitimize_pic_address): Handle reference to
40705         weak symbol.
40706         (arm_assemble_integer): Likewise.
40707
40708 2017-01-11  Richard Earnshaw  <rearnsha@arm.com>
40709
40710         * config.gcc: Use new awk script to check CPU, FPU and architecture
40711         parameters for --with-... options.
40712         * config/arm/parsecpu.awk: New file
40713         * config/arm/arm-cpus.in: New file.
40714         * config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def
40715         files.
40716         * config/arm/arm.c: Include arm-cpu-data.h instead of processing .def
40717         files.
40718         * config/arm/t-arm: Update dependency rules.
40719         * common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead
40720         of processing .def files.
40721         * config/arm/genopt.sh: Deleted.
40722         * config/arm/gentune.sh: Deleted.
40723         * config/arm/arm-cores.def: Deleted.
40724         * config/arm/arm-arches.def: Deleted.
40725         * config/arm/arm-fpus.def: Deleted.
40726         * config/arm/arm-tune.md: Regenerated.
40727         * config/arm/arm-tables.opt: Regenerated.
40728         * config/arm/arm-cpu.h: New generated file.
40729         * config/arm/arm-cpu-data.h: New generated file.
40730         * config/arm/arm-cpu-cdata.h: New generated file.
40731
40732 2017-01-11  Maxim Ostapenko  <m.ostapenko@samsung.com>
40733
40734         PR lto/79042
40735         * lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
40736         bit.
40737         (input_varpool_node): Unpack dynamically_initialized bit.
40738
40739 2017-01-11  Eric Botcazou  <ebotcazou@adacore.com>
40740
40741         PR rtl-optimization/79032
40742         * lra-constraints.c (simplify_operand_subreg): In the MEM case, test
40743         the alignment of the adjusted memory reference against that of MODE,
40744         instead of the alignment of the original memory reference.
40745
40746 2017-01-11  Martin Jambor  <mjambor@suse.cz>
40747
40748         * hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL
40749         test.
40750         * ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial
40751         decorated functions.
40752
40753 2017-01-11  Richard Biener  <rguenther@suse.de>
40754
40755         * tree-vrp.c (evrp_dom_walker::before_dom_children): Also
40756         set range/nonnull info for PHI results.  Do not set it on
40757         stmts marked for removal.
40758
40759 2017-01-10  Eric Botcazou  <ebotcazou@adacore.com>
40760
40761         * expr.c (store_field): In the bitfield case, fetch the return value
40762         from the registers before applying a single big-endian adjustment.
40763         Always do a final load for a BLKmode value not larger than a word.
40764
40765 2017-01-10  David Malcolm  <dmalcolm@redhat.com>
40766
40767         PR c++/77949
40768         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
40769         that we correctly handle column numbers greater than
40770         LINE_MAP_MAX_COLUMN_NUMBER.
40771
40772 2017-01-10  Martin Sebor  <msebor@redhat.com>
40773
40774         PR middle-end/78245
40775         * gimple-ssa-sprintf.c (get_destination_size): Call
40776         {init,fini}object_sizes.
40777         * tree-object-size.c (addr_object_size): Adjust.
40778         (pass_through_call): Adjust.
40779         (pass_object_sizes::execute): Adjust.
40780         * tree-object-size.h (fini_object_sizes): Declare.
40781
40782 2017-01-10  Martin Sebor  <msebor@redhat.com>
40783
40784         PR tree-optimization/78775
40785         * builtins.c (get_size_range): Move...
40786         * calls.c: ...to here.
40787         (alloc_max_size): Accept zero argument.
40788         (operand_signed_p): Remove.
40789         (maybe_warn_alloc_args_overflow): Call get_size_range.
40790         * calls.h (get_size_range): Declare.
40791
40792 2017-01-10  Joe Seymour  <joe.s@somniumtech.com>
40793
40794         * config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data
40795         from TI's devices.csv file as of September 2016.
40796         * config/msp430/msp430.c (msp430_mcu_data): Likewise.
40797
40798 2017-01-10  Sandra Loosemore  <sandra@codesourcery.com>
40799
40800         * doc/extend.texi: Tweak formatting to fix overfull hbox warnings.
40801         * doc/invoke.texi: Likewise.
40802         * doc/md.texi: Likewise.
40803         * doc/objc.texi: Likewise.
40804
40805 2017-01-10  Joshua Conner  <joshconner@google.com>
40806
40807         * config/arm/fuchsia-elf.h: New file.
40808         * config/fuchsia.h: New file.
40809         * config.gcc (*-*-fuchsia*): Set native_system_header_dir.
40810         (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to
40811         targets.
40812         * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts.
40813
40814 2016-01-10  Richard Biener  <rguenther@suse.de>
40815
40816         PR tree-optimization/79034
40817         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
40818         Propagate out degenerate PHIs in the joiner.
40819
40820 2017-01-10  Martin Liska  <mliska@suse.cz>
40821
40822         * ipa-icf.c (sort_sem_items_by_decl_uid): New function.
40823         (sort_congruence_classes_by_decl_uid): Likewise.
40824         (sort_congruence_class_groups_by_decl_uid): Likewise.
40825         (sem_item_optimizer::merge_classes): Sort class, groups in these
40826         classes and members in the groups by DECL_UID of declarations.
40827         This would make merge operations stable.
40828
40829 2017-01-10  Martin Liska  <mliska@suse.cz>
40830
40831         * ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove
40832         usage of m_classes_vec.
40833         (sem_item_optimizer::~sem_item_optimizer):  Likewise.
40834         (sem_item_optimizer::get_group_by_hash): Likewise.
40835         (sem_item_optimizer::subdivide_classes_by_equality): Likewise.
40836         (sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise.
40837         (sem_item_optimizer::verify_classes): Likewise.
40838         (sem_item_optimizer::process_cong_reduction): Likewise.
40839         (sem_item_optimizer::dump_cong_classes): Likewise.
40840         (sem_item_optimizer::merge_classes): Likewise.
40841         * ipa-icf.h (congruence_class_hash): Rename from
40842         congruence_class_group_hash.  Remove declaration of m_classes_vec.
40843
40844 2017-01-10  Andrew Senkevich  <andrew.senkevich@intel.com>
40845
40846         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
40847         OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New.
40848         * config.gcc: Add avx512vpopcntdqintrin.h.
40849         * config/i386/avx512vpopcntdqintrin.h: New.
40850         * config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New.
40851         * config/i386/i386-builtin-types.def: Add new types.
40852         * config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si,
40853         __builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di,
40854         __builtin_ia32_vpopcountq_v8di_mask): New.
40855         * config/i386/i386-c.c (ix86_target_macros_internal): Define
40856         __AVX512VPOPCNTDQ__.
40857         * config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq.
40858         (PTA_AVX512VPOPCNTDQ): Define.
40859         * config/i386/i386.h (TARGET_AVX512VPOPCNTDQ,
40860         TARGET_AVX512VPOPCNTDQ_P): Define.
40861         * config/i386/i386.opt: Add mavx512vpopcntdq.
40862         * config/i386/immintrin.h: Include avx512vpopcntdqintrin.h.
40863         * config/i386/sse.md (define_insn "vpopcount<mode><mask_name>"): New.
40864
40865 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40866
40867         PR middle-end/77484
40868         * predict.def (PRED_CALL): Set to 67.
40869
40870 2017-01-09  Eric Botcazou  <ebotcazou@adacore.com>
40871
40872         * expr.c (store_field): In the bitfield case, if the value comes from
40873         a function call and is of an aggregate type returned in registers, do
40874         not modify the field mode; extract the value in all cases if the mode
40875         is BLKmode and the size is not larger than a word.
40876
40877 2017-01-09  Dominique d'Humieres  <dominiq@lps.ens.fr>
40878
40879         PR target/71017
40880         * config/i386/cpuid.h: Fix undefined behavior.
40881
40882 2017-01-04  Jeff Law  <law@redhat.com>
40883
40884         PR tree-optimization/79007
40885         PR tree-optimization/67955
40886         * tree-ssa-alias.c (same_addr_size_stores_p): Only need to be
40887         conservative for pt.null when flag_non_call_exceptions is on.
40888
40889 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
40890
40891         PR translation/79019
40892         PR translation/79020
40893         * params.def (PARAM_INLINE_MIN_SPEEDUP,
40894         PARAM_IPA_CP_SINGLE_CALL_PENALTY,
40895         PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos
40896         in descriptions.
40897         * config/avr/avr.opt (maccumulate-args): Likewise.
40898         * config/msp430/msp430.opt (mwarn-mcu): Likewise.
40899         * common.opt (freport-bug): Likewise.
40900         * cif-code.def (CIF_FINAL_ERROR): Likewise.
40901         * doc/invoke.texi (ipa-cp-single-call-penalty): Likewise.
40902         * config/s390/s390.c (s390_invalid_binary_op): Fix spelling in
40903         translatable string.
40904         * config/i386/i386.c (function_value_32): Likewise.
40905         * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise.
40906         * config/msp430/msp430.c (msp430_option_override, msp430_attr):
40907         Likewise.
40908         * config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise.
40909         * common/config/msp430/msp430-common.c (msp430_handle_option):
40910         Likewise.
40911         * symtab.c (symtab_node::verify_base): Likewise.
40912         * opts.c (set_debug_level): Likewise.
40913         * tree.c (verify_type_variant): Likewise.  Fix typo in comment.
40914         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
40915         missing whitespace to translatable strings.
40916         * config/avr/avr.md (bswapsi2): Fix typo in comment.
40917         * config/sh/superh.h: Likewise.
40918         * config/i386/xopintrin.h: Likewise.
40919         * config/i386/znver1.md: Likewise.
40920         * config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise.
40921         * ipa-inline-analysis.c (compute_inline_parameters): Likewise.
40922         * double-int.h (struct double_int): Likewise.
40923         * double-int.c (div_and_round_double): Likewise.
40924         * wide-int.cc: Likewise.
40925         * tree-ssa.c (non_rewritable_mem_ref_base): Likewise.
40926         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
40927         * cfgcleanup.c (crossjumps_occured): Renamed to ...
40928         (crossjumps_occurred): ... this.
40929         (try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg):
40930         Adjust all uses.
40931
40932         PR tree-optimization/78899
40933         * tree-if-conv.c (version_loop_for_if_conversion): Instead of
40934         returning bool return struct loop *, NULL for failure and the new
40935         loop on success.
40936         (versionable_outer_loop_p): Don't version outer loop if it has
40937         dont_vectorized bit set.
40938         (tree_if_conversion): When versioning outer loop, ensure
40939         tree_if_conversion is performed also on the inner loop of the
40940         non-vectorizable outer loop copy.
40941         * tree-vectorizer.c (set_uid_loop_bbs): Formatting fix.  Fold
40942         LOOP_VECTORIZED in inner loop of the scalar outer loop and
40943         prevent vectorization of it.
40944         (vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure
40945         the outer loop vectorization of the non-scalar version is attempted
40946         before vectorization of the inner loop in scalar version.  If
40947         outer LOOP_VECTORIZED guarded loop is not vectorized, prevent
40948         vectorization of its inner loop.
40949         * tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop
40950         has 2 inner loops, rename also on edges from bb whose single pred
40951         is outer_loop->header.  Fix typo in function comment.
40952
40953 2017-01-09  Martin Sebor  <msebor@redhat.com>
40954
40955         PR bootstrap/79033
40956         * asan.c (asan_emit_stack_protection): Increase local buffer size
40957         to avoid snprintf truncation warning.
40958
40959 2017-01-09  Andrew Pinski  <apinski@cavium.com>
40960
40961         * config/aarch64/aarch64-cores.def: Add thunderx2t99.  Change vulcan
40962         to reference thunderx2t99 for the tuning structure
40963         * config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs):
40964         Rename to ...
40965         (thunderx2t99_extra_costs): This.
40966         * config/aarch64/aarch64-tune.md: Regenerate.
40967         * config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ...
40968         (vulcan_addrcost_table): This.
40969         (vulcan_regmove_cost): Rename to ...
40970         (thunderx2t99_regmove_cost): This.
40971         (vulcan_vector_cost): Rename to ...
40972         (thunderx2t99_vector_cost): this.
40973         (vulcan_branch_cost): Rename to ...
40974         (thunderx2t99_branch_cost): This.
40975         (vulcan_tunings): Rename to ...
40976         (thunderx2t99_tunings): This and s/vulcan/thunderx2t99 .
40977         * doc/invoke.texi (AARCH64/mtune): Add thunderx2t99.
40978
40979 2017-01-09  Martin Jambor  <mjambor@suse.cz>
40980
40981         PR ipa/78365
40982         PR ipa/78599
40983         * ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr.
40984         * ipa-cp.c (ipa_vr_operation_and_type_effects): New function.
40985         (propagate_vr_accross_jump_function): Use the above function for all
40986         value range computations for pass-through jump functions and type
40987         converasion from explicit value range values.
40988         (ipcp_propagate_stage): Do not attempt to deduce types of formal
40989         parameters from TYPE_ARG_TYPES.
40990         * ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace.
40991         (ipa_write_node_info): Stream type of the actual argument.
40992         (ipa_read_node_info): Likewise. Also remove trailing whitespace.
40993
40994 2017-01-09  Martin Liska  <mliska@suse.cz>
40995
40996         PR pch/78970
40997         * gcc.c (driver_handle_option): Handle OPT_E and set have_E.
40998         (lookup_compiler): Do not show error message with have_E.
40999
41000 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
41001
41002         PR tree-optimization/78938
41003         * tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR
41004         where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use
41005         BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of
41006         {EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR.  Formatting
41007         fixes.
41008
41009 2017-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
41010
41011         * tree-ssa-address.c (gen_addr_rtx): Don't handle index if it
41012         is const0_rtx.
41013
41014 2017-01-09  Richard Biener  <rguenther@suse.de>
41015
41016         PR tree-optimization/78997
41017         * tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA
41018         name condition properly.
41019
41020 2017-01-09  Richard Biener  <rguenther@suse.de>
41021
41022         PR debug/79000
41023         * dwarf2out.c (is_cxx): New overload with context.
41024         (is_naming_typedef_decl): Use it.
41025
41026 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
41027
41028         * invoke.texi (Option Summary): Correct spacing in option lists
41029         and add line breaks to fix over-long lines.
41030
41031 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
41032
41033         PR middle-end/17660
41034
41035         * extend.texi (Common Variable Attributes): Add xref to GCC
41036         Internals manual to explain mode attribute keywords.
41037
41038 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
41039
41040         PR other/16519
41041         * doc/invoke.texi (Option Summary): Move -pthread to Linker Options
41042         and Preprocessor Options.
41043         (Options for Linking): Document -pthread here....
41044         (RS/6000 and PowerPC Options): ...not here.
41045         (Solaris 2 Options): ...or here.
41046         * doc/cppopts.texi: Document -pthread.
41047
41048 2017-01-08  Martin Sebor  <msebor@redhat.com>
41049
41050         PR middle-end/77708
41051         * doc/invoke.texi (Warning Options): Document -Wformat-truncation.
41052         * gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt):
41053         New member functions.
41054         (format_directive): Used them.
41055         (add_bytes): Same.
41056         (pass_sprintf_length::handle_gimple_call): Same.
41057         * graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size
41058         to avoid truncation for any argument.
41059         (extract_affine_mul): Same.
41060         * tree.c (get_file_function_name): Same.
41061
41062 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41063
41064         PR middle-end/77484
41065         * predict.def (PRED_INDIR_CALL): Set to 86.
41066
41067 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
41068
41069         PR preprocessor/54124
41070         * doc/cppopts.texi: Reformat -d subtable to list the full name
41071         of the options.  Add cross-reference to the docs for the general
41072         compiler -d options.
41073         * doc/invoke.texi (Developer Options): Add cross-reference to the
41074         preprocessor-specific -d option documentation.
41075
41076 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
41077
41078         PR preprocessor/13498
41079         * doc/cpp.texi (Search Path): Rewrite to remove obsolete and
41080         redudant material, and reflect new command-line options.
41081         (System Headers): Likewise.
41082
41083 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
41084
41085         * doc/cppdiropts.texi: Merge documentation of -I, -iquote,
41086         -isystem, and -idirafter.  Copy-edit.
41087         * doc/cppopts.texi: Copy-edit.  Remove contradiction about
41088         default for -ftrack-macro-expansion.  Delete obsolete and
41089         badly-formatted implementation details about -fdebug-cpp output.
41090         * doc/cppwarnopts.texi: Copy-edit.
41091
41092 2017-01-07  David Malcolm  <dmalcolm@redhat.com>
41093
41094         PR c++/72803
41095         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
41096         that the transition from a max line width >= 1<<10 to narrower
41097         lines works correctly.
41098
41099 2017-01-07  Alexandre Oliva  <aoliva@redhat.com>
41100
41101         * doc/options.texi (PerFunction): New.
41102         * opt-functions.awk (switch_flags): Map both Optimization and
41103         PerFunction to CL_OPTIMIZATION.
41104         * opth-gen.awk: Test for PerFunction flag along with
41105         Optimization.
41106         * optc-save-gen.awk: Likewise.  Introduce var_opt_hash and set
41107         it only when the latter is present.  Skip those that don't in
41108         the hash function generator.
41109         * common.opt (fvar-tracking): Mark as PerFunction instead of
41110         Optimization.
41111         (fvar-tracking-assignments): Likewise.
41112         (fvar-tracking-assignments-toggle): Likewise.
41113         (fvar-tracking-uninit): Likewise.
41114
41115 2017-01-07  Jakub Jelinek  <jakub@redhat.com>
41116
41117         PR translation/79018
41118         * params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between
41119         the and store.
41120
41121 2017-01-06  Mikael Pettersson  <mikpelinux@gmail.com>
41122
41123         PR target/57583
41124         * config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option.
41125         * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle
41126         TARGET_LONG_JUMP_TABLE_OFFSETS.
41127         * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
41128         * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
41129         * config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise.
41130         (ASM_OUTPUT_ADDR_DIFF_ELF): Likewise.
41131         * config/m68k/m68k.md (tablejump expander): Likewise.
41132         (*tablejump_pcrel_hi): Renamed from unnamed insn, reject
41133         TARGET_LONG_JUMP_TABLE_OFFSETS.
41134         (*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS.
41135         * doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets.
41136
41137 2017-01-06  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
41138             David Holsgrove <david.holsgrove@xilinx.com>
41139
41140         * common/config/microblaze/microblaze-common.c
41141         (TARGET_EXCEPT_UNWIND_INFO): Remove.
41142         * config/microblaze/microblaze-protos.h (microblaze_eh_return):
41143         New prototype.
41144         * config/microblaze/microblaze.c (microblaze_must_save_register)
41145         (microblaze_expand_epilogue, microblaze_return_addr): Handle
41146         calls_eh_return.
41147         (microblaze_eh_return): New function.
41148         * config/microblaze/microblaze.h (RETURN_ADDR_OFFSET)
41149         (EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM)
41150         (EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros.
41151         * config/microblaze/microblaze.md (eh_return): New pattern.
41152
41153 2017-01-06  Jakub Jelinek  <jakub@redhat.com>
41154
41155         * system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP,
41156         GCC_DIAGNOSTIC_STRINGIFY): Define.
41157
41158         * read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning.
41159
41160 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41161
41162         * config/arm/arm.md (<mcrr>): New.
41163         (<mrrc>): New.
41164         * config/arm/arm.c (arm_arch5te): New.
41165         (arm_option_override): Set arm_arch5te.
41166         (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc
41167         and mrrc2.
41168         * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to...
41169         (arm_mcrr_qualifiers): ... this. New.
41170         (MRRC_QUALIFIERS): Define to...
41171         (arm_mrrc_qualifiers): ... this. New.
41172         * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc,
41173         __arm_mrrc2): New.
41174         * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New.
41175         * config/arm/iterators.md (MCRRI, mcrr, MCRR): New.
41176         (MRRCI, mrrc, MRRC): New.
41177         * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC,
41178         VUNSPEC_MRRC2): New.
41179
41180 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41181
41182         * config/arm/arm.md (<mcr>): New.
41183         (<mrc>): New.
41184         * config/arm/arm.c (arm_coproc_builtin_available): Add
41185         support for mcr, mrc, mcr2 and mrc2.
41186         * config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
41187         (arm_mcr_qualifiers): ... this. New.
41188         (MRC_QUALIFIERS): Define to ...
41189         (arm_mrc_qualifiers): ... this. New.
41190         (MCR_QUALIFIERS): Define to ...
41191         (arm_mcr_qualifiers): ... this. New.
41192         * config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
41193         __arm_mrc2): New.
41194         * config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
41195         * config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
41196         * config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
41197         VUNSPEC_MRC2): New.
41198
41199 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41200
41201         * config/arm/arm.md (*ldc): New.
41202         (*stc): New.
41203         (<ldc>): New.
41204         (<stc>): New.
41205         * config/arm/arm.c (arm_coproc_builtin_available): Add
41206         support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l.
41207         (arm_coproc_ldc_stc_legitimate_address): New.
41208         * config/arm/arm-builtins.c (arm_type_qualifiers): Add
41209         'qualifier_const_pointer'.
41210         (LDC_QUALIFIERS): Define to...
41211         (arm_ldc_qualifiers): ... this. New.
41212         (STC_QUALIFIERS): Define to...
41213         (arm_stc_qualifiers): ... this. New.
41214         * config/arm/arm-protos.h
41215         (arm_coproc_ldc_stc_legitimate_address): New.
41216         * config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc,
41217         __arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New.
41218         * config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc,
41219         stc2, stcl, stc2l): New.
41220         * config/arm/constraints.md (Uz): New.
41221         * config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New.
41222         * config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL,
41223         VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL,
41224         VUNSPEC_STC2L): New.
41225
41226 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41227
41228         * config/arm/arm.md (<cdp>): New.
41229         * config/arm/arm.c (neon_const_bounds): Rename this ...
41230         (arm_const_bounds): ... this.
41231         (arm_coproc_builtin_available): New.
41232         * config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase.
41233         (arm_type_qualifiers): Add 'qualifier_unsigned_immediate'.
41234         (CDP_QUALIFIERS): Define to...
41235         (arm_cdp_qualifiers): ... this. New.
41236         (void_UP): Define.
41237         (arm_expand_builtin_args): Add case for 6 arguments.
41238         * config/arm/arm-protos.h (neon_const_bounds): Rename this ...
41239         (arm_const_bounds): ... this.
41240         (arm_coproc_builtin_available): New.
41241         * config/arm/arm_acle.h (__arm_cdp): New.
41242         (__arm_cdp2): New.
41243         * config/arm/arm_acle_builtins.def (cdp): New.
41244         (cdp2): New.
41245         * config/arm/iterators.md (CDPI,CDP,cdp): New.
41246         * config/arm/neon.md: Rename all 'neon_const_bounds' to
41247         'arm_const_bounds'.
41248         * config/arm/types.md (coproc): New.
41249         * config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New.
41250         * doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics.
41251         * doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok,
41252         arm_coproc3_ok, arm_coproc4_ok): Document new effective targets.
41253
41254 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41255
41256         * config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New.
41257         (UBINOP_QUALIFIERS): New.
41258         (si_UP): Define.
41259         (acle_builtin_data): New. Change comment.
41260         (arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H,
41261         ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH,
41262         ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include
41263         arm_acle_builtins.def.
41264         (ARM_BUILTIN_ACLE_PATTERN_START): Define.
41265         (arm_init_acle_builtins): New.
41266         (CRC32_BUILTIN): Remove.
41267         (bdesc_2arg): Remove entries for crc32b, crc32h, crc32w,
41268         crc32cb, crc32ch and crc32cw.
41269         (arm_init_crc32_builtins): Remove.
41270         (arm_init_builtins): Use arm_init_acle_builtins rather
41271         than arm_init_crc32_builtins.
41272         (arm_expand_acle_builtin): New.
41273         (arm_expand_builtin): Use 'arm_expand_acle_builtin'.
41274         * config/arm/arm_acle_builtins.def: New.
41275
41276 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41277
41278         * config/arm/arm-builtins.c (neon_builtin_datum): Rename to ..
41279         (arm_builtin_datum): ... this.
41280         (arm_init_neon_builtin): Rename to ...
41281         (arm_init_builtin): ... this. Add a new parameters PREFIX
41282         and USE_SIG_IN_NAME.
41283         (arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with
41284         'arm_init_builtin'. Replace type 'neon_builtin_datum' with
41285         'arm_builtin_datum'.
41286         (arm_init_vfp_builtins): Likewise.
41287         (builtin_arg): Rename enum's replacing 'NEON_ARG' with
41288         'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY.
41289         (arm_expand_neon_args): Rename to ...
41290         (arm_expand_builtin_args): ... this. Rename builtin_arg
41291         enum values and differentiate between ARG_BUILTIN_MEMORY
41292         and ARG_BUILTIN_NEON_MEMORY.
41293         (arm_expand_neon_builtin_1): Rename to ...
41294         (arm_expand_builtin_1): ... this. Rename builtin_arg enum
41295         values, arm_expand_builtin_args and add bool parameter NEON.
41296         (arm_expand_neon_builtin): Use arm_expand_builtin_1.
41297         (arm_expand_vfp_builtin): Likewise.
41298         (NEON_MAX_BUILTIN_ARGS): Remove, it was unused.
41299
41300 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41301
41302         PR middle-end/77484
41303         * predict.def (PRED_POLYMORPHIC_CALL): Set to 59.
41304         * predict.c (tree_estimate_probability_bb): Reverse direction of
41305         polymorphic call predictor.
41306
41307 2017-01-06  David Malcolm  <dmalcolm@redhat.com>
41308
41309         * passes.c (execute_one_pass): Split out pass-skipping logic into...
41310         (determine_pass_name_match): ...this new function and...
41311         (should_skip_pass_p): ...this new function.
41312
41313 2017-01-06  Nathan Sidwell  <nathan@acm.org>
41314
41315         * ipa-visibility.c (function_and_variable_visibility): Reformat
41316         comments and long lines.  Remove extrneous if.
41317         * symtab.c (symtab_node::make_decl_local): Fix code format.
41318         (symtab_node::set_section_for_node): Fix comment typo.
41319
41320 2017-01-06  Martin Liska  <mliska@suse.cz>
41321
41322         PR bootstrap/79003
41323         * lra-constraints.c: Rename invariant to lra_invariant.
41324         * predict.c (set_even_probabilities): Initialize e to NULL.
41325
41326 2017-01-05  Martin Sebor  <msebor@redhat.com>
41327
41328         PR tree-optimization/78910
41329         * gimple-ssa-sprintf.c (tree_digits): Add an argument.
41330         (format_integer): Correct off-by-one error in the handling
41331         of precision with negative numbers in signed conversions..
41332
41333 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
41334
41335         * doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry.
41336
41337 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
41338
41339         PR tree-optimization/71016
41340         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to
41341         factor_out_conditional_conversion.  Formatting fix.
41342         (factor_out_conditional_conversion): Add cond_stmt argument.
41343         If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of
41344         cond_stmt and if arg0_def_stmt is not the only stmt in its bb.
41345         Formatting fix.
41346
41347 2017-01-05  David Malcolm  <dmalcolm@redhat.com>
41348
41349         * Makefile.in (OBJS): Add read-md.o, read-rtl.o,
41350         read-rtl-function.o, and selftest-rtl.o.
41351         * config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h.
41352         (selftest::aarch64_test_loading_full_dump): New function.
41353         (selftest::aarch64_run_selftests): New function.
41354         (TARGET_RUN_TARGET_SELFTESTS): Wire it up to
41355         selftest::aarch64_run_selftests.
41356         * config/i386/i386.c
41357         (selftest::ix86_test_loading_dump_fragment_1): New function.
41358         (selftest::ix86_test_loading_call_insn): New function.
41359         (selftest::ix86_test_loading_full_dump): New function.
41360         (selftest::ix86_test_loading_unspec): New function.
41361         (selftest::ix86_run_selftests): Call the new functions.
41362         * emit-rtl.c (maybe_set_max_label_num): New function.
41363         * emit-rtl.h (maybe_set_max_label_num): New decl.
41364         * function.c (instantiate_decls): Guard call to
41365         instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
41366         * function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
41367         "static".
41368         * gensupport.c (gen_reader::gen_reader): Pass "false"
41369         for new "compact" param of rtx_reader.
41370         * print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
41371         rather than an empty string for NULL strings.
41372         * read-md.c: Potentially include config.h rather than bconfig.h.
41373         Wrap include of errors.h with #ifdef GENERATOR_FILE.
41374         (have_error): New global, copied from errors.c.
41375         (md_reader::read_name): Rename to...
41376         (md_reader::read_name_1): ...this, adding "out_loc" param,
41377         and converting "missing name or number" to returning false, rather
41378         than failing.
41379         (md_reader::read_name): Reimplement in terms of read_name_1.
41380         (md_reader::read_name_or_nil): New function.
41381         (md_reader::read_string): Handle "(nil)" by returning NULL.
41382         (md_reader::md_reader): Add new param "compact".
41383         (md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
41384         (md_reader::read_file): New method.
41385         * read-md.h (md_reader::md_reader): Add new param "compact".
41386         (md_reader::read_file): New method.
41387         (md_reader::is_compact): New accessor.
41388         (md_reader::read_name): Convert return type from void to file_location.
41389         (md_reader::read_name_or_nil): New decl.
41390         (md_reader::read_name_1): New decl.
41391         (md_reader::m_compact): New field.
41392         (noop_reader::noop_reader): Pass "false" for new "compact" param
41393         of rtx_reader.
41394         (rtx_reader::rtx_reader): Add new "compact" param.
41395         (rtx_reader::read_rtx_operand): Make virtual and convert return
41396         type from void to rtx.
41397         (rtx_reader::read_until): New decl.
41398         (rtx_reader::handle_any_trailing_information): New virtual function.
41399         (rtx_reader::postprocess): New virtual function.
41400         (rtx_reader::finalize_string): New virtual function.
41401         (rtx_reader::m_in_call_function_usage): New field.
41402         (rtx_reader::m_reuse_rtx_by_id): New field.
41403         * read-rtl-function.c: New file.
41404         * selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
41405         * selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
41406         (selftest::verify_three_block_rtl_cfg): New decl.
41407         * read-rtl-function.h: New file.
41408         * read-rtl.c: Potentially include config.h rather than bconfig.h.
41409         For host, include function.h, memmodel.h, and emit-rtl.h.
41410         (one_time_initialization): New function.
41411         (struct compact_insn_name): New struct.
41412         (compact_insn_names): New array.
41413         (find_code): Handle insn codes in compact dumps.
41414         (apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
41415         (bind_subst_iter_and_attr): Likewise.
41416         (add_condition_to_string): Likewise.
41417         (add_condition_to_rtx): Likewise.
41418         (apply_attribute_uses): Likewise.
41419         (add_current_iterators): Likewise.
41420         (apply_iterators): Likewise.
41421         (initialize_iterators): Guard usage of apply_subst_iterator with
41422         #ifdef GENERATOR_FILE.
41423         (read_conditions): Wrap with #ifdef GENERATOR_FILE.
41424         (md_reader::read_mapping): Likewise.
41425         (add_define_attr_for_define_subst): Likewise.
41426         (add_define_subst_attr): Likewise.
41427         (read_subst_mapping): Likewise.
41428         (check_code_iterator): Likewise.
41429         (rtx_reader::read_rtx): Likewise.  Move one-time initialization
41430         logic to...
41431         (one_time_initialization): New function.
41432         (rtx_reader::read_until): New method.
41433         (read_flags): New function.
41434         (parse_reg_note_name): New function.
41435         (rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
41436         Handle reuse_rtx ids.
41437         Wrap iterator lookup within #ifdef GENERATOR_FILE.
41438         Add parsing support for RTL dumps, mirroring the special-cases in
41439         print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
41440         values, and calling handle_any_trailing_information.
41441         (rtx_reader::read_rtx_operand): Convert return type from void
41442         to rtx, returning return_rtx.  Handle case 'e'.  Call
41443         finalize_string on XSTR and XTMPL fields.
41444         (rtx_reader::read_nested_rtx):  Handle dumps in which trailing
41445          "(nil)" values were omitted.  Call the postprocess vfunc on the
41446         return_rtx.
41447         (rtx_reader::rtx_reader): Add new "compact" param and pass to base
41448         class ctor.  Initialize m_in_call_function_usage.  Call
41449         one_time_initialization.
41450         * rtl-tests.c (selftest::test_uncond_jump): Call
41451         set_new_first_and_last_insn.
41452         * rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
41453         * selftest-rtl.c: New file.
41454         * selftest-rtl.h (class selftest::rtl_dump_test): New class.
41455         (selftest::get_insn_by_uid): New decl.
41456         * selftest-run-tests.c (selftest::run_tests): Call
41457         read_rtl_function_c_tests.
41458         * selftest.h  (selftest::read_rtl_function_c_tests): New decl.
41459         * tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
41460         dumps.
41461
41462 2017-01-05  Uros Bizjak  <ubizjak@gmail.com>
41463
41464         * config/i386/i386.md (*testqi_ext_3): No need to handle memory
41465         operands in a special way.  Assert that pos+len <= mode precision.
41466
41467 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
41468
41469         * common.opt (fvect-cost-model): Remove RejectNegative flag, use
41470         3 argument Alias with unlimited for the negative form.
41471         (fno-vect-cost-model): Removed.
41472
41473 2017-01-05  Martin Liska  <mliska@suse.cz>
41474
41475         * hsa-gen.c (gen_hsa_divmod): New function.
41476         (gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD.
41477
41478 2017-01-05  Martin Liska  <mliska@suse.cz>
41479
41480         PR pch/78970
41481         * gcc.c (lookup_compiler): Reject '-' filename for a precompiled
41482         header.
41483
41484 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
41485
41486         * config/s390/s390.c (s390_expand_setmem): Unroll the loop for
41487         small constant length operands.
41488
41489 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
41490
41491         * config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
41492         between loop iterations.
41493
41494 2017-01-05  Martin Liska  <mliska@suse.cz>
41495
41496         PR sanitizer/78815
41497         * gimplify.c (gimplify_decl_expr): Compare to
41498         asan_poisoned_variables instread of checking flags.
41499         (gimplify_target_expr): Likewise.
41500         (gimplify_expr): Likewise.
41501         (gimplify_function_tree): Conditionally initialize
41502         asan_poisoned_variables.
41503
41504 2017-01-04  Jeff Law  <law@redhat.com>
41505
41506         PR tree-optimizatin/78812
41507         * rtl.h (contains_mem_rtx_p): Prototype.
41508         * ifcvt.c (containts_mem_rtx_p): Move from here to...
41509         * rtlanal.c (contains_mem_rtx_p): Here and remove static linkage.
41510         * gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
41511         and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
41512         through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs.
41513
41514 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41515
41516         * input.c (assert_char_at_range): Default-initialize actual_range.
41517
41518 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41519
41520         * df-scan.c (df_ref_create_structure): Make regno unsigned,
41521         to match the caller.
41522
41523 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41524
41525         * cfgexpand.c (expand_gimple_basic_block): Disregard debug
41526         insns after final jump in test to emit dummy move.
41527
41528 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41529
41530         * gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
41531         * tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
41532
41533 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41534
41535         * multiple_target.c (create_dispatcher_calls): Init e_next.
41536         * tree-ssa-loop-split.c (split_loop): Init border.
41537         * tree-vect-loop.c (vect_determine_vectorization_factor): Init
41538         scalar_type.
41539
41540 2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
41541
41542         PR target/71977
41543         PR target/70568
41544         PR target/78823
41545         * config/rs6000/predicates.md (sf_subreg_operand): New predicate.
41546         (altivec_register_operand): Do not return true if the operand
41547         contains a SUBREG mixing SImode and SFmode.
41548         (vsx_register_operand): Likewise.
41549         (vsx_reg_sfsubreg_ok): New predicate.
41550         (vfloat_operand): Do not return true if the operand contains a
41551         SUBREG mixing SImode and SFmode.
41552         (vint_operand): Likewise.
41553         (vlogical_operand): Likewise.
41554         (gpc_reg_operand): Likewise.
41555         (int_reg_operand): Likewise.
41556         * config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration.
41557         * config/rs6000/rs6000.c (valid_sf_si_move): New function to
41558         determine if a MOVSI or MOVSF operation contains SUBREGs that mix
41559         SImode and SFmode.
41560         (rs6000_emit_move_si_sf_subreg): New helper function.
41561         (rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
41562         fixup SUBREGs involving SImode and SFmode.
41563         * config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
41564         numbers for the new peephole2 optimization.
41565         (peephole2 for SFmode unions): New peephole2 to optimize cases in
41566         the GLIBC math library that do AND/IOR/XOR operations on single
41567         precision floating point.
41568         * config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
41569         target macros to say whether we need to avoid SUBREGs mixing
41570         SImode and SFmode.
41571         (TARGET_ALLOW_SF_SUBREG): Likewise.
41572         * config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
41573         (UNSPEC_SI_FROM_SF): Likewise.
41574         (iorxor): Change spacing.
41575         (and_ior_xor): New iterator for AND, IOR, and XOR.
41576         (movsi_from_sf): New insns for SImode/SFmode SUBREG support.
41577         (movdi_from_sf_zero_ext): Likewise.
41578         (mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
41579         instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
41580         (movsf_from_si): New insn for SImode/SFmode SUBREG support.
41581         (fma<mode>4): Use gpc_reg_operand instead of register_operand.
41582         (fms<mode>4): Likewise.
41583         (fnma<mode>4): Likewise.
41584         (fnms<mode>4): Likewise.
41585         (nfma<mode>4): Likewise.
41586         (nfms<mode>4): Likewise.
41587
41588 2017-01-04  Marek Polacek  <polacek@redhat.com>
41589
41590         PR c++/64767
41591         * doc/invoke.texi: Document -Wpointer-compare.
41592
41593 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41594
41595         * optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
41596         RejectNegative.
41597
41598         * dwarf2out.c (output_loc_list): Don't throw away 64K+ location
41599         descriptions for -gdwarf-5 and emit them as uleb128 instead of
41600         2-byte data.
41601
41602 2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
41603
41604         PR target/78056
41605         * doc/sourcebuild.texi (PowerPC-specific attributes): Add
41606         documentation of the powerpc_popcntb_ok attribute.
41607         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
41608         code to issue warning messages if a requested CPU configuration is
41609         not supported by the binary (assembler and loader) toolchain.
41610         (spe_init_builtins): Add two assertions to prevent ICE if attempt is
41611         made to define a built-in function that has been disabled.
41612         (paired_init_builtins): Add assertion to prevent ICE if attempt is
41613         made to define a built-in function that has been disabled.
41614         (altivec_init_builtins): Add comment explaining why definition
41615         of the DST built-in functions is not preceded by an assertion
41616         check.  Add assertions to prevent ICE if attempts are made to
41617         define an altivec predicate or an abs* built-in function that has
41618         been disabled.
41619         (htm_init_builtins): Add comment explaining why definition of the
41620         htm built-in functions is not preceded by an assertion check.
41621
41622 2017-01-04  Jeff Law  <law@redhat.com>
41623
41624         PR tree-optimizatin/67955
41625         * tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
41626         Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
41627         the points-to solution does not include pt_null.  Use DECL_PT_UID
41628         unconditionally.
41629
41630 2017-01-04  Uros Bizjak  <ubizjak@gmail.com>
41631
41632         * config/i386/i386.md (HI/SImode test with imm to QImode splitters):
41633         Use gen_int_mode instead of gen_lopwart for const_int operands.
41634
41635 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41636
41637         PR tree-optimization/71563
41638         * match.pd: Simplify X << Y into X if Y is known to be 0 or
41639         out of range value - has low bits known to be zero.
41640
41641 2017-01-04  Alan Modra  <amodra@gmail.com>
41642
41643         * Makefile.in (aclocal_deps): Update and order as per aclocal.m4.
41644         * configure: Regenerate.
41645         * config.in: Regenerate.
41646
41647 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41648
41649         PR bootstrap/77569
41650         * input.c (ebcdic_execution_charset::on_error): Don't use strstr for
41651         a substring of the message, but strcmp with the whole message.  Ifdef
41652         ENABLE_NLS, translate the message first using dgettext.
41653
41654 2017-01-03  Jeff Law  <law@redhat.com>
41655
41656         PR tree-optimizatin/78856
41657         * tree-ssa-threadupdate.c: Include tree-vectorizer.h.
41658         (mark_threaded_blocks): Remove code to truncate thread paths that
41659         cross multiple loop headers.  Instead invalidate the cached loop
41660         iteration information and handle case of a thread path walking
41661         into an irreducible region.
41662
41663 2017-01-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
41664
41665         PR target/78900
41666         * config/rs6000/rs6000.c (rs6000_split_signbit): Change some
41667         assertions.  Add support for doing the signbit if the IEEE 128-bit
41668         floating point value is in a GPR.
41669         * config/rs6000/rs6000.md (Fsignbit): Delete.
41670         (signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
41671         Update the length attribute if the value is in a GPR.
41672         (signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
41673         the sign or zero extension instruction, since the value is always 0/1.
41674         (signbit<mode>2_dm2): Delete using <Fsignbit>.
41675
41676         PR target/78953
41677         * config/rs6000/vsx.md (vsx_extract_<mode>_store_p9): If we are
41678         extracting SImode to a GPR register so that we can generate a
41679         store, limit the vector to be in a traditional Altivec register
41680         for the vextuwrx instruction.
41681
41682 2017-01-03  Ian Lance Taylor  <iant@google.com>
41683
41684         * godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE.
41685
41686 2017-01-03  Martin Sebor  <msebor@redhat.com>
41687
41688         PR tree-optimization/78696
41689         * gimple-ssa-sprintf.c (format_floating): Correct handling of
41690         precision.  Use MPFR for %f for greater fidelity.  Correct handling
41691         of %g.
41692         (pass_sprintf_length::compute_format_length): Set width and precision
41693         specified by asrerisk to void_node for vararg functions.
41694         (try_substitute_return_value): Adjust dump output.
41695
41696 2017-01-03  David Edelsohn  <dje.gcc@gmail.com>
41697
41698         * doc/invoke.texi (RS6000 options): LRA is enabled by default.
41699
41700 2017-01-03  Eric Botcazou  <ebotcazou@adacore.com>
41701
41702         * doc/invoke.texi (SPARC options): Document -mlra as the default.
41703         * config/sparc/sparc.c (sparc_option_override): Force LRA unless
41704         -mlra/-mno-lra was passed to the compiler.
41705
41706 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
41707
41708         PR rtl-optimization/65618
41709         * emit-rtl.c (try_split): Move initialization of "before" and
41710         "after" to just before the call to emit_insn_after_setloc.
41711
41712 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
41713
41714         * doc/md.texi (Standard Names): Remove reference to Java frontend.
41715
41716 2017-01-03  Pierre-Marie de Rodat  <derodat@adacore.com>
41717
41718         * dwarf2out.c (gen_enumeration_type_die): When
41719         -gno-strict-dwarf, add a DW_AT_encoding attribute.
41720
41721 2017-01-03  Jakub Jelinek  <jakub@redhat.com>
41722
41723         PR tree-optimization/78965
41724         * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length):
41725         Change first argument from const call_info & to call_info &.  For %n
41726         set info.nowrite to false.
41727
41728         PR middle-end/78901
41729         * gimple-ssa-sprintf.c (try_substitute_return_value): Don't change
41730         possibly throwing calls.
41731
41732         * genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME
41733         and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs
41734         and fns handling, rather than in a separate case SSA_NAME.
41735
41736 2017-01-02  Jeff Law  <law@redhat.com>
41737
41738         * config/darwin-driver.c (darwin_driver_init): Const-correctness
41739         fixes for first_period and second_period variables.
41740
41741 2017-01-02  Uros Bizjak  <ubizjak@gmail.com>
41742
41743         PR target/78967
41744         * config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec.
41745         (*insvqi_1): New insn pattern.
41746         (*insvqi_1_mem_rex64): Ditto.
41747         (*insvqi_2): Ditto.
41748         (*insvqi_3): Rename from *insvqi.
41749
41750         (*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag.
41751
41752 2017-01-02  Gerald Pfeifer  <gerald@pfeifer.com>
41753
41754         * doc/cfg.texi (Edges): Remove reference to Java.
41755         (Maintaining the CFG): Ditto.
41756
41757 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41758
41759         PR middle-end/77674
41760         * symtab.c (symtab_node::binds_to_current_def_p): Fix handling of
41761         transparent aliases.
41762
41763 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41764
41765         PR middle-end/77484
41766         * predict.def (PRED_CALL): Update hitrate.
41767         (PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors.
41768         * predict.c (tree_estimate_probability_bb): Split CALL predictor
41769         into direct/indirect/polymorphic variants.
41770
41771 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
41772
41773         Update copyright years.
41774
41775         * gcc.c (process_command): Update copyright notice dates.
41776         * gcov-dump.c (print_version): Ditto.
41777         * gcov.c (print_version): Ditto.
41778         * gcov-tool.c (print_version): Ditto.
41779         * gengtype.c (create_file): Ditto.
41780         * doc/cpp.texi: Bump @copying's copyright year.
41781         * doc/cppinternals.texi: Ditto.
41782         * doc/gcc.texi: Ditto.
41783         * doc/gccint.texi: Ditto.
41784         * doc/gcov.texi: Ditto.
41785         * doc/install.texi: Ditto.
41786         * doc/invoke.texi: Ditto.
41787 \f
41788 Copyright (C) 2017 Free Software Foundation, Inc.
41789
41790 Copying and distribution of this file, with or without modification,
41791 are permitted in any medium without royalty provided the copyright
41792 notice and this notice are preserved.