OSDN Git Service

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