OSDN Git Service

b99632baa9f15d5fa3f93c59f7c5dafff144cea6
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-10-15  Alan Modra  <amodra@gmail.com>
2
3         PR bootstrap/50738
4         * ifcvt.c (dead_or_predicable): Revert accidental commit with
5         HAVE_simple_return test.
6
7 2011-10-15  Alan Modra  <amodra@gmail.com>
8
9         * ifcvt.c (dead_or_predicable): Disable if-conversion when
10         doing so is likely to kill a shrink-wrapping opportunity.
11
12         PR rtl-optimization/49941
13         * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
14
15         * rtl.h (set_return_jump_label): Declare.
16         * function.c (set_return_jump_label): New function, extracted..
17         (thread_prologue_and_epilogue_insns): ..from here.  Use it in
18         another instance to set return jump_label.
19         * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
20         * reorg.c (find_end_label): Likewise.
21
22 2011-10-14  David S. Miller  <davem@davemloft.net>
23
24         * config/sparc/sol2.h: Protect -m{cpu,tune}=native handling
25         with a more complete cpp test.
26         * config/sparc/linux64.h: Likewise.
27         * config/sparc/linux.h: Likewise.
28         * config/sparc/sparc.opt (sparc_debug): New target variable.
29         (mdebug): New target option.
30         * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL,
31         TARGET_DEBUG_OPTIONS): New defines.
32         * config/sparc/sparc.c (debug_target_flag_bits,
33         debug_target_flags): New functions.
34         (sparc_option_override): Add name strings back to cpu_table[].
35         Parse -mdebug string.  When TARGET_DEBUG_OPTIONS is true, print
36         out the target flags before and after override processing as well
37         as the selected cpu.  If MASK_V8PLUS, make sure that the selected
38         cpu is at least v9.
39
40 2011-10-15  Oleg Endo  <oleg.endo@t-online.de>
41
42         PR target/49263
43         * config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro.
44         * config/sh/sh.c (sh_rtx_costs): Add test instruction case.
45         * config/sh/sh.md (tstsi_t): Name existing insn.  Make inner
46         and instruction commutative.
47         (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not,
48         tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor,
49         tstsi_t_zero_extract_subreg_xor_little,
50         tstsi_t_zero_extract_subreg_xor_big): New insns.
51         (*movsicc_t_false, *movsicc_t_true): Replace space with tab in
52         asm output.
53         (*andsi_compact): Reorder alternatives so that K08 is considered
54         first.
55
56 2011-10-14  Eric Botcazou  <ebotcazou@adacore.com>
57
58         PR target/50354
59         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
60         processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
61
62 2011-10-14  Gerald Pfeifer  <gerald@pfeifer.com>
63
64         * invoke.texi (AVR Options): Avoid \leq{}.
65
66 2011-10-14  Kai Tietz  <ktietz@redhat.com>
67
68         * gimplify.c (gimplify_expr): Take care that for bitwise-binary
69         transformation the operands have compatible types.
70
71 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
72
73         * config/i386/sse.md (vec_widen_smult_hi_v8hi,
74         vec_widen_smult_lo_v8hi, vec_widen_umult_hi_v8hi,
75         vec_widen_umult_lo_v8hi): Macroize using VI2_AVX2
76         mode iterator and any_extend code iterator.
77         (vec_widen_<s>mult_hi_v8si, vec_widen_<s>mult_lo_v8si): New
78         expanders.
79         (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si): Enable
80         also for TARGET_SSE4_1 using pmuldq insn.
81         (sdot_prodv8hi): Macroize using VI2_AVX2 iterator.
82         (sse2_sse4_1): New code attr.
83         (udot_prodv4si): Macroize using any_extend code iterator.
84         (<s>dot_prodv8si): New expander.
85
86 2011-10-14  Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
87
88         * config/i386/i386.c (atom_cost): Changed cost for loading
89         QImode using movzbl.
90
91 2011-10-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
92
93         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
94         change on October 11th, 2011.
95
96 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
97
98         * config/i386/sse.md (vec_interleave_high<mode>,
99         vec_interleave_low<mode>): Add AVX2 expanders for VI_256
100         modes.
101         * config/i386/i386.c (expand_vec_perm_interleave3): New function.
102         (ix86_expand_vec_perm_builtin_1): Call it.
103
104 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
105
106         Fix thinko from r179765
107         * config/avr/avr.c (avr_option_override): Don't override
108         flag_omit_frame_pointer if not actually needed.
109
110 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
111
112         PR target/46278
113         * doc/invoke.texi (AVR Options): Document -mstrict-X.
114
115         * config/avr/avr.opt (-mstrict-X): New option.
116         (avr_strict_X): New variable reflecting -mstrict-X.
117         * config/avr/avr.c (avr_reg_ok_for_addr_p): Add parameter
118         outer_code and pass it down to avr_regno_mode_code_ok_for_base_p.
119         (avr_legitimate_address_p): Pass outer_code to
120         avr_reg_ok_for_addr_p and use that function in case PLUS.
121         (avr_mode_code_base_reg_class): Depend on avr_strict_X.
122         (avr_regno_mode_code_ok_for_base_p): Ditto, and depend on outer_code.
123         (avr_option_override): Disable -fcaller-saves if -mstrict-X is on.
124         
125 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
126
127         * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
128         of VI_128.
129
130         * config/i386/sse.md (mulv2di3): Macroize using VI8_AVX2
131         iterator.
132         (ashl<mode>3): Use VI248_AVX2 iterator instead of VI248_128.
133         Use <sseinsnmode> instead of TI in mode attr.
134
135 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
136
137         * config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
138         * config/arm/linux-atomic.c: Change comment to point to 64bit version.
139         (SYNC_LOCK_RELEASE): Instantiate 64bit version.
140         * config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
141
142 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
143
144         * config/arm/arm.c (arm_output_ldrex): Support ldrexd.
145         (arm_output_strex): Support strexd.
146         (arm_output_it): New helper to output it in Thumb2 mode only.
147         (arm_output_sync_loop): Support DI mode.  Change comment to
148         not support const_int.
149         (arm_expand_sync): Support DI mode.
150         * config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
151         and LDREXD.
152         * config/arm/iterators.md (NARROW): move from sync.md.
153         (QHSD): New iterator for all current ARM integer modes.
154         (SIDI): New iterator for SI and DI modes only.
155         * config/arm/sync.md (sync_predtab): New mode_attr.
156         (sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
157         (sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
158         (sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
159         (sync_nandsi): Fold into sync_nand<mode>.
160         (sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
161         (sync_new_nandsi): Fold into sync_new_nand<mode>.
162         (sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
163         (sync_old_nandsi): Fold into sync_old_nand<mode>.
164         (sync_compare_and_swap<mode>): Support SI & DI.
165         (sync_lock_test_and_set<mode>): Likewise.
166         (sync_<sync_optab><mode>): Likewise.
167         (sync_nand<mode>): Likewise.
168         (sync_new_<sync_optab><mode>): Likewise.
169         (sync_new_nand<mode>): Likewise.
170         (sync_old_<sync_optab><mode>): Likewise.
171         (sync_old_nand<mode>): Likewise.
172         (arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
173         (arm_sync_lock_test_and_setsi): Likewise.
174         (arm_sync_new_<sync_optab>si): Likewise.
175         (arm_sync_new_nandsi): Likewise.
176         (arm_sync_old_<sync_optab>si): Likewise.
177         (arm_sync_old_nandsi): Likewise.
178         (arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
179         (arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
180         (arm_sync_new_<sync_optab><mode> NARROW): Likewise.
181         (arm_sync_new_nand<mode> NARROW): Likewise.
182         (arm_sync_old_<sync_optab><mode> NARROW): Likewise.
183         (arm_sync_old_nand<mode> NARROW): Likewise.
184
185 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
186
187         PR target/48126
188         * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
189
190 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
191
192         * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
193
194 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
195
196         * doc/invoke.texi ([Wformat-zero-length]): Tidy.
197
198 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
199
200         * gimple.c (walk_stmt_load_store_addr_ops): Call visit_addr
201         also on COND_EXPR/VEC_COND_EXPR comparison operands if they are
202         ADDR_EXPRs.
203
204 2011-10-14  Richard Guenther  <rguenther@suse.de>
205
206         PR tree-optimization/50723
207         * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
208
209 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
210
211         * gengtype.c (files_rules): Added rules for objc/objc-map.h and
212         objc/objc-map.c.
213
214 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
215
216         PR c++/17212
217         * c-family/c.opt ([Wformat-zero-length]): Add C++ and Objective-C++.
218         * doc/invoke.texi: Update.
219
220 2011-10-14  Iain Sandoe  <iains@gcc.gnu.org>
221
222         PR bootstrap/50699
223         * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
224         build for powerpc targets.  (darwin_patch_builtins): Only build for
225         powerpc targets.
226
227 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
228
229         * config/i386/sse.md (*avx_cvtdq2pd256_2): Rename to...
230         (avx_cvtdq2pd256_2): ... this.
231         (sseunpackfltmode): New mode attr.
232         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi,
233         vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): Macroize
234         using VI2_AVX2 iterator.
235         (vec_unpacku_float_hi_v8si, vec_unpacku_float_lo_v8si): New
236         expanders.
237
238 2011-10-13  David S. Miller  <davem@davemloft.net>
239
240         * config/sparc/sparc.md (plusminus): New code iterator.
241         (plusminus_insn): New code attr.
242         (addv2si3, subv2si3, addv4hi3, subv4hi3, addv2hi3, subv2hi3): Merge
243         using plusminus and plusminus_insn.
244         (fpadd64_vis, fpsub64_vis): Likewise.
245
246 2011-10-13  Richard Henderson  <rth@redhat.com>
247
248         * doc/md.texi (vec_perm): Document fallback to byte permutation.
249         * genopinit.c (optabs): Add vec_perm_const.
250         * optabs.c (can_vec_perm_expr_p): Rename from expand_vec_perm_expr_p.
251         Reject non-vector modes.  Allow fallback to byte permutation.
252         (expand_vec_perm_expr_1): Split out from ...
253         (expand_vec_perm_expr): ... here.  Allow fallback to byte permutation.
254         * optabs.h (DOI_vec_perm_const, vec_perm_const_optab): New.
255         * tree-vect-generic.c (lower_vec_perm): Update for name change.
256
257 2011-10-13  Richard Henderson  <rth@redhat.com>
258
259         * config/rs6000/altivec.md (vec_permv16qi): New pattern.
260
261         * config/rs6000/spu.md (vec_permv16qi): New pattern.
262
263         * config/i386/i386.c (ix86_expand_vec_perm_const): New.
264         * config/i386/i386-protos.h: Update.
265         * config/i386/sse.md (VEC_PERM_CONST): New mode iterator.
266         (vec_perm_const<VEC_PERM_CONST>): New expander.
267
268         * optabs.c (expand_vector_broadcast): New.
269         (expand_binop): Expand scalar shifts of vectors to vector shifts
270         of vectors, if the former isn't supported.
271         * tree-vect-generic.c (expand_vector_operations_1): Don't do that
272         here; always simplify to scalar shift of vector if possible.
273
274         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
275         test for vector splat.
276
277 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
278
279         * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode
280         to V.
281
282 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
283             Richard Guenther  <rguenther@suse.de>
284
285         * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE
286         from vector or complex vars even if their DECL_UID is in not_reg_needs
287         bitmap.
288
289 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
290
291         * config/i386/sse.md (reduc_umin_v8hi): New pattern.
292         * config/i386/i386.c (ix86_build_const_vector): Handle
293         also V32QI, V16QI, V16HI and V8HI modes.
294         (emit_reduc_half): New function.
295         (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
296         Use emit_reduc_half helper function.
297
298 2011-10-13   Lawrence Crowl  <crowl@google.com>
299              Diego Novillo  <dnovillo@google.com>
300
301         * lto-streamer-in.c (input_struct_function_base): Factor out of ...
302         (input_function): ... here.
303         * lto-streamer-out.c (output_struct_function_base): Factor out of ...
304         (output_function): ... here.
305
306 2011-10-13  Gabriel Charette  <gchare@google.com>
307             Diego Novillo  <dnovillo@google.com>
308
309         * streamer-hooks.h (struct streamer_hooks): Add hooks
310         input_location and output_location.
311         * lto-streamer-in.c (lto_input_location): Use
312         streamer_hooks.input_location, if set.
313         * lto-streamer-out.c (lto_output_location): Use
314         streamer_hooks.output_location, if set.
315
316 2011-10-13  Eric Botcazou  <ebotcazou@adacore.com>
317
318         * doc/invoke.texi (SPARC options): Document -mfix-at697f.
319         * config/sparc/sparc.opt (mfix-at697f): New option.
320         * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
321         (sparc_reorg): New function.
322
323 2011-10-13  Richard Guenther  <rguenther@suse.de>
324
325         PR tree-optimization/50712
326         * ipa-split.c (split_function): Always re-gimplify parameters
327         when they are not gimple vals before passing them.  Properly
328         check for type compatibility.
329
330 2011-10-13  Tom de Vries  <tom@codesourcery.com>
331
332         * function.c (gimplify_parameters): Set number of arguments of call to
333         BUILT_IN_ALLOCA_WITH_ALIGN to 2.
334
335 2011-10-13  Tom de Vries  <tom@codesourcery.com>
336
337         * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
338         for static const strings.
339         * varasm.c (build_constant_desc): Generate the memory location of the
340         constant using gen_const_mem.
341
342 2011-10-13  Richard Guenther  <rguenther@suse.de>
343
344         PR tree-optimization/50698
345         * tree-data-ref.c (split_constant_offset_1): Also process
346         offsets of &MEM.
347
348 2011-10-12  David S. Miller  <davem@davemloft.net>
349
350         * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
351         (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
352         unspecs.
353         (fpmerge_vis): Remove inaccurate comment, represent using vec_select
354         of a vec_concat.
355         (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
356         (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
357         Reimplement as unspecs and remove inaccurate comments.
358         (vis3_shift_patname): New code attr.
359         (<vis3_shift_insn><vbits>_vis): Rename to "v<vis3_shift_patname><mode>3".
360         (vis3_addsub_ss_patname): New code attr.
361         (<vis3_addsub_ss_insn><vbits>_vis): Rename to
362         "<vis3_addsub_ss_patname><mode>3".
363         * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
364         accommodate pattern name changes.
365
366         * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
367         to zero when assembler lacks support for such instructions.
368         * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
369         and MASK_FMAF in defaults when assembler lacks necessary support.
370
371 2011-10-12  Jakub Jelinek  <jakub@redhat.com>
372
373         * config/i386/sse.md (vec_unpacks_lo_<mode>,
374         vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
375         vec_unpacku_hi_<mode>): Change VI124_128 mode to
376         VI124_AVX2.
377         * config/i386/i386.c (ix86_expand_sse_unpack): Handle
378         V32QImode, V16HImode and V8SImode for TARGET_AVX2.
379
380         * config/i386/sse.md (vec_avx2): New mode_attr.
381         (mulv16qi3): Macroize to cover also mulv32qi3 for
382         TARGET_AVX2 into ...
383         (mul<mode>3): ... this.
384
385         * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
386         * config/i386/i386.c (ix86_expand_vec_perm): Handle
387         V16QImode and V32QImode for TARGET_AVX2.
388         (MAX_VECT_LEN): Increase to 32.
389         (expand_vec_perm_blend): Add support for 32-byte integer
390         vectors with TARGET_AVX2.
391         (valid_perm_using_mode_p): New function.
392         (expand_vec_perm_pshufb): Add support for 32-byte integer
393         vectors with TARGET_AVX2.
394         (expand_vec_perm_vpshufb2_vpermq): New function.
395         (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
396         (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
397         with TARGET_AVX2.
398         (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
399         and expand_vec_perm_vpshufb2_vpermq_even_odd.
400         * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
401         32-byte integer vector modes.
402         (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
403         (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
404         (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
405         4 new operands.
406         (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
407         match_dup, instead add 4 new operands and require they have
408         right cross-lane values.
409         (avx2_permv4di): Change into define_expand.
410         (avx2_permv4di_1): New instruction.
411         (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
412         for "xm" constrained operand.
413         (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
414
415         * config/i386/sse.md (avx2_gathersi<mode>,
416         avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
417         match_scratch, change memory_operand to register_operand,
418         add (mem:BLK (scratch)) use.
419         (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
420         *avx2_gatherdi<mode>256): Add clobber of match_scratch,
421         add earlyclobber to the output operand and match_scratch,
422         add (mem:BLK (scratch)) use, change the other mem to match_operand.
423         Use %p6 instead of %c6 in the pattern.
424         * config/i386/i386.c (ix86_expand_builtin): Adjust for
425         operand 2 being a Pmode register_operand instead of memory_operand.
426
427 2011-10-12  Kai Tietz  <ktietz@redhat.com>
428
429         * config/i386/i386.md (simple_return): Disable
430         if TARGET_SEH is active.
431
432 2011-10-12  Steve Ellcey  <sje@cup.hp.com>
433
434         * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
435
436 2011-10-12  Richard Guenther  <rguenther@suse.de>
437
438         * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
439         of the first store we visit in a basic-block.
440         (get_continuation_for_phi): Search for a candidate VUSE that
441         might dominates all others.  Do pairwise disambiguation against
442         that candidate.
443
444 2011-10-12  Paul Koning  <pkoning@gcc.gnu.org>
445
446         PR tree-optimization/50189
447         * tree-vrp.c (extract_range_from_assert): Use the type of
448         the variable, not the limit.
449
450 2011-10-12  Richard Guenther  <rguenther@suse.de>
451
452         PR tree-optimization/50700
453         * tree-object-size.c (addr_object_size): Simplify and treat
454         MEM_REF bases consistently.
455
456 2011-10-12  Bernd Schmidt  <bernds@codesourcery.com>
457
458         * function.c (prepare_shrink_wrap, bb_active_p): New function.
459         (thread_prologue_and_epilogue_insns): Use bb_active_p.
460         Call prepare_shrink_wrap, then recompute bb_active_p for the
461         last block.
462
463 2011-10-12  Joseph Myers  <joseph@codesourcery.com>
464
465         PR c/50565
466         * convert.c (convert_to_integer): Do not narrow operands of
467         pointer subtraction.
468
469 2011-10-12  Nick Clifton  <nickc@redhat.com>
470
471         * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro.  Used to
472         emit a .eabi_attribute assembler directive, possibly with a
473         comment attached.
474         * config/arm/arm.c (arm_file_start): Use the new macro.
475         * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
476
477 2011-10-12  Georg-Johann Lay  <avr@gjlay.de>
478
479         PR target/49939
480         * config/avr/avr.md (*movqi): Rename to movqi_insn.
481         (*call_insn): Rename to call_insn.
482         (*call_value_insn): Rename to call_value_insn.
483         * config/avr/avr.c (avr_2word_insn_p): New static function.
484         (jump_over_one_insn_p): Use it.
485
486 2011-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
487
488         * expr.h (copy_blkmode_to_reg): Declare.
489         * expr.c (copy_blkmode_to_reg): New function.
490         (expand_assignment): Don't expand register RESULT_DECLs before
491         the lhs.  Use copy_blkmode_to_reg to copy BLKmode values into a
492         RESULT_DECL register.
493         (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
494         * stmt.c (expand_return): Move BLKmode-to-register code into
495         copy_blkmode_to_reg.
496
497 2011-10-11  Eric Botcazou  <ebotcazou@adacore.com>
498
499         PR target/49965
500         * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
501         (mov<F:mode>cc): Likewise.
502
503 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
504
505         * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
506
507 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
508
509         * tree.h (built_in_decls): Delete old interface with two parallel
510         arrays to hold standard builtin declarations, and replace it with
511         a function based interface that can support creating builtins on
512         the fly in the future.  Change all uses, and poison the old
513         names.  Make sure 0 is not a legitimate builtin index.
514         (implicit_built_in_decls): Ditto.
515         (built_in_info): Ditto.
516         (BUILTIN_VALID_P): Ditto.
517         (builtin_decl_explicit): Ditto.
518         (builtin_decl_implicit): Ditto.
519         (set_builtin_decl): Ditto.
520         (set_builtin_decl_implicit_p): Ditto.
521         (builtin_decl_explicit_p): Ditto.
522         (builtin_decl_implicit_p): Ditto.
523         * tree-complex.c (expand_complex_libcall): Ditto.
524         * tree-loop-distribution.c (generate_memset_zero): Ditto.
525         * tree-ssa-strlen.c (get_string_length): Ditto.
526         (handle_builtin_strcpy): Ditto.
527         (handle_builtin_strcat): Ditto.
528         * tree.c (iterative_hash_expr): Ditto.
529         (local_define_builtin): Ditto.
530         (build_common_builtin_nodes): Ditto.
531         * builtins.c (built_in_decls): Ditto.
532         (implicit_built_in_decls): Ditto.
533         (built_in_info): Ditto
534         (expand_builtin_classify_type): Ditto.
535         (mathfn_built_in_1): Ditto.
536         (expand_builtin_cexpi): Ditto.
537         (expand_builtin_mempcpy_args): Ditto.
538         (expand_builtin_stpcpy): Ditto.
539         (gimplify_va_arg_expr): Ditto.
540         (expand_builtin_sync_operation): Ditto.
541         (build_builtin_expect_predicate): Ditto.
542         (fold_builtin_memory_op): Ditto.
543         (fold_builtin_strcpy): Ditto.
544         (fold_builtin_stpcpy): Ditto.
545         (fold_builtin_strncpy): Ditto.
546         (fold_builtin_interclass_mathfn): Ditto.
547         (fold_builtin_classify): Ditto.
548         (fold_builtin_2): Ditto.
549         (fold_builtin_strstr): Ditto.
550         (fold_builtin_strrchr): Ditto.
551         (fold_builtin_strpbrk): Ditto.
552         (fold_builtin_strcat): Ditto.
553         (fold_builtin_strncat): Ditto.
554         (fold_builtin_strcspn): Ditto.
555         (fold_builtin_fputs): Ditto.
556         (fold_builtin_sprintf): Ditto.
557         (fold_builtin_snprintf): Ditto.
558         (expand_builtin_memory_chk): Ditto.
559         (fold_builtin_memory_chk): Ditto.
560         (fold_builtin_stxcpy_chk): Ditto.
561         (fold_builtin_strncpy_chk): Ditto.
562         (fold_builtin_strcat_chk): Ditto.
563         (fold_builtin_strncat_chk): Ditto.
564         (fold_builtin_sprintf_chk_1): Ditto.
565         (fold_builtin_snprintf_chk_1): Ditto.
566         (fold_builtin_printf): Ditto.
567         (fold_builtin_fprintf): Ditto.
568         (fold_call_stmt): Ditto.
569         (set_builtin_user_assembler_name): Ditto.
570         * tree-emutls.c (emutls_common_1): Ditto.
571         * omp-low.c (scan_omp): Ditto.
572         (lower_rec_input_clauses): Ditto.
573         (lower_reduction_clauses): Ditto.
574         (expand_parallel_call): Ditto.
575         (expand_task_call): Ditto.
576         (maybe_catch_exception): Ditto.
577         (optimize_omp_library_calls): Ditto.
578         (expand_omp_for_generic): Ditto.
579         (expand_omp_for_static_nochunk): Ditto.
580         (expand_omp_for_static_chunk): Ditto.
581         (expand_omp_sections): Ditto.
582         (expand_omp_atomic_fetch_op): Ditto.
583         (expand_omp_atomic_pipeline): Ditto.
584         (expand_omp_atomic_mutex): Ditto.
585         (lower_omp_single_simple): Ditto.
586         (lower_omp_single_copy): Ditto.
587         (lower_omp_master): Ditto.
588         (lower_omp_ordered): Ditto.
589         (lower_omp_critical): Ditto.
590         * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
591         * builtins.c (DEF_BUILTIN_STUB): Ditto.
592         (BUILT_IN_NONE): Ditto.
593         * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
594         * gimple-low.c (lower_function_body): Ditto.
595         (lower_builtin_setjmp): Ditto.
596         * c-decl.c (merge_decls): Ditto.
597         * tree-eh.c (lower_resx): Ditto.
598         (lower_resx): Ditto.
599         (lower_eh_dispatch): Ditto.
600         * function (gimplify_parameters): Ditto.
601         * c-typeck.c (build_function_call_vec): Ditto.
602         * gimplify.c (build_stack_save_restore): Ditto.
603         (gimplify_vla_decl): Ditto.
604         (gimplify_modify_expr_to_memcpy): Ditto.
605         (gimplify_modify_expr_to_memset): Ditto.
606         (gimplify_variable_sized_compare): Ditto.
607         (gimplify_function_tree): Ditto.
608         * calls.c (emit_call_1): Ditto.
609         * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
610         * tree-nested.c (convert_nl_goto_reference): Ditto.
611         (convert_tramp_reference_op): Ditto.
612         (finalize_nesting_tree_1): Ditto.
613         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
614         (tree_ssa_prefetch_arrays): Ditto.
615         * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
616         * system.h (built_in_decls): Ditto.
617         (implicit_built_in_decls): Ditto.
618         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
619         * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
620         * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
621         (ix86_veclibabi_svml): Ditto.
622         (ix86_veclibabi_acml): Ditto.
623         * config/vms/vms.c (vms_patch_builtins): Ditto.
624         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
625         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
626         (rs6000_builtin_vectorized_libmass): Ditto.
627         (rs6000_init_builtins): Ditto.
628         * config/darwin.c (darwin_override_options): Ditto.
629         (darwin_patch_builtin): Ditto.
630         (darwin_rename_builtins): Ditto.
631         * config/pa/pa.c (pa_init_builtins): Ditto.
632
633 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
634
635         * tree.h (copy_ref_info): Expose existing function.
636         * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
637         * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
638
639 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
640
641         * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New prototype.
642         (avr_regno_mode_code_ok_for_base_p): New prototype.
643         * config/avr/avr.h (BASE_REG_CLASS): Remove.
644         (REGNO_OK_FOR_BASE_P): Remove.
645         (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
646         (REG_OK_FOR_BASE_STRICT_P): Remove.
647         (MODE_CODE_BASE_REG_CLASS): New define.
648         (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
649         * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
650         (avr_regno_mode_code_ok_for_base_p): New function.
651         (avr_reg_ok_for_addr_p): New static function.
652         (avr_legitimate_address_p): Use it.  Beautify.
653
654 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
655
656         PR target/50447
657         * config/avr/avr.md (cc): Add out_plus attribute alternative.
658         (addsi3): Use it.  Adapt avr_out_plus to new prototype.  Use
659         avr_out_plus for all CONST_INT addends.
660         * config/avr/avr-protos.h (avr_out_plus): Change prototype.
661         * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
662         CC_OUT_PLUS.
663         (avr_out_plus_1): Change prototype and report effect on cc0.
664         (avr_out_plus): Ditto.
665         (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
666
667 2011-10-11  H.J. Lu  <hongjiu.lu@intel.com>
668
669         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
670         the extra break.
671
672 2011-10-11  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
673
674         * doc/invoke.texi: Document new warning.
675         * common.opt (Wvector-operation-performance): Define new warning.
676         * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
677         vector operation.
678         (exapnd_vector_parallel): Warn about expanded vector operation.
679         (lower_vec_shuffle): Warn about expanded vector operation.
680         * c-typeck.c (c_build_vec_perm_expr): Store correct location
681         when creating VEC_PERM_EXPR.
682
683 2011-10-11  Richard Guenther  <rguenther@suse.de>
684
685         PR tree-optimization/50204
686         * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
687         two argument handling from ...
688         (get_continuation_for_phi): ... here.  Handle arbitrary number
689         of PHI args.
690
691 2011-10-11  Paolo Carlini  <paolo.carlini@oracle.com>
692
693         PR c++/33067
694         * c-family/c-pretty-print.c (pp_c_floating_constant): Output
695         max_digits10 (in the ISO C++ WG N1822 sense) decimal digits.
696
697 2011-10-11  Richard Sandiford  <richard.sandiford@linaro.org>
698
699         * modulo-sched.c: Fix comment typo.  Mention the possibility
700         of using scheduling windows of II+1 cycles.
701
702 2011-10-11  Tristan Gingold  <gingold@adacore.com>
703
704         * doc/invoke.texi (C Dialect Options): Document
705         -fallow-parameterless-variadic-functions.
706         * c-parser.c (c_parser_parms_list_declarator): Handle it.
707
708 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
709
710         * config/avr/avr.c (avr_option_override): Set
711         flag_omit_frame_pointer to 0 if frame pointer is needed for
712         unwinding.
713
714 2011-10-10  Uros Bizjak  <ubizjak@gmail.com>
715
716         PR bootstrap/50665
717         * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm.  Move from enum
718         optab_index to enum direct_optab_index.
719         (vec_perm_optab): Update.
720
721 2011-10-10  Anatoly Sokolov  <aesok@post.ru>
722
723         * config/cris/cris.c (cris_preferred_reload_class): New function.
724         (TARGET_PREFERRED_RELOAD_CLASS): Define.
725         * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
726
727 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
728
729         * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
730         !AVR_HAVE_JMP_CALL.
731         (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
732         (*tablejump_enh, *tablejump): Remove insns.
733         * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
734         EIJMP for indirect jump.  Use LPM Z+ where available.
735
736 2011-10-10  Richard Henderson  <rth@redhat.com>
737
738         * doc/md.texi (vec_perm_const): Fix typo in cindex.
739
740 2011-10-10  Kirill Yukhin  <kirill.yukhin@intel.com>
741             Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
742
743         * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
744
745 2011-10-10  Richard Guenther  <rguenther@suse.de>
746
747         PR middle-end/50389
748         * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
749         mark symbols for renaming.  Append the VUSE to all statements
750         that possibly can have one.
751
752 2011-10-10  Richard Guenther  <rguenther@suse.de>
753
754         * ipa-split.c (pass_split_functions): Add verification TODOs.
755         (pass_feedback_split_functions): Likewise.
756
757 2011-10-10  Richard Guenther  <rguenther@suse.de>
758
759         PR middle-end/50195
760         * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
761         only when optimizing.
762
763 2011-10-10  Nick Clifton  <nickc@redhat.com>
764
765         PR middle-end/49801
766         * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
767         df_get_live_out instead of accessing the bitmaps directly.
768         (execute_compare_elim_after_reload): Remove calls to df_set_flags,
769         df_live_add_problem and df_analyze.
770
771 2011-10-10  Michael Matz  <matz@suse.de>
772
773         PR middle-end/50638
774         * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
775
776 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
777
778         * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
779         (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
780         (node_sched_params): Remove first_reg_move and nreg_moves.
781         (ps_num_consecutive_stages, extend_node_sched_params): New functions.
782         (update_node_sched_params): Move up file.
783         (print_node_sched_params): Print the stage.  Don't dump info related
784         to first_reg_move and nreg_moves.
785         (set_columns_for_row): New function.
786         (set_columns_for_ps): Move up file and use set_columns_for_row.
787         (schedule_reg_move): New function.
788         (schedule_reg_moves): Call extend_node_sched_params and
789         schedule_reg_move.  Extend size of uses bitmap.  Initialize
790         num_consecutive_stages.  Return false if a move could not be
791         scheduled.
792         (apply_reg_moves): Don't emit moves here.
793         (permute_partial_schedule): Handle register moves.
794         (duplicate_insns_of_cycles): Remove for_prolog.  Emit moves according
795         to the same stage-count test as ddg nodes.
796         (generate_prolog_epilog): Update calls accordingly.
797         (sms_schedule): Allow move-scheduling to add a new first stage.
798
799 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
800
801         * modulo-sched.c (ps_insn): Adjust comment.
802         (ps_reg_move_info): New structure.
803         (partial_schedule): Add reg_moves field.
804         (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
805         (node_sched_params): Turn first_reg_move into an identifier.
806         (ps_reg_move): New function.
807         (ps_rtl_insn): Cope with register moves.
808         (ps_first_note): Adjust comment and assert that the instruction
809         isn't a register move.
810         (node_sched_params): Replace with...
811         (node_sched_param_vec): ...this vector.
812         (set_node_sched_params): Adjust accordingly.
813         (print_node_sched_params): Take a partial schedule instead of a ddg.
814         Use ps_rtl_insn and ps_reg_move.
815         (generate_reg_moves): Rename to...
816         (schedule_reg_moves): ...this.  Remove rescan parameter.  Record each
817         move in the partial schedule, but don't emit it here.  Don't perform
818         register substitutions here either.
819         (apply_reg_moves): New function.
820         (duplicate_insns_of_cycles): Use register indices directly,
821         rather than finding instructions using PREV_INSN.  Use ps_reg_move.
822         (sms_schedule): Call schedule_reg_moves before committing to
823         a partial schedule.   Try the next ii if the schedule fails.
824         Use apply_reg_moves instead of generate_reg_moves.  Adjust
825         call to print_node_sched_params.  Free node_sched_param_vec
826         instead of node_sched_params.
827         (create_partial_schedule): Initialize reg_moves.
828         (free_partial_schedule): Free reg_moves.
829
830 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
831
832         * modulo-sched.c (ps_insn): Replace node field with an identifier.
833         (SCHED_ASAP): Replace with..
834         (NODE_ASAP): ...this macro.
835         (SCHED_PARAMS): New macro.
836         (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
837         (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
838         (node_sched_params): Remove asap.
839         (ps_rtl_insn, ps_first_note): New functions.
840         (set_node_sched_params): Use XCNEWVEC.  Don't copy across the
841         asap values.
842         (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
843         (generate_reg_moves): Pass ids to the SCHED_* macros.
844         (update_node_sched_params): Take a ps insn identifier rather than
845         a node as parameter.  Use ps_rtl_insn.
846         (set_columns_for_ps): Update for above field and SCHED_* macro changes.
847         (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
848         (optimize_sc): Update for above field and SCHED_* macro changes.
849         Update calls to try_scheduling_node_in_cycle and
850         update_node_sched_params.
851         (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
852         macro changes.  Use ps_rtl_insn and ps_first_note.
853         (sms_schedule): Pass ids to the SCHED_* macros.
854         (get_sched_window): Adjust for above field and SCHED_* macro changes.
855         Use NODE_ASAP instead of SCHED_ASAP.
856         (try_scheduling_node_in_cycle): Remove node parameter.  Update
857         call to ps_add_node_check_conflicts.  Pass ids to the SCHED_*
858         macros.
859         (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
860         (ps_insert_empty_row): Adjust for above field changes.
861         (compute_split_row): Use ids rather than nodes.
862         (verify_partial_schedule): Adjust for above field changes.
863         (print_partial_schedule): Use ps_rtl_insn.
864         (create_ps_insn): Take an id rather than a node.
865         (ps_insn_find_column): Adjust for above field changes.
866         Use ps_rtl_insn.
867         (ps_insn_advance_column): Adjust for above field changes.
868         (add_node_to_ps): Remove node parameter.  Update call to
869         create_ps_insn.
870         (ps_has_conflicts): Use ps_rtl_insn.
871         (ps_add_node_check_conflicts): Replace node parameter than an id.
872
873 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
874
875         * modulo-sched.c (undo_replace_buff_elem): Delete.
876         (generate_reg_moves): Don't build and return an undo list.
877         (free_undo_replace_buff): Delete.
878         (sms_schedule): Adjust call to generate_reg_moves.
879         Don't call free_undo_replace_buff.
880
881 2011-10-10  Matthias Klose <doko@ubuntu.com>
882
883         * common/config/m32c: Remove empty directory.
884
885 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
886
887         * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
888
889 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
890
891         PR target/50652
892         * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
893         atmega164a to 0x100.
894
895 2011-10-09  Eric Botcazou  <ebotcazou@adacore.com>
896
897         * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
898         the replacement if the conversion to the LHS type is not useless.
899
900 2011-10-09  Ira Rosen  <ira.rosen@linaro.org>
901
902         PR tree-optimization/50635
903         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
904         DEF_STMT to the list of statements to be replaced by the
905         pattern statements.
906         (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
907
908 2011-10-09  Anatoly Sokolov  <aesok@post.ru>
909
910         * system.h: Commit forgotten hunk in previous patch.
911         (OUTPUT_ADDR_CONST_EXTRA): Poison.
912
913 2011-10-08  Nicola Pero  <nicola.pero@meta-innovation.com>
914
915         PR libobjc/50428
916         * doc/objc.texi (Garbage Collection): Updated example to protect
917         +initialize against execution in subclasses.
918
919 2011-10-07  Richard Henderson  <rth@redhat.com>
920
921         * doc/extend.texi (__builtin_shuffle): Improve the description to
922         include the modulus of the selector.  Mention OpenCL.
923         * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
924
925         * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
926         * genopinit.c (optabs): Rename vshuffle to vec_perm.
927         * c-typeck.c (c_build_vec_perm_expr): Rename from
928         c_build_vec_shuffle_expr.  Update for name changes.
929         * optabs.c (expand_vec_perm_expr_p): Rename from
930         expand_vec_shuffle_expr_p.
931         (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
932         * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
933         (vec_perm_optab): Rename from vshuffle_optab.
934         * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
935         c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
936         tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
937
938         * config/i386/i386.c (ix86_expand_vec_perm): Rename from
939         ix86_expand_vshuffle.
940         * config/i386/i386-protos.h: Update.
941         * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
942         (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
943
944 2011-10-07  Richard Henderson  <rth@redhat.com>
945
946         * config/i386/predicates.md (avx2_pblendw_operand): New.
947         * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
948         (avx2_pblendw, *avx2_pblendw): New expander and insn.
949
950 2011-10-07  Richard Henderson  <rth@redhat.com>
951
952         * config/i386/i386.c (bdesc_args): Update code for
953         __builtin_ia32_palignr256.  Change type of __builtin_ia32_pslldqi256,
954         and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
955         (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
956         * config/i386/sse.md (mode iterator V16): Add V2TI.
957         (mode iterator SSESCALARMODE): Use V2TI not V4DI.
958         (mode attr ssse3_avx2): Add V2TI.
959         (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
960
961 2011-10-07  David S. Miller  <davem@davemloft.net>
962
963         PR 50655
964         * configure.ac: Add .register directives to VIS3 test.
965         * configure: Regenerate.
966
967 2011-10-07  Richard Henderson  <rth@redhat.com>
968
969         * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
970
971 2011-10-07  Richard Henderson  <rth@redhat.com>
972
973         PR 49752
974         * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
975
976 2011-10-07  Andrew Stubbs  <ams@codesourcery.com>
977
978         * config/arm/predicates.md (shift_amount_operand): Remove constant
979         range check.
980         (shift_operator): Check range of constants for all shift operators.
981
982 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
983
984         * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
985         Load GOT pointer for non-pic builds.
986         (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
987         (s390_emit_call): Likewise.
988
989 2011-10-07  Tom de Vries  <tom@codesourcery.com>
990
991         PR middle-end/50527
992         * tree.c (build_common_builtin_nodes): Add local_define_builtin for
993         BUILT_IN_ALLOCA_WITH_ALIGN.  Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
994         throw.
995         * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
996         arglist.  Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
997         (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
998         (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
999         * tree-ssa-ccp.c (evaluate_stmt): Set align for
1000         BUILT_IN_ALLOCA_WITH_ALIGN.
1001         (fold_builtin_alloca_for_var): Rename to ...
1002         (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
1003         BUILT_IN_ALLOCA_WITH_ALIGN argument.
1004         (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
1005         fold_builtin_alloca_with_align.
1006         (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1007         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
1008         DEF_BUILTIN_STUB.
1009         * ipa-pure-const.c (special_builtin_state): Handle
1010         BUILT_IN_ALLOCA_WITH_ALIGN.
1011         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
1012         (call_may_clobber_ref_p_1): Same.
1013         * function.c (gimplify_parameters): Lower vla to
1014         BUILT_IN_ALLOCA_WITH_ALIGN.
1015         * gimplify.c (gimplify_vla_decl): Same.
1016         * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1017         * tree-mudflap.c (mf_xform_statements): Same.
1018         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
1019         (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
1020         * varasm.c (incorporeal_function_p): Same.
1021         * tree-object-size.c (alloc_object_size): Same.
1022         * gimple.c (gimple_build_call_from_tree): Same.
1023
1024 2011-10-07  Bernd Schmidt  <bernds@codesourcery.com>
1025
1026         * function.c (frame_required_for_rtx): Remove function.
1027         (requires_stack_frame_p): New arg set_up_by_prologue.  All callers
1028         changed.  Compute a set of mentioned registers and compare against
1029         the new arg rather than calling frame_required_for_rtx.
1030         (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
1031         reg set.  Convert the unconverted_simple_returns mechanism to store
1032         jump insns rather than their basic blocks.  Also check the
1033         orig_entry_edge destination for new blocks.
1034
1035 2011-10-07  Jakub Jelinek  <jakub@redhat.com>
1036
1037         PR tree-optimization/50650
1038         * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
1039         call vect_is_simple_cond here, instead fail if cond_expr isn't
1040         COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
1041         for cond_expr's first operand.
1042         * tree-vect-stmts.c (vect_is_simple_cond): Static again.
1043         * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
1044
1045 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1046
1047         * config/s390/s390.md (DWH, dwh): New mode macros.
1048         ("umulsidi3"): Extend to support "umulditi3" as well.
1049
1050 2011-10-07  Uros Bizjak  <ubizjak@gmail.com>
1051             H.J. Lu  <hongjiu.lu@intel.com>
1052
1053         PR target/50603
1054         * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
1055         integer PLUS RTX to a register to improve address combine.
1056
1057 2011-10-06  Richard Henderson  <rth@redhat.com>
1058
1059         * combine-stack-adjust.c (maybe_move_args_size_note): Add after
1060         parameter; use it to decide whether to merge two notes.
1061         (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
1062         for the deallocation case as well.
1063
1064 2011-10-06  Anatoly Sokolov  <aesok@post.ru>
1065
1066         * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
1067         * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
1068         * doc/tm.texi: Regenerate.
1069         * target.def (output_addr_const_extra): Use
1070         hook_bool_FILEptr_rtx_false.
1071         * targhooks.c (default_asm_output_addr_const_extra): Remove.
1072         * targhooks.h (default_asm_output_addr_const_extra): Remove.
1073         * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
1074         * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
1075
1076 2011-10-06  David S. Miller  <davem@davemloft.net>
1077
1078         * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
1079         (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
1080         SI mode 64-bit code gen case explicitly zero-extend and truncate.
1081         (*popcount<mode>_sp64): Split up into...
1082         (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
1083         SImode case use truncate.
1084         (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
1085         subtract so the compiler can optimize it.
1086         (SIDI): Remove unused mode iterator.
1087
1088 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1089
1090         * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
1091         on the orig_entry_edge. Don't account for it in prologue_clobbered.
1092
1093 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1094
1095         PR tree-optimization/50596
1096         * tree-vectorizer.h (vect_is_simple_cond): New prototype.
1097         (NUM_PATTERNS): Change to 6.
1098         * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
1099         function.
1100         (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
1101         (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
1102         if it already has one, and don't set STMT_VINFO_VECTYPE in it
1103         if it is already set.
1104         * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
1105         COND_EXPR in pattern stmts.
1106         (vect_is_simple_cond): No longer static.
1107
1108 2001-10-06  Richard Henderson  <rth@redhat.com>
1109
1110         * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
1111         * config/i386/sse.md (sseshuffint): Remove.
1112         (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
1113         (VSHUFFLE_AVX2): New mode iterator.
1114         (vshuffle<mode>): Use it.
1115         (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
1116
1117         * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
1118         for vector_all_ones_operand.
1119         (ix86_expand_int_vcond): Distinguish between comparison mode
1120         and data mode.  Allow them to differ.
1121         (ix86_expand_vshuffle): Don't force data mode to match maskmode.
1122
1123 2001-10-06  Richard Henderson  <rth@redhat.com>
1124
1125         * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
1126         mask operand.  Tidy the code.
1127
1128 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1129
1130         * tree-vect-patterns.c (vect_pattern_recog_1): Use
1131         vect_recog_func_ptr typedef for the first argument.
1132         (vect_pattern_recog): Rename vect_recog_func_ptr variable
1133         to vect_recog_func, use vect_recog_func_ptr typedef for it.
1134
1135         PR tree-optimization/49279
1136         * tree-ssa-structalias.c (find_func_aliases): Don't handle
1137         CAST_RESTRICT.
1138         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
1139         restrict propagation.
1140         * tree-ssa.c (useless_type_conversion_p): Don't return false
1141         if TYPE_RESTRICT differs.
1142
1143 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1144
1145         * function.c (thread_prologue_and_epilogue_insns): Build a vector
1146         of unconverted simple return blocks rather than trying to
1147         recompute them later based on bb_flags bitmap tests.
1148
1149 2011-10-06  Michael Matz  <matz@suse.de>
1150
1151         * tree-flow.h (get_var_ann): Don't declare.
1152         * tree-flow-inline.h (get_var_ann): Remove.
1153         (set_is_used): Use var_ann, not get_var_ann.
1154         * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
1155         * tree-profile.c (gimple_gen_edge_profiler): Call
1156         find_referenced_var_in.
1157         (gimple_gen_interval_profiler): Ditto.
1158         (gimple_gen_pow2_profiler): Ditto.
1159         (gimple_gen_one_value_profiler): Ditto.
1160         (gimple_gen_average_profiler): Ditto.
1161         (gimple_gen_ior_profiler): Ditto.
1162         (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
1163         (gimple_gen_ic_func_profiler): Call add_referenced_var.
1164         * tree-mudflap.c (execute_mudflap_function_ops): Call
1165         add_referenced_var.
1166
1167 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1168
1169         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
1170         don't set SSA_NAME_DEF_STMT that has been already set by
1171         gimple_build_assign_with_ops.
1172         (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
1173         vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
1174         Likewise.
1175
1176         * tree.h (avoid_folding_inline_builtin): New prototype.
1177         * builtins.c (avoid_folding_inline_builtin): No longer static.
1178         * gimple-fold.c (gimple_fold_builtin): Give up if
1179         avoid_folding_inline_builtin returns true.
1180
1181 2011-10-06  Richard Guenther  <rguenther@suse.de>
1182
1183         * tree-vect-generic.c (vector_element): Look at previous
1184         generated results.
1185
1186 2011-10-06  David Edelsohn  <dje.gcc@gmail.com>
1187
1188         PR target/39950
1189         * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
1190         __powerpc__, __PPC__, __unix__.
1191
1192 2011-10-06  Michael Matz  <matz@suse.de>
1193
1194         * i386/i386.opt (recip_mask, recip_mask_explicit,
1195         x_recip_mask_explicit): New variables and cl_target member.
1196         (mrecip=): New option.
1197         * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
1198         RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
1199         (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
1200         TARGET_RECIP_VEC_SQRT): New tests.
1201         * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
1202         (sqrt<mode>2): Check TARGET_RECIP_SQRT.
1203         * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
1204         (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
1205         * i386/i386.c (ix86_option_override_internal): Set recip_mask
1206         for -mrecip and -mrecip=options.
1207         (ix86_function_specific_save): Save recip_mask_explicit.
1208         (ix86_function_specific_restore): Restore recip_mask_explicit.
1209
1210         * doc/invoke.texi (ix86 Options): Document the new option.
1211
1212 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1213
1214         PR target/49049
1215         * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
1216
1217 2011-10-06  Ulrich Weigand  <ulrich.weigand@linaro.org>
1218
1219         PR target/50305
1220         * config/arm/arm.c (arm_legitimize_reload_address): Recognize
1221         output of a previous pass through legitimize_reload_address.
1222         Do not attempt to optimize addresses if the base register is
1223         equivalent to a constant.
1224
1225 2011-10-06  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1226
1227         * function.c (thread_prologue_and_epilogue_insns): Mark
1228         last_bb_active as possibly unused.  It is unused for targets which
1229         do neither have "return" nor "simple_return" expanders.
1230
1231 2011-10-06  Richard Guenther  <rguenther@suse.de>
1232
1233         * fold-const.c (fold_ternary_loc): Also fold non-constant
1234         vector CONSTRUCTORs.  Make more efficient.
1235         * tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
1236         (cprop_into_stmt): Don't propagate into virtual operands.
1237         (optimize_stmt): Really dump original statement.
1238
1239 2011-10-06  Nick Clifton  <nickc@redhat.com>
1240
1241         * config/rx/rx.md (smin3): Revert previous delta.
1242
1243 2011-10-06  Richard Guenther  <rguenther@suse.de>
1244
1245         PR tree-optimization/38884
1246         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
1247         reads from aggregate SSA names.
1248
1249 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
1250
1251         * tree-vect-patterns.c (vect_pattern_recog_1): Add stmts_to_replace
1252         argument, truncate it at the beginning instead of allocating there
1253         and freeing at the end.
1254         (vect_pattern_recog): Allocate stmts_to_replace here and free at end,
1255         pass its address to vect_pattern_recog_1.
1256
1257 2011-10-05  David S. Miller  <davem@davemloft.net>
1258
1259         * config/sparc/sparc.opt (POPC): New option.
1260         * doc/invoke.texi: Document it.
1261         * config/sparc/sparc.c (sparc_option_override): Enable MASK_POPC by
1262         default on Niagara-2 and later.
1263         * config/sparc/sparc.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
1264         * config/sparc/sparc.md (SIDI): New mode iterator.
1265         (ffsdi2): Delete commented out pattern and comments.
1266         (popcount<mode>2, clz<mode>2): New expanders.
1267         (*popcount<mode>_sp64, popcountsi_v8plus, popcountdi_v8plus,
1268         *clzdi_sp64, clzdi_v8plus, *clzsi_sp64, clzsi_v8plus): New insns.
1269
1270 2011-10-06  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
1271
1272         PR middle-end/50607
1273         * c-tree.h (c_expr_t): New typedef for struct c_expr.
1274         (C_EXPR_APPEND): New macro.
1275         * c-parser.c (c_parser_get_builtin_args): Preserve
1276         original_tree_code of c_expr structure.
1277         (c_parser_postfix_expression): Adjust to the new function.
1278
1279 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
1280
1281         * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
1282         if profiling after the prologue.
1283
1284 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
1285
1286         PR tree-optimization/50613
1287         * tree-ssa-strlen.c (find_equal_ptrs): If CASE_CONVERT
1288         operand is ADDR_EXPR, fallthru into ADDR_EXPR handling,
1289         and if it is neither that not SSA_NAME, give up.
1290
1291 2011-10-05  Richard Henderson  <rth@redhat.com>
1292
1293         * tree-vect-generic.c (vector_element): Never fail.  Use
1294         build_zero_cst.  Tidy up type references.
1295         (lower_vec_shuffle): Never fail.  Mask shuffle indicies.  Reduce
1296         code duplication.  Do update_stmt here ...
1297         (expand_vector_operations_1): ... not here.
1298
1299         * config/i386/i386.c (ix86_expand_vshuffle): Never fail.  Handle
1300         TARGET_XOP.  Fix pshufb constant vector creation.  Reduce code
1301         duplication.  Handle V2DI without SSE4.1.
1302         * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
1303         * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
1304
1305 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
1306
1307         * config/i386/i386.c (distance_non_agu_define): Simplify calculation
1308         of "found".  Simplify return value calculation.
1309         (distance_agu_use): Ditto.
1310
1311 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
1312
1313         PR bootstrap/50621
1314         * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
1315         if the function was not shrink-wrapped.
1316         (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
1317         to an insn.
1318         * function.c (thread_prologue_and_epilogue_insns): Make sure the
1319         shrink_wrapped flag is set even if there is no dump file.
1320
1321 2011-10-05  DJ Delorie  <dj@redhat.com>
1322             Nick Clifton  <nickc@redhat.com>
1323
1324         * config/rx/rx.opt (mpid): Define.
1325         * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
1326         (MULTILIB_DIRNAMES): Add pid.
1327         * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
1328         (rx_num_interrupt_regs): New variable.
1329         (rx_gp_base_regnum): New function.  Returns the number of the
1330         small data area register.
1331         (rx_pid_base_regnum): New function.  Returns the number of the pid
1332         base register.
1333         (rx_decl_for_addr): New function.  Returns the symbolic part of a MEM.
1334         (rx_pid_data_operand): New function.  Returns whether an object is
1335         in the position independent data area.
1336         (rx_legitimize_address): New function.  Puts undecided PID
1337         objects in the PID data area.
1338         (rx_is_legitimate_address): Add support for PID operands.
1339         (rx_print_operand_address): Likewise.
1340         (rx_print_operand): Likewise.
1341         (rx_maybe_pidify_operand): New function.  Determine if an operand
1342         is suitable for PID addressing.
1343         (rx_gen_move_template): Add PID support.
1344         (rx_conditional_register_usage): Likewise.
1345         (rx_option_override): Initialise rx_num_interrupt_regs.
1346         (rx_is_legitimate_constant): Add support for PID constants.
1347         (TARGET_LEGITIMIZE_ADDRESS): Define.
1348         * config/rx/constraints.md (Rpid): Define.
1349         (Rpda): Define.
1350         * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
1351         (tablejump): Add PID support.
1352         (mov<>): Likewise.
1353         (mov<>_internal): Likewise.
1354         (addsi3): Convert to an expander.  Add PID support.
1355         (pid_addr): New pattern.
1356         * config/rx/rx.h (CPP_SPEC): Define.
1357         (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
1358         (CASE_VECTOR_PC_RELATIVE): Define.
1359         (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
1360         * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
1361         * doc/invoke.texi (RX Options): Document -mpid command line option.
1362
1363 2011-10-05  Richard Guenther  <rguenther@suse.de>
1364
1365         PR tree-optimization/38885
1366         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
1367         from constants.
1368
1369 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
1370
1371         * doc/invoke.texi (-fshrink-wrap): Document.
1372         * opts.c (default_options_table): Add it.
1373         * common.opt (fshrink-wrap): Add.
1374         * function.c (emit_return_into_block): Remove useless declaration.
1375         (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
1376         requires_stack_frame_p, gen_return_pattern): New static functions.
1377         (emit_return_into_block): New arg simple_p.  All callers changed.
1378         Use gen_return_pattern.
1379         (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
1380         * config/i386/i386.md (return): Expand into a simple_return.
1381         (simple_return): New expander):
1382         (simple_return_internal, simple_return_internal_long,
1383         simple_return_pop_internal_long, simple_return_indirect_internal):
1384         Renamed from return_internal, return_internal_long,
1385         return_pop_internal_long and return_indirect_internal; changed to use
1386         simple_return.
1387         * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
1388         simple returns.
1389         (ix86_pad_returns): Likewise.
1390         * function.h (struct rtl_data): Add member shrink_wrapped.
1391         * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
1392         are not jumps or sibcalls can't be compared.
1393
1394 2011-10-05  Richard Guenther  <rguenther@suse.de>
1395
1396         * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
1397         vector type.
1398         (simplify_unary_expression): Handle BIT_FIELD_REFs.
1399         (try_to_simplify): Handle BIT_FIELD_REFs.
1400
1401 2011-10-05  Georg-Johann Lay  <avr@gjlay.de>
1402
1403         * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
1404         * config/avr/avr.c (avr_out_addto_sp): New function.
1405         (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
1406         * config/avr/avr.md (adjust_len): Add "addto_sp".
1407         (*movhi_sp): Remove insn.
1408         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
1409
1410 2011-10-05  Richard Guenther  <rguenther@suse.de>
1411
1412         * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
1413         with an embedded expression valueize and fold that as well.
1414         * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
1415         results from gimple_fold_stmt_to_constant_1.
1416
1417 2011-10-05  Nick Clifton  <nickc@redhat.com>
1418
1419         * config/rx/rx.md (tablejump): Add missing label.
1420         (adddi3_internal): Mark operand 0 as early-clobbered.
1421         (smaxsi3): Revert previous delta.
1422         (adc_internal): Fix whitespace in generated asm.
1423         (adc_flags): Likewise.
1424
1425 2011-10-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1426
1427         * expmed.c (expand_mult_highpart_optab): Replace optab_handler
1428         with the new widening_optab_handler.
1429
1430 2011-10-05  Richard Guenther  <rguenther@suse.de>
1431
1432         PR tree-optimization/50609
1433         * gimple-fold.c (fold_array_ctor_reference): Also handle
1434         vector typed constructors.
1435         (fold_ctor_reference): Dispatch to fold_array_ctor_reference
1436         for vector typed constructors.
1437
1438 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
1439
1440         * config/i386/i386.c (ix86_emit_binop): New static function.
1441         (ix86_split_lea_for_addr): Use ix86_emit_binop to emit add and shl
1442         instructions.
1443         (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
1444
1445 2011-10-04  David S. Miller  <davem@davemloft.net>
1446
1447         * config/sparc/sparc.md (UNSPEC_FHADD, UNSPEC_FHSUB,
1448         UNSPEC_XMUL): New unspecs.
1449         (muldi3_v8plus): Use output_v8plus_mult.
1450         (*naddsf3, *nadddf3, *nmulsf3, *nmuldf3, *nmuldf3_extend):
1451         New VIS 3.0 combiner patterns.
1452         (fhaddsf_vis, fhadddf_vis, fhsubsf_vis, fhsubdf_vis,
1453         fnhaddsf_vis, fnhaddf_vis, umulxhi_vis, *umulxhi_sp64,
1454         umulxhi_v8plus, xmulx_vis, *xmulx_sp64, xmulx_v8plus,
1455         xmulxhi_vis, *xmulxhi_sp64, xmulxhi_v8plus): New VIS 3.0
1456         builtins patterns.
1457         * config/sparc/sparc.c (sparc_vis_init_builtins): Emit new builtins.
1458         (output_v8plus_mult): New function.
1459         * config/sparc/sparc-protos.h: Declare it.
1460         * config/sparc/visintrin.h (__vis_fhadds, __vis_fhaddd,
1461         __vis_fhsubs, __vis_fhsubd, __vis_fnhadds, __vis_fnhaddd,
1462         __vis_umulxhi, __vis_xmulx, __vis_xmulxhi): New intrinsics.
1463         * doc/extend.texi: Document new builtins.
1464
1465 2011-10-04  Richard Henderson  <rth@redhat.com>
1466
1467         * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
1468         Avoid save_expr unless two_arguments.
1469
1470 2011-10-04  Ozkan Sezer  <sezeroz@gmail.com>
1471
1472         * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
1473         * config/i386/mingw32.h (CPP_SPEC): Likewise.
1474
1475 2011-10-04  David S. Miller  <davem@davemloft.net>
1476
1477         * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
1478         under Linux.
1479
1480 2011-10-04  Jakub Jelinek  <jakub@redhat.com>
1481
1482         PR tree-optimization/50604
1483         * builtins.c (fold_builtin_strcpy, fold_builtin_stpcpy,
1484         fold_builtin_strncpy, fold_builtin_stxcpy_chk): Ensure
1485         last argument to memcpy has size_type_node type instead of ssizetype.
1486         * tree-ssa-strlen.c (handle_builtin_memcpy): Use size_type_node
1487         instead of TREE_TYPE (len) as type for newlen.
1488
1489         PR tree-optimization/50522
1490         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
1491         TYPE_RESTRICT.
1492         (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
1493         unconditionally.
1494
1495         * fold-const.c (fold_unary_loc): Don't optimize
1496         POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
1497         casting the inner pointer if it isn't TYPE_RESTRICT.
1498         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't through
1499         casts from non-TYPE_RESTRICT pointer to TYPE_RESTRICT pointer.
1500
1501 2011-10-04  Joseph Myers  <joseph@codesourcery.com>
1502
1503         * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
1504
1505 2011-10-04  Jan Hubicka  <jh@suse.cz>
1506
1507         * lto-streamer.h (lto_input_toplevel_asms): Add order_base parameter.
1508         * lto-streamer-in.c (lto_input_toplevel_asms): Stream in order.
1509         * lto-streamer-out.c (lto_output_toplevel_asms): Stream out order.
1510         * lto-cgraph.c (order_base): New static var.
1511         (lto_output_node): Stream in order.
1512         (lto_output_varpool_node): Stream out order.
1513         (input_node): Stream in order.
1514         (input_varpool_node): Stream out order.
1515         (input_cgraph_1): Initialize order base; update call of
1516         lto_input_toplevel_asms.
1517
1518 2011-10-04  Georg-Johann Lay  <avr@gjlay.de>
1519
1520         PR target/50566
1521         * config/avr/avr-protos.h (avr_legitimize_reload_address): New
1522         prototype.
1523         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
1524         from here...
1525         * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
1526         function.  Log if avr_log.legitimize_reload_address.
1527
1528 2011-10-04  Eric Botcazou  <ebotcazou@adacore.com>
1529
1530         * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
1531
1532 2011-10-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1533
1534         * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
1535         variables.  Fix second operand of DR.  Swap inputs for sdiv_qrnnd.
1536
1537 2011-10-03  David S. Miller  <davem@davemloft.net>
1538
1539         * config/sparc/sparc.md (fpack16_vis, fpackfix_vis, fpack32_vis): Make
1540         GSR_REG an input operand to UNSPEC instead of a parallel USE.
1541         (faligndata<V64I:mode>_vis): Likewise and use DI mode.
1542         (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis, alignaddrldi_vis):
1543         Reference GSR_REG in DI mode, simplify convoluted expressions by using
1544         zero_extract.
1545         (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
1546
1547 2011-10-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
1548
1549         * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
1550
1551 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
1552             Ian Lance Taylor  <iant@google.com>
1553
1554         * godump.c (go_output_typedef): Support printing enum values that
1555         don't fit in a signed HOST_WIDE_INT.
1556
1557 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
1558
1559         * config/cris/cris.c (cris_output_addr_const_extra): Make static.
1560         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1561         * config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
1562         * config/cris/cris-protos.h (cris_output_addr_const_extra): Remove.
1563
1564 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
1565
1566         * config/m68k/m68k.c (m68k_output_addr_const_extra): Make static.
1567         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1568         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
1569         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Remove.
1570
1571 2011-10-03  Steve Ellcey  <sje@cup.hp.com>
1572
1573         PR target/49967
1574         * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
1575         (gcc_cv_ld_static_option): Ditto.
1576         (gcc_cv_ld_dynamic_option): Ditto.
1577         * configure: Regenerate.
1578
1579 2011-10-03  David S. Miller  <davem@davemloft.net>
1580
1581         * config/sparc/sparc.md (bmask<P:mode>_vis): Split into explicit 'di'
1582         and 'si' patterns which describe the GSR changes explicitly in the
1583         RTL using zero_extract.
1584         (bshuffle<V64I:mode>_vis): Put the GSR use inside of the unspec.
1585
1586         * config/sparc/sparc.md (bshuffle<V64I:mode>_vis): Don't wrap
1587         GSR_REG in a USE, since it's now a true arg to the UNSPEC.
1588
1589 2011-10-03  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
1590
1591         * optabs.c (expand_vec_shuffle_expr_p): New function. Checks
1592         if given expression can be expanded by the target.
1593         (expand_vec_shuffle_expr): New function. Expand VEC_SHUFFLE_EXPR
1594         using target vector instructions.
1595         * optabs.h: New optab vshuffle.
1596         (expand_vec_shuffle_expr_p): New prototype.
1597         (expand_vec_shuffle_expr): New prototype.
1598         (vshuffle_optab): New optab.
1599         * genopinit.c: Adjust to support vecshuffle.
1600         * c-tree.h (c_build_vec_shuffle_expr): New prototype.
1601         * expr.c (expand_expr_real_2): Adjust.
1602         * c-typeck.c: (c_build_vec_shuffle_expr): Build a VEC_SHUFFLE_EXPR
1603         recognizing the cases of two and three arguments.
1604         (convert_arguments) (build_binary_op)
1605         (scalar_to_vector) (build_array_ref): Spurious whitespace.
1606         * gimplify.c (gimplify_exp): Adjusted to support VEC_SHUFFLE_EXPR.
1607         * tree.def: New tree code VEC_SHUFFLE_EXPR.
1608         * tree-inline.c (estimate_operator_cost): Recognize VEC_SHUFFLE_EXPR.
1609         * tree-vect-generic.c (vector_element): New function. Returns an
1610         element of the vector at the given position.
1611         (lower_vec_shuffle): Checks if VEC_SHUFLLE_EXPR is supported
1612         by the backend or expand an expression piecewise.
1613         (expand_vector_operations_1): Adjusted.
1614         (gate_expand_vector_operations_noop): New gate function.
1615         * Makefile.in (tree-vect-generic.o): New include.
1616         * gimple.c (get_gimple_rhs_num_ops): Adjust.
1617         * tree-cfg.c (verify_gimple_assign_trenary): Verify VEC_SHUFFLE_EXPR.
1618         * passes.c: Move veclower down.
1619         * tree-pretty-print.c (dump_generic_node): Recognize
1620         VEC_SHUFFLE_EXPR as valid expression.
1621         * c-parser.c (c_parser_get_builtin_args): Helper function for the
1622         builtins with variable number of arguments.
1623         (c_parser_postfix_expression): Use a new helper function for
1624         RID_CHOOSE_EXPR, RID_BUILTIN_COMPLEX and RID_BUILTIN_SHUFFLE.
1625         * tree-ssa-operands: Adjust.
1626         * c-family/c-common.c: New __builtin_shuffle keyword.
1627         * c-family/c-common.h: New __builtin_shuffle keyword.
1628         * gcc/doc/extend.texi: Adjust.
1629
1630         * gcc/config/i386/sse.md: (sseshuffint) New mode_attr.  Correspondence
1631         between the vector and the type of the mask when shuffling.
1632         (vecshuffle<mode>): New expansion.
1633         * gcc/config/i386/i386-protos.h (ix86_expand_vshuffle): New prototype.
1634         * gcc/config/i386/i386.c (ix86_expand_vshuffle): New function.
1635         (ix86_vectorize_builtin_vec_perm_ok): Adjust.
1636
1637 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
1638
1639         PR tree-optimization/50587
1640         * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
1641         arg0 is not a SSA_NAME.
1642
1643 2011-10-03  Richard Sandiford  <rdsandiford@googlemail.com>
1644
1645         * ipa-inline-analysis.c (MAX_TIME): Update comment.
1646
1647 2011-10-02  Richard Henderson  <rth@redhat.com>
1648             David S. Miller  <davem@davemloft.net>
1649
1650         * config/sparc/sparc.md (ashlsi3, *ashldi3_sp64): Remove
1651         conditional insn type setting, we always emit a shift.
1652         (*ashlsi3_extend, *lshrsi3_extend0): New patterns.
1653         (*lshrsi3_extend): Rename to *lshrsi3_extend1.
1654         * config/sparc/predicates.md (const_one_operand): Delete.
1655
1656 2011-10-02  Gerald Pfeifer  <gerald@pfeifer.com>
1657
1658         * invoke.texi (SPARC Options): Refer to GNU/Linux.
1659
1660 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
1661
1662         * config/mips/mips.c (mips_frame_barrier): New function.
1663         (mips_expand_prologue): Call it after allocating stack space.
1664         (mips_deallocate_stack): New function.
1665         (mips_expand_epilogue): Call mips_frame_barrier and
1666         mips_deallocate_stack.
1667
1668 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
1669
1670         PR target/49696
1671         * config/mips/sync.md (sync_<optab>_12): Allow zero operands.
1672         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
1673         (sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
1674
1675 2011-10-02  Jan Hubicka  <jh@suse.cz>
1676
1677         * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
1678
1679         * cgraphunit.c (ipa_passes): Remove unrechable nodes.
1680         * lto-streamer-out.c (produce_symtab): Skip unused extern declarations.
1681         * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external
1682         functions are reachable when address is taken.
1683         * tree-sra.c (modify_function): Free dominance info.
1684
1685 2011-10-02  Jan Hubicka  <jh@suse.cz>
1686
1687         * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
1688
1689         * ipa-inline-analysis.c (reset_inline_edge_summary): New function.
1690         (reset_inline_summary): New function.
1691         (compute_inline_parameters, inline_node_removal_hook,
1692         inline_edge_removal_hook): Use it.
1693         (inline_free_summary): Reset holders correctly.
1694         (inline_generate_summary): Free summary before computing it.
1695
1696 2011-10-02  Paolo Carlini  <paolo.carlini@oracle.com>
1697
1698         PR preprocessor/36819
1699         * incpath.c (merge_include_chains): Call free_path on
1700         heads[QUOTE] and tails[QUOTE].
1701
1702 2011-10-02  Jan Hubicka  <jh@suse.cz>
1703
1704         PR lto/47247
1705         * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve
1706         when resolution is already availbale from plugin.
1707         (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP.
1708         * cgraph.c (ld_plugin_symbol_resolution): Add
1709         prevailing_def_ironly_exp.
1710         * lto-cgraph.c (LDPR_NUM_KNOWN): Update.
1711         * ipa.c (varpool_externally_visible_p): IRONLY variables are never
1712         externally visible.
1713         * varasm.c (resolution_to_local_definition_p): Add
1714         LDPR_PREVAILING_DEF_IRONLY_EXP.
1715         (resolution_local_p): Likewise.
1716
1717 2011-10-01  David S. Miller  <davem@davemloft.net>
1718
1719         * config/sparc/sparc.opt (VIS3): New option.
1720         * doc/invoke.texi: Document it.
1721         * config/sparc/sparc.h: Force TARGET_VIS3 to zero if assembler is
1722         not capable of such instructions.
1723         * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
1724         to 0x300 when TARGET_VIS3.
1725         * config/sparc/sparc-modes.def: Create 16-byte vector modes.
1726         * config/sparc/sparc.md (UNSPEC_CMASK8, UNSPEC_CMASK16, UNSPEC_CMASK32,
1727         UNSPEC_FCHKSM16, UNSPEC_PDISTN, UNSPC_FUCMP): New unspecs.
1728         (V64N8, VASS): New mode iterators.
1729         (vis3_shift, vis3_addsub_ss): New code iterators.
1730         (vbits, vconstr): New mode attributes.
1731         (vis3_shift_insn, vis3_addsub_ss_insn): New code attributes.
1732         (cmask8<P:mode>_vis, cmask16<P:mode>_vis, cmask32<P:mode>_vis,
1733         fchksm16_vis, <vis3_shift_insn><vbits>_vis, pdistn<mode>_vis,
1734         fmean16_vis, fpadd64_vis, fpsub64_vis,
1735         <vis3_addsub_ss_insn><vbits>_vis, fucmp<code>8<P:mode>_vis): New
1736         VIS 3.0 instruction patterns.
1737         * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS3 by
1738         default when targetting capable cpus.  TARGET_VIS3 implies
1739         TARGET_VIS2 and TARGET_VIS, and clear them when TARGET_FPU is disabled.
1740         (sparc_vis_init_builtins): Emit new VIS 3.0 builtins.
1741         (sparc_fold_builtin): Do not eliminate cmask{8,16,32} when result
1742         is ignored.
1743         * config/sparc/visintrin.h (__vis_cmask8, __vis_cmask16,
1744         __vis_cmask32, __vis_fchksm16, __vis_fsll16, __vis_fslas16,
1745         __vis_fsrl16, __vis_fsra16, __vis_fsll32, __vis_fslas32,
1746         __vis_fsrl32, __vis_fsra32, __vis_pdistn, __vis_fmean16,
1747         __vis_fpadd64, __vis_fpsub64, __vis_fpadds16, __vis_fpadds16s,
1748         __vis_fpsubs16, __vis_fpsubs16s, __vis_fpadds32, __vis_fpadds32s,
1749         __vis_fpsubs32, __vis_fpsubs32s, __vis_fucmple8, __vis_fucmpne8,
1750         __vis_fucmpgt8, __vis_fucmpeq8): New VIS 3.0 interfaces.
1751         * doc/extend.texi: Document new VIS 3.0 builtins.
1752
1753 2011-10-01  Eric Botcazou  <ebotcazou@adacore.com>
1754
1755         * ira-color.c (assign_hard_reg): Fix typo.
1756
1757 2011-09-30  H.J. Lu  <hongjiu.lu@intel.com>
1758
1759         * doc/extend.texi: Add missing ','.
1760
1761 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
1762
1763         * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
1764         Enable -fmodulo-sched at -O2 and above.
1765         * config/c6x/c6x.md (doloop_end): New expander.
1766         (mvilc, sploop, spkernel, loop_end): New patterns.
1767         (loop_end with memory destination splitter): New.
1768         * config/c6x/c6x.c: Include "hw-doloop.h".
1769         (enum unitreqs): New.
1770         (unit_req_table): New typedef.
1771         (unit_reqs): New static variable.
1772         (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
1773         res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
1774         hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
1775         hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
1776         (struct c6x_sched_context): New member last_scheduled_iter0.
1777         (init_sched_state): Initialize it.
1778         (c6x_variable_issue): Update it.
1779         (sploop_max_uid_iter0): New static variable.
1780         (c6x_sched_reorder_1): Be careful about issuing sploop.
1781         (c6x_reorg): Call c6x_hwlooops before the final schedule.
1782
1783 2011-09-30  Georg-Johann Lay  <avr@gjlay.de>
1784
1785         PR target/50566
1786         * config/avr/avr-protos.h (avr_log_t): New field address_cost.
1787         * config/avr/avr.c (avr_address_cost): Use it.
1788         * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
1789         (avr_log_vadump): Unknown %-codes finish printing.
1790
1791 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
1792
1793         PR inline-asm/50571
1794         * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
1795         input constraints allow mem and not reg, pass true instead of
1796         false as second argument to maybe_fold_reference.
1797
1798         PR tree-optimization/46309
1799         * fold-const.c (make_range, merge_ranges): Remove prototypes.
1800         (make_range_step): New function.
1801         (make_range): Use it.
1802         * tree.h (make_range_step): New prototypes.
1803         * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
1804         * tree-ssa-reassoc.c: Include diagnostic-core.h.
1805         (struct range_entry): New type.
1806         (init_range_entry, range_entry_cmp, update_range_test,
1807         optimize_range_tests): New functions.
1808         (reassociate_bb): Call optimize_range_tests.
1809
1810 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
1811             Richard Guenther  <rguenther@suse.de>
1812
1813         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
1814         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
1815         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.  Fix
1816         handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
1817         (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
1818         BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
1819
1820 2011-09-30  Jan Beulich  <jbeulich@suse.com>
1821
1822         * lto-cgraph.c (output_cgraph): Remove processing of
1823         'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
1824         (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
1825         lto_input_toplevel_asms() instead.
1826         * lto-section-in.c (lto_section_name): Add "asm" entry.
1827         * lto-streamer-in.c (lto_input_toplevel_asms): New.
1828         * lto-streamer-out.c (lto_output_toplevel_asms): New.
1829         * lto-streamer.h (LTO_minor_version): Bump.
1830         (enum lto_section_type): Add LTO_section_asm.
1831         (struct lto_asm_header): New.
1832         (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
1833         * tree-streamer.h (streamer_write_string_cst): Declare.
1834         * tree-streamer-out.c (write_string_cst): Rename to
1835         streamer_write_string_cst and make global. Handle incoming string
1836         being NULL.
1837         (streamer_write_tree_header): Adjust call to renamed function.
1838
1839 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
1840
1841         * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
1842         modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
1843         modulo_last_stage): New static variables.
1844         (set_modulo_params, discard_delay_pairs_above): New functions.
1845         (struct delay_pair): New member stages.
1846         (htab_i2_traverse, htab_i1_traverse): New static functions.
1847         (record_delay_slot_pair): New arg stages.  All callers changed.
1848         Record it.
1849         (pair_delay): Take stages into account.
1850         (add_delay_dependencies): Don't do so for stage pairs.
1851         (struct sched_block_state): New member modulo_epilogue.
1852         (save_backtrack_point): Don't set SHADOW_P for stage pairs.
1853         (unschedule_insns_until): Decrease modulo_insns_scheduled.
1854         Set HARD_DEP without using or.
1855         (resolve_dependencies): New static function.
1856         (prune_ready_list): New arg modulo_epilogue_p.  All callers changed.
1857         If it is true, allow only insns with INSN_EXACT_TICK set.
1858         (schedule_block): Return bool, always true for normal scheduling,
1859         true or false depending on modulo scheduling success otherwise.
1860         Add bookkeeping for modulo scheduling, and call resolve_dependencies
1861         on everything left over after a modulo schedule.
1862         (haifa_sched_init): Remove check_cfg call.  Clear modulo_ii.
1863         * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
1864         declarations.
1865         (set_modulo_params, discard_delay_pairs_above): Declare.
1866         * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
1867         * doc/invoke.texi (--param): Document it.
1868
1869         * sched-ebb.c (schedule_ebb): No longer static.  Remove declaration.
1870         New arg modulo_scheduling.  All callers changed.  Move note handling
1871         code here from schedule_ebbs.
1872         (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
1873         out of schedule_ebbs.
1874         (schedule_ebbs): Call them.  Remove note handling code moved to
1875         schedule_ebb.
1876         * sched-int.h (schedule_ebb, schedule_ebbs_init,
1877         schedule_ebbs_finish): Declare.
1878
1879 2011-09-30  Richard Guenther  <rguenther@suse.de>
1880
1881         PR middle-end/50574
1882         * tree-cfg.c (verify_gimple_comparison): Compare component
1883         mode sizes for vector comparisons.
1884
1885 2011-09-30  Revital Eres  <revital.eres@linaro.org>
1886
1887         * ddg.c (autoinc_var_is_used_p): New function.
1888         (create_ddg_dep_from_intra_loop_link,
1889         add_cross_iteration_register_deps): Call it.
1890         * ddg.h (autoinc_var_is_used_p): Declare.
1891         * modulo-sched.c (generate_reg_moves): Call autoinc_var_is_used_p.
1892         (sms_schedule): Handle instructions with REG_INC.
1893
1894 2011-09-30  Revital Eres  <revital.eres@linaro.org>
1895
1896         * modulo-sched.c (generate_reg_moves): Skip instructions that
1897         do not set a register and verify no regmoves are created for
1898         !single_set instructions.
1899
1900 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
1901
1902         * hw-doloop.c (scan_loop): Compute register usage only for non-debug
1903         insns.
1904
1905 2011-09-30  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
1906
1907         PR target/50099
1908         * config/arm/iterators.md (qhs_zextenddi_cstr): New.
1909         (qhs_zextenddi_op): New.
1910         * config/arm/arm.md ("zero_extend<mode>di2"): Use them.
1911         * config/arm/predicates.md ("arm_extendqisi_mem_op"):
1912         Distinguish between ARM and Thumb2 states.
1913
1914 2011-09-30  David S. Miller  <davem@davemloft.net>
1915
1916         * config/sparc/sparc.opt (VIS2): New option.
1917         * doc/invoke.texi: Document it.
1918         * config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
1919         UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
1920         UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
1921         (define_attr type): New insn type 'edgen'.
1922         (bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
1923         edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
1924         edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
1925         patterns.
1926         * niagara.md: Handle edgen.
1927         * niagara2.md: Likewise.
1928         * ultra1_2.md: Likewise.
1929         * ultra3.md: Likewise.
1930         * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
1931         to 0x200 when TARGET_VIS2.
1932         * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
1933         default when targetting capable cpus.  TARGET_VIS2 implies
1934         TARGET_VIS, clear and it when TARGET_FPU is disabled.
1935         (sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
1936         (sparc_expand_builtin): Fix predicate indexing when builtin returns
1937         void.
1938         (sparc_fold_builtin): Do not eliminate bmask when result is ignored.
1939         * config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
1940         __vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
1941         __vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
1942         __vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
1943         * doc/extend.texi: Document new VIS 2.0 builtins.
1944
1945 2011-09-29  Nick Clifton  <nickc@redhat.com>
1946             Bernd Schmidt  <bernds@codesourcery.com>
1947
1948         * config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header file.
1949         * config/frv/frvend.c: Likewise.
1950         * config/frv/frv.c (frv_function_prologue): Move misplaced
1951         CALL_ARG_LOCATION notes back to their proper locations.
1952
1953 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
1954
1955         PR target/50566
1956         * config/avr/avr-log.c (avr_log_vadump): Use %b to print bool.
1957         * config/avr/avr.c (avr_rtx_costs_1): New static function, renamed
1958         from avr_rtx_costs.
1959         (avr_legitimate_address_p): Use avr_edump to print log information
1960         filtered by avr_log.
1961         (extra_constraint_Q): Ditto.
1962         (avr_legitimize_address): Ditto.
1963         (avr_rtx_costs): Ditto.  Rewrite as wrapper for avr_rtx_costs_1.
1964         (final_prescan_insn): Use avr_log.rtx_costs as filter.
1965
1966 2011-09-29  Richard Sandiford  <richard.sandiford@linaro.org>
1967
1968         * config/arm/arm-protos.h (arm_modes_tieable_p): Declare.
1969         * config/arm/arm.h (MODES_TIEABLE_P): Use it.
1970         * config/arm/arm.c (arm_modes_tieable_p): New function.  Allow
1971         NEON vector and structure modes to be tied.
1972
1973 2011-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
1974
1975         * graphite-scop-detection.c (make_close_phi_nodes_unique):  New
1976         forward declaration.
1977         (remove_duplicate_close_phi): Detect and repair creation of
1978         duplicate close-phis for a containing loop.
1979
1980 2011-09-27   Andi Kleen <ak@linux.intel.com>
1981
1982         * gcc.c (get_local_tick). Rename to get_random_number.  Read from
1983         /dev/urandom.  Add getpid call.
1984         (compare_debug_dump_opt_spec_function): Drop getpid call.
1985
1986 2011-09-26   Andi Kleen <ak@linux.intel.com>
1987
1988         * toplev.c (init_local_tick): Try reading random seed
1989         from /dev/urandom.
1990
1991 2011-09-26   Andi Kleen <ak@linux.intel.com>
1992
1993         * hwint.h (HOST_WIDE_INT_PRINT_HEX_PURE): Add.
1994         * lto-streamer.c (lto_get_section_name): Remove crc32_string.
1995         Handle numerical random seed.
1996         * lto-streamer.h (lto_file_decl_data): Change id to
1997         unsigned HOST_WIDE_INT.
1998         * toplev.c (random_seed): Add.
1999         (init_random_seed): Change for numerical random seed.
2000         (get_random_seed): Return as HOST_WIDE_INT.
2001         (set_random_seed): Crc32 existing string.
2002         * toplev.h (get_random_seed): Change to numercal return.
2003         * tree.c (get_file_function_name): Remove CRC. Handle
2004         numerical random seed.
2005
2006 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
2007
2008         PR target/50566
2009         * config.gcc (extra_objs): Add avr-log.o for $target in:
2010         avr-*-rtems*, avr-*-*.
2011         * config/avr/t-avr (avr-log.o): New rule to compile...
2012         * config/avr/avr-log.c: ...this new file.
2013         * config/avr/avr.opt (mlog=): New option.
2014         * config/avr/avr-protos.h (avr_edump, avr_fdump): New macros.
2015         (avr_log_set_caller_e, avr_log_set_caller_f): New prototypes.
2016         (avr_log_set_avr_log): New prototype.
2017         (avr_log_t): New typedef.
2018         (avr_log): New declaration.
2019         * config/avr/avr.c (avr_option_override): Call avr_log_set_avr_log.
2020
2021 2011-09-29  Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2022
2023         * expr.c (do_store_flag): Expand vector comparison by
2024         building an appropriate VEC_COND_EXPR.
2025         * c-typeck.c (build_binary_op): Typecheck vector comparisons.
2026         (c_objc_common_truthvalue_conversion): Adjust.
2027         * tree-vect-generic.c (do_compare): Helper function.
2028         (expand_vector_comparison): Check if hardware supports
2029         vector comparison of the given type or expand vector piecewise.
2030         (expand_vector_operation): Treat comparison as binary
2031         operation of vector type.
2032         (expand_vector_operations_1): Adjust.
2033
2034 2011-09-29  Richard Guenther  <rguenther@suse.de>
2035
2036         * tree.c (build_opaque_vector_type): Make opaque vectors
2037         variant types of the corresponding non-opaque type.  Make
2038         sure to share opaque vector types properly.
2039
2040 2011-09-29  David S. Miller  <davem@davemloft.net>
2041
2042         * config/sparc/sparc.md (UNSPEC_ARRAY8, UNSPEC_ARRAY16,
2043         UNSPEC_ARRAY32): New unspec.
2044         (define_attr type): New type 'array'.
2045         (array{8,16,32}<P:mode>_vis): New patterns.
2046         * config/sparc/ultra1_2.md: Add reservations for 'array'.
2047         * config/sparc/ultra3.md: Likewise.
2048         * config/sparc/niagara.md: Likewise.
2049         * config/sparc/niagara2.md: Likewise.
2050         * config/sparc/sparc.c (sparc_vis_init_builtins): Build new
2051         array builtins.
2052         * config/sparc/visintrin.h (__vis_array8, __vis_array16,
2053         __vis_array32): New.
2054         * doc/extend.texi: Document new VIS builtins.
2055
2056         * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
2057         (VIS pixel-compare insn): Just use <gcond:name>.
2058
2059         * config/sparc/sparc.md (VIS pixel-compare insn): There is only one
2060         code iterator used, so just use <code>.  There are two mode iterators
2061         so explicitly use <GCM:gcm_name>.
2062
2063 2011-09-29  Iain Sandoe  <iains@gcc.gnu.org>
2064
2065         * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
2066         Darwin >= 9.
2067
2068 2011-09-28  David S. Miller  <davem@davemloft.net>
2069
2070         * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE,
2071         UNSPEC_FCMPGT, UNSPEC_FCMPEQ): Delete and reduce to...
2072         (UNSPEC_FCMP): New unspec.
2073         (gcond): New code iterator.
2074         (gcond_name): New code attr.
2075         (GCM): New mode iterator.
2076         (gcm_name): New mode attr.
2077         (fcmp{le,ne,gt,eq}{16,32}_vis): Reimplement using iterators.
2078
2079 2011-09-28  Oleg Endo  <oleg.endo@t-online.de>
2080
2081         PR target/49486
2082         * config/sh/sh.md (negdi2): Move expansion into split to
2083         allow more combination options.  Add T_REG clobber.
2084         (abssi2): New expander.
2085         (*negdi2, *abssi2, *negabssi2): New insns.
2086         (cneg): Change from insn to insn_and_split.  Rename to
2087         negsi_cond.  Add alternative for non-SH4.
2088
2089 2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
2090
2091         * config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
2092         (neon_move_hi_quad_<mode>): Likewise.
2093         (move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
2094
2095 2011-09-28  Nick Clifton  <nickc@redhat.com>
2096
2097         * config/rx/predicates.md (rx_minmax_operand): New predicate.
2098         Accepts immediates and a restricted subset of MEMs.
2099         * config/rx/rx.md (int_modes): New iterator.
2100         (smaxsi3, sminsi3): Delete and replace with...
2101         (smax<int_mode>3, smin<int_mode>3): New patterns.
2102         (umax<>3_u, umax<>3_ur, umax<>3, umin<>3): New patterns.
2103
2104 2011-09-28  Richard Guenther  <rguenther@suse.de>
2105
2106         PR middle-end/50460
2107         * fold-const.c (try_move_mult_to_index): Handle &a.array the
2108         same as &a.array[0].
2109
2110 2011-09-28  Kai Tietz  <ktietz@redhat.com>
2111
2112         * configure.ac: Add test for new section attribute
2113         specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
2114         * config.in: Regenerated.
2115         * configure: Regenerated.
2116         * config/i386/winnt.c (i386_pe_asm_named_section): Emit
2117         new section flag "e" for excluded sections, if supported.
2118         Otherwise we mark section withc SECTION_EXCLUDE flag as never-load.
2119
2120 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
2121
2122         * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
2123         throughout file.
2124
2125 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
2126
2127         * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
2128         throughout file.
2129
2130 2011-09-27  Sriraman Tallam  <tmsriram@google.com>
2131
2132         * output.h (SECTION_EXCLUDE): New macro.
2133         * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
2134
2135 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
2136
2137         * fwprop.c (forward_propagate_and_simplify): After checking
2138         reg/subreg combinations, check whether the modes are the same.
2139
2140 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
2141             Richard Sandiford  <rdsandiford@googlemail.com>
2142
2143         * config/mips/mips.c (mips_add_cfa_restore): New function.
2144         (mips16e_save_restore_reg): Use it.
2145         (mips_restore_reg): Likewise.  Split double FPRs for
2146         REG_CFA_RESTORE notes.
2147
2148 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
2149
2150         PR middle-end/50386
2151         PR middle-end/50326
2152         * tree-sra.c (build_ref_for_model): Use the type of the field as
2153         the type of the COMPONENT_REF.
2154
2155 2011-09-27  Jeff Law  <law@redhat.com>
2156
2157         * ifcvt.c (cheap_bb_rtx_cost_p): Add SCALE argument.  Scale
2158         non-jumping insns by REG_BR_PROB_BASE and the maximum cost by SCALE.
2159         (find_if_case_1): Use the probability of the THEN clause when
2160         determining if speculation is profitable.
2161         (find_if_case_2): Similarly for the ELSE clause.
2162
2163 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
2164
2165         * common.opt: Add -foptimize-strlen option.
2166         * Makefile.in (OBJS): Add tree-ssa-strlen.o.
2167         (tree-sssa-strlen.o): Add dependencies.
2168         * opts.c (default_options_table): Enable -foptimize-strlen
2169         by default at -O2 if not -Os.
2170         * passes.c (init_optimization_passes): Add pass_strlen
2171         after pass_object_sizes.
2172         * timevar.def (TV_TREE_STRLEN): New timevar.
2173         * params.def (PARAM_MAX_TRACKED_STRLENS): New parameter.
2174         * tree-pass.h (pass_strlen): Declare.
2175         * tree-ssa-strlen.c: New file.
2176         * c-decl.c (merge_decls): If compatible stpcpy prototype
2177         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
2178
2179 2011-09-27  Tom de Vries  <tom@codesourcery.com>
2180
2181         PR middle-end/43864
2182         * tree-ssa-tail-merge.c: New file.
2183         (struct same_succ_def): Define.
2184         (same_succ, const_same_succ): New typedef.
2185         (struct bb_cluster_def): Define.
2186         (bb_cluster, const_bb_cluster): New typedef.
2187         (struct aux_bb_info): Define.
2188         (BB_SIZE, BB_SAME_SUCC, BB_CLUSTER, BB_VOP_AT_EXIT): Define.
2189         (gvn_uses_equal): New function.
2190         (same_succ_print, same_succ_print_traverse, update_dep_bb)
2191         (stmt_update_dep_bb, local_def, same_succ_hash)
2192         (inverse_flags, same_succ_equal, same_succ_alloc, same_succ_delete)
2193         (same_succ_reset): New function.
2194         (same_succ_htab, same_succ_edge_flags)
2195         (deleted_bbs, deleted_bb_preds): New var.
2196         (debug_same_succ): New function.
2197         (worklist): New var.
2198         (print_worklist, add_to_worklist, find_same_succ_bb, find_same_succ)
2199         (init_worklist, delete_worklist, delete_basic_block_same_succ)
2200         (same_succ_flush_bbs, purge_bbs, update_worklist): New function.
2201         (print_cluster, debug_cluster, update_rep_bb)
2202         (add_bb_to_cluster, new_cluster, delete_cluster): New function.
2203         (all_clusters): New var.
2204         (alloc_cluster_vectors, reset_cluster_vectors, delete_cluster_vectors)
2205         (merge_clusters, set_cluster): New function.
2206         (gimple_equal_p, gsi_advance_bw_nondebug_nonlocal, find_duplicate)
2207         (same_phi_alternatives_1, same_phi_alternatives, bb_has_non_vop_phi)
2208         (deps_ok_for_redirect_from_bb_to_bb, deps_ok_for_redirect)
2209         (find_clusters_1, find_clusters): New function.
2210         (update_vuses, vop_phi, vop_at_entry, replace_block_by): New function.
2211         (update_bbs): New var.
2212         (apply_clusters): New function.
2213         (update_debug_stmt, update_debug_stmts): New function.
2214         (tail_merge_optimize): New function.
2215         tree-pass.h (tail_merge_optimize): Declare.
2216         * tree-ssa-pre.c (execute_pre): Use tail_merge_optimize.
2217         * Makefile.in (OBJS-common): Add tree-ssa-tail-merge.o.
2218         (tree-ssa-tail-merge.o): New rule.
2219         * opts.c (default_options_table): Set OPT_ftree_tail_merge by
2220         default at OPT_LEVELS_2_PLUS.
2221         * tree-ssa-sccvn.c (vn_valueize): Move to ...
2222         * tree-ssa-sccvn.h (vn_valueize): Here.
2223         * timevar.def (TV_TREE_TAIL_MERGE): New timevar.
2224         * common.opt (ftree-tail-merge): New switch.
2225         * params.def (PARAM_MAX_TAIL_MERGE_COMPARISONS)
2226         (PARAM_MAX_TAIL_MERGE_ITERATIONS): New parameter.
2227         * doc/invoke.texi (Optimization Options, -O2): Add -ftree-tail-merge.
2228         (-ftree-tail-merge, max-tail-merge-comparisons)
2229         (max-tail-merge-iterations): New item.
2230
2231 2011-09-27  Jan Hubicka  <jh@suse.cz>
2232
2233         * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
2234
2235 2011-09-27  Jan Hubicka  <jh@suse.cz>
2236
2237         * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
2238         parameters passed by reference; handle loads from non-SSA scalars
2239         and update comments.
2240
2241 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
2242
2243         PR rtl-optimization/50249
2244         * reload1.c (reload_reg_reaches_end_p): Accept a reloadnum argument
2245         instead of opnum and type.  All callers changed.  Remove useless
2246         declaration.
2247         Search forward for other reloads of the same type for the same operand
2248         using the same register; if any are found, return false.
2249         (reload_regs_reach_end_p): Same argument changes; all callers changed.
2250
2251 2011-09-27  Andi Kleen  <ak@linux.intel.com>
2252             Jan Hubicka  <jh@suse.cz>
2253
2254         * doc/invoke.texi (ffat-lto-objects): Document.
2255         * toplev.c (compile_file): Do not output assembly when doing slim lto;
2256         Output __gnu_slim_lto when doing slim lto.
2257         * cgraphunit.c (ipa_passes): Do only analysis when producing slim lto.
2258         (cgraph_optimize): Return early when doing slim lto.
2259         * opts.c (finish_options): Complain about lack of linker plugin
2260         when doing slim lto.
2261         * common.opt (ffat-lto-objects): New.
2262
2263 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
2264
2265         * ipa-inline-analysis.c (predicate_probability): Avoid comparison
2266         between signed and unsigned.
2267
2268 2011-09-27  Ira Rosen  <ira.rosen@linaro.org>
2269
2270         * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
2271         vectorization.
2272         (vectorizable_type_promotion): Likewise.
2273         (vect_analyze_stmt): Call vectorizable_type_demotion and
2274         vectorizable_type_promotion for basic blocks.
2275         (supportable_widening_operation): Don't assume loop vectorization.
2276         * tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
2277         basic blocks.  Update vectorization factor for basic block
2278         vectorization.
2279         (vect_analyze_slp_instance): Allow multiple types for basic block
2280         vectorization.  Recheck unrolling factor after construction of SLP
2281         instance.
2282
2283 2011-09-27  Richard Guenther  <rguenther@suse.de>
2284
2285         * tree-object-size.c (compute_object_sizes): Fix dumping of
2286         folded statement.
2287
2288 2011-09-27  Richard Guenther  <rguenther@suse.de>
2289
2290         PR tree-optimization/50363
2291         * tree-ssa-pre.c (create_expression_by_pieces): Handle
2292         pointer conversions in POINTER_PLUS_EXPRs properly.
2293
2294 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
2295
2296         * config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
2297         (neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
2298         (neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
2299         (neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
2300         that produce subreg moves.  Define using VQX iterators.
2301
2302 2011-09-27  Georg-Johann Lay  <avr@gjlay.de>
2303
2304         * config/avr/avr.md (ashrqi3): Split alternative "n"
2305         into its remaining parts C03, C04, C05, C06, C07 and describe
2306         impact in CC by attribute "cc" appropriately.
2307         * config/avr/avr.c (notice_update_cc): Clean-up: Don't patch CC0
2308         by digging RTX.
2309
2310 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
2311
2312         * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE
2313         from 3 x MAX_MACHINE_MODE.
2314         (CONSTM1_RTX): Define.
2315         * emit-rtl.c (const_tiny_rtx): Change into array of
2316         4 x MAX_MACHINE_MODE from 3 x MAX_MACHINE_MODE.
2317         (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are
2318         CONSTM1_RTX.
2319         (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and
2320         MODE_VECTOR_INT modes.
2321         * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>:
2322         Optimize if one operand is CONSTM1_RTX.
2323         * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x
2324         into mask | x.
2325
2326 2011-09-26  David S. Miller  <davem@davemloft.net>
2327
2328         * config/sparc/sparc.md (edge{8,16,32}{,l}): Return Pmode.
2329         (fcmp{le,ne,gt,eq}{16,32}): Likewise.
2330         * config/sparc/visintrin.h: Update edge and pixel-compare
2331         intrinsics to return 'long' instead of 'int'.
2332         * doc/extend.texi: Update documentation to match.
2333         * config/sparc/sparc.c (eligible_for_return_delay): When leaf or
2334         flat, allow any instruction.  Otherwise, when V9 allow parallels
2335         which consist only of sets to registers outside of %o0 to %o5.
2336         (sparc_vis_init_builtins): Update VIS builtin types for edge
2337         and pixel-compare.
2338
2339         * config/sparc/sparc.c (sparc_conditional_register_usage): When VIS
2340         is enabled, mark %gsr as global.
2341         * config/sparc/sparc.md (UNSPEC_WRGSR): Delete.
2342         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus): Don't wrap in an unspec.
2343
2344         * config/sparc/sparc-c.c: New file implementing sparc_target_macros,
2345         which will now define __VIS and __VIS__ when -mvis is enabled.
2346         * config/sparc/t-sparc: Likewise.
2347         * config.gcc: Add sparc-c.o to c_target_objs and cxx_target_objs,
2348         and add t-sparc to tmake_file for all sparc targets.
2349         * config/sparc/sparc-protos.h (sparc_target_macros): Declare.
2350         * config/sparc/sparc.h (TARGE_CPU_CPP_BUILTINS): Call it.
2351
2352         * config/sparc/sparc.c (sparc_vis_init_builtins): Add explicit
2353         builtins for VIS vector addition and subtraction.
2354         * config/sparc/visintrin.h (__vis_fpadd16, __vis_fpadd16s,
2355         __vis_fpadd32, __vis_fpadd32s, __vis_fpsub16, __vis_fpsub16s,
2356         __vis_fpsub32, __vis_fpsub32s): New.
2357         * doc/extend.texi: Document new VIS intrinsics.
2358
2359 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
2360
2361         * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
2362         * config/avr/avr.c (avr_out_compare): Print shorter sequence for
2363         EQ/NE comparisons against +/-1 in the case of unused-after,
2364         non-ld-regs target.
2365
2366 2011-09-26  Jakub Jelinek  <jakub@redhat.com>
2367
2368         * gimple-fold.c (gimplify_and_update_call_from_tree): Set
2369         gctx.into_ssa after push_gimplify_context.
2370
2371         * gimple.c (gimple_build_call_valist): New function.
2372         * gimple.h (gimple_build_call_valist): New prototype.
2373         * tree-ssa-propagate.c (finish_update_gimple_call): New function.
2374         (update_gimple_call): Likewise.
2375         (update_call_from_tree): Use finish_update_gimple_call.
2376         * tree-ssa-propagate.h (update_gimple_call): New prototype.
2377
2378 2011-09-26  Richard Guenther  <rguenther@suse.de>
2379
2380         PR tree-optimization/50472
2381         * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
2382         volatile references.
2383
2384 2011-09-26  Bingfeng Mei <bmei@broadcom.com>
2385
2386         * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
2387         * target.def: (addr_space_subset_p): Likewise.
2388
2389 2011-09-26  Tom de Vries  <tom@codesourcery.com>
2390
2391         * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
2392         * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
2393         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
2394         of new var.
2395
2396 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
2397
2398         PR target/50465
2399         * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
2400         * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
2401         output_reload_insisf.
2402         (adjust_len): Set default to "no".
2403         Remove alternative "yes".  Add alternatives: "mov8", "mov16",
2404         "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
2405         "lshrhi", "ashlsi, "ashrsi", "lshrsi".
2406         (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
2407         *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
2408         *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
2409         *lshrsi3_const): Set attribute "adjust_len".
2410         * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
2411         (output_movsisf): Don't pass insn to output_reload_insisf.
2412         (adjust_insn_length): Handle new alternatives to adjust_len.
2413         Remove handling of ADJUST_LEN_YES.  Clean-up code.
2414
2415 2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>
2416
2417         * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
2418         may_trap_p to detect loads that may trap of fault.
2419
2420 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
2421
2422         * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
2423         * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
2424         (*reload_inhi): Use it.  Adapt call to output_reload_inhi to new
2425         prototype.
2426         (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
2427         * config/avr/avr.c: Rename output_reload_insisf_1 to
2428         output_reload_in_const.
2429         (avr_popcount_each_byte): Handle SFmode, too.
2430         (output_reload_in_const): Change so it can handle HI loads, too.
2431         Use avr_popcount_each_byte to work out if scratch register must be
2432         created on the fly.
2433         (output_reload_inhi): Rewrite using output_reload_in_const and...
2434         (output_movhi): ...use it to print constants' loads.
2435         (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
2436
2437 2011-09-25  David S. Miller  <davem@davemloft.net>
2438
2439         * config/sparc/constraints.md (C, P, Z): New constraints for
2440         const_doube, const_int, and const_vector "all ones" values.
2441         Make unused constraint letters comment match reality.
2442         * config/sparc/predicates.md (const_all_ones_operand,
2443         register_or_zero_or_all_ones_operand): New predicates.
2444         * config/sparc/sparc.c (sparc_expand_move): Allow all ones
2445         as well as zero constants when VIS.
2446         (sparc_legitimate_constant_p): Likewise.
2447         * config/sparc/sparc.md (movsi_insn): Add fones alternative.
2448         (movsf_insn): Likewise
2449         (movdi_insn_sp64): Add fone alternative.
2450         (movdf_insn_sp32_v9): Likewise.
2451         (movdf_insn_sp64): Likewise.
2452
2453         * configure.ac: Add feature check to make sure the assembler
2454         supports the FMAF, HPC, and VIS 3.0 instructions found on
2455         Niagara-3 and later cpus.
2456         * configure: Rebuild.
2457         * config.in: Likewise.
2458         * config/sparc/sparc.opt: New option '-mfmaf'.
2459         * config/sparc/sparc.md: Add float fused multiply-add patterns.
2460         * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
2461         (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
2462         * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
2463         ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
2464         * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
2465         by default for Niagara-3 and later.  Turn it off if TARGET_FPU is
2466         disabled.
2467         (sparc_rtx_costs): Handle 'FMA'.
2468         * doc/invoke.texi: Document -mfmaf.
2469
2470 2011-09-25  Jakub Jelinek  <jakub@redhat.com>
2471
2472         * tree-ssa-structalias.c (intra_create_variable_infos): Treat
2473         TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
2474         DECL_BY_REFERENCE parameters.
2475
2476 2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>
2477
2478         * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
2479         if there is no outgoing edge.
2480
2481         * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
2482         integral types.
2483
2484 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
2485
2486         * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
2487         of vect_analyze_bb here.
2488         (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
2489
2490 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
2491
2492         * tree-data-ref.c (dr_analyze_innermost): Add new argument.
2493         Allow not simple iv if analyzing basic block.
2494         (create_data_ref): Update call to dr_analyze_innermost.
2495         (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
2496         * tree-loop-distribution.c (generate_memset_zero): Likewise.
2497         * tree-predcom.c (find_looparound_phi): Likewise.
2498         * tree-data-ref.h (dr_analyze_innermost): Add new argument.
2499
2500 2011-09-24  David S. Miller  <davem@davemloft.net>
2501
2502         * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
2503         (SPARC_GSR_REG): Define.
2504         (FIXED_REGISTERS): Mark GSR as fixed.
2505         (CALL_USED_REGISTERS): Mark GSR as call used.
2506         (HARD_REGNO_NREGS): GSR is always 1 register.
2507         (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
2508         (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
2509         (REGISTER_NAMES): Add "%gsr".
2510         * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL): Delete.
2511         (UNSPEC_WRGSR): New unspec.
2512         (GSR_REG): New constant.
2513         (type): Add new insn type 'gsr'.
2514         (fpack16_vis, fpackfix_vis, fpack32_vis,
2515         faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
2516         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
2517         rdgsr_v8plus): New expanders and insns.
2518         (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
2519         using patterns which show that this is a plus in addition to a
2520         modification of GSR_REG, instead of an unspec.
2521         * config/sparc/ultra1_2.md: Handle 'gsr'.
2522         * config/sparc/ultra3.md: Likewise.
2523         * config/sparc/niagara.md: Likewise.
2524         * config/sparc/niagara2.md: Likewise.
2525         * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
2526         end of table.
2527         (sparc_option_override): Make -mvis imply -mv8plus.
2528         (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
2529         for %gsr.
2530         (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
2531         __builtin_vis_read_gsr.
2532         (sparc_expand_buildin): Handle builtins that take one argument and
2533         return void.
2534         (sparc_fold_builtin): Never fold writes to %gsr.
2535         * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
2536         * doc/extend.texi: Document new VIS intrinsics.
2537
2538 2011-09-23  Jan Hubicka  <jh@suse.cz>
2539
2540         * ipa-inline-transform.c (inline_call): Add comment.
2541         * ipa-inline.h (inline_param_summary): New structure and vector.
2542         (struct inline_edge_summary): Add param field.
2543         * ipa-inline-analysis.c (CHANGED): New constant.
2544         (add_clause): Handle CHANGED and NOT_CONSTANT.
2545         (predicate_probability): New function.
2546         (dump_condition): Dump CHANGED predicate.
2547         (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
2548         of unknown function wide invariant.
2549         (evaluate_conditions_for_edge): Handle change probabilities.
2550         (inline_edge_duplication_hook): Copy param summaries.
2551         (inline_edge_removal_hook): Free param summaries.
2552         (dump_inline_edge_summary): Fix dumping of indirect edges and callee
2553         sizes; dump param summaries.
2554         (will_be_nonconstant_predicate): Use CHANGED predicate.
2555         (record_modified_bb_info): New structure.
2556         (record_modified): New function.
2557         (param_change_prob): New function.
2558         (estimate_function_body_sizes): Compute param summaries.
2559         (estimate_edge_size_and_time): Add probability argument.
2560         (estimate_node_size_and_time): Add inline_param_summary argument;
2561         handle predicate probabilities.
2562         (remap_predicate): Fix formating.
2563         (remap_edge_change_prob): New function.
2564         (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
2565         (remap_edge_predicates): ... this one.
2566         (inline_merge_summary): Remap edge summaries; handle predicate
2567         probabilities; remove param summaries after we are done.
2568         (do_estimate_edge_time): Update.
2569         (do_estimate_edge_growth): Update.
2570         (read_inline_edge_summary): Read param info.
2571         (inline_read_summary): Fix formating.
2572         (write_inline_edge_summary): Write param summaries.
2573
2574 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
2575
2576         * config/i386/i386.c (ix86_print_operand): Handle %~.
2577         (ix86_print_operand_punct_valid_p): Return true also for '~'.
2578         * config/i386/sse.md (i128): New mode_attr.
2579         (vec_extract_hi_<mode>, vec_extract_hi_<mode>,
2580         avx_vbroadcastf128_<mode>, *avx_vperm2f128<mode>_full,
2581         *avx_vperm2f128<mode>_nozero, vec_set_lo_<mode>,
2582         vec_set_hi_<mode>, *vec_concat<mode>_avx): Use <i128> in the
2583         patterns, use "<sseinsnmode>" for "mode" attribute.
2584         (vec_extract_hi_v16hi, vec_extract_hi_v32qi, vec_set_lo_v16hi,
2585         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Use
2586         %~128 in the patterns, use "OI" for "mode" attribute.
2587
2588 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
2589
2590         PR target/50447
2591         * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
2592         "tstsi", "compare".
2593         (*cmpqi_sign_extend): Use s8_operand.
2594         (*cmphi, *cmpsi): Rewrite using avr_out_compare.
2595         * config/avr/avr-protos.h (compare_diff_p, compare_eq_p): Remove
2596         prototypes.
2597         (out_tsthi, out_tstsi): Remove prototypes.
2598         (avr_out_tsthi, avr_out_tstsi): New prototypes.
2599         * config/avr/avr.c (out_tsthi, out_tstsi): Remove functions.
2600         (avr_asm_len): Negative length now sets *plen to -length.
2601         (compare_sign_p): Return bool instead of int.
2602         (compare_diff_p, compare_eq_p): Ditto and make static.
2603         (avr_out_tsthi): New function.
2604         (avr_out_tstsi): New function.
2605         (avr_out_compare): New function.
2606         (adjust_insn_length): Handle ADJUST_LEN_TSTHI, ADJUST_LEN_TSTSI,
2607         ADJUST_LEN_COMPARE.
2608
2609 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
2610
2611         PR target/50447
2612         * config/avr/avr.md: (adjust_len): Add alternative "out_plus".
2613         (addsi3): Rewrite using QI scratch register.  Adjust text
2614         peepholes using plus:SI.
2615         (*addsi3_zero_extend.hi): New insn.
2616         (*subsi3_zero_extend.hi): New insn.
2617         (*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
2618         (*subsi3_zero_extend): Ditto.
2619         (subsi3): Change predicate #2 to register_operand.
2620         * config/avr/avr-protos.h (avr_out_plus): New prototype.
2621         (avr_out_plus_1): New static function.
2622         (avr_out_plus): New function.
2623         (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
2624
2625 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
2626
2627         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): For
2628         GE/GT/UNLE/UNLT swap arguments and condition even for TARGET_AVX.
2629
2630 2011-09-23  Ian Lance Taylor  <iant@google.com>
2631
2632         * godump.c (go_define): Treat a single character in single quotes,
2633         or a string, as an operand.
2634
2635 2011-09-23  Martin Jambor  <mjambor@suse.cz>
2636
2637         * ipa-prop.h (jump_func_type): Updated comments.
2638         (ipa_known_type_data): New type.
2639         (ipa_jump_func): Use it to describe known type jump functions.
2640         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Updated to
2641         reflect the new known type jump function contents.
2642         (compute_known_type_jump_func): Likewise.
2643         (combine_known_type_and_ancestor_jfs): Likewise.
2644         (try_make_edge_direct_virtual_call): Likewise.
2645         (ipa_write_jump_function): Likewise.
2646         (ipa_read_jump_function): Likewise.
2647         * ipa-cp.c (ipa_value_from_known_type_jfunc): New function.
2648         (ipa_value_from_jfunc): Use ipa_value_from_known_type_jfunc.
2649         (propagate_accross_jump_function): Likewise.
2650
2651 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
2652
2653         PR target/50446
2654         * config/avr/avr.md (rotlqi3): Support all offsets 0..7.
2655         (rotlqi3_4): Turn insn into expander.
2656         (*rotlqi3): New insn.
2657         (rotlhi3, rotlsi3): Support rotate left/right by 1.
2658         (*rotlhi2.1, *rotlhi2.15): New insns.
2659         (*rotlsi2.1, *rotlsi2.31): New insns.
2660         * config/avr/constraints.md (C03, C05, C06, C07): New constraints.
2661
2662 2011-09-23  Bin Cheng  <bin.cheng@arm.com>
2663
2664         * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch and processors.
2665
2666 2011-09-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2667
2668         * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
2669
2670 2011-09-22  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2671
2672         * reload.c (find_reloads): Set operand_mode to Pmode for address
2673         operands consisting of just a CONST_INT.
2674
2675 2011-09-22  Uros Bizjak  <ubizjak@gmail.com>
2676
2677         PR target/50482
2678         * config/i386/i386.c (ix86_expand_sse_movcc): When generating
2679         blendv, force op_true to register if it doesn't satisfy
2680         nonimmediate_operand predicate.
2681
2682 2011-09-22  Richard Sandiford  <rdsandiford@googlemail.com>
2683
2684         PR middle-end/50113
2685         PR middle-end/50061
2686         * calls.c (emit_library_call_value_1): Use BLOCK_REG_PADDING to
2687         get the locate.where_pad value for register-only arguments.
2688         * config/arm/arm.c (arm_pad_arg_upward): Remove HFmode handling.
2689         (arm_pad_reg_upward): Handle null types.
2690
2691 2011-09-22  Jan Hubicka  <jh@suse.cz>
2692
2693         * ipa-inline-analysis.c: Fix overly long lines.
2694
2695 2011-09-22  Jan Hubicka  <jh@suse.cz>
2696
2697         * ipa-inline-transform.c (inline_call): Always update jump functions
2698         after inlining.
2699         * ipa-inline.c (ipa_inline): Likewise; do not call
2700         ipa_create_all_structures_for_iinln.
2701         (ipa_inline): Always free jump functions.
2702         * ipa-inline-analysis.c (evaluate_conditions_for_edge): Remove hack.
2703         (remap_edge_predicates): Fix pasto.
2704         (inline_merge_summary): Remove nlined edge predicate; remove hack.
2705         (inline_analyze_function): Always initialize jump functions.
2706         (inline_generate_summary): Likewise.
2707         (inline_write_summary): Always write jump functions when ipa-cp
2708         is not doing that.
2709         (inline_read_summary): Always read jump functions when ipa-cp
2710         is not doing that.
2711         * ipa-prop.c (iinlining_processed_edges): Remove.
2712         (update_indirect_edges_after_inlining): Do not use
2713         iinlining_processed_edges; instead set param_index to -1.
2714         (propagate_info_to_inlined_callees): Only try to indirect inlining
2715         when asked to do so; update jump functions of indirect calls, too;
2716         remove jump functions of the inlined edge.
2717         (ipa_edge_duplication_hook): Do not copy iinlining_processed_edges.
2718         (ipa_create_all_structures_for_iinln): Remove.
2719         (ipa_free_all_structures_after_iinln): Do not free
2720         iinlining_processed_edges.
2721         * ipa-prop.h (ipa_create_all_structures_for_iinln): Remove.
2722
2723 2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
2724
2725         * config/arm/predicates.md (expandable_comparison_operator): New
2726         predicate, extracted from...
2727         (arm_comparison_operator): ...here.
2728         * config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
2729         (cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
2730         (movdfcc): Use expandable_comparison_operator.
2731
2732 2011-09-22  Georg-Johann Lay  <avr@gjlay.de>
2733
2734         PR target/50447
2735         PR target/50465
2736         * config/avr/avr-protos.h (avr_out_bitop): New prototype.
2737         (avr_popcount_each_byte): New prototype.
2738         * config/avr/avr.c (avr_popcount): New static function.
2739         (avr_popcount_each_byte): New function.
2740         (avr_out_bitop): New function.
2741         (adjust_insn_length): ADJUST_LEN_OUT_BITOP dispatches to
2742         avr_out_bitop.  Cleanup code.
2743         * config/avr/constraints.md (Ca2, Co2, Cx2): New constraints.
2744         (Ca4, Co4, Cx4): New constraints.
2745         * config/avr/avr.md (adjust_len): Add "out_bitop" insn attribute
2746         alternative.
2747         (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
2748         (andsi3, iorsi3, xorsi3): Ditto.
2749         (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
2750
2751 2011-09-22  Ira Rosen  <ira.rosen@linaro.org>
2752
2753         PR tree-optimization/50451
2754         * tree-vect-slp.c (vect_get_constant_vectors): Don't fail for
2755         constant operands in reduction.
2756         (vect_get_slp_defs): Don't create vector operand for NULL scalar
2757         operand.
2758
2759 2011-09-22  David S. Miller  <davem@davemloft.net>
2760
2761         * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
2762         fpack16, fpack32, fpackfix as const.
2763
2764         * config/sparc/sparc.md (G[0-7]_REG, O[0-7]_REG, L[0-7]_REG,
2765         I[0-7]_REG, F[0-62]_REG, FCC[0-3]_REG, CC_REG, SFP_REG): New
2766         constants.  Use them everywhere.
2767
2768 2011-09-22  Oleg Endo  <oleg.endo@t-online.de>
2769
2770         * config/sh/sh.c (andcosts): Renamed to and_xor_ior_costs.
2771         Added AND special case.  Adapted comments.
2772         (sh_rtx_costs): Added XOR and IOR case.
2773
2774 2011-09-21  Jan Hubicka  <jh@suse.cz>
2775
2776         * ipa-inline-analsis.c (compute_inline_parameters): Set
2777         cfun and current_function_decl.
2778
2779 2011-09-21  Jan Hubicka  <jh@suse.cz>
2780
2781         * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Allow
2782         handled components in parameter of builtin_constant_p.
2783         (will_be_nonconstant_predicate): Allow loads of non-SSA parameters.
2784
2785 2011-09-21  Jan Hubicka  <jh@suse.cz>
2786
2787         * ipa-inline.c (relative_time_benefit): Fix wrong bracketting.
2788         * ipa-inline.h (estimate_edge_time): Fix pasto.
2789         * ipa-inline-analysis.c (do_estiamte_edge_time): Remove capping.
2790
2791 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
2792
2793         * config/i386/i386.c (ix86_expand_sse_movcc): Use
2794         blendvps, blendvpd and pblendvb if possible.
2795
2796 2011-09-21  Uros Bizjak  <ubizjak@gmail.com>
2797
2798         PR target/50464
2799         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
2800         operand 1 predicate to register_operand and operand 2 predicate
2801         to nonimmediate_operand.
2802         * config/i386/i386.c (ix86_expand_sse_movcc): When generating
2803         xop_pcmov, force op_true to register.  Also, force op_false to
2804         register if it doesn't satisfy nonimmediate_operand predicate.
2805
2806 2011-09-21  Kirill Yukhin  <kirill.yukhin@intel.com>
2807
2808         * config/i386/bmi2intrin.h (_mulx_u64): New.
2809         (_mulx_u32): Ditto.
2810
2811 2011-09-21  Jan Hubicka  <jh@suse.cz>
2812
2813         PR tree-optimization/50433
2814         * ipa-inline-analysis.c (eliminated_by_inlining_prob):
2815         Use get_base_address.
2816
2817 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
2818
2819         * config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
2820         nonimmediate_operand instead of register_operand predicate for operands
2821         1 and 2, force them into registers if expanding them as comparison.
2822         (<code><mode>3 umaxmin:VI124_128 expander): Similarly.  For UMAX
2823         V8HImode force into register just operand 1.
2824
2825 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
2826
2827         PR target/45099
2828         * config/avr/avr.c (avr_function_arg_advance): Change error to
2829         warning if a fixed register is needed as function argument.
2830
2831 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
2832
2833         PR target/50449
2834         PR target/50465
2835         * config/avr/avr.md (adjust_len): New insn attribute.
2836         (*reload_insi, *reload_insf): Use it.
2837         (*movsi, *movsf): Use new interface of output_movsisf.
2838         * config/avr/avr-protos.h (output_movsisf): Change prototype.
2839         * config/avr/avr.c (output_movsisf): Ditto.
2840         (adjust_insn_length): Use insn attribute "adjust_len" to adjust
2841         lengths of insns *reload_insi, *reload_insf.
2842         (output_reload_insisf_1): New static function.
2843         (output_reload_insisf): Use it.
2844
2845 2011-09-21  David S. Miller  <davem@davemloft.net>
2846
2847         * config/sparc/sparc.c (def_builtin): Change from macro into function.
2848         (def_builtin_const): New.
2849         (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
2850         other than alignaddr and falignaddr.
2851
2852         * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE, UNSPEC_FCMPGT,
2853         UNSPEC_FCMPEQ): New unspec codes.
2854         (fcmple16_vis, fcmple32_vis, fcmpne16_vis, fcmpne32_vis, fcmpgt16_vis,
2855         fcmpgt32_vis, fcmpeq16_vis, fcmpeq32_vis): New patterns.
2856         * config/sparc/sparc.c (sparc_vis_init_builtins): Create builtins for
2857         new pixel compare VIS patterns.
2858         * config/sparc/visintrin.h (__vis_fcmple16, __vis_fcmple32,
2859         __vis_fcmpne16, __vis_fcmpne32, __vis_fcmpgt16, __vis_fcmpgt32,
2860         __vis_fcmpeq16, __vis_fcmpeq32): New.
2861         * doc/extend.texi: Document new pixel compare VIS intrinsics.
2862
2863 2011-09-21  Tom de Vries  <tom@codesourcery.com>
2864
2865         * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
2866
2867 2011-09-20  David S. Miller  <davem@davemloft.net>
2868
2869         * config/sparc/sparc.md (UNSPEC_ALIGNADDRL): New unspec.
2870         (aligneddrl<P:mode>_vis): New pattern.
2871         (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
2872         edge32l_vis): Adjust to take Pmode arguments, and return SImode.
2873         * config/sparc/sparc.c (sparc_vis_init_builtins): Handle new
2874         alignaddrl insn, and adjust edge operations for updated types.
2875         * config/sparc/visintrin.h: Likewise.
2876         * doc/extend.texi: Make typing in VIS documentation match reality.
2877
2878 2011-09-20  Terry Guo  <terry.guo@arm.com>
2879
2880         * config/arm/arm-arches.def: Add armv6s-m.
2881         * config/arm/arm-tables.opt: Regenerate.
2882
2883 2011-09-20  Wei Guozhi  <carrot@google.com>
2884
2885         PR rtl-optimization/49452
2886         * postreload.c (reload_combine): Invalidate use information when across
2887         volatile insn.
2888
2889 2011-09-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
2890
2891         * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
2892         Remove maintenance overhead.
2893         (haifa_sched_init, sched_finish): Update.
2894
2895 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
2896
2897         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
2898         to calculate unit, prefix_rep and prefix_data16 attributes.
2899         (*mov<mode>_internal): Ditto for unit attribute.
2900         (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
2901         (*movv2sf_internal): Ditto.
2902         * config/i386/sse.md (VI1248_256): Remove mode iterator.
2903         (avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
2904         (*avx2_eq<mode>3): Ditto.
2905         (avx2_gt<mode>3): Ditto.
2906
2907 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
2908
2909         * config/i386/i386.md (maxmin): New code iterator.
2910         * config/i386/sse.md (<maxmin:code><mode>3): Macroize expander
2911         from <umaxmin:code><mode>3 and <smaxmin:code><mode>3 using maxmin
2912         code iterator.
2913         (*avx2_<maxmin:code><mode>3): Macroize isn from
2914         *avx2_<umaxmin:code><mode>3 and *avx2_<smaxmin:code><mode>3 using
2915         maxmin code iterator.
2916         (<smaxmin:code><VI124_128:mode>3): Merge with <smaxmin:code>v8hi3.
2917         (<umaxmin:code><VI124_128:mode>3): Merge with umaxv4si3 and
2918         <umaxmin:code>v16qi3.
2919
2920 2011-09-19  Alan Modra  <amodra@gmail.com>
2921             Michael Meissner  <meissner@linux.vnet.ibm.com>
2922
2923         PR target/50341
2924         * config/rs6000/rs6000.md (call_indirect_aix<ptrsize>): Do not
2925         split the load of the indirect function's TOC from the call to
2926         prevent the compiler from moving the load of the new TOC above
2927         code that references the current function's TOC.
2928         (call_indirect_aix<ptrsize>_internal): Ditto.
2929         (call_indirect_aix<ptrsize>_nor11): Ditto.
2930         (call_indirect_aix<ptrsize>_internal2): Ditto.
2931         (call_value_indirect_aix<ptrsize>): Ditto.
2932         (call_value_indirect_aix<ptrsize>_internal): Ditto.
2933         (call_value_indirect_aix<ptrsize>_nor11): Ditto.
2934         (call_value_indirect_aix<ptrsize>_internal2): Ditto.
2935
2936 2011-09-19  Jakub Jelinek  <jakub@redhat.com>
2937
2938         * config/i386/sse.md (*sse4_1_extractps): Change into
2939         define_insn_and_split, add =x 0 n and =x x n alternatives
2940         and split them after reload.
2941
2942 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
2943
2944         * tree.h (TREE_NOT_CHECK4): Rename from bogus NON_TREE_CHECK4.
2945
2946 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
2947
2948         * emit-rtl.c (copy_insn_1): Do not copy DEBUG_EXPRs.
2949
2950 2011-09-19  Ira Rosen  <ira.rosen@linaro.org>
2951
2952         PR tree-optimization/50413
2953         * tree-vect-data-refs.c (vect_analyze_data_refs): Fail to vectorize
2954         a basic block if one of its data-refs can't be analyzed.
2955
2956 2011-09-19  Paul Brook  <paul@codesourcery.com>
2957
2958         * config/arm/predicates.md (shift_amount_operand): Check constant
2959         shift count is in range.
2960         (const_shift_operand): Remove.
2961
2962 2011-09-18  Eric Botcazou  <ebotcazou@adacore.com>
2963             Iain Sandoe  <developer@sandoe-acoustics.co.uk>
2964
2965         PR target/50091
2966         * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
2967         * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
2968
2969 2011-09-18  H.J. Lu  <hongjiu.lu@intel.com>
2970
2971         * config/i386/bmiintrin.h: Remove tmp.
2972         * config/i386/tbmintrin.h: Likewise.
2973
2974 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
2975
2976         PR tree-optimization/50414
2977         * tree-vect-slp.c (vect_get_constant_vectors): Handle MAX_EXPR and
2978         MIN_EXPR.
2979
2980 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
2981
2982         PR tree-optimization/50412
2983         * tree-vect-data-refs.c (vect_analyze_group_access): Fail for
2984         acceses that require epilogue loop if vectorizing outer loop.
2985
2986 2011-09-17  David S. Miller  <davem@davemloft.net>
2987
2988         * config/sparc/sparc.md (UNSPEC_EDGE8, UNSPEC_EDGE8L,
2989         UNSPEC_EDGE16, UNSPEC_EDGE16L, UNSPEC_EDGE32, UNSPEC_EDGE32L):
2990         New unspecs.
2991         (define_attr type): New type 'edge'.
2992         (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
2993         edge32l_vis): New patterns.
2994         * config/sparc/ultra1_2.md: Add insn reservation for 'edge'.
2995         * config/sparc/ultra3.md: Likewise.
2996         * config/sparc/niagara.md: Likewise.
2997         * config/sparc/niagara2.md: Likewise.
2998         * config/sparc/sparc.d (sparc_vis_init_builtins): Generate
2999         builtins for VIS edge instructions.
3000         * config/sparc/visintrin.h (__vis_edge8, __vis_edge8l)
3001         (__vis_edge16, __vis_edge16l, __vis_edge32, __vis_edge32l): New
3002         intrinsics.
3003         (__v8qi, __v4qi): Make unsigned.
3004         (__vis_faligndatadi, ___vis_faligndatav2si, __vis_faligndatav4hi,
3005         __vis_faligndatav8qi, __vis_fmul8x16au, __vis_fmul8x16al,
3006         __vis_fpack32): Fix types.
3007         * doc/extend.texi: Document new 'edge' VIS intrinsics.
3008
3009         * gcc/config/sparc/sparc.c (niagara2_costs): Adjust integer
3010         divide costs.
3011         (niagara3_costs): New.
3012         (sparc_option_override): Use it.
3013         * gcc/config/sparc/niagara2.md: Adjust with more accurate
3014         Niagara-3 reservations.
3015
3016 2011-09-17  Jakub Jelinek  <jakub@redhat.com>
3017
3018         * config/i386/sse.md (VIMAX_AVX2): Change V4DI to V2TI.
3019         (sse2_avx, sseinsnmode): Add V2TI.
3020         (REDUC_SMINMAX_MODE): New mode iterator.
3021         (reduc_smax_v4sf, reduc_smin_v4sf, reduc_smax_v8sf,
3022         reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df): Remove.
3023         (reduc_<code>_<mode>): New smaxmin and umaxmin expanders.
3024         (sse2_lshrv1ti3): Rename to...
3025         (<sse2_avx2>_lshr<mode>3): ... this.  Use VIMAX_AVX2 mode
3026         iterator.  Move before umaxmin expanders.
3027         * config/i386/i386.h (VALID_AVX256_REG_MODE,
3028         SSE_REG_MODE_P): Accept V2TImode.
3029         * config/i386/i386.c (ix86_expand_reduc): Handle V32QImode,
3030         V16HImode, V8SImode and V4DImode.
3031
3032         * config/i386/i386.c (ix86_build_const_vector): Handle V8SImode
3033         and V4DImode.
3034         (ix86_build_signbit_mask): Likewise.
3035         (ix86_expand_int_vcond): Likewise.  Handle V16HImode and V32QImode.
3036         (bdesc_args): Use CODE_FOR_{s,u}m{ax,in}v{32q,16h,8s}i3
3037         instead of CODE_FOR_avx2_{s,u}m{ax,in}v{32q,16h,8s}i3.
3038         * config/i386/sse.md (avx2_<code><mode>3 umaxmin expand): Rename to...
3039         (<code><mode>3) ... this.
3040         (avx2_<code><mode>3 smaxmin expand): Rename to...
3041         (<code><mode>3) ... this.
3042         (smax<mode>3, smin<mode>3): Macroize using smaxmin code iterator.
3043         (smaxv2di3, sminv2di3): Macroize using smaxmin code iterator and
3044         VI8_AVX2 mode iterator.
3045         (umaxv2di3, uminv2di3): Macroize using umaxmin code iterator and
3046         VI8_AVX2 mode iterator.
3047         (vcond<V_256:mode><VI_256:mode>, vcondu<V_256:mode><VI_256:mode>):
3048         New expanders.
3049
3050 2011-09-17  Richard Sandiford  <rdsandiford@googlemail.com>
3051
3052         * config/ia64/itanium2.md: Use match_test rather than eq/ne symbol_ref
3053         throughout file.
3054
3055 2011-09-16  David S. Miller  <davem@davemloft.net>
3056
3057         * config/sparc/visintrin.h: New file.
3058         * config.gcc: Add it to extra_headers on sparc.
3059
3060 2011-09-16  Jakub Jelinek  <jakub@redhat.com>
3061
3062         * config/i386/i386.c (ix86_expand_reduc_v4sf): Rename to ...
3063         (ix86_expand_reduc): ... this.  Handle also V8SFmode and V4DFmode.
3064         * config/i386/sse.md (reduc_splus_v4sf, reduc_smax_v4sf,
3065         reduc_smin_v4sf): Adjust callers.
3066         (reduc_smax_v8sf, reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df):
3067         New expanders.
3068
3069         * config/i386/sse.md (vec_extract_hi_<mode>,
3070         vec_extract_hi_v16hi, vec_extract_hi_v32qi): Use
3071         vextracti128 instead of vextractf128 for -mavx2 and
3072         integer vectors.  For V4DFmode fix up mode attribute.
3073         (VEC_EXTRACT_MODE): For TARGET_AVX add 32-byte vectors.
3074         (vec_set_lo_<mode>, vec_set_hi_<mode>): For VI8F_256 modes use V4DF
3075         instead of V8SF mode attribute.
3076         (avx2_extracti128): Change into define_expand.
3077         * config/i386/i386.c (ix86_expand_vector_extract): Handle
3078         32-byte vector modes if TARGET_AVX.
3079
3080 2011-09-16  Georg-Johann Lay  <avr@gjlay.de>
3081
3082         * config/avr/avr.md: (umulqihi3, mulqihi3): Write as one pattern.
3083         (umulqi3_highpart, smulqi3_highpart): Ditto.
3084         (*maddqihi4.const, *umaddqihi4.uconst): Ditto.
3085         (*msubqihi4.const, *umsubqihi4.uconst): Ditto.
3086         (*muluqihi3.uconst, *mulsqihi3.sconst): Ditto.
3087
3088 2011-09-16  Georg-Johann Lay  <avr@gjlay.de>
3089
3090         PR target/50358
3091         * config/avr/avr.md (*ashiftqihi2.signx.1): New insn.
3092         (*maddqi4, *maddqi4.const): New insns.
3093         (*msubqi4, *msubqi4.const): New insns.
3094         * config/avr/avr.c (avr_rtx_costs): Record costs of above in cases
3095         PLUS:QI and MINUS:QI.  Increase costs of multiply-add/-sub for
3096         HImode by 1 in the case of multiplying with a CONST_INT.
3097         Record cost of *ashiftqihi2.signx.1 in case ASHIFT:QI.
3098
3099 2011-09-15   Jan Hubicka  <jh@suse.cz>
3100
3101         PR lto/50430
3102         * gimple-fold.c (gimple_get_virt_method_for_binfo): Do not ICE on
3103         error_mark_node in the DECL_INITIAL of vtable.
3104
3105 2011-09-15   Diego Novillo  <dnovillo@google.com>
3106
3107         * Makefile.in (SYSROOT_CFLAGS_FOR_TARGET): Define from
3108         @SYSROOT_CFLAGS_FOR_TARGET@.
3109         * configure.ac (SYSROOT_CFLAGS_FOR_TARGET): Set from build-sysroot.
3110         * configure: Regenerate.
3111         (site.exp): Add definition of TEST_ALWAYS_FLAGS.
3112         Remove setting of GCC_UNDER_TEST.
3113
3114 2011-09-15  Uros Bizjak  <ubizjak@gmail.com>
3115
3116         * config/i386/i386.c (output_fp_compare): Return %v prefixed
3117         instruction mnemonics for TARGET_AVX.
3118
3119         * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in
3120         "type" attribute calculation.
3121         (*movdf_internal): Ditto.
3122         (*movsf_internal): Ditto.
3123
3124 2011-09-15  James Greenhalgh  <james.greenhalgh@arm.com>
3125
3126         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro.
3127
3128 2011-09-15  Jason Merrill  <jason@redhat.com>
3129
3130         PR c++/50361
3131         * expr.c (count_type_elements): Handle NULLPTR_TYPE.
3132
3133 2011-09-15  Jan Hubicka  <jh@suse.cz>
3134
3135         * ipa-inline-analysis.c (add_condition): Add conditions parameter;
3136         simplify obviously true clauses.
3137         (and_predicates, or_predicates): Add conditions parameter.
3138         (inline_duplication_hoook): Update.
3139         (mark_modified): New function.
3140         (unmodified_parm): New function.
3141         (eliminated_by_inlining_prob, (set_cond_stmt_execution_predicate,
3142         set_switch_stmt_execution_predicate, will_be_nonconstant_predicate):
3143         Use unmodified_parm.
3144         (estimate_function_body_sizes): Update.
3145         (remap_predicate): Update.
3146
3147 2011-09-15  Ira Rosen  <ira.rosen@linaro.org>
3148
3149         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Allow
3150         read-after-read dependencies in basic block SLP.
3151
3152 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
3153
3154         * config/sparc/sparc.md: Use match_test rather than eq/ne symbol_ref
3155         throughout file.
3156
3157 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
3158
3159         * config/sh/sh.md: Use match_test rather than eq/ne symbol_ref
3160         throughout file.
3161
3162 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
3163
3164         * config/s390/s390.md: Use match_test rather than eq/ne symbol_ref
3165         throughout file.
3166
3167 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
3168
3169         * config/rs6000/rs6000.md: Use match_test rather than eq/ne symbol_ref
3170         throughout file.
3171         * config/rs6000/constraints.md: Likewise.
3172
3173 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
3174
3175         * config/microblaze/microblaze.md: Use match_test rather than
3176         eq/ne symbol_ref throughout file.
3177
3178 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
3179
3180         * config/bfin/bfin.md: Use match_test rather than eq/ne symbol_ref
3181         throughout file.
3182
3183 2011-09-14  Tom de Vries  <tom@codesourcery.com>
3184
3185         PR middle-end/50251
3186         * explow.c (emit_stack_restore): Set crtl->need_drap if
3187         stack_restore is emitted.
3188
3189 2011-09-14  Julian Brown  <julian@codesourcery.com>
3190
3191         * config/arm/arm.c (arm_override_options): Add unaligned_access
3192         support.
3193         (arm_file_start): Emit attribute for unaligned access as appropriate.
3194         * config/arm/arm.md (UNSPEC_UNALIGNED_LOAD)
3195         (UNSPEC_UNALIGNED_STORE): Add constants for unspecs.
3196         (insv, extzv): Add unaligned-access support.
3197         (extv): Change to expander. Likewise.
3198         (extzv_t1, extv_regsi): Add helpers.
3199         (unaligned_loadsi, unaligned_loadhis, unaligned_loadhiu)
3200         (unaligned_storesi, unaligned_storehi): New.
3201         (*extv_reg): New (previous extv implementation).
3202         * config/arm/arm.opt (munaligned_access): Add option.
3203         * config/arm/constraints.md (Uw): New constraint.
3204         * expmed.c (store_bit_field_1): Adjust bitfield numbering according
3205         to size of access, not size of unit, when BITS_BIG_ENDIAN !=
3206         BYTES_BIG_ENDIAN. Don't use bitfield accesses for
3207         volatile accesses when -fstrict-volatile-bitfields is in effect.
3208         (extract_bit_field_1): Likewise.
3209
3210 2011-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
3211
3212         * simplify-rtx.c (simplify_subreg): Check that the inner mode is
3213         a scalar integer before applying integer-only optimisations to
3214         inner arithmetic.
3215
3216 2011-09-14  Bernd Schmidt  <bernds@codesourcery.com>
3217
3218         * config/mips/mips.c (mips_expand_epilogue): Generate a
3219         simple_return only if the return address is in r31.
3220
3221 2011-09-13  Bernd Schmidt  <bernds@codesourcery.com>
3222
3223         * cfgcleanup.c (try_head_merge_bb): If get_condition returns
3224         NULL for a jump that is a cc0 insn, pick the previous insn for
3225         move_before.
3226
3227 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3228
3229         * config/v850/v850.md: Use match_test rather than eq/ne symbol_ref
3230         throughout file.
3231
3232 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3233
3234         * config/pa/pa.md: Use match_test rather than eq/ne symbol_ref
3235         throughout file.
3236
3237 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3238
3239         * config/mn10300/mn10300.md: Use match_test rather than eq/ne
3240         symbol_ref throughout file.
3241
3242 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3243
3244         * config/m68k/m68k.md: Use match_test rather than eq/ne symbol_ref
3245         throughout file.
3246
3247 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3248
3249         * config/h8300/h8300.md: Use match_test rather than eq/ne symbol_ref
3250         throughout file.
3251
3252 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3253
3254         * config/arm/arm.md: Use match_test rather than eq/ne symbol_ref
3255         throughout file.
3256         * config/arm/neon.md: Likewise.
3257         * config/arm/vfp.md: Likewise.
3258         * config/arm/thumb2.md: Likewise.
3259         * config/arm/cortex-m4.md: Likewise.
3260
3261 2011-09-13  Sevak Sargsyan <sevak.sargsyan@ispras.ru>
3262
3263         * config/arm/neon.md (neon_vabd<mode>_2, neon_vabd<mode>_3): New
3264         define_insn patterns for combine.
3265
3266 2011-09-13  Giuseppe Scrivano  <gscrivano@gnu.org>
3267
3268         * reorg.c: Always define make_return_insns.
3269
3270 2011-09-13  Jan Hubicka  <jh@suse.cz>
3271
3272         PR other/49533
3273         * cgraphunit.c (assemble_thunks_and_aliases): Force alias to be output.
3274
3275 2011-09-13  Jan Hubicka  <jh@suse.cz>
3276
3277         PR other/49533
3278         * ipa-inline-transform.c (can_remove_node_now_p): Fix thunkos.
3279
3280 2011-09-13  Paul Brook  <paul@codesourcery.com>
3281
3282         * config/arm/arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
3283         (ARM_TARGET2_DWARF_FORMAT): Provide default definition.
3284         * config/arm/linux-eabi.h (ARM_TARGET2_DWARF_FORMAT): Define.
3285         * config/arm/symbian.h (ARM_TARGET2_DWARF_FORMAT): Define.
3286         * config/arm/uclinux-eabi.h(ARM_TARGET2_DWARF_FORMAT): Define.
3287         * config/arm/t-bpabi (EXTRA_HEADERS): Add unwind-arm-common.h.
3288         * config/arm/t-symbian (EXTRA_HEADERS): Add unwind-arm-common.h.
3289         * config/c6x/c6x.c (c6x_output_file_unwind): Don't rely on dwarf2 code
3290         enabling unwind tables.
3291         (c6x_debug_unwind_info): New function.
3292         (TARGET_ARM_EABI_UNWINDER): Define.
3293         (TARGET_DEBUG_UNWIND_INFO): Define.
3294         * config/c6x/c6x.h (DWARF_FRAME_RETURN_COLUMN): Define.
3295         (TARGET_EXTRA_CFI_SECTION): Remove.
3296         * config/c6x/t-c6x-elf (EXTRA_HEADERS): Set.
3297         * ginclude/unwind-arm-common.h: New file.
3298
3299 2011-09-13  Georg-Johann Lay  <avr@gjlay.de>
3300
3301         PR target/50358
3302         * config/avr/predicates.md (const_1_to_6_operand): New predicate.
3303         * config/avr/avr.md: (extend_s): New code attribute.
3304         (mul_r_d): New code attribute.
3305         (*maddqihi4, *umaddqihi4): New insns.
3306         (*msubqihi4, *umsubqihi4): New insns.
3307         (*usmaddqihi4, *sumaddqihi4): New insns.
3308         (*usmsubqihi4, *susubdqihi4): New insns.
3309         (*umaddqihi4.uconst, *maddqihi4.sconst): New insn-and-splits.
3310         (*umsubqihi4.uconst, *msubqihi4.sconst): New insn-and-splits.
3311         (*umsubqihi4.uconst.ashift): New insn-and-split.
3312         (*msubqihi4.sconst.ashift): New insn-and-split.
3313         (*sumaddqihi4.uconst): New insn-and-split.
3314         (*sumsubqihi4.uconst): New insn-and-split.
3315         * config/avr/avr.c (avr_rtx_costs): Report costs of above in case
3316         PLUS:HI and MINUS:HI.
3317
3318 2011-09-13  Revital Eres  <revital.eres@linaro.org>
3319
3320         modulo-sched.c (remove_node_from_ps): Return void instead of bool.
3321         (optimize_sc): Adjust call to remove_node_from_ps.
3322         (sms_schedule): Add print info.
3323
3324 2011-09-13  Bernd Schmidt  <bernds@codesourcery.com>
3325
3326         * rtl.c (copy_rtx): Do not handle frame_related, jump or call
3327         flags specially.
3328
3329 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
3330
3331         PR bootstrap/50010
3332         * dwarf2cfi.c (add_cfis_to_fde): Ignore non-active insns in between
3333         NOTE_INSN_CFI notes, with the exception of
3334         NOTE_INSN_SWITCH_TEXT_SECTIONS.
3335
3336 2011-09-12  Bernd Schmidt  <bernds@codesourcery.com>
3337             Richard Sandiford  <rdsandiford@googlemail.com>
3338
3339         * config/mips/mips.c (mips_epilogue): New structure.
3340         (mips16e_save_restore_reg): Queue REG_CFA_RESTORE notes when
3341         restoring registers.
3342         (mips_epilogue_emit_cfa_restores): New function.
3343         (mips_epilogue_set_cfa): Likewise.
3344         (mips_restore_reg): Queue REG_CFA_RESTORE notes.  When restoring
3345         the current CFA register from the stack, redefine the CFA in terms
3346         of the stack pointer.
3347         (mips_expand_epilogue): Set up mips_epilogue.  Attach CFA information
3348         to the epilogue instructions.
3349
3350 2011-09-12  Richard Sandiford  <rdsandiford@googlemail.com>
3351
3352         * config/mips/mips.c (mips16e_save_restore_reg): Add a reg_parm_p
3353         argument.
3354         (mips16e_build_save_restore): Update accordingly.
3355
3356 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
3357
3358         PR rtl-optimization/50212
3359         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
3360         Skip also lps with NULL landing_pad or non-LABEL_P landing_pad.
3361
3362         PR debug/50299
3363         * calls.c (load_register_parameters): Use use_reg_mode instead
3364         of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
3365         entry.
3366         (expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
3367         for stack CALL_INSN_FUNCTION_USAGE uses.
3368         * expr.h (use_reg_mode): New prototype.
3369         (use_reg): Changed into inline around use_reg_mode.
3370         * expr.c (use_reg): Renamed to...
3371         (use_reg_mode): ... this.  Added MODE argument, set EXPR_LIST
3372         mode to that mode instead of VOIDmode.
3373         * var-tracking.c (prepare_call_arguments): Don't track parameters
3374         whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
3375         to it using lowpart_subreg.  Convert VALUE and REG/MEM to the
3376         EXPR_LIST mode.
3377
3378 2011-09-12  Georg-Johann Lay  <avr@gjlay.de>
3379
3380         PR target/43746
3381         * config/avr/avr.c (AVR_SECTION_PROGMEM): New Define.
3382         (progmem_section): New Variable.
3383         (avr_asm_init_sections): Initialize it.
3384         (TARGET_ASM_SELECT_SECTION): Define to...
3385         (avr_asm_select_section): ... this new Function.
3386         (avr_replace_prefix): New Function.
3387         (avr_asm_function_rodata_section): Use it.
3388         (avr_insert_attributes): Don't add section attribute for PROGMEM.
3389         (avr_section_type_flags): Use avr_progmem_p instead of section
3390         name to detect if object is in PROGMEM.
3391         (avr_asm_named_section): Set section name prefix for objects in
3392         PROGMEM.
3393
3394 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
3395
3396         PR bootstrap/50352
3397         * config/arm/arm.md (*push_fp_multi): Add % before %( and %) in the
3398         sprintf format string.
3399
3400 2011-09-12  Richard Guenther  <rguenther@suse.de>
3401
3402         PR tree-optimization/50343
3403         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Check
3404         that the reduction is over an SSA name before checking its definition.
3405
3406 2011-09-11  Richard Sandiford  <rdsandiford@googlemail.com>
3407
3408         * config/cris/cris.md: Use match_test rather than eq/ne symbol_ref
3409         throughout file.
3410
3411 2011-09-11  Richard Sandiford  <rdsandiford@googlemail.com>
3412
3413         * config/mips/mips.md: Use match_test rather than eq/ne symbol_ref
3414         throughout file.
3415         * config/mips/sb1.md: Likewise.
3416         * config/mips/predicates.md: Replace (match_test "!...")
3417         with (not (match_test "..."))
3418         * config/mips/constraints.md: Likewise.
3419
3420 2011-09-09  Andrew Stubbs  <ams@codesourcery.com>
3421
3422         * config/arm/arm-cores.def (generic-armv7-a): New architecture.
3423         * config/arm/arm-tables.opt: Regenerate.
3424         * config/arm/arm-tune.md: Regenerate.
3425         * config/arm/arm.c (arm_file_start): Output .arch directive when
3426         user passes -mcpu=generic-*.
3427         (arm_issue_rate): Add genericv7a support.
3428         * config/arm/arm.h (EXTRA_SPECS): Add asm_cpu_spec.
3429         (ASM_CPU_SPEC): New define.
3430         * config/arm/elf.h (ASM_SPEC): Use %(asm_cpu_spec).
3431         * config/arm/semi.h (ASM_SPEC): Likewise.
3432         * doc/invoke.texi (ARM Options): Document -mcpu=generic-*
3433         and -mtune=generic-*.
3434
3435 2011-09-09  Richard Guenther  <rguenther@suse.de>
3436
3437         PR tree-optimization/50328
3438         * tree-vect-loop.c (vect_is_simple_reduction_1): Allow one
3439         constant or default-def operand.
3440
3441 2011-09-09  Richard Guenther  <rguenther@suse.de>
3442
3443         * tree-ssa-pre.c (create_expression_by_pieces): Fold the
3444         last statement.
3445
3446 2011-09-09  Richard Guenther  <rguenther@suse.de>
3447
3448         * gimple.h (fold_stmt_inplace): Adjust to take a gimple_stmt_iterator
3449         instead of a statement.
3450         * gimple-fold.c (fold_stmt_inplace): Likewise.
3451         * sese.c (graphite_copy_stmts_from_block): Adjust.
3452         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
3453         * tree-ssa-forwprop.c (forward_propagate_into_comparison): Use
3454         fold_stmt.
3455         (forward_propagate_addr_into_variable_array_index): Likewise.
3456         (forward_propagate_addr_expr_1): adjust.
3457         (associate_plusminus): Likewise.
3458         (ssa_forward_propagate_and_combine): Likewise.
3459         * tree-ssa-mathopts.c (replace_reciprocal): Adjust.
3460         (execute_cse_reciprocals): Likewise.
3461         * tree-ssa.c (insert_debug_temp_for_var_def): Adjust.
3462
3463 2011-09-09  Nick Clifton  <nickc@redhat.com>
3464
3465         * config/mn10300/mn10300.c (mn10300_split_and_operand_count):
3466         Return a positive value to indicate that the bits at the
3467         bottom of the register should be cleared.
3468
3469 2011-09-09  Richard Guenther  <rguenther@suse.de>
3470
3471         * tree-ssa-operands.c (swap_tree_operands): Always adjust
3472         existing operand positions.
3473
3474 2011-09-09  Richard Guenther  <rguenther@suse.de>
3475
3476         PR middle-end/50333
3477         * tree-data-ref.c (split_constant_offset): Do not try to handle
3478         ternary ops.
3479
3480 2011-09-08  Andrew Stubbs  <ams@codesourcery.com>
3481
3482         PR tree-optimization/50318
3483         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Correct
3484         typo in use of mult_rhs1 and mult_rhs2.
3485
3486 2011-09-08  Uros Bizjak  <ubizjak@gmail.com>
3487
3488         * config/i386/i386.c (standard_sse_constant_p): Handle AVX2 modes.
3489         (standard_sse_constant_opcode) <case 2>: Change vpcmpeqd template.
3490
3491 2011-09-08  Bernd Schmidt  <bernds@codesourcery.com>
3492
3493         * config/arm/arm.md (push_multi): Emit predicates.
3494         (push_fp_multi): Likewise.
3495         * config/arm/arm.c (vfp_output_fstmd): Likewise.
3496
3497 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
3498
3499         PR c++/33255 - Support -Wunused-local-typedefs warning
3500         * c-decl.c (lookup_name): Use the new maybe_record_typedef_use.
3501         (pushdecl): Use the new record_locally_defined_typedef.
3502         (store_parm_decls): Allocate cfun->language.
3503         (finish_function): Use the new maybe_warn_unused_local_typedefs,
3504         and free cfun->language.
3505         (c_push_function_context): Allocate cfun->language here only if needed.
3506         (c_pop_function_context): Likewise, mark cfun->language
3507         for collection only when it should be done.
3508         * c-common.c (handle_used_attribute): Don't ignore TYPE_DECL nodes.
3509         * c-typeck.c (c_expr_sizeof_type, c_cast_expr): Use the new
3510         maybe_record_local_typedef_use.
3511         * doc/invoke.texi: Update documentation for
3512         -Wunused-local-typedefs.
3513
3514 2011-09-08  Enkovich Ilya  <ilya.enkovich@intel.com>
3515
3516         * config/i386/i386-protos.h (ix86_lea_outperforms): New.
3517         (ix86_avoid_lea_for_add): Likewise.
3518         (ix86_avoid_lea_for_addr): Likewise.
3519         (ix86_split_lea_for_addr): Likewise.
3520
3521         * config/i386/i386.c (LEA_MAX_STALL): New.
3522         (increase_distance): Likewise.
3523         (insn_defines_reg): Likewise.
3524         (insn_uses_reg_mem): Likewise.
3525         (distance_non_agu_define_in_bb): Likewise.
3526         (distance_agu_use_in_bb): Likewise.
3527         (ix86_lea_outperforms): Likewise.
3528         (ix86_ok_to_clobber_flags): Likewise.
3529         (ix86_avoid_lea_for_add): Likewise.
3530         (ix86_avoid_lea_for_addr): Likewise.
3531         (ix86_split_lea_for_addr): Likewise.
3532         (distance_non_agu_define): Search in pred BBs added.
3533         (distance_agu_use): Search in succ BBs added.
3534         (IX86_LEA_PRIORITY): Value changed from 2 to 0.
3535         (LEA_SEARCH_THRESHOLD): Now depends on LEA_MAX_STALL.
3536         (ix86_lea_for_add_ok): Use ix86_lea_outperforms to make decision.
3537
3538         * config/i386/i386.md: Split added to transform non destructive
3539         add into move and add.
3540         (lea_1): transformed into insn_and_split to avoid AGU stalls.
3541         (lea<mode>_2): Likewise.
3542
3543 2011-09-08  Martin Jambor  <mjambor@suse.cz>
3544
3545         PR tree-optimization/50287
3546         * ipa-split.c (split_function): Do not create SSA names for
3547         non-gimple-registers.
3548
3549 2011-09-08  Richard Guenther  <rguenther@suse.de>
3550
3551         PR tree-optimization/19831
3552         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Also
3553         skip builtins with vdefs that do not really store something.
3554         (propagate_necessity): For calls to free that we can associate
3555         with an allocation function do not mark the freed pointer
3556         definition necessary.
3557         (eliminate_unnecessary_stmts): Remove a call to free if
3558         the associated call to an allocation function is not necessary.
3559
3560 2011-09-08  Richard Guenther  <rguenther@suse.de>
3561
3562         PR tree-optimization/19831
3563         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Do not mark
3564         allocation functions as necessary.
3565
3566 2011-09-08  Iain Sandoe  <iains@gcc.gnu.org>
3567
3568         * config/darwin-driver.c (darwin_find_version_from_kernel): New routine
3569         cut from ...
3570         (darwin_default_min_version): Amended to provide defaults
3571         for the cross directory case.
3572         (darwin_driver_init): call darwin_default_min_version unconditionally.
3573         * config/darwin.h (DEF_MIN_OSX_VERSION): New.
3574         * config/darwin9.h: Likewise.
3575         * config/darwin10.h: Likewise.
3576         * config/rs6000/darwin7.h: Likewise.
3577
3578 2011-09-08  Jakub Jelinek  <jakub@redhat.com>
3579
3580         PR target/50310
3581         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Return
3582         code early if TARGET_AVX.
3583         (ix86_expand_fp_vcond): Handle LTGT and UNEQ.
3584
3585 2011-09-07  Jakub Jelinek  <jakub@redhat.com>
3586
3587         * config/i386/sse.md (sseinsnmode): Remove 32-byte integer vector
3588         duplicates.
3589
3590         PR target/50310
3591         * config/i386/sse.md (*andnot<mode>3, *<code><mode>3): Fix up
3592         "mode" attribute computation.
3593
3594 2011-09-07  Bernd Schmidt  <bernds@codesourcery.com>
3595
3596         * regrename.c (struct du_head): Make nregs signed.
3597         (closed_chains): Remove.
3598         (create_new_chain): Return the new chain.
3599         (chain_from_id): New static function.
3600         (dump_def_use_chain): Change argument to be an int, indicating
3601         the first ID to print.  All callers changed.
3602         (merge_overlapping_regs): Use chain_from_id.  Assert that
3603         chains don't conflict with themselves.
3604         (rename_chains): Take no argument.  Iterate over id_to_chain
3605         rather to find chains to rename.  Clear tick before the main loop.
3606         (struct incoming_reg_info): New struct.
3607         (struct bb_rename_info): New struct.
3608         (init_rename_info, set_incoming_from_chain, merge_chains): New
3609         static functions.
3610         (regrename_analyze): New static function, broken out of
3611         regrename_optimize.  Record and make use of open chain information
3612         at basic block boundaries, and merge chains where possible.
3613         (scan_rtx_reg): Make this_nregs signed.  Don't update
3614         closed_chains.
3615         (build_def_use): Return a bool to indicate success.  All callers
3616         changed.  Don't initialize global data here.
3617         (regrename_optimize): Move most code out of here into
3618         regrename_analyze.
3619         * regs.h (add_range_to_hard_reg_set, remove_range_from_hard_reg_set,
3620         range_overlaps_hard_reg_set_p, range_in_hard_reg_set_p): New
3621         static inline functions.
3622         * vec.h (FOR_EACH_VEC_ELT_FROM): New macro.
3623
3624         * bb-reorder.c (insert_section_boundary_note): Don't check
3625         optimize_function_for_speed_p.
3626         (gate_handle_partition_blocks): Do it here instead.
3627         (gate_handle_reorder_blocks): Move preliminary checks here ...
3628         (rest_of_handle_reorder_blocks): ... from here.
3629
3630 2011-09-07  Martin Jambor  <mjambor@suse.cz>
3631
3632         PR middle-end/50301
3633         * ipa-cp.c (find_more_values_for_callers_subset): Check jump
3634         function index bounds.
3635         (perhaps_add_new_callers): Likewise.
3636
3637 2011-09-07  Martin Jambor  <mjambor@suse.cz>
3638
3639         PR tree-optimization/49911
3640         * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
3641         enumerations to the corresponding plain integer type.
3642
3643 2011-09-07  Richard Guenther  <rguenther@suse.de>
3644
3645         PR tree-optimization/50319
3646         * tree-if-conv.c (set_bb_predicate): Assert we only set
3647         canonical predicates.
3648         (add_to_predicate_list): Simplify.  Allow TRUTH_NOT_EXPR
3649         around canonical predicates.
3650         (predicate_bbs): Do not re-gimplify already canonical
3651         predicates.  Properly unshare them though.
3652         (find_phi_replacement_condition): Simplify.
3653
3654 2011-09-07  Richard Sandiford  <richard.sandiford@linaro.org>
3655
3656         PR target/49030
3657         * config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
3658         * config/arm/arm.c (maybe_get_arm_condition_code): New function,
3659         reusing the old code from get_arm_condition_code.  Return ARM_NV
3660         for invalid comparison codes.
3661         (get_arm_condition_code): Redefine in terms of
3662         maybe_get_arm_condition_code.
3663         * config/arm/predicates.md (arm_comparison_operator): Use
3664         maybe_get_arm_condition_code.
3665
3666 2011-09-07  Richard Guenther  <rguenther@suse.de>
3667
3668         * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond):
3669         Canonicalize negated predicates by swapping edges.
3670         (forward_propagate_into_cond): Likewise.
3671
3672 2011-09-07  Richard Guenther  <rguenther@suse.de>
3673
3674         PR tree-optimization/50213
3675         * tree-flow.h (simple_iv_increment_p): Declare.
3676         * tree-ssa-dom.c (simple_iv_increment_p): Export.  Also handle
3677         POINTER_PLUS_EXPR.
3678         * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Do
3679         not propagate simple IV counter increments.
3680
3681 2011-09-07  Eric Botcazou  <ebotcazou@adacore.com>
3682             Iain Sandoe  <iains@gcc.gnu.org>
3683
3684         * config/rs6000/rs6000.c (compute_save_world_info): Test
3685         cfun->has_nonlocal_label to determine if the out-of-line save
3686         world call may be used.
3687
3688 2011-09-07  Nick Clifton  <nickc@redhat.com>
3689
3690         * config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Set the jump
3691         label on the parallel part of the insn.
3692
3693 2011-09-07  Jakub Jelinek  <jakub@redhat.com>
3694
3695         PR debug/50191
3696         * dwarf2out.c (mem_loc_descriptor) <case MEM>: Try
3697         avoid_constant_pool_reference first instead of last.
3698
3699 2011-09-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
3700
3701         * doc/configfiles.texi (Configuration Files): Update documentation
3702         about tm_p.h and remove FIXME comment.
3703
3704 2011-09-06  Uros Bizjak  <ubizjak@gmail.com>
3705
3706         * config/i386/i386.c (ix86_function_value_regno_p): Use AX_REG.
3707         (function_value_32): Do not check TARGET_MMX, TARGET_SSE or TARGET_AVX.
3708
3709 2011-09-06  Iain Sandoe  <iains@gcc.gnu.org>
3710
3711         * config/darwin10.h Remove duplicate LIB_SPEC.
3712
3713 2011-09-06  Enkovich Ilya  <ilya.enkovich@intel.com>
3714
3715         PR middle-end/44382
3716         * target.def (reassociation_width): New hook.
3717
3718         * doc/tm.texi.in (reassociation_width): Likewise.
3719
3720         * doc/tm.texi (reassociation_width): Likewise.
3721
3722         * doc/invoke.texi (tree-reassoc-width): New param documented.
3723
3724         * hooks.h (hook_int_uint_mode_1): New default hook.
3725
3726         * hooks.c (hook_int_uint_mode_1): Likewise.
3727
3728         * config/i386/i386.h (ix86_tune_indices): Add
3729         X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL.
3730
3731         (TARGET_REASSOC_INT_TO_PARALLEL): New.
3732         (TARGET_REASSOC_FP_TO_PARALLEL): Likewise.
3733
3734         * config/i386/i386.c (initial_ix86_tune_features): Add
3735         X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL.
3736
3737         (ix86_reassociation_width): New function.
3738
3739         * params.def (PARAM_TREE_REASSOC_WIDTH): New param added.
3740
3741         * tree-ssa-reassoc.c (get_required_cycles): New function.
3742         (get_reassociation_width): Likewise.
3743         (swap_ops_for_binary_stmt): Likewise.
3744         (rewrite_expr_tree_parallel): Likewise.
3745
3746         (rewrite_expr_tree): Refactored.  Part of code moved into
3747         swap_ops_for_binary_stmt.
3748
3749         (reassociate_bb): Now checks reassociation width to be used and
3750         call rewrite_expr_tree_parallel instead of rewrite_expr_tree if needed.
3751
3752 2011-09-06  Richard Guenther  <rguenther@suse.de>
3753
3754         PR tree-optimization/47025
3755         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): BUILT_IN_VA_END
3756         uses nothing.
3757         (call_may_clobber_ref_p_1): BUILT_IN_VA_END is a barrier like
3758         BUILT_IN_FREE.
3759         (stmt_kills_ref_p_1): BUILT_IN_VA_END kills what its argument
3760         definitely points to.
3761         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
3762         BUILT_IN_VA_START doesn't let its va_list argument escape.
3763         * tree-ssa-dce.c (propagate_necessity): BUILT_IN_VA_END does
3764         not make any previous stores necessary.
3765
3766 2011-09-06  Martin Jambor  <mjambor@suse.cz>
3767
3768         * ipa-inline.h (struct inline_summary): Move versionable flag...
3769         * cgraph.h (struct cgraph_local_info): ...here
3770         * ipa-cp.c (determine_versionability): Use the new versionable flag.
3771         (determine_versionability): Likewise.
3772         (ipcp_versionable_function_p): Likewise.
3773         (ipcp_generate_summary): Likewise.
3774         * ipa-inline-analysis.c (dump_inline_summary): Do not dump the
3775         versionable flag.
3776         (compute_inline_parameters): Do not clear the versionable flag.
3777         (inline_read_section): Do not stream the versionable flag.
3778         (inline_write_summary): Likewise.
3779         * lto-cgraph.c (lto_output_node): Stream the versionable flag.
3780         (input_overwrite_node): Likewise.
3781
3782 2011-09-06  Richard Guenther  <rguenther@suse.de>
3783
3784         PR tree-optimization/48149
3785         * tree-ssa-sccvn.c (vn_get_expr_for): Simplify.  Fix tuplification bug.
3786         (vn_valueize): Move earlier.
3787         (valueize_expr): Use vn_valueize.
3788         (simplify_binary_expression): Simplify, also combine COMPLEX_EXPR
3789         operands.
3790         (simplify_unary_expression): Simplify.
3791
3792 2011-09-06  Richard Guenther  <rguenther@suse.de>
3793
3794         PR tree-optimization/48317
3795         * tree-ssa-sccvn.h (struct vn_nary_op_s): Make op a true
3796         trailing array.
3797         (sizeof_vn_nary_op): New inline function.
3798         (vn_nary_op_lookup_pieces): Adjust.
3799         (vn_nary_op_insert_pieces): Likewise.
3800         * tree-ssa-sccvn.c (vn_nary_op_eq): Also compare the length.
3801         (init_vn_nary_op_from_pieces): Adjust signature.  Deal with
3802         any number of operands.
3803         (vn_nary_length_from_stmt): New function.
3804         (init_vn_nary_op_from_stmt): Adjust for CONSTRUCTOR handling.
3805         (vn_nary_op_lookup_pieces): Adjust signature and allocate properly
3806         sized temporary.
3807         (vn_nary_op_lookup): Likewise.
3808         (vn_nary_op_lookup_stmt): Likewise.
3809         (vn_nary_op_insert_into): Likewise.
3810         (vn_nary_op_insert_stmt): Likewise.
3811         (visit_use): Handle CONSTRUCTOR as nary.
3812         * tree-ssa-pre.c (phi_translate_1): Adjust.
3813         (create_expression_by_pieces): Likewise.
3814         (compute_avail): Likewise.
3815
3816 2011-09-06  Ira Rosen  <ira.rosen@linaro.org>
3817
3818          * config/arm/arm.c (arm_preferred_simd_mode): Check
3819         TARGET_NEON_VECTORIZE_DOUBLE instead of
3820         TARGET_NEON_VECTORIZE_QUAD.
3821         (arm_autovectorize_vector_sizes): Likewise.
3822         * config/arm/arm.opt (mvectorize-with-neon-quad): Make inverse
3823         mask of mvectorize-with-neon-double.  Add RejectNegative.
3824         (mvectorize-with-neon-double): New.
3825
3826 2011-09-06  Richard Guenther  <rguenther@suse.de>
3827
3828         * tree-ssa-sccvn.c (visit_use): CSE stmt pieces and simplify matching.
3829
3830 2011-09-06  Tom de Vries  <tom@codesourcery.com>
3831
3832         * recog.c (asm_labels_ok): New function.
3833         (check_asm_operands): Use asm_labels_ok.
3834
3835 2011-09-05  Richard Sandiford  <rdsandiford@googlemail.com>
3836
3837         PR target/49606
3838         * config/mips/mips.h (ABI_HAS_64BIT_SYMBOLS): Check Pmode.
3839         (PMODE_INSN): New macro.
3840         * config/mips/mips.c (gen_load_const_gp): Use PMODE_INSN.
3841         (mips_got_load, mips_expand_synci_loop): Likewise.
3842         (mips_save_gp_to_cprestore_slot): Handle SImode and DImode
3843         cprestore patterns.
3844         (mips_emit_loadgp): Use PMODE_INSN.  Handle SImode and DImode
3845         copygp_mips16 patterns.
3846         (mips_expand_prologue): Handle SImode and DImode potential_cprestore
3847         and use_cprestore patterns.
3848         (mips_override_options): Check for incompatible -mabi and -mlong
3849         combinations.
3850         * config/mips/mips.md (unspec_got<mode>): Rename to...
3851         (unspec_got_<mode>): ...this.
3852         (copygp_mips16): Use the Pmode iterator.
3853         (potential_cprestore, cprestore, use_cprestore): Likewise.
3854         (clear_cache, indirect_jump): Use PMODE_INSN.
3855         (indirect_jump<mode>): Rename to...
3856         (indirect_jump_<mode>): ...this.
3857         (tablejump): Use PMODE_INSN.
3858         (tablejump<mode>): Rename to...
3859         (tablejump_<mode>): ...this.
3860         (exception_receiver): Handle restore_gp_si and restore_gp_di.
3861         (restore_gp): Use the Pmode iterator.
3862         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Use
3863         PMODE_INSN.
3864
3865 2011-09-05  Richard Sandiford  <rdsandiford@googlemail.com>
3866
3867         * config/mips/mips.c (mips_gimplify_va_arg_expr): Unshare off.
3868         Fix the type of the BIT_AND_EXPR.
3869
3870 2011-09-05  David S. Miller  <davem@davemloft.net>
3871
3872         * config.host: Add driver-sparc.o and sparc/x-sparc on
3873         native sparc*-*-linux* builds.
3874         * config/sparc/driver-sparc.c: Correct Linux strings.
3875         * config/sparc/linux.h: Add DRIVER_SELF_SPECS.
3876         * config/sparc/linux64.h: Likewise.
3877         * doc/invoke.texi: Document that Linux also supports
3878         -mcpu=native and -mtune=native on sparc.
3879
3880         * config/sparc/sparc-opts.h (PROCESSOR_NIAGARA3,
3881         PROCESSOR_NIAGARA4): New.
3882         * config/sparc/sparc.opt: Handle new processor types.
3883         * config/sparc/sparc.md: Add to "cpu" attribute.
3884         * config/sparc/sparc.h (TARGET_CPU_niagara3,
3885         TARGET_CPU_niagara4): New, treat as niagara2.
3886         * config/sparc/linux64.h: Handle niagara3 and niagara4 like niagara2.
3887         * config/sparc/sol2.h: Likewise.
3888         * config/sparc/niagara2.md: Schedule niagara3 like niagara2.
3889         * config/sparc/sparc.c (sparc_option_override): Add
3890         niagara3 and niagara4 handling.
3891         (sparc32_initialize_trampoline): Likewise.
3892         (sparc64_initialize_trampoline): Likewise.
3893         (sparc_use_sched_lookahead): Likewise.
3894         (sparc_issue_rate): Likewise.
3895         (sparc_register_move_cost): Likewise.
3896         * config/sparc/driver-sparc.c (cpu_names): Use niagara3
3897         and niagara4 as appropriate.
3898         * doc/invoke.texi: Document new processor types.
3899         * config.gcc: Recognize niagara3 and niagara4 in --with-cpu
3900         and --with-tune options.
3901
3902         * config/sparc/sol2-64.h: Move ...
3903         * config/sparc/default-64.h: ... to here.  Update comment.
3904         * config.gcc: Update Solaris sparc to use default-64.h, also
3905         prefix this header into the list on sparc64-*-linux.
3906         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if
3907         TARGET_64BIT_DEFAULT is defined.  Remove commented out reference
3908         to MASK_HARD_QUAD.
3909
3910 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
3911
3912         PR target/50289
3913         * config/avr/avr.c (sequent_regs_live): Don't recognize sequences
3914         that contain global register variable.
3915
3916 2011-09-05  Richard Guenther  <rguenther@suse.de>
3917
3918         * tree-cfg.c (replace_uses_by): Use fold_stmt, not fold_stmt_inplace.
3919
3920 2011-09-05  Richard Guenther  <rguenther@suse.de>
3921
3922         * stor-layout.c (layout_type): Use size_binop for array size
3923         calculations.
3924
3925 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
3926
3927         * config/avr/avr.h (progmem_section): Remove Declaration.
3928         * config/avr/avr.c (progmem_section): Make static and rename to
3929         progmem_swtable_section.
3930         (avr_output_addr_vec_elt): No need to switch sections.
3931         (avr_asm_init_sections): Use output_section_asm_op as section
3932         callback for progmem_swtable_section.
3933         (avr_output_progmem_section_asm_op): Remove Function.
3934         (TARGET_ASM_FUNCTION_RODATA_SECTION): New Define.
3935         (avr_asm_function_rodata_section): New static Function.
3936         * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Output
3937         alignment 2**1 for jump tables.
3938
3939 2011-09-04  Jan Hubicka  <jh@suse.cz>
3940
3941         * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Check that
3942         parameter is SSA name.
3943
3944 2011-09-04  Richard Guenther  <rguenther@suse.de>
3945
3946         Revert
3947         2011-08-31  Richard Guenther  <rguenther@suse.de>
3948
3949         * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
3950         special-casing.
3951
3952 2011-09-04  Iain Sandoe  <iains@gcc.gnu.org>
3953
3954         PR debug/49901
3955         * config/darwin.h (DEBUG_MACRO_SECTION): New macro.
3956
3957 2011-09-04  Jakub Jelinek  <jakub@redhat.com>
3958             Ira Rosen  <ira.rosen@linaro.org>
3959
3960         PR tree-optimization/50208
3961         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add an
3962         argument.  Check that def_stmt is inside the loop.
3963         (vect_recog_widen_mult_pattern): Update calls to
3964         vect_handle_widen_mult_by_cons.
3965         (vect_operation_fits_smaller_type): Check that def_stmt is
3966         inside the loop.
3967
3968 2011-09-04  Ira Rosen  <ira.rosen@linaro.org>
3969
3970         * tree-vectorizer.c (vect_print_dump_info): Print line
3971         number when dumping to a file.
3972         (vectorize_loops): Add new messages to dump file.
3973
3974 2011-09-03  Martin Jambor  <mjambor@suse.cz>
3975
3976         * ipa-prop.h (ipa_jump_func_t): New typedef.
3977         (struct ipa_edge_args): Removed field argument_count, field
3978         jump_functions turned into a vector.
3979         (ipa_set_cs_argument_count): Removed.
3980         (ipa_get_cs_argument_count): Updated to work on vectors.
3981         (ipa_get_ith_jump_func): Likewise.
3982         * ipa-prop.c (ipa_count_arguments): Removed.
3983         (compute_scalar_jump_functions): Use ipa_get_ith_jump_func to access
3984         jump functions.  Update caller.
3985         (compute_pass_through_member_ptrs): Likewise.
3986         (compute_cst_member_ptr_arguments): Likewise.
3987         (ipa_compute_jump_functions_for_edge): Get number of arguments from
3988         the statement, allocate vector.
3989         (ipa_compute_jump_functions): Do not call ipa_count_arguments.
3990         (duplicate_ipa_jump_func_array): Removed.
3991         (ipa_edge_duplication_hook): Use VEC_copy, do not copy argument count.
3992         (ipa_read_node_info): Allocate vector.
3993
3994 2011-09-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3995
3996         PR middle-end/50232
3997         * config/pa/pa.md (return): Define "return" insn pattern.
3998         (epilogue): Use it when no epilogue is needed.