OSDN Git Service

71a8d88d7a128d6f029a6d5d521c1e041e82da99
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
2
3         * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
4         * config/avr/avr.c (avr_out_compare): Print shorter sequence for
5         EQ/NE comparisons against +/-1 in the case of unused-after,
6         non-ld-regs target.
7
8 2011-09-26  Jakub Jelinek  <jakub@redhat.com>
9
10         * gimple-fold.c (gimplify_and_update_call_from_tree): Set
11         gctx.into_ssa after push_gimplify_context.
12
13         * gimple.c (gimple_build_call_valist): New function.
14         * gimple.h (gimple_build_call_valist): New prototype.
15         * tree-ssa-propagate.c (finish_update_gimple_call): New function.
16         (update_gimple_call): Likewise.
17         (update_call_from_tree): Use finish_update_gimple_call.
18         * tree-ssa-propagate.h (update_gimple_call): New prototype.
19
20 2011-09-26  Richard Guenther  <rguenther@suse.de>
21
22         PR tree-optimization/50472
23         * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
24         volatile references.
25
26 2011-09-26  Bingfeng Mei <bmei@broadcom.com>
27
28         * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
29         * target.def: (addr_space_subset_p): Likewise.
30
31 2011-09-26  Tom de Vries  <tom@codesourcery.com>
32
33         * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
34         * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
35         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
36         of new var.
37
38 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
39
40         PR target/50465
41         * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
42         * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
43         output_reload_insisf.
44         (adjust_len): Set default to "no".
45         Remove alternative "yes".  Add alternatives: "mov8", "mov16",
46         "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
47         "lshrhi", "ashlsi, "ashrsi", "lshrsi".
48         (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
49         *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
50         *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
51         *lshrsi3_const): Set attribute "adjust_len".
52         * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
53         (output_movsisf): Don't pass insn to output_reload_insisf.
54         (adjust_insn_length): Handle new alternatives to adjust_len.
55         Remove handling of ADJUST_LEN_YES.  Clean-up code.
56
57 2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>
58
59         * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
60         may_trap_p to detect loads that may trap of fault.
61
62 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
63
64         * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
65         * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
66         (*reload_inhi): Use it.  Adapt call to output_reload_inhi to new
67         prototype.
68         (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
69         * config/avr/avr.c: Rename output_reload_insisf_1 to
70         output_reload_in_const.
71         (avr_popcount_each_byte): Handle SFmode, too.
72         (output_reload_in_const): Change so it can handle HI loads, too.
73         Use avr_popcount_each_byte to work out if scratch register must be
74         created on the fly.
75         (output_reload_inhi): Rewrite using output_reload_in_const and...
76         (output_movhi): ...use it to print constants' loads.
77         (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
78
79 2011-09-25  David S. Miller  <davem@davemloft.net>
80
81         * config/sparc/constraints.md (C, P, Z): New constraints for
82         const_doube, const_int, and const_vector "all ones" values.
83         Make unused constraint letters comment match reality.
84         * config/sparc/predicates.md (const_all_ones_operand,
85         register_or_zero_or_all_ones_operand): New predicates.
86         * config/sparc/sparc.c (sparc_expand_move): Allow all ones
87         as well as zero constants when VIS.
88         (sparc_legitimate_constant_p): Likewise.
89         * config/sparc/sparc.md (movsi_insn): Add fones alternative.
90         (movsf_insn): Likewise
91         (movdi_insn_sp64): Add fone alternative.
92         (movdf_insn_sp32_v9): Likewise.
93         (movdf_insn_sp64): Likewise.
94
95         * configure.ac: Add feature check to make sure the assembler
96         supports the FMAF, HPC, and VIS 3.0 instructions found on
97         Niagara-3 and later cpus.
98         * configure: Rebuild.
99         * config.in: Likewise.
100         * config/sparc/sparc.opt: New option '-mfmaf'.
101         * config/sparc/sparc.md: Add float fused multiply-add patterns.
102         * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
103         (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
104         * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
105         ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
106         * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
107         by default for Niagara-3 and later.  Turn it off if TARGET_FPU is
108         disabled.
109         (sparc_rtx_costs): Handle 'FMA'.
110         * doc/invoke.texi: Document -mfmaf.
111
112 2011-09-25  Jakub Jelinek  <jakub@redhat.com>
113
114         * tree-ssa-structalias.c (intra_create_variable_infos): Treat
115         TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
116         DECL_BY_REFERENCE parameters.
117
118 2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>
119
120         * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
121         if there is no outgoing edge.
122
123         * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
124         integral types.
125
126 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
127
128         * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
129         of vect_analyze_bb here.
130         (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
131
132 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
133
134         * tree-data-ref.c (dr_analyze_innermost): Add new argument.
135         Allow not simple iv if analyzing basic block.
136         (create_data_ref): Update call to dr_analyze_innermost.
137         (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
138         * tree-loop-distribution.c (generate_memset_zero): Likewise.
139         * tree-predcom.c (find_looparound_phi): Likewise.
140         * tree-data-ref.h (dr_analyze_innermost): Add new argument.
141
142 2011-09-24  David S. Miller  <davem@davemloft.net>
143
144         * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
145         (SPARC_GSR_REG): Define.
146         (FIXED_REGISTERS): Mark GSR as fixed.
147         (CALL_USED_REGISTERS): Mark GSR as call used.
148         (HARD_REGNO_NREGS): GSR is always 1 register.
149         (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
150         (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
151         (REGISTER_NAMES): Add "%gsr".
152         * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL):
153         Delete.
154         (UNSPEC_WRGSR): New unspec.
155         (GSR_REG): New constant.
156         (type): Add new insn type 'gsr'.
157         (fpack16_vis, fpackfix_vis, fpack32_vis,
158         faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
159         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
160         rdgsr_v8plus): New expanders and insns.
161         (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
162         using patterns which show that this is a plus in addition to a
163         modification of GSR_REG, instead of an unspec.
164         * config/sparc/ultra1_2.md: Handle 'gsr'.
165         * config/sparc/ultra3.md: Likewise.
166         * config/sparc/niagara.md: Likewise.
167         * config/sparc/niagara2.md: Likewise.
168         * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
169         end of table.
170         (sparc_option_override): Make -mvis imply -mv8plus.
171         (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
172         for %gsr.
173         (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
174         __builtin_vis_read_gsr.
175         (sparc_expand_buildin): Handle builtins that take one argument and
176         return void.
177         (sparc_fold_builtin): Never fold writes to %gsr.
178         * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
179         * doc/extend.texi: Document new VIS intrinsics.
180
181 2011-09-23  Jan Hubicka  <jh@suse.cz>
182
183         * ipa-inline-transform.c (inline_call): Add comment.
184         * ipa-inline.h (inline_param_summary): New structure and vector.
185         (struct inline_edge_summary): Add param field.
186         * ipa-inline-analysis.c (CHANGED): New constant.
187         (add_clause): Handle CHANGED and NOT_CONSTANT.
188         (predicate_probability): New function.
189         (dump_condition): Dump CHANGED predicate.
190         (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
191         of unknown function wide invariant.
192         (evaluate_conditions_for_edge): Handle change probabilities.
193         (inline_edge_duplication_hook): Copy param summaries.
194         (inline_edge_removal_hook): Free param summaries.
195         (dump_inline_edge_summary): Fix dumping of indirect edges and callee sizes;
196         dump param summaries.
197         (will_be_nonconstant_predicate): Use CHANGED predicate.
198         (record_modified_bb_info): New structure.
199         (record_modified): New function.
200         (param_change_prob): New function.
201         (estimate_function_body_sizes): Compute param summaries.
202         (estimate_edge_size_and_time): Add probability argument.
203         (estimate_node_size_and_time): Add inline_param_summary argument;
204         handle predicate probabilities.
205         (remap_predicate): Fix formating.
206         (remap_edge_change_prob): New function.
207         (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
208         (remap_edge_predicates): ... this one.
209         (inline_merge_summary): Remap edge summaries; handle predicate probabilities;
210         remove param summaries after we are done.
211         (do_estimate_edge_time): Update.
212         (do_estimate_edge_growth): Update.
213         (read_inline_edge_summary): Read param info.
214         (inline_read_summary): Fix formating.
215         (write_inline_edge_summary): Write param summaries.
216
217 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
218
219         * config/i386/i386.c (ix86_print_operand): Handle %~.
220         (ix86_print_operand_punct_valid_p): Return true also for '~'.
221         * config/i386/sse.md (i128): New mode_attr.
222         (vec_extract_hi_<mode>, vec_extract_hi_<mode>,
223         avx_vbroadcastf128_<mode>, *avx_vperm2f128<mode>_full,
224         *avx_vperm2f128<mode>_nozero, vec_set_lo_<mode>, 
225         vec_set_hi_<mode>, *vec_concat<mode>_avx): Use <i128> in the
226         patterns, use "<sseinsnmode>" for "mode" attribute.
227         (vec_extract_hi_v16hi, vec_extract_hi_v32qi, vec_set_lo_v16hi,
228         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Use
229         %~128 in the patterns, use "OI" for "mode" attribute.
230
231 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
232
233         PR target/50447
234         * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
235         "tstsi", "compare".
236         (*cmpqi_sign_extend): Use s8_operand.
237         (*cmphi, *cmpsi): Rewrite using avr_out_compare.
238         * config/avr/avr-protos.h (compare_diff_p, compare_eq_p): Remove
239         prototypes.
240         (out_tsthi, out_tstsi): Remove prototypes.
241         (avr_out_tsthi, avr_out_tstsi): New prototypes.
242         * config/avr/avr.c (out_tsthi, out_tstsi): Remove functions.
243         (avr_asm_len): Negative length now sets *plen to -length.
244         (compare_sign_p): Return bool instead of int.
245         (compare_diff_p, compare_eq_p): Ditto and make static.
246         (avr_out_tsthi): New function.
247         (avr_out_tstsi): New function.
248         (avr_out_compare): New function.
249         (adjust_insn_length): Handle ADJUST_LEN_TSTHI, ADJUST_LEN_TSTSI,
250         ADJUST_LEN_COMPARE.
251
252 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
253
254         PR target/50447
255         * config/avr/avr.md: (adjust_len): Add alternative "out_plus".
256         (addsi3): Rewrite using QI scratch register.  Adjust text
257         peepholes using plus:SI.
258         (*addsi3_zero_extend.hi): New insn.
259         (*subsi3_zero_extend.hi): New insn.
260         (*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
261         (*subsi3_zero_extend): Ditto.
262         (subsi3): Change predicate #2 to register_operand.
263         * config/avr/avr-protos.h (avr_out_plus): New prototype.
264         (avr_out_plus_1): New static function.
265         (avr_out_plus): New function.
266         (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
267
268 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
269
270         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): For
271         GE/GT/UNLE/UNLT swap arguments and condition even for TARGET_AVX.
272
273 2011-09-23  Ian Lance Taylor  <iant@google.com>
274
275         * godump.c (go_define): Treat a single character in single quotes,
276         or a string, as an operand.
277
278 2011-09-23  Martin Jambor  <mjambor@suse.cz>
279
280         * ipa-prop.h (jump_func_type): Updated comments.
281         (ipa_known_type_data): New type.
282         (ipa_jump_func): Use it to describe known type jump functions.
283         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Updated to
284         reflect the new known type jump function contents.
285         (compute_known_type_jump_func): Likewise.
286         (combine_known_type_and_ancestor_jfs): Likewise.
287         (try_make_edge_direct_virtual_call): Likewise.
288         (ipa_write_jump_function): Likewise.
289         (ipa_read_jump_function): Likewise.
290         * ipa-cp.c (ipa_value_from_known_type_jfunc): New function.
291         (ipa_value_from_jfunc): Use ipa_value_from_known_type_jfunc.
292         (propagate_accross_jump_function): Likewise.
293
294 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
295
296         PR target/50446
297         * config/avr/avr.md (rotlqi3): Support all offsets 0..7.
298         (rotlqi3_4): Turn insn into expander.
299         (*rotlqi3): New insn.
300         (rotlhi3, rotlsi3): Support rotate left/right by 1.
301         (*rotlhi2.1, *rotlhi2.15): New insns.
302         (*rotlsi2.1, *rotlsi2.31): New insns.
303         * config/avr/constraints.md (C03, C05, C06, C07): New constraints.
304
305 2011-09-23  Bin Cheng  <bin.cheng@arm.com>
306
307         * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch 
308         and processors.
309
310 2011-09-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
311
312         * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
313
314 2011-09-22  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
315
316         * reload.c (find_reloads): Set operand_mode to Pmode for address
317         operands consisting of just a CONST_INT.
318
319 2011-09-22  Uros Bizjak  <ubizjak@gmail.com>
320
321         PR target/50482
322         * config/i386/i386.c (ix86_expand_sse_movcc): When generating
323         blendv, force op_true to register if it doesn't satisfy
324         nonimmediate_operand predicate.
325
326 2011-09-22  Richard Sandiford  <rdsandiford@googlemail.com>
327
328         PR middle-end/50113
329         PR middle-end/50061
330         * calls.c (emit_library_call_value_1): Use BLOCK_REG_PADDING to
331         get the locate.where_pad value for register-only arguments.
332         * config/arm/arm.c (arm_pad_arg_upward): Remove HFmode handling.
333         (arm_pad_reg_upward): Handle null types.
334
335 2011-09-22  Jan Hubicka  <jh@suse.cz>
336
337         * ipa-inline-analysis.c: Fix overly long lines.
338
339 2011-09-22  Jan Hubicka  <jh@suse.cz>
340
341         * ipa-inline-transform.c (inline_call): Always update jump functions
342         after inlining.
343         * ipa-inline.c (ipa_inline): Likewise; do not call
344         ipa_create_all_structures_for_iinln.
345         (ipa_inline): Always free jump functions.
346         * ipa-inline-analysis.c (evaluate_conditions_for_edge): Remove hack.
347         (remap_edge_predicates): Fix pasto.
348         (inline_merge_summary): Remove nlined edge predicate; remove hack.
349         (inline_analyze_function): Always initialize jump functions.
350         (inline_generate_summary): Likewise.
351         (inline_write_summary): Always write jump functions when ipa-cp
352         is not doing that.
353         (inline_read_summary): Always read jump functions when ipa-cp
354         is not doing that.
355         * ipa-prop.c (iinlining_processed_edges): Remove.
356         (update_indirect_edges_after_inlining): Do not use
357         iinlining_processed_edges; instead set param_index to -1.
358         (propagate_info_to_inlined_callees): Only try to indirect inlining
359         when asked to do so; update jump functions of indirect calls, too;
360         remove jump functions of the inlined edge.
361         (ipa_edge_duplication_hook): Do not copy iinlining_processed_edges.
362         (ipa_create_all_structures_for_iinln): Remove.
363         (ipa_free_all_structures_after_iinln): Do not free
364         iinlining_processed_edges.
365         * ipa-prop.h (ipa_create_all_structures_for_iinln): Remove.
366
367 2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
368
369         * config/arm/predicates.md (expandable_comparison_operator): New
370         predicate, extracted from...
371         (arm_comparison_operator): ...here.
372         * config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
373         (cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
374         (movdfcc): Use expandable_comparison_operator.
375
376 2011-09-22  Georg-Johann Lay  <avr@gjlay.de>
377
378         PR target/50447
379         PR target/50465
380         * config/avr/avr-protos.h (avr_out_bitop): New prototype.
381         (avr_popcount_each_byte): New prototype.
382         * config/avr/avr.c (avr_popcount): New static function.
383         (avr_popcount_each_byte): New function.
384         (avr_out_bitop): New function.
385         (adjust_insn_length): ADJUST_LEN_OUT_BITOP dispatches to
386         avr_out_bitop.  Cleanup code.
387         * config/avr/constraints.md (Ca2, Co2, Cx2): New constraints.
388         (Ca4, Co4, Cx4): New constraints.
389         * config/avr/avr.md (adjust_len): Add "out_bitop" insn attribute
390         alternative.
391         (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
392         (andsi3, iorsi3, xorsi3): Ditto.
393         (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
394
395 2011-09-22  Ira Rosen  <ira.rosen@linaro.org>
396
397         PR tree-optimization/50451
398         * tree-vect-slp.c (vect_get_constant_vectors): Don't fail for
399         constant operands in reduction.
400         (vect_get_slp_defs): Don't create vector operand for NULL scalar
401         operand.
402
403 2011-09-22  David S. Miller  <davem@davemloft.net>
404
405         * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
406         fpack16, fpack32, fpackfix as const.
407
408         * config/sparc/sparc.md (G[0-7]_REG, O[0-7]_REG, L[0-7]_REG,
409         I[0-7]_REG, F[0-62]_REG, FCC[0-3]_REG, CC_REG, SFP_REG): New
410         constants.  Use them everywhere.
411
412 2011-09-22  Oleg Endo  <oleg.endo@t-online.de>
413
414         * config/sh/sh.c (andcosts): Renamed to and_xor_ior_costs.
415         Added AND special case.  Adapted comments.
416         (sh_rtx_costs): Added XOR and IOR case.
417
418 2011-09-21  Jan Hubicka  <jh@suse.cz>
419
420         * ipa-inline-analsis.c (compute_inline_parameters): Set
421         cfun and current_function_decl.
422
423 2011-09-21  Jan Hubicka  <jh@suse.cz>
424
425         * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Allow
426         handled components in parameter of builtin_constant_p.
427         (will_be_nonconstant_predicate): Allow loads of non-SSA parameters.
428
429 2011-09-21  Jan Hubicka  <jh@suse.cz>
430
431         * ipa-inline.c (relative_time_benefit): Fix wrong bracketting.
432         * ipa-inline.h (estimate_edge_time): Fix pasto.
433         * ipa-inline-analysis.c (do_estiamte_edge_time): Remove capping.
434
435 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
436
437         * config/i386/i386.c (ix86_expand_sse_movcc): Use
438         blendvps, blendvpd and pblendvb if possible.
439
440 2011-09-21  Uros Bizjak  <ubizjak@gmail.com>
441
442         PR target/50464
443         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
444         operand 1 predicate to register_operand and operand 2 predicate
445         to nonimmediate_operand.
446         * config/i386/i386.c (ix86_expand_sse_movcc): When generating
447         xop_pcmov, force op_true to register.  Also, force op_false to
448         register if it doesn't satisfy nonimmediate_operand predicate.
449
450 2011-09-21  Kirill Yukhin  <kirill.yukhin@intel.com>
451
452         * config/i386/bmi2intrin.h (_mulx_u64): New.
453         (_mulx_u32): Ditto.
454
455 2011-09-21  Jan Hubicka  <jh@suse.cz>
456
457         PR tree-optimization/50433
458         * ipa-inline-analysis.c (eliminated_by_inlining_prob):
459         Use get_base_address.
460
461 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
462
463         * config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
464         nonimmediate_operand instead of register_operand predicate for operands
465         1 and 2, force them into registers if expanding them as comparison.
466         (<code><mode>3 umaxmin:VI124_128 expander): Similarly.  For UMAX
467         V8HImode force into register just operand 1.
468
469 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
470
471         PR target/45099
472         * config/avr/avr.c (avr_function_arg_advance): Change error to
473         warning if a fixed register is needed as function argument.
474
475 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
476
477         PR target/50449
478         PR target/50465
479         * config/avr/avr.md (adjust_len): New insn attribute.
480         (*reload_insi, *reload_insf): Use it.
481         (*movsi, *movsf): Use new interface of output_movsisf.
482         * config/avr/avr-protos.h (output_movsisf): Change prototype.
483         * config/avr/avr.c (output_movsisf): Ditto.
484         (adjust_insn_length): Use insn attribute "adjust_len" to adjust
485         lengths of insns *reload_insi, *reload_insf.
486         (output_reload_insisf_1): New static function.
487         (output_reload_insisf): Use it.
488
489 2011-09-21  David S. Miller  <davem@davemloft.net>
490
491         * config/sparc/sparc.c (def_builtin): Change from macro into function.
492         (def_builtin_const): New.
493         (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
494         other than alignaddr and falignaddr.
495
496         * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE, UNSPEC_FCMPGT,
497         UNSPEC_FCMPEQ): New unspec codes.
498         (fcmple16_vis, fcmple32_vis, fcmpne16_vis, fcmpne32_vis, fcmpgt16_vis,
499         fcmpgt32_vis, fcmpeq16_vis, fcmpeq32_vis): New patterns.
500         * config/sparc/sparc.c (sparc_vis_init_builtins): Create builtins for
501         new pixel compare VIS patterns.
502         * config/sparc/visintrin.h (__vis_fcmple16, __vis_fcmple32,
503         __vis_fcmpne16, __vis_fcmpne32, __vis_fcmpgt16, __vis_fcmpgt32,
504         __vis_fcmpeq16, __vis_fcmpeq32): New.
505         * doc/extend.texi: Document new pixel compare VIS intrinsics.
506
507 2011-09-21  Tom de Vries  <tom@codesourcery.com>
508
509         * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
510
511 2011-09-20  David S. Miller  <davem@davemloft.net>
512
513         * config/sparc/sparc.md (UNSPEC_ALIGNADDRL): New unspec.
514         (aligneddrl<P:mode>_vis): New pattern.
515         (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
516         edge32l_vis): Adjust to take Pmode arguments, and return SImode.
517         * config/sparc/sparc.c (sparc_vis_init_builtins): Handle new
518         alignaddrl insn, and adjust edge operations for updated types.
519         * config/sparc/visintrin.h: Likewise.
520         * doc/extend.texi: Make typing in VIS documentation match reality.
521
522 2011-09-20  Terry Guo  <terry.guo@arm.com>
523
524         * config/arm/arm-arches.def: Add armv6s-m.
525         * config/arm/arm-tables.opt: Regenerate.
526
527 2011-09-20  Wei Guozhi  <carrot@google.com>
528
529         PR rtl-optimization/49452
530         * postreload.c (reload_combine): Invalidate use information when across
531         volatile insn.
532
533 2011-09-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
534
535         * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
536         Remove maintenance overhead.
537         (haifa_sched_init, sched_finish): Update.
538
539 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
540
541         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
542         to calculate unit, prefix_rep and prefix_data16 attributes.
543         (*mov<mode>_internal): Ditto for unit attribute.
544         (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
545         (*movv2sf_internal): Ditto.
546         * config/i386/sse.md (VI1248_256): Remove mode iterator.
547         (avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
548         (*avx2_eq<mode>3): Ditto.
549         (avx2_gt<mode>3): Ditto.
550
551 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
552
553         * config/i386/i386.md (maxmin): New code iterator.
554         * config/i386/sse.md (<maxmin:code><mode>3): Macroize expander
555         from <umaxmin:code><mode>3 and <smaxmin:code><mode>3 using maxmin
556         code iterator.
557         (*avx2_<maxmin:code><mode>3): Macroize isn from
558         *avx2_<umaxmin:code><mode>3 and *avx2_<smaxmin:code><mode>3 using
559         maxmin code iterator.
560         (<smaxmin:code><VI124_128:mode>3): Merge with <smaxmin:code>v8hi3.
561         (<umaxmin:code><VI124_128:mode>3): Merge with umaxv4si3 and
562         <umaxmin:code>v16qi3.
563
564 2011-09-19  Alan Modra  <amodra@gmail.com>
565             Michael Meissner  <meissner@linux.vnet.ibm.com>
566
567         PR target/50341
568         * config/rs6000/rs6000.md (call_indirect_aix<ptrsize>): Do not
569         split the load of the indirect function's TOC from the call to
570         prevent the compiler from moving the load of the new TOC above
571         code that references the current function's TOC.
572         (call_indirect_aix<ptrsize>_internal): Ditto.
573         (call_indirect_aix<ptrsize>_nor11): Ditto.
574         (call_indirect_aix<ptrsize>_internal2): Ditto.
575         (call_value_indirect_aix<ptrsize>): Ditto.
576         (call_value_indirect_aix<ptrsize>_internal): Ditto.
577         (call_value_indirect_aix<ptrsize>_nor11): Ditto.
578         (call_value_indirect_aix<ptrsize>_internal2): Ditto.
579
580 2011-09-19  Jakub Jelinek  <jakub@redhat.com>
581
582         * config/i386/sse.md (*sse4_1_extractps): Change into
583         define_insn_and_split, add =x 0 n and =x x n alternatives
584         and split them after reload.
585
586 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
587
588         * tree.h (TREE_NOT_CHECK4): Rename from bogus NON_TREE_CHECK4.
589
590 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
591
592         * emit-rtl.c (copy_insn_1): Do not copy DEBUG_EXPRs.
593
594 2011-09-19  Ira Rosen  <ira.rosen@linaro.org>
595
596         PR tree-optimization/50413
597         * tree-vect-data-refs.c (vect_analyze_data_refs): Fail to vectorize
598         a basic block if one of its data-refs can't be analyzed.
599
600 2011-09-19  Paul Brook  <paul@codesourcery.com>
601
602         * config/arm/predicates.md (shift_amount_operand): Check constant
603         shift count is in range.
604         (const_shift_operand): Remove.
605
606 2011-09-18  Eric Botcazou  <ebotcazou@adacore.com>
607             Iain Sandoe  <developer@sandoe-acoustics.co.uk>
608
609         PR target/50091
610         * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
611         * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
612
613 2011-09-18  H.J. Lu  <hongjiu.lu@intel.com>
614
615         * config/i386/bmiintrin.h: Remove tmp.
616         * config/i386/tbmintrin.h: Likewise.
617
618 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
619
620         PR tree-optimization/50414
621         * tree-vect-slp.c (vect_get_constant_vectors): Handle MAX_EXPR and
622         MIN_EXPR.
623
624 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
625
626         PR tree-optimization/50412
627         * tree-vect-data-refs.c (vect_analyze_group_access): Fail for
628         acceses that require epilogue loop if vectorizing outer loop.
629
630 2011-09-17  David S. Miller  <davem@davemloft.net>
631
632         * config/sparc/sparc.md (UNSPEC_EDGE8, UNSPEC_EDGE8L,
633         UNSPEC_EDGE16, UNSPEC_EDGE16L, UNSPEC_EDGE32, UNSPEC_EDGE32L):
634         New unspecs.
635         (define_attr type): New type 'edge'.
636         (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
637         edge32l_vis): New patterns.
638         * config/sparc/ultra1_2.md: Add insn reservation for 'edge'.
639         * config/sparc/ultra3.md: Likewise.
640         * config/sparc/niagara.md: Likewise.
641         * config/sparc/niagara2.md: Likewise.
642         * config/sparc/sparc.d (sparc_vis_init_builtins): Generate
643         builtins for VIS edge instructions.
644         * config/sparc/visintrin.h (__vis_edge8, __vis_edge8l)
645         (__vis_edge16, __vis_edge16l, __vis_edge32, __vis_edge32l): New
646         intrinsics.
647         (__v8qi, __v4qi): Make unsigned.
648         (__vis_faligndatadi, ___vis_faligndatav2si, __vis_faligndatav4hi,
649         __vis_faligndatav8qi, __vis_fmul8x16au, __vis_fmul8x16al,
650         __vis_fpack32): Fix types.
651         * doc/extend.texi: Document new 'edge' VIS intrinsics.
652
653         * gcc/config/sparc/sparc.c (niagara2_costs): Adjust integer
654         divide costs.
655         (niagara3_costs): New.
656         (sparc_option_override): Use it.
657         * gcc/config/sparc/niagara2.md: Adjust with more accurate
658         Niagara-3 reservations.
659
660 2011-09-17  Jakub Jelinek  <jakub@redhat.com>
661
662         * config/i386/sse.md (VIMAX_AVX2): Change V4DI to V2TI.
663         (sse2_avx, sseinsnmode): Add V2TI.
664         (REDUC_SMINMAX_MODE): New mode iterator.
665         (reduc_smax_v4sf, reduc_smin_v4sf, reduc_smax_v8sf,
666         reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df): Remove.
667         (reduc_<code>_<mode>): New smaxmin and umaxmin expanders.
668         (sse2_lshrv1ti3): Rename to...
669         (<sse2_avx2>_lshr<mode>3): ... this.  Use VIMAX_AVX2 mode
670         iterator.  Move before umaxmin expanders.
671         * config/i386/i386.h (VALID_AVX256_REG_MODE,
672         SSE_REG_MODE_P): Accept V2TImode.
673         * config/i386/i386.c (ix86_expand_reduc): Handle V32QImode,
674         V16HImode, V8SImode and V4DImode.
675
676         * config/i386/i386.c (ix86_build_const_vector): Handle V8SImode
677         and V4DImode.
678         (ix86_build_signbit_mask): Likewise.
679         (ix86_expand_int_vcond): Likewise.  Handle V16HImode and V32QImode.
680         (bdesc_args): Use CODE_FOR_{s,u}m{ax,in}v{32q,16h,8s}i3
681         instead of CODE_FOR_avx2_{s,u}m{ax,in}v{32q,16h,8s}i3.
682         * config/i386/sse.md (avx2_<code><mode>3 umaxmin expand): Rename to...
683         (<code><mode>3) ... this.
684         (avx2_<code><mode>3 smaxmin expand): Rename to...
685         (<code><mode>3) ... this.
686         (smax<mode>3, smin<mode>3): Macroize using smaxmin code iterator.
687         (smaxv2di3, sminv2di3): Macroize using smaxmin code iterator and
688         VI8_AVX2 mode iterator.
689         (umaxv2di3, uminv2di3): Macroize using umaxmin code iterator and
690         VI8_AVX2 mode iterator.
691         (vcond<V_256:mode><VI_256:mode>, vcondu<V_256:mode><VI_256:mode>):
692         New expanders.
693
694 2011-09-17  Richard Sandiford  <rdsandiford@googlemail.com>
695
696         * config/ia64/itanium2.md: Use match_test rather than eq/ne symbol_ref
697         throughout file.
698
699 2011-09-16  David S. Miller  <davem@davemloft.net>
700
701         * config/sparc/visintrin.h: New file.
702         * config.gcc: Add it to extra_headers on sparc.
703
704 2011-09-16  Jakub Jelinek  <jakub@redhat.com>
705
706         * config/i386/i386.c (ix86_expand_reduc_v4sf): Rename to ...
707         (ix86_expand_reduc): ... this.  Handle also V8SFmode and V4DFmode.
708         * config/i386/sse.md (reduc_splus_v4sf, reduc_smax_v4sf,
709         reduc_smin_v4sf): Adjust callers.
710         (reduc_smax_v8sf, reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df):
711         New expanders.
712
713         * config/i386/sse.md (vec_extract_hi_<mode>,
714         vec_extract_hi_v16hi, vec_extract_hi_v32qi): Use
715         vextracti128 instead of vextractf128 for -mavx2 and
716         integer vectors.  For V4DFmode fix up mode attribute.
717         (VEC_EXTRACT_MODE): For TARGET_AVX add 32-byte vectors.
718         (vec_set_lo_<mode>, vec_set_hi_<mode>): For VI8F_256 modes use V4DF
719         instead of V8SF mode attribute.
720         (avx2_extracti128): Change into define_expand.
721         * config/i386/i386.c (ix86_expand_vector_extract): Handle
722         32-byte vector modes if TARGET_AVX.
723
724 2011-09-16  Georg-Johann Lay  <avr@gjlay.de>
725
726         * config/avr/avr.md: (umulqihi3, mulqihi3): Write as one pattern.
727         (umulqi3_highpart, smulqi3_highpart): Ditto.
728         (*maddqihi4.const, *umaddqihi4.uconst): Ditto.
729         (*msubqihi4.const, *umsubqihi4.uconst): Ditto.
730         (*muluqihi3.uconst, *mulsqihi3.sconst): Ditto.
731
732 2011-09-16  Georg-Johann Lay  <avr@gjlay.de>
733
734         PR target/50358
735         * config/avr/avr.md (*ashiftqihi2.signx.1): New insn.
736         (*maddqi4, *maddqi4.const): New insns.
737         (*msubqi4, *msubqi4.const): New insns.
738         * config/avr/avr.c (avr_rtx_costs): Record costs of above in cases
739         PLUS:QI and MINUS:QI.  Increase costs of multiply-add/-sub for
740         HImode by 1 in the case of multiplying with a CONST_INT.
741         Record cost of *ashiftqihi2.signx.1 in case ASHIFT:QI.
742
743 2011-09-15   Jan Hubicka  <jh@suse.cz>
744
745         PR lto/50430
746         * gimple-fold.c (gimple_get_virt_method_for_binfo): Do not ICE on
747         error_mark_node in the DECL_INITIAL of vtable.
748
749 2011-09-15   Diego Novillo  <dnovillo@google.com>
750
751         * Makefile.in (SYSROOT_CFLAGS_FOR_TARGET): Define from
752         @SYSROOT_CFLAGS_FOR_TARGET@.
753         * configure.ac (SYSROOT_CFLAGS_FOR_TARGET): Set from build-sysroot.
754         * configure: Regenerate.
755         (site.exp): Add definition of TEST_ALWAYS_FLAGS.
756         Remove setting of GCC_UNDER_TEST.
757
758 2011-09-15  Uros Bizjak  <ubizjak@gmail.com>
759
760         * config/i386/i386.c (output_fp_compare): Return %v prefixed
761         instruction mnemonics for TARGET_AVX.
762
763         * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in
764         "type" attribute calculation.
765         (*movdf_internal): Ditto.
766         (*movsf_internal): Ditto.
767
768 2011-09-15  James Greenhalgh  <james.greenhalgh@arm.com>
769
770         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro.
771
772 2011-09-15  Jason Merrill  <jason@redhat.com>
773
774         PR c++/50361
775         * expr.c (count_type_elements): Handle NULLPTR_TYPE.
776
777 2011-09-15  Jan Hubicka  <jh@suse.cz>
778
779         * ipa-inline-analysis.c (add_condition): Add conditions parameter;
780         simplify obviously true clauses.
781         (and_predicates, or_predicates): Add conditions parameter.
782         (inline_duplication_hoook): Update.
783         (mark_modified): New function.
784         (unmodified_parm): New function.
785         (eliminated_by_inlining_prob, (set_cond_stmt_execution_predicate,
786         set_switch_stmt_execution_predicate, will_be_nonconstant_predicate):
787         Use unmodified_parm.
788         (estimate_function_body_sizes): Update.
789         (remap_predicate): Update.
790
791 2011-09-15  Ira Rosen  <ira.rosen@linaro.org>
792
793         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Allow
794         read-after-read dependencies in basic block SLP.
795
796 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
797
798         * config/sparc/sparc.md: Use match_test rather than eq/ne symbol_ref
799         throughout file.
800
801 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
802
803         * config/sh/sh.md: Use match_test rather than eq/ne symbol_ref
804         throughout file.
805
806 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
807
808         * config/s390/s390.md: Use match_test rather than eq/ne symbol_ref
809         throughout file.
810
811 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
812
813         * config/rs6000/rs6000.md: Use match_test rather than eq/ne symbol_ref
814         throughout file.
815         * config/rs6000/constraints.md: Likewise.
816
817 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
818
819         * config/microblaze/microblaze.md: Use match_test rather than
820         eq/ne symbol_ref throughout file.
821
822 2011-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
823
824         * config/bfin/bfin.md: Use match_test rather than eq/ne symbol_ref
825         throughout file.
826
827 2011-09-14  Tom de Vries  <tom@codesourcery.com>
828
829         PR middle-end/50251
830         * explow.c (emit_stack_restore): Set crtl->need_drap if
831         stack_restore is emitted.
832
833 2011-09-14  Julian Brown  <julian@codesourcery.com>
834
835         * config/arm/arm.c (arm_override_options): Add unaligned_access
836         support.
837         (arm_file_start): Emit attribute for unaligned access as appropriate.
838         * config/arm/arm.md (UNSPEC_UNALIGNED_LOAD)
839         (UNSPEC_UNALIGNED_STORE): Add constants for unspecs.
840         (insv, extzv): Add unaligned-access support.
841         (extv): Change to expander. Likewise.
842         (extzv_t1, extv_regsi): Add helpers.
843         (unaligned_loadsi, unaligned_loadhis, unaligned_loadhiu)
844         (unaligned_storesi, unaligned_storehi): New.
845         (*extv_reg): New (previous extv implementation).
846         * config/arm/arm.opt (munaligned_access): Add option.
847         * config/arm/constraints.md (Uw): New constraint.
848         * expmed.c (store_bit_field_1): Adjust bitfield numbering according
849         to size of access, not size of unit, when BITS_BIG_ENDIAN !=
850         BYTES_BIG_ENDIAN. Don't use bitfield accesses for
851         volatile accesses when -fstrict-volatile-bitfields is in effect.
852         (extract_bit_field_1): Likewise.
853
854 2011-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
855
856         * simplify-rtx.c (simplify_subreg): Check that the inner mode is
857         a scalar integer before applying integer-only optimisations to
858         inner arithmetic.
859
860 2011-09-14  Bernd Schmidt  <bernds@codesourcery.com>
861
862         * config/mips/mips.c (mips_expand_epilogue): Generate a
863         simple_return only if the return address is in r31.
864
865 2011-09-13  Bernd Schmidt  <bernds@codesourcery.com>
866
867         * cfgcleanup.c (try_head_merge_bb): If get_condition returns
868         NULL for a jump that is a cc0 insn, pick the previous insn for
869         move_before.
870
871 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
872
873         * config/v850/v850.md: Use match_test rather than eq/ne symbol_ref
874         throughout file.
875
876 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
877
878         * config/pa/pa.md: Use match_test rather than eq/ne symbol_ref
879         throughout file.
880
881 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
882
883         * config/mn10300/mn10300.md: Use match_test rather than eq/ne
884         symbol_ref throughout file.
885
886 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
887
888         * config/m68k/m68k.md: Use match_test rather than eq/ne symbol_ref
889         throughout file.
890
891 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
892
893         * config/h8300/h8300.md: Use match_test rather than eq/ne symbol_ref
894         throughout file.
895
896 2011-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
897
898         * config/arm/arm.md: Use match_test rather than eq/ne symbol_ref
899         throughout file.
900         * config/arm/neon.md: Likewise.
901         * config/arm/vfp.md: Likewise.
902         * config/arm/thumb2.md: Likewise.
903         * config/arm/cortex-m4.md: Likewise.
904
905 2011-09-13  Sevak Sargsyan <sevak.sargsyan@ispras.ru>
906
907         * config/arm/neon.md (neon_vabd<mode>_2, neon_vabd<mode>_3): New
908         define_insn patterns for combine.
909
910 2011-09-13  Giuseppe Scrivano  <gscrivano@gnu.org>
911
912         * reorg.c: Always define make_return_insns.
913
914 2011-09-13  Jan Hubicka  <jh@suse.cz>
915
916         PR other/49533
917         * cgraphunit.c (assemble_thunks_and_aliases): Force alias to be output.
918
919 2011-09-13  Jan Hubicka  <jh@suse.cz>
920
921         PR other/49533
922         * ipa-inline-transform.c (can_remove_node_now_p): Fix thunkos.
923
924 2011-09-13  Paul Brook  <paul@codesourcery.com>
925
926         * config/arm/arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
927         (ARM_TARGET2_DWARF_FORMAT): Provide default definition.
928         * config/arm/linux-eabi.h (ARM_TARGET2_DWARF_FORMAT): Define.
929         * config/arm/symbian.h (ARM_TARGET2_DWARF_FORMAT): Define.
930         * config/arm/uclinux-eabi.h(ARM_TARGET2_DWARF_FORMAT): Define.
931         * config/arm/t-bpabi (EXTRA_HEADERS): Add unwind-arm-common.h.
932         * config/arm/t-symbian (EXTRA_HEADERS): Add unwind-arm-common.h.
933         * config/c6x/c6x.c (c6x_output_file_unwind): Don't rely on dwarf2 code
934         enabling unwind tables.
935         (c6x_debug_unwind_info): New function.
936         (TARGET_ARM_EABI_UNWINDER): Define.
937         (TARGET_DEBUG_UNWIND_INFO): Define.
938         * config/c6x/c6x.h (DWARF_FRAME_RETURN_COLUMN): Define.
939         (TARGET_EXTRA_CFI_SECTION): Remove.
940         * config/c6x/t-c6x-elf (EXTRA_HEADERS): Set.
941         * ginclude/unwind-arm-common.h: New file.
942
943 2011-09-13  Georg-Johann Lay  <avr@gjlay.de>
944
945         PR target/50358
946         * config/avr/predicates.md (const_1_to_6_operand): New predicate.
947         * config/avr/avr.md: (extend_s): New code attribute.
948         (mul_r_d): New code attribute.
949         (*maddqihi4, *umaddqihi4): New insns.
950         (*msubqihi4, *umsubqihi4): New insns.
951         (*usmaddqihi4, *sumaddqihi4): New insns.
952         (*usmsubqihi4, *susubdqihi4): New insns.
953         (*umaddqihi4.uconst, *maddqihi4.sconst): New insn-and-splits.
954         (*umsubqihi4.uconst, *msubqihi4.sconst): New insn-and-splits.
955         (*umsubqihi4.uconst.ashift): New insn-and-split.
956         (*msubqihi4.sconst.ashift): New insn-and-split.
957         (*sumaddqihi4.uconst): New insn-and-split.
958         (*sumsubqihi4.uconst): New insn-and-split.
959         * config/avr/avr.c (avr_rtx_costs): Report costs of above in case
960         PLUS:HI and MINUS:HI.
961
962 2011-09-13  Revital Eres  <revital.eres@linaro.org>
963
964         modulo-sched.c (remove_node_from_ps): Return void instead of bool.
965         (optimize_sc): Adjust call to remove_node_from_ps.
966         (sms_schedule): Add print info.
967
968 2011-09-13  Bernd Schmidt  <bernds@codesourcery.com>
969
970         * rtl.c (copy_rtx): Do not handle frame_related, jump or call
971         flags specially.
972
973 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
974
975         PR bootstrap/50010
976         * dwarf2cfi.c (add_cfis_to_fde): Ignore non-active insns in between
977         NOTE_INSN_CFI notes, with the exception of
978         NOTE_INSN_SWITCH_TEXT_SECTIONS.
979
980 2011-09-12  Bernd Schmidt  <bernds@codesourcery.com>
981             Richard Sandiford  <rdsandiford@googlemail.com>
982
983         * config/mips/mips.c (mips_epilogue): New structure.
984         (mips16e_save_restore_reg): Queue REG_CFA_RESTORE notes when
985         restoring registers.
986         (mips_epilogue_emit_cfa_restores): New function.
987         (mips_epilogue_set_cfa): Likewise.
988         (mips_restore_reg): Queue REG_CFA_RESTORE notes.  When restoring
989         the current CFA register from the stack, redefine the CFA in terms
990         of the stack pointer.
991         (mips_expand_epilogue): Set up mips_epilogue.  Attach CFA information
992         to the epilogue instructions.
993
994 2011-09-12  Richard Sandiford  <rdsandiford@googlemail.com>
995
996         * config/mips/mips.c (mips16e_save_restore_reg): Add a reg_parm_p
997         argument.
998         (mips16e_build_save_restore): Update accordingly.
999
1000 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
1001
1002         PR rtl-optimization/50212
1003         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
1004         Skip also lps with NULL landing_pad or non-LABEL_P landing_pad.
1005
1006         PR debug/50299
1007         * calls.c (load_register_parameters): Use use_reg_mode instead
1008         of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
1009         entry.
1010         (expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
1011         for stack CALL_INSN_FUNCTION_USAGE uses.
1012         * expr.h (use_reg_mode): New prototype.
1013         (use_reg): Changed into inline around use_reg_mode.
1014         * expr.c (use_reg): Renamed to...
1015         (use_reg_mode): ... this.  Added MODE argument, set EXPR_LIST
1016         mode to that mode instead of VOIDmode.
1017         * var-tracking.c (prepare_call_arguments): Don't track parameters
1018         whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
1019         to it using lowpart_subreg.  Convert VALUE and REG/MEM to the
1020         EXPR_LIST mode.
1021
1022 2011-09-12  Georg-Johann Lay  <avr@gjlay.de>
1023
1024         PR target/43746
1025         * config/avr/avr.c (AVR_SECTION_PROGMEM): New Define.
1026         (progmem_section): New Variable.
1027         (avr_asm_init_sections): Initialize it.
1028         (TARGET_ASM_SELECT_SECTION): Define to...
1029         (avr_asm_select_section): ... this new Function.
1030         (avr_replace_prefix): New Function.
1031         (avr_asm_function_rodata_section): Use it.
1032         (avr_insert_attributes): Don't add section attribute for PROGMEM.
1033         (avr_section_type_flags): Use avr_progmem_p instead of section
1034         name to detect if object is in PROGMEM.
1035         (avr_asm_named_section): Set section name prefix for objects in
1036         PROGMEM.
1037
1038 2011-09-12  Jakub Jelinek  <jakub@redhat.com>
1039
1040         PR bootstrap/50352
1041         * config/arm/arm.md (*push_fp_multi): Add % before %( and %) in the
1042         sprintf format string.
1043
1044 2011-09-12  Richard Guenther  <rguenther@suse.de>
1045
1046         PR tree-optimization/50343
1047         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Check
1048         that the reduction is over an SSA name before checking its definition.
1049
1050 2011-09-11  Richard Sandiford  <rdsandiford@googlemail.com>
1051
1052         * config/cris/cris.md: Use match_test rather than eq/ne symbol_ref
1053         throughout file.
1054
1055 2011-09-11  Richard Sandiford  <rdsandiford@googlemail.com>
1056
1057         * config/mips/mips.md: Use match_test rather than eq/ne symbol_ref
1058         throughout file.
1059         * config/mips/sb1.md: Likewise.
1060         * config/mips/predicates.md: Replace (match_test "!...")
1061         with (not (match_test "..."))
1062         * config/mips/constraints.md: Likewise.
1063
1064 2011-09-09  Andrew Stubbs  <ams@codesourcery.com>
1065
1066         * config/arm/arm-cores.def (generic-armv7-a): New architecture.
1067         * config/arm/arm-tables.opt: Regenerate.
1068         * config/arm/arm-tune.md: Regenerate.
1069         * config/arm/arm.c (arm_file_start): Output .arch directive when
1070         user passes -mcpu=generic-*.
1071         (arm_issue_rate): Add genericv7a support.
1072         * config/arm/arm.h (EXTRA_SPECS): Add asm_cpu_spec.
1073         (ASM_CPU_SPEC): New define.
1074         * config/arm/elf.h (ASM_SPEC): Use %(asm_cpu_spec).
1075         * config/arm/semi.h (ASM_SPEC): Likewise.
1076         * doc/invoke.texi (ARM Options): Document -mcpu=generic-*
1077         and -mtune=generic-*.
1078
1079 2011-09-09  Richard Guenther  <rguenther@suse.de>
1080
1081         PR tree-optimization/50328
1082         * tree-vect-loop.c (vect_is_simple_reduction_1): Allow one
1083         constant or default-def operand.
1084
1085 2011-09-09  Richard Guenther  <rguenther@suse.de>
1086
1087         * tree-ssa-pre.c (create_expression_by_pieces): Fold the
1088         last statement.
1089
1090 2011-09-09  Richard Guenther  <rguenther@suse.de>
1091
1092         * gimple.h (fold_stmt_inplace): Adjust to take a gimple_stmt_iterator
1093         instead of a statement.
1094         * gimple-fold.c (fold_stmt_inplace): Likewise.
1095         * sese.c (graphite_copy_stmts_from_block): Adjust.
1096         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1097         * tree-ssa-forwprop.c (forward_propagate_into_comparison): Use
1098         fold_stmt.
1099         (forward_propagate_addr_into_variable_array_index): Likewise.
1100         (forward_propagate_addr_expr_1): adjust.
1101         (associate_plusminus): Likewise.
1102         (ssa_forward_propagate_and_combine): Likewise.
1103         * tree-ssa-mathopts.c (replace_reciprocal): Adjust.
1104         (execute_cse_reciprocals): Likewise.
1105         * tree-ssa.c (insert_debug_temp_for_var_def): Adjust.
1106
1107 2011-09-09  Nick Clifton  <nickc@redhat.com>
1108
1109         * config/mn10300/mn10300.c (mn10300_split_and_operand_count):
1110         Return a positive value to indicate that the bits at the
1111         bottom of the register should be cleared.
1112
1113 2011-09-09  Richard Guenther  <rguenther@suse.de>
1114
1115         * tree-ssa-operands.c (swap_tree_operands): Always adjust
1116         existing operand positions.
1117
1118 2011-09-09  Richard Guenther  <rguenther@suse.de>
1119
1120         PR middle-end/50333
1121         * tree-data-ref.c (split_constant_offset): Do not try to handle
1122         ternary ops.
1123
1124 2011-09-08  Andrew Stubbs  <ams@codesourcery.com>
1125
1126         PR tree-optimization/50318
1127         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Correct
1128         typo in use of mult_rhs1 and mult_rhs2.
1129
1130 2011-09-08  Uros Bizjak  <ubizjak@gmail.com>
1131
1132         * config/i386/i386.c (standard_sse_constant_p): Handle AVX2 modes.
1133         (standard_sse_constant_opcode) <case 2>: Change vpcmpeqd template.
1134
1135 2011-09-08  Bernd Schmidt  <bernds@codesourcery.com>
1136
1137         * config/arm/arm.md (push_multi): Emit predicates.
1138         (push_fp_multi): Likewise.
1139         * config/arm/arm.c (vfp_output_fstmd): Likewise.
1140
1141 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
1142
1143         PR c++/33255 - Support -Wunused-local-typedefs warning
1144         * c-decl.c (lookup_name): Use the new maybe_record_typedef_use.
1145         (pushdecl): Use the new record_locally_defined_typedef.
1146         (store_parm_decls): Allocate cfun->language.
1147         (finish_function): Use the new maybe_warn_unused_local_typedefs,
1148         and free cfun->language.
1149         (c_push_function_context): Allocate cfun->language here only if needed.
1150         (c_pop_function_context): Likewise, mark cfun->language
1151         for collection only when it should be done.
1152         * c-common.c (handle_used_attribute): Don't ignore TYPE_DECL nodes.
1153         * c-typeck.c (c_expr_sizeof_type, c_cast_expr): Use the new
1154         maybe_record_local_typedef_use.
1155         * doc/invoke.texi: Update documentation for
1156         -Wunused-local-typedefs.
1157
1158 2011-09-08  Enkovich Ilya  <ilya.enkovich@intel.com>
1159
1160         * config/i386/i386-protos.h (ix86_lea_outperforms): New.
1161         (ix86_avoid_lea_for_add): Likewise.
1162         (ix86_avoid_lea_for_addr): Likewise.
1163         (ix86_split_lea_for_addr): Likewise.
1164
1165         * config/i386/i386.c (LEA_MAX_STALL): New.
1166         (increase_distance): Likewise.
1167         (insn_defines_reg): Likewise.
1168         (insn_uses_reg_mem): Likewise.
1169         (distance_non_agu_define_in_bb): Likewise.
1170         (distance_agu_use_in_bb): Likewise.
1171         (ix86_lea_outperforms): Likewise.
1172         (ix86_ok_to_clobber_flags): Likewise.
1173         (ix86_avoid_lea_for_add): Likewise.
1174         (ix86_avoid_lea_for_addr): Likewise.
1175         (ix86_split_lea_for_addr): Likewise.
1176         (distance_non_agu_define): Search in pred BBs added.
1177         (distance_agu_use): Search in succ BBs added.
1178         (IX86_LEA_PRIORITY): Value changed from 2 to 0.
1179         (LEA_SEARCH_THRESHOLD): Now depends on LEA_MAX_STALL.
1180         (ix86_lea_for_add_ok): Use ix86_lea_outperforms to make decision.
1181
1182         * config/i386/i386.md: Split added to transform non destructive
1183         add into move and add.
1184         (lea_1): transformed into insn_and_split to avoid AGU stalls.
1185         (lea<mode>_2): Likewise.
1186
1187 2011-09-08  Martin Jambor  <mjambor@suse.cz>
1188
1189         PR tree-optimization/50287
1190         * ipa-split.c (split_function): Do not create SSA names for
1191         non-gimple-registers.
1192
1193 2011-09-08  Richard Guenther  <rguenther@suse.de>
1194
1195         PR tree-optimization/19831
1196         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Also
1197         skip builtins with vdefs that do not really store something.
1198         (propagate_necessity): For calls to free that we can associate
1199         with an allocation function do not mark the freed pointer
1200         definition necessary.
1201         (eliminate_unnecessary_stmts): Remove a call to free if
1202         the associated call to an allocation function is not necessary.
1203
1204 2011-09-08  Richard Guenther  <rguenther@suse.de>
1205
1206         PR tree-optimization/19831
1207         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Do not mark
1208         allocation functions as necessary.
1209
1210 2011-09-08  Iain Sandoe  <iains@gcc.gnu.org>
1211
1212         * config/darwin-driver.c (darwin_find_version_from_kernel): New routine
1213         cut from ...
1214         (darwin_default_min_version): Amended to provide defaults
1215         for the cross directory case.
1216         (darwin_driver_init): call darwin_default_min_version unconditionally.
1217         * config/darwin.h (DEF_MIN_OSX_VERSION): New.
1218         * config/darwin9.h: Likewise.
1219         * config/darwin10.h: Likewise.
1220         * config/rs6000/darwin7.h: Likewise.
1221
1222 2011-09-08  Jakub Jelinek  <jakub@redhat.com>
1223
1224         PR target/50310
1225         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Return
1226         code early if TARGET_AVX.
1227         (ix86_expand_fp_vcond): Handle LTGT and UNEQ.
1228
1229 2011-09-07  Jakub Jelinek  <jakub@redhat.com>
1230
1231         * config/i386/sse.md (sseinsnmode): Remove 32-byte integer vector
1232         duplicates.
1233
1234         PR target/50310
1235         * config/i386/sse.md (*andnot<mode>3, *<code><mode>3): Fix up
1236         "mode" attribute computation.
1237
1238 2011-09-07  Bernd Schmidt  <bernds@codesourcery.com>
1239
1240         * regrename.c (struct du_head): Make nregs signed.
1241         (closed_chains): Remove.
1242         (create_new_chain): Return the new chain.
1243         (chain_from_id): New static function.
1244         (dump_def_use_chain): Change argument to be an int, indicating
1245         the first ID to print.  All callers changed.
1246         (merge_overlapping_regs): Use chain_from_id.  Assert that
1247         chains don't conflict with themselves.
1248         (rename_chains): Take no argument.  Iterate over id_to_chain
1249         rather to find chains to rename.  Clear tick before the main loop.
1250         (struct incoming_reg_info): New struct.
1251         (struct bb_rename_info): New struct.
1252         (init_rename_info, set_incoming_from_chain, merge_chains): New
1253         static functions.
1254         (regrename_analyze): New static function, broken out of
1255         regrename_optimize.  Record and make use of open chain information
1256         at basic block boundaries, and merge chains where possible.
1257         (scan_rtx_reg): Make this_nregs signed.  Don't update
1258         closed_chains.
1259         (build_def_use): Return a bool to indicate success.  All callers
1260         changed.  Don't initialize global data here.
1261         (regrename_optimize): Move most code out of here into
1262         regrename_analyze.
1263         * regs.h (add_range_to_hard_reg_set, remove_range_from_hard_reg_set,
1264         range_overlaps_hard_reg_set_p, range_in_hard_reg_set_p): New
1265         static inline functions.
1266         * vec.h (FOR_EACH_VEC_ELT_FROM): New macro.
1267
1268         * bb-reorder.c (insert_section_boundary_note): Don't check
1269         optimize_function_for_speed_p.
1270         (gate_handle_partition_blocks): Do it here instead.
1271         (gate_handle_reorder_blocks): Move preliminary checks here ...
1272         (rest_of_handle_reorder_blocks): ... from here.
1273
1274 2011-09-07  Martin Jambor  <mjambor@suse.cz>
1275
1276         PR middle-end/50301
1277         * ipa-cp.c (find_more_values_for_callers_subset): Check jump
1278         function index bounds.
1279         (perhaps_add_new_callers): Likewise.
1280
1281 2011-09-07  Martin Jambor  <mjambor@suse.cz>
1282
1283         PR tree-optimization/49911
1284         * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
1285         enumerations to the corresponding plain integer type.
1286
1287 2011-09-07  Richard Guenther  <rguenther@suse.de>
1288
1289         PR tree-optimization/50319
1290         * tree-if-conv.c (set_bb_predicate): Assert we only set
1291         canonical predicates.
1292         (add_to_predicate_list): Simplify.  Allow TRUTH_NOT_EXPR
1293         around canonical predicates.
1294         (predicate_bbs): Do not re-gimplify already canonical
1295         predicates.  Properly unshare them though.
1296         (find_phi_replacement_condition): Simplify.
1297
1298 2011-09-07  Richard Sandiford  <richard.sandiford@linaro.org>
1299
1300         PR target/49030
1301         * config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
1302         * config/arm/arm.c (maybe_get_arm_condition_code): New function,
1303         reusing the old code from get_arm_condition_code.  Return ARM_NV
1304         for invalid comparison codes.
1305         (get_arm_condition_code): Redefine in terms of
1306         maybe_get_arm_condition_code.
1307         * config/arm/predicates.md (arm_comparison_operator): Use
1308         maybe_get_arm_condition_code.
1309
1310 2011-09-07  Richard Guenther  <rguenther@suse.de>
1311
1312         * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond):
1313         Canonicalize negated predicates by swapping edges.
1314         (forward_propagate_into_cond): Likewise.
1315
1316 2011-09-07  Richard Guenther  <rguenther@suse.de>
1317
1318         PR tree-optimization/50213
1319         * tree-flow.h (simple_iv_increment_p): Declare.
1320         * tree-ssa-dom.c (simple_iv_increment_p): Export.  Also handle
1321         POINTER_PLUS_EXPR.
1322         * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Do
1323         not propagate simple IV counter increments.
1324
1325 2011-09-07  Eric Botcazou  <ebotcazou@adacore.com>
1326             Iain Sandoe  <iains@gcc.gnu.org>
1327
1328         * config/rs6000/rs6000.c (compute_save_world_info): Test
1329         cfun->has_nonlocal_label to determine if the out-of-line save
1330         world call may be used.
1331
1332 2011-09-07  Nick Clifton  <nickc@redhat.com>
1333
1334         * config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Set the jump
1335         label on the parallel part of the insn.
1336
1337 2011-09-07  Jakub Jelinek  <jakub@redhat.com>
1338
1339         PR debug/50191
1340         * dwarf2out.c (mem_loc_descriptor) <case MEM>: Try
1341         avoid_constant_pool_reference first instead of last.
1342
1343 2011-09-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
1344
1345         * doc/configfiles.texi (Configuration Files): Update documentation
1346         about tm_p.h and remove FIXME comment.
1347
1348 2011-09-06  Uros Bizjak  <ubizjak@gmail.com>
1349
1350         * config/i386/i386.c (ix86_function_value_regno_p): Use AX_REG.
1351         (function_value_32): Do not check TARGET_MMX, TARGET_SSE or TARGET_AVX.
1352
1353 2011-09-06  Iain Sandoe  <iains@gcc.gnu.org>
1354
1355         * config/darwin10.h Remove duplicate LIB_SPEC.
1356
1357 2011-09-06  Enkovich Ilya  <ilya.enkovich@intel.com>
1358
1359         PR middle-end/44382
1360         * target.def (reassociation_width): New hook.
1361
1362         * doc/tm.texi.in (reassociation_width): Likewise.
1363
1364         * doc/tm.texi (reassociation_width): Likewise.
1365
1366         * doc/invoke.texi (tree-reassoc-width): New param documented.
1367
1368         * hooks.h (hook_int_uint_mode_1): New default hook.
1369
1370         * hooks.c (hook_int_uint_mode_1): Likewise.
1371
1372         * config/i386/i386.h (ix86_tune_indices): Add
1373         X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL.
1374
1375         (TARGET_REASSOC_INT_TO_PARALLEL): New.
1376         (TARGET_REASSOC_FP_TO_PARALLEL): Likewise.
1377
1378         * config/i386/i386.c (initial_ix86_tune_features): Add
1379         X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL.
1380
1381         (ix86_reassociation_width): New function.
1382
1383         * params.def (PARAM_TREE_REASSOC_WIDTH): New param added.
1384
1385         * tree-ssa-reassoc.c (get_required_cycles): New function.
1386         (get_reassociation_width): Likewise.
1387         (swap_ops_for_binary_stmt): Likewise.
1388         (rewrite_expr_tree_parallel): Likewise.
1389
1390         (rewrite_expr_tree): Refactored.  Part of code moved into
1391         swap_ops_for_binary_stmt.
1392
1393         (reassociate_bb): Now checks reassociation width to be used and
1394         call rewrite_expr_tree_parallel instead of rewrite_expr_tree if needed.
1395
1396 2011-09-06  Richard Guenther  <rguenther@suse.de>
1397
1398         PR tree-optimization/47025
1399         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): BUILT_IN_VA_END
1400         uses nothing.
1401         (call_may_clobber_ref_p_1): BUILT_IN_VA_END is a barrier like
1402         BUILT_IN_FREE.
1403         (stmt_kills_ref_p_1): BUILT_IN_VA_END kills what its argument
1404         definitely points to.
1405         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
1406         BUILT_IN_VA_START doesn't let its va_list argument escape.
1407         * tree-ssa-dce.c (propagate_necessity): BUILT_IN_VA_END does
1408         not make any previous stores necessary.
1409
1410 2011-09-06  Martin Jambor  <mjambor@suse.cz>
1411
1412         * ipa-inline.h (struct inline_summary): Move versionable flag...
1413         * cgraph.h (struct cgraph_local_info): ...here
1414         * ipa-cp.c (determine_versionability): Use the new versionable flag.
1415         (determine_versionability): Likewise.
1416         (ipcp_versionable_function_p): Likewise.
1417         (ipcp_generate_summary): Likewise.
1418         * ipa-inline-analysis.c (dump_inline_summary): Do not dump the
1419         versionable flag.
1420         (compute_inline_parameters): Do not clear the versionable flag.
1421         (inline_read_section): Do not stream the versionable flag.
1422         (inline_write_summary): Likewise.
1423         * lto-cgraph.c (lto_output_node): Stream the versionable flag.
1424         (input_overwrite_node): Likewise.
1425
1426 2011-09-06  Richard Guenther  <rguenther@suse.de>
1427
1428         PR tree-optimization/48149
1429         * tree-ssa-sccvn.c (vn_get_expr_for): Simplify.  Fix tuplification bug.
1430         (vn_valueize): Move earlier.
1431         (valueize_expr): Use vn_valueize.
1432         (simplify_binary_expression): Simplify, also combine COMPLEX_EXPR
1433         operands.
1434         (simplify_unary_expression): Simplify.
1435
1436 2011-09-06  Richard Guenther  <rguenther@suse.de>
1437
1438         PR tree-optimization/48317
1439         * tree-ssa-sccvn.h (struct vn_nary_op_s): Make op a true
1440         trailing array.
1441         (sizeof_vn_nary_op): New inline function.
1442         (vn_nary_op_lookup_pieces): Adjust.
1443         (vn_nary_op_insert_pieces): Likewise.
1444         * tree-ssa-sccvn.c (vn_nary_op_eq): Also compare the length.
1445         (init_vn_nary_op_from_pieces): Adjust signature.  Deal with
1446         any number of operands.
1447         (vn_nary_length_from_stmt): New function.
1448         (init_vn_nary_op_from_stmt): Adjust for CONSTRUCTOR handling.
1449         (vn_nary_op_lookup_pieces): Adjust signature and allocate properly
1450         sized temporary.
1451         (vn_nary_op_lookup): Likewise.
1452         (vn_nary_op_lookup_stmt): Likewise.
1453         (vn_nary_op_insert_into): Likewise.
1454         (vn_nary_op_insert_stmt): Likewise.
1455         (visit_use): Handle CONSTRUCTOR as nary.
1456         * tree-ssa-pre.c (phi_translate_1): Adjust.
1457         (create_expression_by_pieces): Likewise.
1458         (compute_avail): Likewise.
1459
1460 2011-09-06  Ira Rosen  <ira.rosen@linaro.org>
1461
1462          * config/arm/arm.c (arm_preferred_simd_mode): Check
1463         TARGET_NEON_VECTORIZE_DOUBLE instead of
1464         TARGET_NEON_VECTORIZE_QUAD.
1465         (arm_autovectorize_vector_sizes): Likewise.
1466         * config/arm/arm.opt (mvectorize-with-neon-quad): Make inverse
1467         mask of mvectorize-with-neon-double.  Add RejectNegative.
1468         (mvectorize-with-neon-double): New.
1469
1470 2011-09-06  Richard Guenther  <rguenther@suse.de>
1471
1472         * tree-ssa-sccvn.c (visit_use): CSE stmt pieces and simplify matching.
1473
1474 2011-09-06  Tom de Vries  <tom@codesourcery.com>
1475
1476         * recog.c (asm_labels_ok): New function.
1477         (check_asm_operands): Use asm_labels_ok.
1478
1479 2011-09-05  Richard Sandiford  <rdsandiford@googlemail.com>
1480
1481         PR target/49606
1482         * config/mips/mips.h (ABI_HAS_64BIT_SYMBOLS): Check Pmode.
1483         (PMODE_INSN): New macro.
1484         * config/mips/mips.c (gen_load_const_gp): Use PMODE_INSN.
1485         (mips_got_load, mips_expand_synci_loop): Likewise.
1486         (mips_save_gp_to_cprestore_slot): Handle SImode and DImode
1487         cprestore patterns.
1488         (mips_emit_loadgp): Use PMODE_INSN.  Handle SImode and DImode
1489         copygp_mips16 patterns.
1490         (mips_expand_prologue): Handle SImode and DImode potential_cprestore
1491         and use_cprestore patterns.
1492         (mips_override_options): Check for incompatible -mabi and -mlong
1493         combinations.
1494         * config/mips/mips.md (unspec_got<mode>): Rename to...
1495         (unspec_got_<mode>): ...this.
1496         (copygp_mips16): Use the Pmode iterator.
1497         (potential_cprestore, cprestore, use_cprestore): Likewise.
1498         (clear_cache, indirect_jump): Use PMODE_INSN.
1499         (indirect_jump<mode>): Rename to...
1500         (indirect_jump_<mode>): ...this.
1501         (tablejump): Use PMODE_INSN.
1502         (tablejump<mode>): Rename to...
1503         (tablejump_<mode>): ...this.
1504         (exception_receiver): Handle restore_gp_si and restore_gp_di.
1505         (restore_gp): Use the Pmode iterator.
1506         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Use
1507         PMODE_INSN.
1508
1509 2011-09-05  Richard Sandiford  <rdsandiford@googlemail.com>
1510
1511         * config/mips/mips.c (mips_gimplify_va_arg_expr): Unshare off.
1512         Fix the type of the BIT_AND_EXPR.
1513
1514 2011-09-05  David S. Miller  <davem@davemloft.net>
1515
1516         * config.host: Add driver-sparc.o and sparc/x-sparc on
1517         native sparc*-*-linux* builds.
1518         * config/sparc/driver-sparc.c: Correct Linux strings.
1519         * config/sparc/linux.h: Add DRIVER_SELF_SPECS.
1520         * config/sparc/linux64.h: Likewise.
1521         * doc/invoke.texi: Document that Linux also supports
1522         -mcpu=native and -mtune=native on sparc.
1523
1524         * config/sparc/sparc-opts.h (PROCESSOR_NIAGARA3,
1525         PROCESSOR_NIAGARA4): New.
1526         * config/sparc/sparc.opt: Handle new processor types.
1527         * config/sparc/sparc.md: Add to "cpu" attribute.
1528         * config/sparc/sparc.h (TARGET_CPU_niagara3,
1529         TARGET_CPU_niagara4): New, treat as niagara2.
1530         * config/sparc/linux64.h: Handle niagara3 and niagara4 like niagara2.
1531         * config/sparc/sol2.h: Likewise.
1532         * config/sparc/niagara2.md: Schedule niagara3 like niagara2.
1533         * config/sparc/sparc.c (sparc_option_override): Add
1534         niagara3 and niagara4 handling.
1535         (sparc32_initialize_trampoline): Likewise.
1536         (sparc64_initialize_trampoline): Likewise.
1537         (sparc_use_sched_lookahead): Likewise.
1538         (sparc_issue_rate): Likewise.
1539         (sparc_register_move_cost): Likewise.
1540         * config/sparc/driver-sparc.c (cpu_names): Use niagara3
1541         and niagara4 as appropriate.
1542         * doc/invoke.texi: Document new processor types.
1543         * config.gcc: Recognize niagara3 and niagara4 in --with-cpu
1544         and --with-tune options.
1545
1546         * config/sparc/sol2-64.h: Move ...
1547         * config/sparc/default-64.h: ... to here.  Update comment.
1548         * config.gcc: Update Solaris sparc to use default-64.h, also
1549         prefix this header into the list on sparc64-*-linux.
1550         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if
1551         TARGET_64BIT_DEFAULT is defined.  Remove commented out reference
1552         to MASK_HARD_QUAD.
1553
1554 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
1555
1556         PR target/50289
1557         * config/avr/avr.c (sequent_regs_live): Don't recognize sequences
1558         that contain global register variable.
1559
1560 2011-09-05  Richard Guenther  <rguenther@suse.de>
1561
1562         * tree-cfg.c (replace_uses_by): Use fold_stmt, not fold_stmt_inplace.
1563
1564 2011-09-05  Richard Guenther  <rguenther@suse.de>
1565
1566         * stor-layout.c (layout_type): Use size_binop for array size
1567         calculations.
1568
1569 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
1570
1571         * config/avr/avr.h (progmem_section): Remove Declaration.
1572         * config/avr/avr.c (progmem_section): Make static and rename to
1573         progmem_swtable_section.
1574         (avr_output_addr_vec_elt): No need to switch sections.
1575         (avr_asm_init_sections): Use output_section_asm_op as section
1576         callback for progmem_swtable_section.
1577         (avr_output_progmem_section_asm_op): Remove Function.
1578         (TARGET_ASM_FUNCTION_RODATA_SECTION): New Define.
1579         (avr_asm_function_rodata_section): New static Function.
1580         * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Output
1581         alignment 2**1 for jump tables.
1582
1583 2011-09-04  Jan Hubicka  <jh@suse.cz>
1584
1585         * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Check that
1586         parameter is SSA name.
1587
1588 2011-09-04  Richard Guenther  <rguenther@suse.de>
1589
1590         Revert
1591         2011-08-31  Richard Guenther  <rguenther@suse.de>
1592
1593         * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
1594         special-casing.
1595
1596 2011-09-04  Iain Sandoe  <iains@gcc.gnu.org>
1597
1598         PR debug/49901
1599         * config/darwin.h (DEBUG_MACRO_SECTION): New macro.
1600
1601 2011-09-04  Jakub Jelinek  <jakub@redhat.com>
1602             Ira Rosen  <ira.rosen@linaro.org>
1603
1604         PR tree-optimization/50208
1605         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add an
1606         argument.  Check that def_stmt is inside the loop.
1607         (vect_recog_widen_mult_pattern): Update calls to
1608         vect_handle_widen_mult_by_cons.
1609         (vect_operation_fits_smaller_type): Check that def_stmt is
1610         inside the loop.
1611
1612 2011-09-04  Ira Rosen  <ira.rosen@linaro.org>
1613
1614         * tree-vectorizer.c (vect_print_dump_info): Print line
1615         number when dumping to a file.
1616         (vectorize_loops): Add new messages to dump file.
1617
1618 2011-09-03  Martin Jambor  <mjambor@suse.cz>
1619
1620         * ipa-prop.h (ipa_jump_func_t): New typedef.
1621         (struct ipa_edge_args): Removed field argument_count, field
1622         jump_functions turned into a vector.
1623         (ipa_set_cs_argument_count): Removed.
1624         (ipa_get_cs_argument_count): Updated to work on vectors.
1625         (ipa_get_ith_jump_func): Likewise.
1626         * ipa-prop.c (ipa_count_arguments): Removed.
1627         (compute_scalar_jump_functions): Use ipa_get_ith_jump_func to access
1628         jump functions.  Update caller.
1629         (compute_pass_through_member_ptrs): Likewise.
1630         (compute_cst_member_ptr_arguments): Likewise.
1631         (ipa_compute_jump_functions_for_edge): Get number of arguments from
1632         the statement, allocate vector.
1633         (ipa_compute_jump_functions): Do not call ipa_count_arguments.
1634         (duplicate_ipa_jump_func_array): Removed.
1635         (ipa_edge_duplication_hook): Use VEC_copy, do not copy argument count.
1636         (ipa_read_node_info): Allocate vector.
1637
1638 2011-09-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1639
1640         PR middle-end/50232
1641         * config/pa/pa.md (return): Define "return" insn pattern.
1642         (epilogue): Use it when no epilogue is needed.
1643         * config/pa/pa.c (pa_can_use_return_insn): New function.
1644         * config/pa/pa-protos.h (pa_can_use_return_insn): Declare.
1645
1646 2011-09-03  Eric Botcazou  <ebotcazou@adacore.com>
1647
1648         * cfgexpand.c (add_stack_var): Assert that the alignment is not zero.
1649         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Revert latest change.
1650         Force at least BITS_PER_UNIT alignment on the new variable.
1651
1652 2011-09-02  Gary Funck <gary@intrepid.com>
1653
1654         * opts.c (print_specific_help): Fix off-by-one compare in
1655         assertion check.
1656         * opts.h (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_DRIVER,
1657         CL_TARGET, CL_COMMON, CL_JOINED, CL_SEPARATE, CL_UNDOCUMENTED):
1658         Increase by +5 to allow for more languages.
1659         * optc-gen.awk: Generate #if that ensures that the number of
1660         languages is within the implementation-defined limit.
1661
1662 2011-09-02  Michael Matz  <matz@suse.de>
1663
1664         PR middle-end/50260
1665         * ipa-split.c (split_function): Call add_referenced_var.
1666
1667         * tree-ssa-phiopt.c (cond_store_replacement): Don't call get_var_ann.
1668         (cond_if_else_store_replacement_1): Ditto.
1669         * tree-ssa-pre.c (get_representative_for): Ditto.
1670         (create_expression_by_pieces): Ditto.
1671         (insert_into_preds_of_block): Ditto.
1672         * tree-sra.c (create_access_replacement): Ditto.
1673         (get_replaced_param_substitute): Ditto.
1674
1675 2011-09-02  Bernd Schmidt  <bernds@codesourcery.com>
1676
1677         * config/c6x/c6x.md (collapse-ndfa, no-comb-vect): New
1678         automata_options.
1679         (d1, l1, s1, m1, d2, l2, s2, m2): Changed to define_query_cpu_unit.
1680         (l1w, s1w, l2w, s2w): Define in the main automaton.
1681         (fps1, fpl1, adddps1, adddpl1, fps2, fpl2, adddps2, adddpl2): New
1682         units.
1683         * config/c6x/c6x.c (c6x_sched_insn_info): Add unit_mask member.
1684         (c6x_unit_names): Add the new units.
1685         (c6x_unit_codes): New static array.
1686         (UNIT_QID_D1, UNIT_QID_L1, UNIT_QID_S1, UNIT_QID_M1, UNIT_QID_FPS1,
1687         UNIT_QID_FPL1, UNIT_QID_ADDDPS1, UNIT_QID_ADDDPL1,
1688         UNIT_QID_SIDE_OFFSET): New macros.
1689         (RESERVATION_S2): Adjust value.
1690         (c6x_option_override): Compute c6x_unit_codes.
1691         (assign_reservations): Take the unit_mask of the last instruction
1692         into account.  Detect floating point reservations by looking for
1693         the new units.  Don't assign reservations if the field is already
1694         nonzero.
1695         (struct c6x_sched_context): Add member prev_cycle_state_ctx.
1696         (init_sched_state): Initialize it.
1697         (c6x_clear_sched_context): Free it.
1698         (insn_set_clock): Clear reservation.
1699         (prev_cycle_state): New static variable.
1700         (c6x_init_sched_context): Save it.
1701         (c6x_sched_init): Allocate space for it and clear it.
1702         (c6x_sched_dfa_pre_cycle_insn): New static function.
1703         (c6x_dfa_new_cycle): Save state at the start of a new cycle.
1704         (c6x_variable_issue): Only record units in the unit_mask that
1705         were not set at the start of the cycle.
1706         (c6x_variable_issue): Compute and store the unit_mask from the
1707         current state.
1708         (reorg_split_calls): Ensure the new information remains correct.
1709         (TARGET_SCHED_DFA_NEW_CYCLE, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1710         TARGET_SCHED_DFA_PRE_CYCLE_INSN): Define.
1711         * config/c6x/c6x.h (CPU_UNITS_QUERY): Define.
1712         * config/c6x/c6x-sched.md.in (fp4_ls_N__CROSS_, adddp_ls_N__CROSS_):
1713         Add special reservations.
1714         * config/c6x/c6x-sched.md: Regenerate.
1715
1716 2011-09-02  Martin Jambor  <mjambor@suse.cz>
1717
1718         * ipa-prop.h (ipa_node_params): Removed fields
1719         called_with_var_arguments and node_versionable.
1720         (ipa_set_called_with_variable_arg): Removed.
1721         (ipa_is_called_with_var_arguments): Likewise.
1722         * ipa-cp.c (ipa_get_lattice): Fixed index check in an assert.
1723         (determine_versionability): Do not check for type attributes and va
1724         builtins.  Record versionability into inline summary.
1725         (initialize_node_lattices): Do not check
1726         ipa_is_called_with_var_arguments.
1727         (propagate_constants_accross_call): Likewise, ignore arguments we do
1728         not have PARM_DECLs for, set variable flag for parameters that were
1729         not passed a value.
1730         (create_specialized_node): Dump info that we cannot change signature.
1731         * ipa-prop.c (ipa_compute_jump_functions): Do not care about variable
1732         number of arguments.
1733         (ipa_make_edge_direct_to_target): Likewise.
1734         (ipa_update_after_lto_read): Likewise.
1735         (ipa_node_duplication_hook): Do not copy called_with_var_arguments flag.
1736         * tree-inline.c (copy_arguments_for_versioning): Copy PARM_DECLs if
1737         they were remapped.
1738
1739 2011-09-02  Richard Guenther  <rguenther@suse.de>
1740
1741         PR tree-optimization/27460
1742         PR middle-end/29269
1743         * doc/md.texi (vcond): Document.
1744         * genopinit.c (optabs): Turn vcond{,u}_optab into a conversion
1745         optab with two modes.
1746         * optabs.h (enum convert_optab_index): Add COI_vcond, COI_vcondu.
1747         (enum direct_optab_index): Remove DOI_vcond, DOI_vcondu.
1748         (vcond_optab): Adjust.
1749         (vcondu_optab): Likewise.
1750         (expand_vec_cond_expr_p): Adjust prototype.
1751         * optabs.c (get_vcond_icode): Adjust.
1752         (expand_vec_cond_expr_p): Likewise.
1753         (expand_vec_cond_expr): Likewise.
1754         * tree-vect-stmts.c (vect_is_simple_cond): Return the comparison
1755         vector type.
1756         (vectorizable_condition): Allow differing types for comparison
1757         and result.
1758         * config/i386/i386.c (ix86_expand_sse_cmp): Use proper mode
1759         for the comparison.
1760         * config/i386/sse.md (vcond<mode>): Split to
1761         vcond<V_256:mode><VF_256:mode>, vcond<V_128:mode><VF_128:mode>,
1762         vcond<V_128:mode><VI124_128:mode> and
1763         vcondu<V_128:mode><VI124_128:mode>.
1764         (vcondv2di): Change to vcond<VI8F_128:mode>v2di.
1765         (vconduv2di): Likewise.
1766         * config/arm/neon.md (vcond<mode>): Change to vcond*<mode><mode>.
1767         (vcondu<mode>): Likewise.
1768         * config/ia64/vect.md (vcond<mode>): Likewise.
1769         (vcondu<mode>): Likewise.
1770         (vcondv2sf): Likewise.
1771         * config/mips/mips-ps-3d.md (vcondv2sf): Likewise.
1772         * config/rs6000/paired.md (vcondv2sf): Likewise.
1773         * config/rs6000/vector.md (vcond<mode>): Likewise.
1774         (vcondu<mode>): Likewise.
1775         * config/spu/spu.md (vcond<mode>): Likewise.
1776         (vcondu<mode>): Likewise.
1777
1778 2011-09-02  Richard Guenther  <rguenther@suse.de>
1779
1780         * pretty-print.h (pp_unsigned_wide_integer): New.
1781         * tree-pretty-print.c (dump_generic_node): Print unsigned
1782         host-wide-int fitting INTEGER_CSTs with pp_unsigned_wide_integer.
1783
1784 2011-09-02  Richard Sandiford  <richard.sandiford@linaro.org>
1785
1786         PR target/49987
1787         * config/rs6000/rs6000.c (paired_expand_vector_init): Check for
1788         valid CONST_VECTOR operands.
1789         (rs6000_expand_vector_init): Likewise.
1790
1791 2011-09-02  Martin Jambor  <mjambor@suse.cz>
1792
1793         * cgraph.h (cgraph_indirect_call_info): Removed field thunk_delta.
1794         * gimple-fold.c (gimple_get_virt_method_for_binfo): Rewritten to use
1795         BINFO_VTABLE.  Parameter delta removed, all callers updated.
1796         * tree.c (free_lang_data_in_binfo): Clear BINFO_VIRTUALs instead
1797         BINFO_VTABLE.
1798         * cgraph.c (cgraph_make_edge_direct): Removed parameter delta, updated
1799         all calls.
1800         * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Removed
1801         handling of thunk_delta.
1802         * ipa-cp.c (get_indirect_edge_target): Removed parameter delta.
1803         (devirtualization_time_bonus): Do not handle thunk deltas.
1804         (ipcp_discover_new_direct_edges): Likewise.
1805         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
1806         (try_make_edge_direct_simple_call): Likewise.
1807         (try_make_edge_direct_virtual_call): Likewise.
1808         * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise.  Mark
1809         parameter set as unused.
1810         (output_edge_opt_summary): Likewise.  Mark both parameters as unused.
1811         * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise.  Mark
1812         parameter set as unused.
1813         (output_edge_opt_summary): Likewise.  Mark both parameters as unused.
1814         (input_edge_opt_summary): Likewise.
1815         * lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not stream
1816         BINFO_VIRTUALS at all.
1817         * lto-streamer-in.c (lto_input_ts_binfo_tree_pointers): Likewise.
1818
1819 2011-09-02  Richard Guenther  <rguenther@suse.de>
1820
1821         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not fold alloca (0).
1822         (ccp_fold_stmt): Continue replacing args when folding alloca fails.
1823
1824 2011-08-31  Richard Guenther  <rguenther@suse.de>
1825
1826         * expr.c (expand_expr_real_2): Move COND_EXPR and VEC_COND_EXPR
1827         handling here, from ...
1828         (expand_expr_real_1): ... here.
1829         * gimple-pretty-print.c (dump_ternary_rhs): Handle COND_EXPR
1830         and VEC_COND_EXPR.
1831         * gimple.c (gimple_rhs_class_table): Make COND_EXPR and VEC_COND_EXPR
1832         a GIMPLE_TERNARY_RHS.
1833         * tree-cfg.c (verify_gimple_assign_ternary): Handle COND_EXPR
1834         and VEC_COND_EXPR here ...
1835         (verify_gimple_assign_single): ... not here.
1836         * gimple-fold.c (fold_gimple_assign): Move COND_EXPR folding.
1837         * tree-object-size.c (cond_expr_object_size): Adjust.
1838         (collect_object_sizes_for): Likewise.
1839         * tree-scalar-evolution.c (interpret_expr): Don't handle ternary RHSs.
1840         * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and simplify.
1841         (ssa_forward_propagate_and_combine): Adjust.
1842         * tree-ssa-loop-im.c (move_computations_stmt): Build the COND_EXPR
1843         as ternary.
1844         * tree-ssa-threadedge.c (fold_assignment_stmt): Adjust.
1845         * tree-vect-loop.c (vect_is_simple_reduction_1): Likewise.
1846         * tree-vect-stmt.c (vectorizable_condition): Likewise.
1847         * tree-vrp.c (extract_range_from_cond_expr): Likewise.
1848         (extract_range_from_assignment): Likewise.
1849
1850 2011-08-31  Richard Sandiford  <rdsandiford@googlemail.com>
1851
1852         * config/i386/i386.md: Use (match_test ...) for attribute tests.
1853         * config/i386/mmx.md: Likewise.
1854         * config/i386/sse.md: Likewise.
1855         * config/i386/predicates.md (call_insn_operand): Use
1856         (not (match_test "...")) instead of (match_test "!...")
1857         * config/i386/constraints.md (w): Likewise.
1858
1859 2011-08-31  Richard Sandiford  <rdsandiford@googlemail.com>
1860
1861         * doc/md.texi: Describe the use of match_tests in attribute tests.
1862         * rtl.def (MATCH_TEST): Update commentary.
1863         * genattrtab.c (attr_copy_rtx, check_attr_test, clear_struct_flag)
1864         (write_test_expr, walk_attr_value): Handle MATCH_TEST.
1865
1866 2011-08-31  Richard Sandiford  <rdsandiford@googlemail.com>
1867
1868         * genattrtab.c (attr_rtx_1): Hash SYMBOL_REFs.
1869         (attr_string): Use copy_md_ptr_loc.
1870
1871 2011-08-31  Martin Jambor  <mjambor@suse.cz>
1872
1873         PR middle-end/49886
1874         * ipa-inline-analysis.c (compute_inline_parameters): Set
1875         can_change_signature of noes with typde attributes.
1876         * ipa-split.c (split_function): Do not skip any arguments if
1877         can_change_signature is set.
1878
1879 2011-08-31  Martin Jambor  <mjambor@suse.cz>
1880
1881         * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Alias
1882         check removed.
1883
1884 2011-08-31  Richard Guenther  <rguenther@suse.de>
1885
1886         * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
1887         special-casing.
1888
1889 2011-08-31  Marc Glisse  <marc.glisse@inria.fr>
1890
1891         * doc/generic.texi (Types for C++): CP_TYPE_QUALS -> cp_type_quals.
1892
1893 2011-08-31  Tom de Vries  <tom@codesourcery.com>
1894
1895         PR middle-end/43513
1896         * Makefile.in (tree-ssa-ccp.o): Add $(PARAMS_H) to rule.
1897         * tree-ssa-ccp.c (params.h): Include.
1898         (fold_builtin_alloca_for_var): New function.
1899         (ccp_fold_stmt): Use fold_builtin_alloca_for_var.
1900
1901 2011-08-30  Uros Bizjak  <ubizjak@gmail.com>
1902
1903         * config/i386/i386.c (ix86_valid_target_attribute_inner_p):
1904         Handle FMA option.
1905
1906 2011-08-30  Andrew Stubbs  <ams@codesourcery.com>
1907
1908         * config/arm/arm.c (optimal_immediate_sequence_1): Make b1, b2,
1909         b3 and b4 unsigned.
1910
1911 2011-08-30  Andrew Stubbs  <ams@codesourcery.com>
1912
1913         * config/arm/arm.c (arm_gen_constant): Set can_negate correctly
1914         when code is SET.
1915
1916 2011-08-30  Richard Guenther  <rguenther@suse.de>
1917
1918         PR middle-end/48571
1919         * gimple.h (maybe_fold_offset_to_address): Remove.
1920         (maybe_fold_offset_to_reference): Likewise.
1921         (maybe_fold_stmt_addition): Likewise.
1922         (may_propagate_address_into_dereference): Likewise.
1923         * tree-inline.c (remap_gimple_op_r): Do not reconstruct
1924         array references.
1925         * gimple-fold.c (canonicalize_constructor_val): Likewise.
1926         Canonicalize invariant POINTER_PLUS_EXPRs to invariant MEM_REF
1927         addresses instead.
1928         (may_propagate_address_into_dereference): Remove.
1929         (maybe_fold_offset_to_array_ref): Likewise.
1930         (maybe_fold_offset_to_reference): Likewise.
1931         (maybe_fold_offset_to_address): Likewise.
1932         (maybe_fold_stmt_addition): Likewise.
1933         (fold_gimple_assign): Do not reconstruct array references but
1934         instead canonicalize invariant POINTER_PLUS_EXPRs to invariant
1935         MEM_REF addresses.
1936         (gimple_fold_stmt_to_constant_1): Likewise.
1937         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1938         * gimplify.c (gimplify_conversion): Likewise.
1939         (gimplify_expr): Likewise.
1940
1941 2011-08-30  Ilya Tocar  <ilya.tocar@intel.com>
1942
1943         * config/i386/fmaintrin.h: New.
1944         * config.gcc: Add fmaintrin.h.
1945         * config/i386/i386.c
1946         (enum ix86_builtins) <IX86_BUILTIN_VFMADDSS3>: New.
1947         <IX86_BUILTIN_VFMADDSD3>: Likewise.
1948         * config/i386/sse.md (fmai_vmfmadd_<mode>): New.
1949         (*fmai_fmadd_<mode>): Likewise.
1950         (*fmai_fmsub_<mode>): Likewise.
1951         (*fmai_fnmadd_<mode>): Likewise.
1952         (*fmai_fnmsub_<mode>): Likewise.
1953         * config/i386/immintrin.h: Add fmaintrin.h.
1954
1955 2011-08-30  Bernd Schmidt  <bernds@codesourcery.com>
1956
1957         * genautomata.c (NO_COMB_OPTION): New macro.
1958         (no_comb_flag): New static variable.
1959         (gen_automata_option): Handle NO_COMB_OPTION.
1960         (comb_vect_p): False if no_comb_flag.
1961         (add_vect): Move computation of min/max values.  Return early if
1962         no_comb_flag.
1963         * doc/md.texi (automata_option): Document no-comb-vect.
1964
1965         * config/i386/i386.c (get_pc_thunk_name): Change prefix to
1966         "__x86.get_pc_thunk".
1967
1968         * bb-reorder.c (insert_section_boundary_note): Only do it if
1969         we reordered the blocks; i.e. not if !optimize_function_for_speed_p.
1970
1971 2011-08-30  Christian Bruel  <christian.bruel@st.com>
1972
1973         * coverage.c (coverage_init): Check flag_branch_probabilities instead of
1974         flag_profile_use.
1975
1976 2011-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
1977
1978         * config/rs6000/rs6000.opt (-msave-toc-indirect): Change default
1979         to off.  Document switch.
1980         * doc/invoke.texi (-msave-toc-indirect): Ditto.
1981
1982 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
1983
1984         * gthr-posix.h (__gthread_active_p): Do not use preprocessor
1985         conditionals and comments inside macro arguments.
1986
1987 2011-08-29  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
1988             Richard Guenther  <rguenther@suse.de>
1989
1990         * tree.h (constant_boolean_node): Adjust prototype.
1991         * fold-const.c (fold_convert_loc): Move aggregate conversion
1992         leeway down.
1993         (constant_boolean_node): Make value parameter boolean, add
1994         vector type handling.
1995         (fold_unary_loc): Use constant_boolean_node.
1996         (fold_binary_loc): Preserve types properly when folding
1997         COMPLEX_EXPR <__real x, __imag x>.
1998         * gimplify.c (gimplify_expr): Handle vector comparison.
1999         * tree.def (EQ_EXPR, ...): Document behavior on vector typed
2000         comparison.
2001         * tree-cfg.c (verify_gimple_comparison): Verify vector typed
2002         comparisons.
2003
2004 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
2005
2006         PR middle-end/48722
2007         * emit-rtl.c (unshare_all_rtl_again): For CALL_INSNs,
2008         reset_used_flags also in CALL_INSN_FUNCTION_USAGE.
2009         (verify_rtl_sharing): Likewise and verify_rtx_sharing
2010         in there too.
2011         (unshare_all_rtl_in_chain): For CALL_INSNs
2012         copy_rtx_if_shared also CALL_INSN_FUNCTION_USAGE.
2013
2014 2011-08-29  Richard Guenther  <rguenther@suse.de>
2015
2016         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Set a location
2017         on the built ADDR_EXPR.
2018
2019 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
2020
2021         PR debug/50215
2022         * var-tracking.c (create_entry_value): Call cselib_lookup_from_insn
2023         before adding ENTRY_VALUE to val->locs.
2024
2025 2011-08-28  Mikael Pettersson  <mikpe@it.uu.se>
2026
2027         PR bootstrap/50218
2028         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Initialize
2029         comp.
2030
2031 2011-08-27  Bernd Schmidt  <bernds@codesourcery.com>
2032
2033         * doc/rtl.texi (simple_return): Document.
2034         (parallel, PATTERN): Here too.
2035         * doc/md.texi (return): Mention it's allowed to expand to simple_return
2036         in some cases.
2037         (simple_return): Document standard pattern.
2038         * gengenrtl.c (special_rtx): SIMPLE_RETURN is special.
2039         * final.c (final_scan_insn): Use ANY_RETURN_P on body.
2040         * reorg.c (function_return_label, function_simple_return_label):
2041         New static variables, replacing...
2042         (end_of_function_label): ... this.
2043         (simplejump_or_return_p): New static function.
2044         (optimize_skip, steal_delay_list_from_fallthrough,
2045         fill_slots_from_thread): Use it.
2046         (relax_delay_slots): Likewise.  Use ANY_RETURN_P on body.
2047         (rare_destination, follow_jumps): Use ANY_RETURN_P on body.
2048         (find_end_label): Take a new arg which is one of the two return
2049         rtxs.  Depending on which, set either function_return_label or
2050         function_simple_return_label.  All callers changed.
2051         (make_return_insns): Make both kinds.
2052         (dbr_schedule): Adjust for two kinds of end labels.
2053         * function.c (emit_return_into_block): Set JUMP_LABEL properly.
2054         * genemit.c (gen_exp): Handle SIMPLE_RETURN.
2055         (gen_expand, gen_split): Use ANY_RETURN_P.
2056         * df-scan.c (df_uses_record): Handle SIMPLE_RETURN.
2057         * rtl.def (SIMPLE_RETURN): New code.
2058         * ifcvt.c (find_if_case_1): Be more careful about
2059         redirecting jumps to the EXIT_BLOCK.
2060         * jump.c (condjump_p, condjump_in_parallel_p, any_condjump_p,
2061         returnjump_p_1): Handle SIMPLE_RETURNs.
2062         * print-rtl.c (print_rtx): Likewise.
2063         * rtl.c (copy_rtx): Likewise.
2064         * bt-load.c (compute_defs_uses_and_gen): Use ANY_RETURN_P.
2065         * combine.c (simplify_set): Likewise.
2066         * resource.c (find_dead_or_set_registers, mark_set_resources):
2067         Likewise.
2068         * emit-rtl.c (verify_rtx_sharing, classify_insn, copy_insn_1,
2069         copy_rtx_if_shared_1, mark_used_flags): Handle SIMPLE_RETURNs.
2070         (init_emit_regs): Initialize simple_return_rtx.
2071         * cfglayout.c (fixup_reorder_chain): Pass a JUMP_LABEL to
2072         force_nonfallthru_and_redirect.
2073         * rtl.h (ANY_RETURN_P): Allow SIMPLE_RETURN.
2074         (GR_SIMPLE_RETURN): New enum value.
2075         (simple_return_rtx): New macro.
2076         * basic-block.h (force_nonfallthru_and_redirect): Adjust
2077         declaration.
2078         * cfgrtl.c (force_nonfallthru_and_redirect): Take a new jump_label
2079         argument.  All callers changed.  Be careful about what kinds of
2080         returnjumps to generate.
2081         * config/i386/3i86.c (ix86_pad_returns, ix86_count_insn_bb,
2082         ix86_pad_short_function): Likewise.
2083         * config/arm/arm.c (arm_final_prescan_insn): Handle both kinds
2084         of return.
2085         * config/mips/mips.md (any_return): New code_iterator.
2086         (optab): Add cases for return and simple_return.
2087         (return): Expand to a simple_return.
2088         (simple_return): New pattern.
2089         (*<optab>, *<optab>_internal for any_return): New patterns.
2090         (return_internal): Remove.
2091         * config/mips/mips.c (mips_expand_epilogue): Make the last insn
2092         a simple_return_internal.
2093
2094 2011-08-27  Uros Bizjak  <ubizjak@gmail.com>
2095
2096         * config/i386/sse.md (*absneg<mode>2): Fix split condition.
2097         (vec_extract_lo_<mode>): Prevent both operands in memory.
2098         (vec_extract_lo_v16hi): Ditto.
2099         (*vec_extract_v4sf_mem): Add TARGET_SSE insn constraint.
2100
2101 2011-08-27  Uros Bizjak  <ubizjak@gmail.com>
2102
2103         * config/i386/sse.md (mulv16qi3): Attach REG_EQUAL note.
2104         (*sse2_mulv4si3): Ditto.
2105         (mulv2di3): Ditto.
2106         * config/i386/i386.c (legitimize_tls_address): Change REG_EQIV
2107         notes to REG_EQUAL.
2108
2109 2011-08-27  Uros Bizjak  <ubizjak@gmail.com>
2110
2111         PR target/50202
2112         * config/i386/sse.md (sse4_2_pcmpestr): Emit NOTE_INSN_DELETED note
2113         when all outputs are unused.
2114         (sse4_2_pcmpistr): Ditto.
2115
2116 2011-08-26  Uros Bizjak  <ubizjak@gmail.com>
2117
2118         * config/i386/i386.md (round<mode>2): New expander.
2119         * config/i386/i386.c (enum ix86_builtins): Add
2120         IX86_BUILTIN_ROUND{PS,PD}_AZ{,256}.
2121         (struct builtin_description): Add __builtin_ia32_round{ps,pd}_az{,256}
2122         descriptions.
2123         (ix86_builtin_vectorized_function): Handle BUILT_IN_ROUND{,F} builtins.
2124         (ix86_build_const_vector): Rewrite using loop with RTVEC_ELT accessor.
2125
2126 2011-08-26  Uros Bizjak  <ubizjak@gmail.com>
2127
2128         PR middle-end/50083
2129         * convert.c (convert_to_integer) <BUIT_IN_ROUND{,F,L}>: Convert
2130         only when TARGET_C99_FUNCTIONS.
2131         <BUILT_IN_NEARBYINT{,F,L}>: Ditto.
2132         <BUILT_IN_RINT{,F,L}>: Ditto.
2133
2134 2011-08-26  Michael Matz  <matz@suse.de>
2135             Jakub Jelinek  <jakub@redhat.com>
2136
2137         PR lto/50165
2138         * lto-streamer-in.c (canon_file_name): Initialize new_slot->len;
2139         don't call strlen twice, use memcpy.
2140
2141 2011-08-26  H.J. Lu  <hongjiu.lu@intel.com>
2142
2143         * config/i386/bmi2intrin.h: Allow in <immintrin.h>.
2144         * config/i386/bmiintrin.h: Likewise.
2145         * config/i386/lzcntintrin.h: Likewise.
2146
2147         * config/i386/immintrin.h: Include <lzcntintrin.h>,
2148         <bmiintrin.h> and <bmi2intrin.h>.
2149
2150 2011-08-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2151
2152         PR target/50166
2153         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main.
2154         * configure: Regenerate.
2155
2156 2011-08-26  Jakub Jelinek  <jakub@redhat.com>
2157
2158         PR c/50179
2159         * c-typeck.c (c_process_expr_stmt): Skip over nops and
2160         call mark_exp_read even if exprv is ADDR_EXPR.
2161
2162 2011-08-26  Richard Sandiford  <richard.sandiford@linaro.org>
2163
2164         * df-problems.c (df_note_bb_compute): Pass uses rather than defs
2165         to df_set_dead_notes_for_mw.
2166
2167 2011-08-26  Richard Guenther  <rguenther@suse.de>
2168
2169         * varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF].
2170
2171 2011-08-26  Zdenek Dvorak  <ook@ucw.cz>
2172             Tom de Vries  <tom@codesourcery.com>
2173
2174         * tree-ssa-loop-ivopts.c (struct cost_pair): Add comp field.
2175         (struct ivopts_data): Add loop_single_exit_p field.
2176         (niter_for_exit): Change parameter desc_p into return value.  Return
2177         desc if desc->may_be_zero.  Free desc if unused.
2178         (niter_for_single_dom_exit): Change return type.
2179         (find_induction_variables): Handle changed return type of
2180         niter_for_single_dom_exit.  Dump may_be_zero.
2181         (add_candidate_1): Keep original base and step type for IP_ORIGINAL.
2182         (set_use_iv_cost): Add and handle comp parameter.
2183         (determine_use_iv_cost_generic, determine_use_iv_cost_address): Add
2184         comp argument to set_use_iv_cost.
2185         (strip_wrap_conserving_type_conversions, expr_equal_p)
2186         (difference_cannot_overflow_p, iv_elimination_compare_lt): New function.
2187         (may_eliminate_iv): Add comp parameter.  Handle new return type of
2188         niter_for_exit.  Use loop_single_exit_p.  Use iv_elimination_compare_lt.
2189         (determine_use_iv_cost_condition): Add comp argument to set_use_iv_cost
2190         and may_eliminate_iv.
2191         (rewrite_use_compare): Move call to iv_elimination_compare to ...
2192         (may_eliminate_iv): Here.
2193         (tree_ssa_iv_optimize_loop): Initialize loop_single_exit_p.
2194
2195 2011-08-26  Tom de Vries  <tom@codesourcery.com>
2196
2197         * tree-pretty-print (dump_generic_node): Test for NULL_TREE before
2198         accessing TREE_TYPE.
2199
2200 2011-08-26  Jiangning Liu  <jiangning.liu@arm.com>
2201
2202         * config/arm/arm.md (*ior_scc_scc): Enable for Thumb2 as well.
2203         (*ior_scc_scc_cmp): Likewise
2204         (*and_scc_scc): Likewise.
2205         (*and_scc_scc_cmp): Likewise.
2206         (*and_scc_scc_nodom): Likewise.
2207         (*cmp_ite0, *cmp_ite1, *cmp_and, *cmp_ior): Handle Thumb2.
2208
2209 2011-08-26  Jakub Jelinek  <jakub@redhat.com>
2210
2211         * rtlanal.c (nonzero_bits1): Handle CLRSB.
2212
2213 2011-08-26  Richard Guenther  <rguenther@suse.de>
2214
2215         * expr.c (string_constant): Handle &MEM_REF.
2216
2217 2011-08-26  Andrew Stubbs  <ams@codesourcery.com>
2218
2219         * config/arm/arm.c (struct four_ints): New type.
2220         (count_insns_for_constant): Delete function.
2221         (find_best_start): Delete function.
2222         (optimal_immediate_sequence): New function.
2223         (optimal_immediate_sequence_1): New function.
2224         (arm_gen_constant): Move constant splitting code to
2225         optimal_immediate_sequence.
2226         Rewrite constant negation/invertion code.
2227
2228 2011-08-26  Andrew Stubbs  <ams@codesourcery.com>
2229
2230         * config/arm/arm-protos.h (const_ok_for_op): Add prototype.
2231         * config/arm/arm.c (const_ok_for_op): Add support for addw/subw.
2232         Remove prototype. Remove static function type.
2233         * config/arm/arm.md (*arm_addsi3): Add addw/subw support.
2234         Add arch attribute.
2235         * config/arm/constraints.md (Pj, PJ): New constraints.
2236
2237 2011-08-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2238
2239         * config/arm/cortex-a9.md ("cortex_a9_mult_long"): New.
2240         ("cortex_a9_multiply_long"): New and use above.  Handle all
2241         long multiply cases.
2242         ("cortex_a9_multiply"): Handle smmul and smmulr.
2243         ("cortex_a9_mac"): Handle smmla.
2244
2245 2011-08-25  Richard Henderson  <rth@redhat.com>
2246
2247         PR 50132
2248         PR 49864
2249         * cfgcleanup.c (old_insns_match_p): Don't allow cross-jump for
2250         non-constant stack adjutment.
2251         * expr.c (find_args_size_adjust): Break out from ...
2252         (fixup_args_size_notes): ... here.
2253         * rtl.h (find_args_size_adjust): Declare.
2254
2255 2011-08-25  Uros Bizjak  <ubizjak@gmail.com>
2256
2257         * config/i386/i386.md (isa): Add sse2, sse2_noavx, sse3,
2258         sse4 and sse4_noavx.
2259         (enabled): Handle sse2, sse2_noavx, sse3, sse4 and sse4_noavx.
2260         (*pushdf_rex64): Change Y2 register constraint to x.
2261         (*movdf_internal_rex64): Ditto.
2262         (*zero_extendsidi2_rex64): Ditto.
2263         (*movdi_internal): Change Y2 register constraint to x
2264         and update "isa" attribute.
2265         (*pushdf): Ditto.
2266         (*movdf internal): Ditto.
2267         (zero_extendsidi2_1): Ditto.
2268         (*truncdfdf_mixed): Ditto.
2269         (*truncxfdf2_mixed): Ditto.
2270         * config/i386/mmx.md (*mov<mode>_internal_rex64): Change Y2
2271         register constraint to x.
2272         (*movv2sf_internal_rex64): Ditto.
2273         (*mov<mode>_internal): Change Y2 register constraint to x
2274         and add "isa" attribute.
2275         (*movv2sf_internal): Ditto.
2276         (*vec_extractv2si_1): Ditto.
2277         * config/i386/sse.md ("vec_set<mode>_0): Change Y2 and Y4 register
2278         constraints to x and update "isa" attribute.
2279         (*vec_interleave_highv2df): Change Y3 registerconstraint
2280         to x and update "isa" attribute.
2281         (*vec_interleave_lowv2df): Ditto.
2282         (*vec_concatv2df): Change Y2 register constraint to x and
2283         update "isa" attribute.
2284         (sse2_loadld): Ditto.
2285         (*vec_extractv2di_1): Ditto.
2286         (*vec_dupv4si): Ditto.
2287         (*vec_dupv2di): Ditto.
2288         (*vec_concatv4si): Ditto.
2289         (vec_concatv2di): Ditto.
2290         * config/i386/constraints.md (Y2): Remove.
2291         (Y3): Ditto.
2292         (Y4): Ditto.
2293
2294 2011-08-25  Bernd Schmidt  <bernds@codesourcery.com>
2295
2296         * regrename.c (scan_rtx_reg, scan_rtx_address, build_def_use,
2297         dump_def_use_chain): Don't declare.
2298         (mark_conflict, create_new_chain): Move before users.
2299         (regrename_optimize): Move to near end of file.
2300
2301 2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
2302
2303         * config/avr-protos.h (byte_immediate_operand): Remove Prototype.
2304         (secondary_input_reload_class): Remove Prototype.
2305         * config/avr/avr.c (byte_immediate_operand): Remove Function.
2306         * config/avr/avr.md (setmemhi): Use u8_operand.
2307         (strlenhi): Use const0_rtx for comparison.
2308         * config/avr/avr.h (avr_reg_order): Remove Declaration.
2309
2310 2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
2311
2312         * config/avr/avr.c (reg_class_tab): Make local to
2313         avr_regno_reg_class.  Return smallest register class available.
2314
2315 2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
2316
2317         * config/avr/avr.c (STR_PREFIX_P): New Define.
2318         (avr_asm_declare_function_name): Use it.
2319         (avr_asm_named_section): Use it.
2320         (avr_section_type_flags): Use it.
2321
2322 2011-08-25  Bernd Schmidt  <bernds@codesourcery.com>
2323
2324         * doc/md.texi (automata_option): Document collapse-ndfa.
2325         * genautomata.c (COLLAPSE_OPTION): New macro.
2326         (collapse_flag): New static variable.
2327         (struct description): New member normal_decls_num.
2328         (struct automaton): New members advance_ainsn and collapse_ainsn.
2329         (gen_automata_option): Check for COLLAPSE_OPTION.
2330         (collapse_ndfa_insn_decl): New static variable.
2331         (add_collapse_ndfa_insn_decl, special_decl_p): New functions.
2332         (find_arc): If insn is the collapse-ndfa insn, accept any arc we find.
2333         (transform_insn_regexps): Call add_collapse_ndfa_insn_decl if
2334         necessary.  Use normal_decls_num rather than decls_num, remove
2335         test for special decls.
2336         (create_alt_states, form_ainsn_with_same_reservs): Use special_decl_p.
2337         (make_automaton); Likewise.  Use the new advance_cycle_insn member
2338         of struct automaton.
2339         (create_composed_state): Disallow advance-cycle arcs if collapse_flag
2340         is set.
2341         (NDFA_to_DFA): Don't create composed states for the collapse-ndfa
2342         transition.  Create the necessary transitions for it.
2343         (create_ainsns): Return void.  Take an automaton_t argument, and
2344         update its ainsn_list, advance_ainsn and collapse_ainsn members.  All
2345         callers changed.
2346         (COLLAPSE_NDFA_VALUE_NAME): New macro.
2347         (output_tables): Output code to define it.
2348         (output_internal_insn_code_evaluation): Output code to accept
2349         const0_rtx as collapse-ndfa transition.
2350         (output_default_latencies, output_print_reservation_func,
2351         output_print_description): Reorganize loops to use normal_decls_num
2352         as loop bound; remove special case for advance_cycle_insn_decl.
2353         (initiate_automaton_gen): Handle COLLAPSE_OPTION.
2354         (check_automata_insn_issues): Check for collapse_ainsn.
2355         (expand_automate): Allocate sufficient space.  Initialize
2356         normal_decls_num.
2357
2358 2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
2359
2360         * config/avr/avr.md: Fix indentation from r177991.
2361
2362 2011-08-25  Bernd Schmidt  <bernds@codesourcery.com>
2363
2364         * regrename.c (struct du_head): Remove member terminated.
2365         (create_new_chain): Don't initialize it.
2366         (scan_rtx_reg): Don't set or test it, test the open_chains_set
2367         bitmap instead.
2368         (tick, this_tick): New global variables, moved out of
2369         regrename_optimize.
2370         (current_id, open_chains, closed_chains, open_chains_set,
2371         live_in_chains, live_hard_regs): Reorder declarations.
2372         (dump_def_use_chain): Move function earlier in the file.
2373         (rename_chains): New static function, broken out of
2374         regrename_optimize.
2375         (regrename_optimize): Use it.  Remove #if 0'ed code.
2376
2377 2011-08-25  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2378
2379         * varasm.c: (default_binds_local_p_1): Commentary typo fix.
2380
2381 2011-08-24  H.J. Lu  <hongjiu.lu@intel.com>
2382
2383         PR target/50172
2384         * config/i386/i386.c (ix86_expand_builtin): Convert to Pmode if needed.
2385
2386 2011-08-24  Richard Guenther  <rguenther@suse.de>
2387
2388         * tree-data-ref.c (dr_analyze_indices): Avoid unsharing the
2389         ref in the basic-block case.  Move stripping array-refs
2390         to the place we create an access-function for it.  Remove
2391         bogus stripping down a MEM_REF to its base.
2392
2393 2011-08-24  Richard Guenther  <rguenther@suse.de>
2394
2395         * fold-const.c (fold_comparison): Fold &a < &a + 4 even
2396         with -fno-strict-overflow.
2397
2398 2011-08-24  Richard Guenther  <rguenther@suse.de>
2399
2400         * tree-vectorizer.c (vect_print_dump_info): Avoid the
2401         file and location clutter when dumping to dump files.
2402
2403 2011-08-24  Simon Baldwin  <simonb@google.com>
2404
2405         * gengtype-state.c (write_state): Remove timestamped header line.
2406
2407 2011-08-24  Joseph Myers  <joseph@codesourcery.com>
2408
2409         * Makefile.in (CFLAGS-collect2.o, CFLAGS-c-family/c-opts.o)
2410         (CFLAGS-c-family/c-pch.o, CFLAGS-prefix.o, CFLAGS-version.o)
2411         (CFLAGS-lto-compress.o, CFLAGS-toplev.o, CFLAGS-intl.o)
2412         (CFLAGS-cppbuiltin.o, CFLAGS-cppdefault.o): New.
2413         (collect2.o, c-family/c-cppbuiltin.o, c-family/c-opts.o)
2414         (c-family/c-pch.o, prefix.o, version.o, lto-compress.o, toplev.o)
2415         (intl.o, cppbuiltin.o, cppdefault.o): Remove explicit compilation
2416         rules.
2417         (lto-wrapper$(exeext)): Use $(LINKER) not $(COMPILER).
2418
2419 2011-08-24  Joseph Myers  <joseph@codesourcery.com>
2420
2421         * Makefile.in (ALL_CXXFLAGS): Include $(CFLAGS-$@).
2422
2423 2011-08-24  Richard Guenther  <rguenther@suse.de>
2424
2425         PR tree-optimization/50067
2426         * tree-data-ref.c (dr_analyze_indices): Do not add an access
2427         function for a MEM_REF base that has no evolution in the loop
2428         nest or that is not analyzable.
2429
2430 2011-08-23  Vladimir Makarov  <vmakarov@redhat.com>
2431
2432         * ira.c (ira_init_register_move_cost): Check small subclasses
2433         through ira_reg_class_max_nregs and ira_available_class_regs.
2434
2435 2011-08-23  Uros Bizjak  <ubizjak@gmail.com>
2436
2437         * config/i386/constraints.md (Yp): New register constraint.
2438         * config/i386/i386.md (*addhi_1): Merge with *addhi_1_lea using
2439         Yp register constraint.
2440         (*addqi_1): Merge with *addqi_1_lea using Yp register constraint.
2441         (*ashlhi3_1): Merge with *ashlhi3_1_lea using Yp register constraint.
2442         (*ashlqi3_1): Merge with *ashlqi3_1_lea using Yp register constraint.
2443
2444 2011-08-23  Kirill Yukhin  <kirill.yukhin@intel.com>
2445
2446         * config/i386/sse.md (<s>mul<mode>3_highpart): Update.
2447
2448 2011-08-23  Mark Heffernan  <meheff@google.com>
2449
2450         PR middle-end/38509
2451         * common.opt (Wfree-nonheap-object): New option.
2452         * doc/invoke.texi (Warning options): Document -Wfree-nonheap-object.
2453         * builtins.c (maybe_emit_free_warning): Add OPT_Wfree_nonheap_object
2454         to warning.
2455         (expand_builtin): Make warning conditional.
2456
2457 2011-08-23  Uros Bizjak  <ubizjak@gmail.com>
2458
2459         * config/i386/i386.md (type): Add imulx, ishiftx and rotatex.
2460         (length_immediate): Handle imulx, ishiftx and rotatex.
2461         (imm_disp): Ditto.
2462         (isa): Add bmi2.
2463         (enabled): Handle bmi2.
2464         (*mul<mode><dwi>3): Split from *<u>mul<mode><dwi>3.
2465         (*umul<mode><dwi>3): Ditto.  Add imulx BMI2 alternative.
2466         (*bmi2_umulditi3_1): New insn pattern.
2467         (*bmi2_umulsidi3_1): Ditto.
2468         (*umul<mode><dwi>3 splitter): New splitter to avoid flags dependency.
2469         (*bmi2_ashl<mode>3_1): New insn pattern.
2470         (*ashl<mode>3_1): Add ishiftx BMI2 alternative.
2471         (*ashl<mode>3_1 splitter): New splitter to avoid flags dependency.
2472         (*bmi2_ashlsi3_1_zext): New insn pattern.
2473         (*ashlsi3_1_zext): Add ishiftx BMI2 alternative.
2474         (*ashlsi3_1_zext splitter): New splitter to avoid flags dependency.
2475         (*bmi2_<shiftrt_insn><mode>3_1): New insn pattern.
2476         (*<shiftrt_insn><mode>3_1): Add ishiftx BMI2 alternative.
2477         (*<shiftrt_insn><mode>3_1 splitter): New splitter to avoid
2478         flags dependency.
2479         (*bmi2_<shiftrt_insn>si3_1_zext): New insn pattern.
2480         (*<shiftrt_insn>si3_1_zext): Add ishiftx BMI2 alternative.
2481         (*<shiftrt_insn>si3_1_zext splitter): New splitter to avoid
2482         flags dependency.
2483         (*bmi2_rorx<mode>3_1): New insn pattern.
2484         (*<rotate_insn><mode>3_1): Add rotatex BMI2 alternative.
2485         (*rotate<mode>3_1 splitter): New splitter to avoid flags dependency.
2486         (*rotatert<mode>3_1 splitter): Ditto.
2487         (*bmi2_rorxsi3_1_zext): New insn pattern.
2488         (*<rotate_insn>si3_1_zext): Add rotatex BMI2 alternative.
2489         (*rotatesi3_1_zext splitter): New splitter to avoid flags dependency.
2490         (*rotatertsi3_1_zext splitter): Ditto.
2491
2492 2011-08-23  Kirill Yukhin  <kirill.yukhin@intel.com>
2493
2494         * common/config/i386/i386-common.c (OPTION_MASK_ISA_BMI2_SET): New.
2495         (OPTION_MASK_ISA_BMI2_UNSET): Likewise.
2496         (ix86_handle_option): Handle OPT_mbmi2 case.
2497         * config.gcc (i[34567]86-*-*): Add bmi2intrin.h.
2498         (x86_64-*-*): Likewise.
2499         * config/i386/bmi2intrin.h: New file.
2500         * config/i386/cpuid.h (bit_BMI2): New.
2501         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2502         BMI2 feature.
2503         * config/i386/i386-c.c (ix86_target_macros_internal):
2504         Conditionally define __BMI2__.
2505         * config/i386/i386.c (ix86_option_override_internal): Define PTA_BMI2.
2506         Handle BMI2 option.
2507         (ix86_valid_target_attribute_inner_p): Handle BMI2 option.
2508         (print_reg): New code.
2509         (ix86_print_operand): Likewise.
2510         (ix86_builtins): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
2511         IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
2512         IX86_BUILTIN_PEXT64.
2513         (bdesc_args): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
2514         IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
2515         IX86_BUILTIN_PEXT64.
2516         * config/i386/i386.h (TARGET_BMI2): New.
2517         * config/i386/i386.md (UNSPEC_PDEP): New.
2518         (UNSPEC_PEXT): Likewise.
2519         (*bmi2_bzhi_<mode>3): Likewise.
2520         (*bmi2_pdep_<mode>3): Likewise.
2521         (*bmi2_pext_<mode>3): Likewise.
2522         * config/i386/i386.opt (mbmi2): New.
2523         * config/i386/x86intrin.h: Include bmi2intrin.h when __BMI2__
2524         is defined.
2525         * doc/extend.texi: Document BMI2 built-in functions.
2526         * doc/invoke.texi: Document -mbmi2.
2527
2528 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
2529
2530         PR middle-end/50161
2531         * simplify-rtx.c (simplify_const_unary_operation): If
2532         op is CONST_INT, don't look at op_mode, but use instead mode.
2533         * optabs.c (add_equal_note): For FFS, CLZ, CTZ,
2534         CLRSB, POPCOUNT, PARITY and BSWAP use operand mode for
2535         operation and TRUNCATE/ZERO_EXTEND if needed.
2536         * doc/rtl.texi (ffs, clrsb, clz, ctz, popcount, parity, bswap):
2537         Document that operand mode must be same as operation mode,
2538         or VOIDmode.
2539         * config/avr/avr.md (paritysi2, *parityqihi2.libgcc,
2540         *paritysihi2.libgcc, popcountsi2, *popcountsi2.libgcc,
2541         *popcountqihi2.libgcc, clzsi2, *clzsihi2.libgcc, ctzsi2,
2542         *ctzsihi2.libgcc, ffssi2, *ffssihi2.libgcc): For unary ops
2543         use the mode of operand for the operation and add truncate
2544         or zero_extend around if needed.
2545         * config/c6x/c6x.md (ctzdi2): Likewise.
2546         * config/bfin/bfin.md (clrsbsi2, signbitssi2): Likewise.
2547
2548 2011-08-12  Michael Matz  <matz@suse.de>
2549
2550         * cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.
2551         (gimple_expand_cfg): Merge alignment info for coalesced pointer
2552         SSA names.
2553
2554 2011-08-23  Richard Guenther  <rguenther@suse.de>
2555
2556         * Makefile.in (tree-data-ref.o): Add tree-affine.h dependency.
2557         * tree-affine.h (aff_comb_cannot_overlap_p): Declare.
2558         * tree-affine.c (aff_comb_cannot_overlap_p): New function, moved
2559         from ...
2560         * tree-ssa-loop-im.c (cannot_overlap_p): ... here.
2561         (mem_refs_may_alias_p): Adjust.
2562         * tree-data-ref.h (dr_may_alias_p): Adjust.
2563         * tree-data-ref.c: Include tree-affine.h.
2564         (dr_analyze_indices): Do nothing for the non-loop case.
2565         (dr_may_alias_p): Distinguish loop and non-loop case.  Disambiguate
2566         more cases in the non-loop case.
2567         * graphite-sese-to-poly.c (write_alias_graph_to_ascii_dimacs): Adjust
2568         calls to dr_may_alias_p.
2569         (write_alias_graph_to_ascii_ecc): Likewise.
2570         (write_alias_graph_to_ascii_dot): Likewise.
2571         (build_alias_set_optimal_p): Likewise.
2572
2573 2011-08-23  Richard Guenther  <rguenther@suse.de>
2574
2575         PR tree-optimization/50162
2576         * tree-vect-stmts.c (vectorizable_call): Fix argument lookup.
2577
2578 2011-08-23  Richard Guenther  <rguenther@suse.de>
2579
2580         * tree-data-ref.c (dr_analyze_indices): Add comments, handle
2581         REALPART_EXPR and IMAGPART_EXPR similar to ARRAY_REFs.
2582         (create_data_ref): Also dump access functions for the created data-ref.
2583
2584 2011-08-22  Uros Bizjak  <ubizjak@gmail.com>
2585             Kirill Yukhin  <kirill.yukhin@intel.com>
2586
2587         PR target/50155
2588         * config/i386/sse.md (VI_AVX2): New.
2589         (<plusminus_insn><mode>3): Use VI_AVX2 mode iterator.
2590         (*<plusminus_insn><mode>3): Ditto.
2591         (<sse2_avx2>_andnot<mode>3): Ditto.
2592         (*andnot<mode>3): Fix order of cond operands.
2593         Add asserts for correct TARGET_xxx.
2594         (*<any_logic:code><mode>3): Ditto.
2595
2596 2011-08-22  Anatoly Sokolov  <aesok@post.ru>
2597
2598         * config/m32c/m32c.h (CLASS_MAX_NREGS): Remove macro.
2599         * config/m32c/m32c-protos.h (m32c_class_max_nregs): Remove.
2600         * config/m32c/m32c.c (m32c_class_max_nregs): Make static. Change
2601         regclass argument type to reg_class_t. Change 'max' and 'v' vars
2602         and return types to unsigned char. Use reg_class_contents instead
2603         of class_contents.
2604         (TARGET_CLASS_MAX_NREGS): Define.
2605
2606 2011-08-22  Bernd Schmidt  <bernds@codesourcery.com>
2607
2608         * config/c6x/c6x.md (indirect_jump_shadow): Tweak representation
2609         to make computed_jump_p return true.
2610
2611 2011-08-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2612
2613         * configure.ac (GCC_PICFLAG_FOR_TARGET): Call it.
2614         (PICFLAG_FOR_TARGET): Substitute.
2615         * aclocal.m4: Regenerate.
2616         * configure: Regenerate.
2617
2618 2011-08-22  Dodji Seketeli  <dodji@redhat.com>
2619
2620         * c-family/c-pch.c (c_common_read_pch): Re-set line table right
2621         after reading in the pch.
2622
2623 2011-08-22  H.J. Lu  <hongjiu.lu@intel.com>
2624
2625         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Error if __ELF__ isn't defined.
2626         * configure: Regenerated.
2627
2628 2011-08-22  Jakub Jelinek  <jakub@redhat.com>
2629
2630         PR tree-optimization/50133
2631         * tree-vect-stmts.c (vect_finish_stmt_generation): Copy location
2632         from stmt instead of some statement around gsi.
2633
2634         PR middle-end/50141
2635         * expr.c (get_bit_range): Only use DECL_THREAD_LOCAL_P if
2636         innerdecl is a VAR_DECL.
2637
2638 2011-08-22  Kirill Yukhin  <kirill.yukhin@intel.com>
2639
2640         * config/i386/avx2intrin.h: New file.
2641         * config/i386/i386-builtin-types.def (PCINT, PCINT64, PV4SI,
2642         PV8SI, V32QI_FTYPE_V32QI, V32QI_FTYPE_V16QI, V16HI_FTYPE_V16HI,
2643         V16HI_FTYPE_V8HI, V8SI_FTYPE_V8SI, V16HI_FTYPE_V16QI,
2644         V8SI_FTYPE_V16QI, V4DI_FTYPE_V16QI, V8SI_FTYPE_V8HI,
2645         V4DI_FTYPE_V8HI, V4DI_FTYPE_V4SI, V4DI_FTYPE_PV4DI,
2646         V4DI_FTYPE_V2DI, V2DI_FTYPE_PCV2DI_V2DI, V4SI_FTYPE_PCV4SI_V4SI,
2647         V32QI_FTYPE_V16HI_V16HI, V16HI_FTYPE_V8SI_V8SI,
2648         V32QI_FTYPE_V32QI_V32QI, V16HI_FTYPE_V32QI_V32QI,
2649         V16HI_FTYPE_V16HI_V8HI, V16HI_FTYPE_V16HI_V16HI,
2650         V16HI_FTYPE_V16HI_INT, V16HI_FTYPE_V16HI_SI,
2651         V16HI_FTYPE_V16HI_V16HI_INT, V32QI_FTYPE_V32QI_V32QI_INT,
2652         V8SI_FTYPE_V8SI_V4SI, V8SI_FTYPE_V8SI_V8SI,
2653         V8SI_FTYPE_V16HI_V16HI, V8SI_FTYPE_V8SI_INT, V8SI_FTYPE_V8SI_SI,
2654         V8SI_FTYPE_PCV8SI_V8SI, V4DI_FTYPE_V4DI_V4DI,
2655         V4DI_FTYPE_V8SI_V8SI, V4DI_FTYPE_V4DI_V2DI,
2656         V4DI_FTYPE_PCV4DI_V4DI, V4DI_FTYPE_V4DI_INT,
2657         V2DI_FTYPE_V4DI_INT, V4DI_FTYPE_V4DI_V4DI_INT,
2658         V4DI_FTYPE_V4DI_V2DI_INT, VOID_FTYPE_PV2DI_V2DI_V2DI,
2659         VOID_FTYPE_PV4DI_V4DI_V4DI, VOID_FTYPE_PV4SI_V4SI_V4SI,
2660         VOID_FTYPE_PV8SI_V8SI_V8SI,
2661         V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_V2DF_INT,
2662         V4DF_FTYPE_V4DF_PCDOUBLE_V4SI_V4DF_INT,
2663         V2DF_FTYPE_V2DF_PCDOUBLE_V2DI_V2DF_INT,
2664         V4DF_FTYPE_V4DF_PCDOUBLE_V4DI_V4DF_INT,
2665         V4SF_FTYPE_V4SF_PCFLOAT_V4SI_V4SF_INT,
2666         V8SF_FTYPE_V8SF_PCFLOAT_V8SI_V8SF_INT,
2667         V4SF_FTYPE_V4SF_PCFLOAT_V2DI_V4SF_INT,
2668         V4SF_FTYPE_V4SF_PCFLOAT_V4DI_V4SF_INT,
2669         V2DI_FTYPE_V2DI_PCINT64_V4SI_V2DI_INT,
2670         V4DI_FTYPE_V4DI_PCINT64_V4SI_V4DI_INT,
2671         V2DI_FTYPE_V2DI_PCINT64_V2DI_V2DI_INT,
2672         V4DI_FTYPE_V4DI_PCINT64_V4DI_V4DI_INT,
2673         V4SI_FTYPE_V4SI_PCINT_V4SI_V4SI_INT,
2674         V8SI_FTYPE_V8SI_PCINT_V8SI_V8SI_INT,
2675         V4SI_FTYPE_V4SI_PCINT_V2DI_V4SI_INT,
2676         V4SI_FTYPE_V4SI_PCINT_V4DI_V4SI_INT,
2677         V16HI_FTYPE_V16HI_SI_COUNT, V16HI_FTYPE_V16HI_V8HI_COUNT,
2678         V8SI_FTYPE_V8SI_SI_COUNT, V8SI_FTYPE_V8SI_V4SI_COUNT,
2679         V4DI_FTYPE_V4DI_INT_COUNT, V4DI_FTYPE_V4DI_V2DI_COUNT,
2680         V4DI_FTYPE_V4DI_INT_CONVERT,
2681         V4DI_FTYPE_V4DI_V4DI_INT_CONVERT): New.
2682         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MPSADBW256,
2683         IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
2684         IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
2685         IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
2686         IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
2687         IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
2688         IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
2689         IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
2690         IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
2691         IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
2692         IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
2693         IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
2694         IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
2695         IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
2696         IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
2697         IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
2698         IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
2699         IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
2700         IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
2701         IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
2702         IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
2703         IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
2704         IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
2705         IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
2706         IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
2707         IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
2708         IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
2709         IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
2710         IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
2711         IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
2712         IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
2713         IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
2714         IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
2715         IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
2716         IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
2717         IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
2718         IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
2719         IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
2720         IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
2721         IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
2722         IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
2723         IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
2724         IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
2725         IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
2726         IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
2727         IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
2728         IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
2729         IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
2730         IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
2731         IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
2732         IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
2733         IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
2734         IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
2735         IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
2736         IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
2737         IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
2738         IX86_BUILTIN_PUNPCKLWD256, IX86_BUILTIN_PUNPCKLDQ256,
2739         IX86_BUILTIN_PUNPCKLQDQ256, IX86_BUILTIN_PXOR256,
2740         IX86_BUILTIN_MOVNTDQA256, IX86_BUILTIN_VBROADCASTSS_PS,
2741         IX86_BUILTIN_VBROADCASTSS_PS256,
2742         IX86_BUILTIN_VBROADCASTSD_PD256,
2743         IX86_BUILTIN_VBROADCASTSI256, IX86_BUILTIN_PBLENDD256,
2744         IX86_BUILTIN_PBLENDD128, IX86_BUILTIN_PBROADCASTB256,
2745         IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
2746         IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
2747         IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
2748         IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
2749         IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
2750         IX86_BUILTIN_VPERMDI256, IX86_BUILTIN_VPERMTI256,
2751         IX86_BUILTIN_VEXTRACT128I256, IX86_BUILTIN_VINSERT128I256,
2752         IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ,
2753         IX86_BUILTIN_MASKLOADD256, IX86_BUILTIN_MASKLOADQ256,
2754         IX86_BUILTIN_MASKSTORED, IX86_BUILTIN_MASKSTOREQ,
2755         IX86_BUILTIN_MASKSTORED256, IX86_BUILTIN_MASKSTOREQ256,
2756         IX86_BUILTIN_PSLLVV4DI, IX86_BUILTIN_PSLLVV2DI,
2757         IX86_BUILTIN_PSLLVV8SI, IX86_BUILTIN_PSLLVV4SI,
2758         IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
2759         IX86_BUILTIN_PSRLVV4DI, IX86_BUILTIN_PSRLVV2DI,
2760         IX86_BUILTIN_PSRLVV8SI, IX86_BUILTIN_PSRLVV4SI,
2761         IX86_BUILTIN_GATHERSIV2DF, IX86_BUILTIN_GATHERSIV4DF,
2762         IX86_BUILTIN_GATHERDIV2DF, IX86_BUILTIN_GATHERDIV4DF,
2763         IX86_BUILTIN_GATHERSIV4SF, IX86_BUILTIN_GATHERSIV8SF,
2764         IX86_BUILTIN_GATHERDIV4SF, IX86_BUILTIN_GATHERDIV8SF,
2765         IX86_BUILTIN_GATHERSIV2DI, IX86_BUILTIN_GATHERSIV4DI,
2766         IX86_BUILTIN_GATHERDIV2DI, IX86_BUILTIN_GATHERDIV4DI,
2767         IX86_BUILTIN_GATHERSIV4SI, IX86_BUILTIN_GATHERSIV8SI,
2768         IX86_BUILTIN_GATHERDIV4SI, IX86_BUILTIN_GATHERDIV8SI.
2769         (bdesc_special_args): Add IX86_BUILTIN_MOVNTDQA256,
2770         IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ,
2771         IX86_BUILTIN_MASKLOADD256, IX86_BUILTIN_MASKLOADQ256,
2772         IX86_BUILTIN_MASKSTORED, IX86_BUILTIN_MASKSTOREQ,
2773         IX86_BUILTIN_MASKSTORED256, IX86_BUILTIN_MASKSTOREQ256.
2774         (bdesc_args): Add  IX86_BUILTIN_MPSADBW256,
2775         IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
2776         IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
2777         IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
2778         IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
2779         IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
2780         IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
2781         IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
2782         IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
2783         IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
2784         IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
2785         IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
2786         IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
2787         IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
2788         IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
2789         IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
2790         IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
2791         IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
2792         IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
2793         IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
2794         IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
2795         IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
2796         IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
2797         IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
2798         IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
2799         IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
2800         IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
2801         IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
2802         IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
2803         IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
2804         IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
2805         IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
2806         IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
2807         IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
2808         IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
2809         IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
2810         IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
2811         IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
2812         IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
2813         IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
2814         IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
2815         IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
2816         IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
2817         IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
2818         IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
2819         IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
2820         IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
2821         IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
2822         IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
2823         IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
2824         IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
2825         IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
2826         IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
2827         IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
2828         IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
2829         IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
2830         IX86_BUILTIN_PUNPCKLWD256, IX86_BUILTIN_PUNPCKLDQ256,
2831         IX86_BUILTIN_PUNPCKLQDQ256, IX86_BUILTIN_PXOR256,
2832         IX86_BUILTIN_VBROADCASTSS_PS, IX86_BUILTIN_VBROADCASTSS_PS256,
2833         IX86_BUILTIN_VBROADCASTSD_PD256,
2834         IX86_BUILTIN_VBROADCASTSI256, IX86_BUILTIN_PBLENDD256,
2835         IX86_BUILTIN_PBLENDD128, IX86_BUILTIN_PBROADCASTB256,
2836         IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
2837         IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
2838         IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
2839         IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
2840         IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
2841         IX86_BUILTIN_VPERMDI256, IX86_BUILTIN_VPERMTI256,
2842         IX86_BUILTIN_VEXTRACT128I256, IX86_BUILTIN_VINSERT128I256,
2843         IX86_BUILTIN_PSLLVV4DI, IX86_BUILTIN_PSLLVV2DI,
2844         IX86_BUILTIN_PSLLVV8SI, IX86_BUILTIN_PSLLVV4SI,
2845         IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
2846         IX86_BUILTIN_PSRLVV4DI, IX86_BUILTIN_PSRLVV2DI,
2847         IX86_BUILTIN_PSRLVV8SI, IX86_BUILTIN_PSRLVV4SI.
2848         (ix86_init_mmx_sse_builtins): Add IX86_BUILTIN_GATHERSIV2DF,
2849         IX86_BUILTIN_GATHERSIV4DF, IX86_BUILTIN_GATHERDIV2DF,
2850         IX86_BUILTIN_GATHERDIV4DF, IX86_BUILTIN_GATHERSIV4SF,
2851         IX86_BUILTIN_GATHERSIV8SF, IX86_BUILTIN_GATHERDIV4SF,
2852         IX86_BUILTIN_GATHERDIV8SF, IX86_BUILTIN_GATHERSIV2DI,
2853         IX86_BUILTIN_GATHERSIV4DI, IX86_BUILTIN_GATHERDIV2DI,
2854         IX86_BUILTIN_GATHERDIV4DI, IX86_BUILTIN_GATHERSIV4SI,
2855         IX86_BUILTIN_GATHERSIV8SI, IX86_BUILTIN_GATHERDIV4SI,
2856         IX86_BUILTIN_GATHERDIV8SI.
2857         (ix86_preferred_simd_mode): Support AVX2 modes.
2858         (ix86_expand_args_builtin): Support AVX2 builtins.
2859         (ix86_expand_special_args_builtin): Likewise.
2860         (ix86_expand_builtin): Likewise.
2861         * config/i386/i386.md (UNSPEC_VPERMSI): New.
2862         (UNSPEC_VPERMDF): Likewise.
2863         (UNSPEC_VPERMSF): Likewise.
2864         (UNSPEC_VPERMDI): Likewise.
2865         (UNSPEC_VPERMTI): Likewise.
2866         (UNSPEC_GATHER): Likewise.
2867         (ssemodesuffix): Extend.
2868         * config/i386/immintrin.h: Include avx2intrin.h when __AVX2__
2869         is defined.
2870         * config/i386/predicates.md (const1248_operand): New.
2871         * config/i386/sse.md (VI1_AVX2): New mode iterator.
2872         (VI2_AVX2): Likewise.
2873         (VI4_AVX2): Likewise.
2874         (VI8_AVX2): Likewise.
2875         (VIMAX_AVX2): Likewise.
2876         (SSESCALARMODE): Likewise.
2877         (VI12_AVX2): Likewise.
2878         (VI24_AVX2): Likewise.
2879         (VI124_AVX2): Likewise.
2880         (VI248_AVX2): Likewise.
2881         (VI48_AVX2): Likewise.
2882         (VI4SD_AVX2): Likewise.
2883         (V48_AVX2): Likewise.
2884         (AVX256MODE2P): Likewise.
2885         (AVXMODE48P_DI): Likewise.
2886         (sse2_avx2): New mode attribute.
2887         (ssse3_avx2): Likewise.
2888         (sse4_1_avx2): Likewise.
2889         (avx_avx2): Likewise.
2890         (ssebytemode): Likewise.
2891         (AVXTOSSEMODE): Likewise.
2892         (AVXMODE48P_DI): Likewise.
2893         (gthrfirstp): Likewise.
2894         (gthrlastp): Likewise.
2895         (lshift): New code_iterator
2896         (lshift): New code attribute.
2897         (lshift): Likewise.
2898         (ssescalarmodesuffix): Update.
2899         (sseunpackmode): Likewise.
2900         (ssepackmode): Likewise.
2901         (avx2_vec_dupv4sf): New insn pattern.
2902         (avx2_vec_dupv8sf): Likewise.
2903         (avx2_interleave_highv4di): Likewise.
2904         (avx2_interleave_lowv4di): Likewise.
2905         (avx2_umulv4siv4di3): Likewise
2906         (*avx2_umulv4siv4di3): Likewise
2907         (avx2_pmaddwd): Likewise.
2908         (*avx2_pmaddwd): Likewise.
2909         (avx2_lshrqv4di3): Likewise.
2910         (avx2_lshlqv4di3): Likewise.
2911         (avx2_lshl<mode>3): Likewise.
2912         (avx2_<umaxmin:code><mode>3): Likewise.
2913         (*avx2_<umaxmin:code><mode>3): Likewise.
2914         (avx2_<smaxmin:code><mode>3): Likewise.
2915         (*avx2_<smaxmin:code><mode>3): Likewise.
2916         (avx2_eq<mode>3): Likewise.
2917         (*avx2_eq<mode>3): Likewise.
2918         (avx2_gt<mode>3): Likewise.
2919         (avx2_interleave_highv32qi): New.
2920         (avx2_interleave_lowv32qi): Likewise.
2921         (avx2_interleave_highv16hi): Likewise.
2922         (avx2_interleave_lowv16hi): Likewise.
2923         (avx2_interleave_highv8si): Likewise.
2924         (avx2_interleave_lowv8si): Likewise.
2925         (avx2_pshufd): Likewise.
2926         (avx2_pshufd_1): Likewise.
2927         (avx2_pshuflwv3): Likewise.
2928         (avx2_pshuflw_1): Likewise.
2929         (avx2_pshufhwv3): Likewise.
2930         (avx2_pshufhw_1): Likewise.
2931         (avx2_uavgv32qi3): Likewise.
2932         (*avx2_uavgv32qi3): Likewise.
2933         (avx2_uavgv16hi3): Likewise.
2934         (*avx2_uavgv16hi3): Likewise.
2935         (avx2_pmovmskb): Likewise.
2936         (avx2_phaddwv16hi3): Likewise.
2937         (avx2_phadddv8si3): Likewise.
2938         (avx2_phaddswv16hi3): Likewise.
2939         (avx2_phsubwv16hi3): Likewise.
2940         (avx2_phsubdv8si3): Likewise.
2941         (avx2_phsubswv16hi3): Likewise.
2942         (avx2_pmaddubsw256): Likewise.
2943         (avx2_umulhrswv16hi3): Likewise.
2944         (*avx2_umulhrswv16hi3): Likewise.
2945         (avx2_packusdw): Likewise.
2946         (avx2_pblendd<mode>): Likewise.
2947         (avx2_<code>v16qiv16hi2): Likewise.
2948         (avx2_<code>v8qiv8si2): Likewise.
2949         (avx2_<code>v8hiv8si2): Likewise.
2950         (avx2_<code>v4qiv4di2): Likewise.
2951         (avx2_<code>v4hiv4di2): Likewise.
2952         (avx2_<code>v4siv4di2): Likewise.
2953         (avx2_pbroadcast<mode>): Likewise.
2954         (avx2_permvarv8si): Likewise.
2955         (avx2_permv4df): Likewise.
2956         (avx2_permvarv8sf): Likewise.
2957         (avx2_permv4di): Likewise.
2958         (avx2_permv2ti): Likewise.
2959         (avx2_vec_dupv4df): Likewise.
2960         (avx2_vbroadcasti128_<mode>): Likewise.
2961         (avx2_vec_set_lo_v4di): Likewise.
2962         (avx2_vec_set_hi_v4di): Likewise.
2963         (*avx2_maskmov<avx2modesuffix><avxmodesuffix>): Likewise.
2964         (avx2_extracti128): Likewise.
2965         (avx2_inserti128): Likewise.
2966         (avx2_ashrvv8si): Likewise.
2967         (avx2_ashrvv4si): Likewise.
2968         (avx2_<lshift>vv8si): Likewise.
2969         (avx2_<lshift>v<mode>): Likewise.
2970         (avx2_<lshift>vv2di): Likewise.
2971         (avx2_gathersi<mode>): Likewise.
2972         (*avx2_gathersi<mode>): Likewise.
2973         (avx2_gatherdi<mode>): Likewise.
2974         (*avx2_gatherdi<mode>): Likewise.
2975         (avx2_gatherdi<mode>256): Likewise.
2976         (*avx2_gatherdi<mode>256): Likewise.
2977         (<plusminus_insn><mode>3): Use VI mode iterator.
2978         (*<plusminus_insn><mode>3): Use VI mode iterator.
2979         (<sse2_avx2>_<plusminus_insn><mode>3): Rename from
2980         sse2_<plusminus_insn><mode>3.  Use VI12_AVX2 mode iterator.
2981         (*<sse2_avx2>_<plusminus_insn><mode>3): Rename from
2982         *sse2_<plusminus_insn><mode>3.  Use VI12_AVX2 mode iterator.
2983         (mul<mode>3): Rename from mulv8hi3.  Use VI2_AVX2 mode iterator.
2984         (*mul<mode>3): Rename from *mulv8hi3.  Use VI2_AVX2 mode iterator.
2985         (<s>mul<mode>3_highpart): Rename from <s>mulv8hi3_highpart.
2986         Use VI2_AVX2 mode iterator.
2987         (*<s>mul<mode>3_highpart): Rename from *<s>mulv8hi3_highpart.
2988         Use VI2_AVX2 mode iterator.
2989         (mul<mode>3): Rename from mulv4si3.  Use VI4_AVX2 mode iterator.
2990         (*mul<mode>3): Rename from *mulv4si3.  Use VI4_AVX2 mode iterator.
2991         (*<sse4_1_avx2>_mulv2siv2di3): Rename from *sse4_1_mulv4si3.
2992         Use VI4_AVX2 mode iterator.
2993         (ashr<mode>3): Use VI24_AVX2 mode iterator.
2994         (lshr<mode>3): Use VI248_AVX2 mode iterator.
2995         (<sse2_avx2>_ashl<mode>3): Rename from sse2_ashlv1ti3.
2996         Use VIMAX_AVX2 mode iterator.
2997         (<sse2_avx2>_andnot<mode>3): Rename from sse2_andnot<mode>3.
2998         Use VI mode iterator.
2999         (*andnot<mode>3): Update for AVX2.
3000         (*<any_logic:code><mode>3): Likewise.
3001         (<sse2_avx2>_packsswb): Rename from sse2_packsswb.
3002         Use VI1_AVX mode iterator.
3003         (<sse2_avx2>_packssdw):  Rename from sse2_packssdw.
3004         Use VI2_AVX mode iterator.
3005         (<sse2_avx2>_packuswb): Rename from sse2_packsswb.
3006         Use VI1_AVX mode iterator.
3007         (<sse2_avx2>_psadbw): Rename from sse2_psadbw.
3008         Use VI8_AVX2 mode iterator.
3009         (<ssse3_avx2>_pshufb<mode>3): Rename from ssse3_pshufbv16qi3.
3010         Use VI1_AVX2 mode iterator.
3011         (<ssse3_avx2>_psign<mode>3): Rename from ssse3_psign<mode>3.
3012         Use VI124_AVX2 mode iterator.
3013         (<ssse3_avx2>_palignr<mode>): Rename from ssse3_palignrti.
3014         Use SSESCALARMODE mode iterator.
3015         (abs<mode>2): Use VI124_AVX2 mode iterator.
3016         (<sse4_1_avx2>_movntdqa): Rename from sse4_1_movntdqa.
3017         Use VI8_AVX2 mode iterator.
3018         (<sse4_1_avx2>_mpsadbw): Rename from sse4_1_mpsadbw.
3019         Use VI1_AVX2 mode iterator.
3020         (<sse4_1_avx2>_pblendvb): Rename from sse4_1_pblendvb.
3021         Use VI1_AVX2 mode iterator.
3022         (<sse4_1_avx2>_pblendw): Rename from sse4_1_pblendvb.
3023         Use VI2_AVX2 mode iterator.
3024         (<avx_avx2>_maskload<avx2modesuffix><avxmodesuffix>): Rename from
3025         avx_maskload<ssemodesuffix><avxsizesuffix>. Use V48_AVX2 mode iterator.
3026         (<avx_avx2>_maskstore<avx2modesuffix><avxmodesuffix>): Rename from
3027         avx_maskstore<ssemodesuffix><avxsizesuffix>.
3028         Use V48_AVX2 mode iterator.
3029         * doc/extend.texi: Document AVX2 built-in functions.
3030         * doc/invoke.texi: Document -mavx2.
3031
3032 2011-08-22  Matthias Klose <doko@debian.org>
3033
3034         Revert:
3035         2011-07-11  Arthur Loiret  <aloiret@debian.org>
3036                     Matthias Klose <doko@debian.org>
3037         * config/mips/t-linux64 (MULTILIB_DIRNAMES): Set to 'n32 . 64' if
3038         tm_defines contains MIPS_ABI_DEFAULT ABI_32, to follow the glibc
3039         convention.
3040         * config.gcc (tm_defines): Add MIPS_ABI_DEFAULT=ABI_32.
3041
3042 2011-08-22  Mikael Pettersson  <mikpe@it.uu.se>
3043
3044         PR bootstrap/50146
3045         * ira-color.c (assign_hard_reg): Move saved_nregs declaration
3046         to #ifndef HONOR_REG_ALLOC_ORDER block.
3047
3048 2011-08-21  Richard Henderson  <rth@redhat.com>
3049
3050         * rtl.h (INSN_ANNULLED_BRANCH_P): Only allow JUMP_INSN.
3051         * dwarf2cfi.c (scan_trace): Test JUMP_P before INSN_ANNULLED_BRANCH_P.
3052         * resource.c (next_insn_no_annul): Likewise.
3053         (mark_set_resources): Likewise.
3054         * reorg.c (delete_from_delay_slot): Likewise.
3055         (dbr_schedule, redundant_insn, try_merge_delay_insns): Likewise.
3056         (get_branch_condition): Test pc_rtx and LABEL_REF before dereferencing.
3057
3058 2011-08-21  Uros Bizjak  <ubizjak@gmail.com>
3059
3060         * config/i386/i386.md (any_div): Remove.
3061         (sgnprefix): Update for removal.
3062         (u): Ditto.
3063
3064 2011-08-20  Vladimir Makarov  <vmakarov@redhat.com>
3065
3066         * ira-lives.c (mark_pseudo_regno_subword_live): Use allocno class
3067         for ira_reg_class_max_nregs.  Increase pressure by 1.
3068         (mark_pseudo_regno_subword_dead): Use allocno class
3069         for ira_reg_class_max_nregs.
3070
3071 2011-08-20  Richard Henderson  <rth@redhat.com>
3072
3073         * config/c6x/eqd.c, config/c6x/eqf.c, config/c6x/ged.c,
3074         config/c6x/gef.c, config/c6x/gtd.c, config/c6x/gtf.c,
3075         config/c6x/led.c, config/c6x/lef.c, config/c6x/ltd.c,
3076         config/c6x/ltf.c: Adjust include path for soft-fp.
3077
3078 2011-08-20  H.J. Lu  <hongjiu.lu@intel.com>
3079
3080         PR other/46770
3081         * config.gcc (tm_file): Add initfini-array.h if
3082         .init_arrary/.fini_array are supported.
3083
3084         * crtstuff.c: Don't generate .ctors nor .dtors sections if
3085         USE_INITFINI_ARRAY is defined.
3086
3087         * output.h (default_elf_init_array_asm_out_constructor): New.
3088         (default_elf_fini_array_asm_out_destructor): Likewise.
3089         * varasm.c (elf_init_array_section): Likewise.
3090         (elf_fini_array_section): Likewise.
3091         (get_elf_initfini_array_priority_section): Likewise.
3092         (default_elf_init_array_asm_out_constructor): Likewise.
3093         (default_elf_fini_array_asm_out_destructor): Likewise.
3094
3095         * config/initfini-array.h: New.
3096
3097 2011-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
3098
3099         * config/mips/mips.c (mips_class_max_nregs): Check that the mode is
3100         OK for ST_REGS and FP_REGS before taking those classes into account.
3101
3102 2011-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
3103
3104         * config/mips/mips.c (mips_reorg_process_insns): Check for jumps
3105         before checking for annulled branches.
3106
3107 2011-08-20  Uros Bizjak  <ubizjak@gmail.com>
3108
3109         * config/i386/i386.c (ix86_binary_operator_ok): Use
3110         satisfies_constraint_L.
3111
3112 2011-08-20  Uros Bizjak  <ubizjak@gmail.com>
3113             Michael Matz  <matz@suse.de>
3114
3115         * config/i386/i386.c (ix86_expand_round_sse4): Expand as
3116         trunc (a + copysign (nextafter (0.5, 0.0), a)).
3117
3118 2011-08-20  Anatoly Sokolov  <aesok@post.ru>
3119
3120         * doc/tm.texi.in (PREFERRED_OUTPUT_RELOAD_CLASS): Remove.
3121         * doc/tm.texi: Regenerate.
3122         * targhooks.c (default_preferred_output_reload_class): Don't use
3123         PREFERRED_OUTPUT_RELOAD_CLASS macro.
3124         * system.h (PREFERRED_OUTPUT_RELOAD_CLASS): Poison.
3125
3126 2011-08-20  Jakub Jelinek  <jakub@redhat.com>
3127
3128         PR tree-optimization/48739
3129         * tree-ssa.c: Include cfgloop.h.
3130         (execute_update_addresses_taken): When updating ssa, if in loop closed
3131         SSA form, call rewrite_into_loop_closed_ssa instead of update_ssa.
3132         * Makefile.in (tree-ssa.o): Depend on $(CFGLOOP_H).
3133
3134 2011-08-19  Vladimir Makarov  <vmakarov@redhat.com>
3135
3136         PR rtl-optimization/49936
3137         * ira.c (ira_init_register_move_cost): Ignore too small subclasses
3138         for calculation of max register move costs.
3139
3140 2011-08-19  Joseph Myers  <joseph@codesourcery.com>
3141
3142         * c-parser.c (c_parser_postfix_expression): Convert operands of
3143         __builtin_complex to their semantic types.
3144
3145 2011-08-19  H.J. Lu  <hongjiu.lu@intel.com>
3146
3147         PR middle-end/49721
3148         * explow.c (convert_memory_address_addr_space): Also permute the
3149         conversion and addition of constant for zero-extend.
3150
3151 2011-08-19  Joseph Myers  <joseph@codesourcery.com>
3152
3153         * c-parser.c (c_parser_postfix_expression): Handle RID_BUILTIN_COMPLEX.
3154         * doc/extend.texi (__builtin_complex): Document.
3155
3156 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3157
3158         * tree-ssa-math-opts.c (is_widening_mult_rhs_p): Handle constants
3159         beyond conversions.
3160         (convert_mult_to_widen): Convert constant inputs to the right type.
3161         (convert_plusminus_to_widen): Don't automatically reject inputs that
3162         are not an SSA_NAME.
3163         Convert constant inputs to the right type.
3164
3165 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3166
3167         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs
3168         to the correct type.
3169
3170 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3171
3172         * tree-ssa-math-opts.c (convert_mult_to_widen): Better handle
3173         unsigned inputs of different modes.
3174         (convert_plusminus_to_widen): Likewise.
3175
3176 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3177
3178         * tree-ssa-math-opts.c (is_widening_mult_rhs_p): Add new argument
3179         'type'.
3180         Use 'type' from caller, not inferred from 'rhs'.
3181         Don't reject non-conversion statements. Do return lhs in this case.
3182         (is_widening_mult_p): Add new argument 'type'.
3183         Use 'type' from caller, not inferred from 'stmt'.
3184         Pass type to is_widening_mult_rhs_p.
3185         (convert_mult_to_widen): Pass type to is_widening_mult_p.
3186         (convert_plusminus_to_widen): Likewise.
3187
3188 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3189
3190         * tree-ssa-math-opts.c (is_widening_mult_p): Remove FIXME.
3191         Ensure the the larger type is the first operand.
3192
3193 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3194
3195         * tree-ssa-math-opts.c (convert_mult_to_widen): Convert
3196         unsupported unsigned multiplies to signed.
3197         (convert_plusminus_to_widen): Likewise.
3198
3199 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3200
3201         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Permit a single
3202         conversion statement separating multiply-and-accumulate.
3203
3204 2011-08-19  Richard Guenther  <rguenther@suse.de>
3205
3206         PR tree-optimization/50067
3207         * tree-data-ref.c (dr_analyze_indices): Simplify, strip MEM_REF
3208         offset only if we accounted for it.
3209
3210 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3211
3212         * config/arm/arm.md (maddhidi4): Remove '*' from name.
3213         * expr.c (expand_expr_real_2): Use find_widening_optab_handler.
3214         * optabs.c (find_widening_optab_handler_and_mode): New function.
3215         (expand_widen_pattern_expr): Use find_widening_optab_handler.
3216         (expand_binop_directly): Likewise.
3217         (expand_binop): Likewise.
3218         * optabs.h (find_widening_optab_handler): New macro define.
3219         (find_widening_optab_handler_and_mode): New prototype.
3220         * tree-cfg.c (verify_gimple_assign_binary): Adjust WIDEN_MULT_EXPR
3221         type precision rules.
3222         (verify_gimple_assign_ternary): Likewise for WIDEN_MULT_PLUS_EXPR.
3223         * tree-ssa-math-opts.c (build_and_insert_cast): New function.
3224         (is_widening_mult_rhs_p): Allow widening by more than one mode.
3225         Explicitly disallow mis-matched input types.
3226         (convert_mult_to_widen): Use find_widening_optab_handler, and cast
3227         input types to fit the new handler.
3228         (convert_plusminus_to_widen): Likewise.
3229
3230 2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
3231
3232         * expr.c (expand_expr_real_2): Use widening_optab_handler.
3233         * genopinit.c (optabs): Use set_widening_optab_handler for $N.
3234         (gen_insn): $N now means $a must be wider than $b, not consecutive.
3235         * optabs.c (widened_mode): New function.
3236         (expand_widen_pattern_expr): Use widening_optab_handler.
3237         (expand_binop_directly): Likewise.
3238         (expand_binop): Likewise.
3239         * optabs.h (widening_optab_handlers): New struct.
3240         (optab_d): New member, 'widening'.
3241         (widening_optab_handler): New function.
3242         (set_widening_optab_handler): New function.
3243         * tree-ssa-math-opts.c (convert_mult_to_widen): Use
3244         widening_optab_handler.
3245         (convert_plusminus_to_widen): Likewise.
3246
3247 2011-08-19  Joseph Myers  <joseph@codesourcery.com>
3248
3249         * c-decl.c (grokdeclarator): Diagnose _Noreturn for non-C1X if
3250         pedantic.
3251         * c-parser.c (c_parser_declspecs): Include _Noreturn in syntax comment.
3252         * ginclude/stdnoreturn.h (noreturn): Don't define for C++.
3253
3254 2011-08-19  Joseph Myers  <joseph@codesourcery.com>
3255
3256         * opth-gen.awk: Do not declare target save/restore structures and
3257         functions if IN_RTS defined.
3258
3259 2011-08-19  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
3260
3261         PR target/49437
3262         * config/arm/arm.c (arm_output_epilogue): Properly handle epilogue
3263         when stack was realigned in interrupt handler prologue.
3264
3265 2011-08-18  Joseph Myers  <joseph@codesourcery.com>
3266
3267         * c-decl.c (shadow_tag_warned): Check for _Noreturn.
3268         (quals_from_declspecs): Assert _Noreturn not present.
3269         (grokdeclarator): Handle _Noreturn.
3270         (build_null_declspecs): Initialize noreturn_p.
3271         (declspecs_add_scspec): Handle RID_NORETURN.
3272         * c-parser.c (c_token_starts_declspecs, c_parser_declspecs)
3273         (c_parser_attributes): Handle RID_NORETURN.
3274         * c-tree.h (struct c_declspecs): Add noreturn_p.
3275         * ginclude/stdnoreturn.h: New.
3276         * Makefile.in (USER_H): Add stdnoreturn.h.
3277
3278 2011-08-18  Kirill Yukhin  <kirill.yukhin@intel.com>
3279
3280         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX2_SET): New.
3281         (OPTION_MASK_ISA_AVX_UNSET): Update.
3282         (OPTION_MASK_ISA_AVX2_UNSET): New.
3283         (ix86_handle_option): Handle OPT_mavx2 case.
3284         * config/i386/cpuid.h (bit_AVX2): New.
3285         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
3286         AVX2 feature.
3287         * config/i386/i386-c.c (ix86_target_macros_internal):
3288         Conditionally define __AVX2__.
3289         * config/i386/i386.c (ix86_option_override_internal): Define PTA_AVX2.
3290         Define "core-avx2" processor alias.  Handle avx2 option.
3291         (ix86_valid_target_attribute_inner_p): Handle avx2 option.
3292         * config/i386/i386.h (TARGET_AVX2): New.
3293         * config/i386/i386.opt (mavx2): New.
3294         * doc/invoke.texi: Document -mavx2.
3295
3296 2011-08-18  Vladimir Makarov  <vmakarov@redhat.com>
3297
3298         PR rtl-optimization/49890
3299         * ira-costs.c (setup_regno_cost_classes_by_aclass): Don't exclude
3300         subclasses of class which is superset of a pressure class.
3301
3302 2011-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3303             Igor Zamyatin <igor.zamyatin@intel.com>
3304
3305         * config/i386/i386-c.c (ix86_target_macros_internal): Replace int
3306         with HOST_WIDE_INT for isa_flag.
3307         (ix86_pragma_target_parse): Replace int with HOST_WIDE_INT for
3308         isa variables.
3309
3310         * config/i386/i386.c (ix86_target_string): Replace int with
3311         HOST_WIDE_INT for isa.  Use HOST_WIDE_INT_PRINT to print isa.
3312         (ix86_target_opts): Replace int with HOST_WIDE_INT on mask.
3313         (pta_flags): Removed.
3314         (PTA_XXX): Redefined as (HOST_WIDE_INT_1 << X).
3315         (pta): Use HOST_WIDE_INT on flags.
3316         (builtin_isa): Use HOST_WIDE_INT on isa.
3317         (ix86_add_new_builtins): Likewise.
3318         (def_builtin): Use HOST_WIDE_INT on mask.
3319         (def_builtin_const): Likewise.
3320         (builtin_description): Likewise.
3321
3322         * config/i386/i386.opt (ix86_isa_flags): Replace int with
3323         HOST_WIDE_INT.
3324         (ix86_isa_flags_explicit): Likewise.
3325         (x_ix86_isa_flags_explicit): Likewise.
3326
3327 2011-08-17  Vladimir Makarov  <vmakarov@redhat.com>
3328
3329         PR rtl-optimization/50107
3330         * ira-int.h (ira_hard_reg_not_in_set_p): Remove.
3331         (ira_hard_reg_in_set_p): New.
3332
3333         * ira-color.c (calculate_saved_nregs): New.
3334         (assign_hard_reg): Use it.  Set up allocated_hard_reg_p for all
3335         hard regs.
3336         (allocno_reload_assign, fast_allocation): Use
3337         ira_hard_reg_set_intersection_p instead of
3338         ira_hard_reg_not_in_set_p.
3339
3340         * ira.c (setup_reg_renumber): Use
3341         ira_hard_reg_set_intersection_p instead of
3342         ira_hard_reg_not_in_set_p.
3343         (setup_allocno_assignment_flags, calculate_allocation_cost): Use
3344         ira_hard_reg_in_set_p instead of ira_hard_reg_not_in_set_p.
3345
3346         * ira-costs.c (ira_tune_allocno_costs): Use
3347         ira_hard_reg_set_intersection_p instead of
3348         ira_hard_reg_not_in_set_p.
3349
3350 2011-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3351             Igor Zamyatin <igor.zamyatin@intel.com>
3352
3353         * hwint.h (HOST_WIDE_INT_1): New.
3354
3355         * opt-functions.awk (switch_bit_fields): Initialize the
3356         host_wide_int field.
3357         (host_wide_int_var_name): New.
3358         (var_type_struct): Check and return HOST_WIDE_INT.
3359
3360         * opt-read.awk: Handle HOST_WIDE_INT for "Variable".
3361
3362         * optc-save-gen.awk: Support HOST_WIDE_INT on var_target_other.
3363
3364         * opth-gen.awk: Use HOST_WIDE_INT_1 on HOST_WIDE_INT.  Properly
3365         check masks for HOST_WIDE_INT.
3366
3367         * opts-common.c (set_option): Support HOST_WIDE_INT flag_var.
3368         (option_enabled): Likewise.
3369         (get_option_state): Likewise.
3370
3371         * opts.h (cl_option): Add cl_host_wide_int.  Change var_value
3372         to HOST_WIDE_INT.
3373
3374 2011-08-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3375             Marc Glisse  <marc.glisse@normalesup.org>
3376
3377         PR libstdc++-v3/1773
3378         * target.def (decl_mangling_context): New C++ hook.
3379         * doc/tm.texi: Regenerate.
3380         * config/sol2-cxx.c, config/sol2-stubs.c: New files.
3381         * config/sol2-protos.h: Group by source file.
3382         (solaris_cxx_decl_mangling_context): Declare.
3383         * config/sol2.h (TARGET_CXX_DECL_MANGLING_CONTEXT): Define.
3384         * config/t-sol2 (sol2-cxx.o, sol2-stubs.o): New targets.
3385         Use $<.
3386         * config.gcc (*-*-solaris2*): Add sol2-cxx.o to cxx_target_objs.
3387         Add sol2-stubs.o to extra_objs.
3388
3389 2011-08-18  Jakub Jelinek  <jakub@redhat.com>
3390
3391         PR target/50009
3392         * stor-layout.c (update_alignment_for_field): Don't ICE on
3393         packed flexible array members if ms_bitfield_layout_p.
3394
3395         PR target/50092
3396         * config/i386/i386.c (assign_386_stack_local): Call validize_mem
3397         on the result before returning it.
3398
3399         PR debug/50017
3400         * tree-vect-stmts.c (vect_finish_stmt_generation): If gsi_stmt (*gsi)
3401         is a debug stmt, use location of the first non-debug stmt after it.
3402
3403 2011-08-18  Richard Sandiford  <richard.sandiford@linaro.org>
3404
3405         * config/arm/arm.c (arm_rtx_costs_1): Don't modify the costs of SET.
3406         (arm_size_rtx_costs): Likewise.
3407
3408 2011-08-18  Richard Guenther  <rguenther@suse.de>
3409
3410         * tree.h (tree_int_cst_msb): Remove.
3411         * tree.c (tree_int_cst_msb): Likewise.
3412         (tree_int_cst_sign_bit): Move from ...
3413         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): ... here.
3414
3415 2011-08-18  Richard Sandiford  <richard.sandiford@linaro.org>
3416
3417         * doc/tm.texi.in (TARGET_RTX_COSTS): Add an opno paramter.
3418         * doc/tm.texi: Regenerate.
3419         * target.def (rtx_costs): Add an opno parameter.
3420         * hooks.h (hook_bool_rtx_int_int_intp_bool_false): Replace with...
3421         (hook_bool_rtx_int_int_int_intp_bool_false): ...this.
3422         * hooks.c (hook_bool_rtx_int_int_intp_bool_false): Replace with...
3423         (hook_bool_rtx_int_int_int_intp_bool_false): ...this.
3424         * cse.c (COST_IN): Add an opno parameter.
3425         (notreg_cost): Likewise.  Update call to rtx_cost.
3426         (COST, fold_rtx): Update accordingly.
3427         * dojump.c (prefer_and_bit_test): Update call to rtx_cost.
3428         * expmed.c (emit_store_flag): Likewise.
3429         * optabs.c (avoid_expensive_constant): Add an opno parameter.
3430         Update call to rtx_cost.
3431         (expand_binop_directly, expand_binop): Likewise.
3432         (expand_twoval_binop, prepare_cmp_insn): Likewise.
3433         * rtl.h (rtx_cost, get_full_rtx_cost): Add opno parameters.
3434         (set_src_cost, get_full_set_src_cost): Update accordingly.
3435         * rtlanal.c (rtx_cost): Add an opno parameter.  Update call
3436         to target hook.
3437         (get_full_rtx_cost): Add an opno paramter.  Update calls to rtx_cost.
3438         (default_adress_cost): Update calls to rtx_cost.
3439
3440         * config/arm/arm.c (arm_rtx_costs_1, arm_size_rtx_costs)
3441         (arm_slowmul_rtx_costs): Adjust calls to rtx_cost.
3442         (arm_rtx_costs): Add an opno parameter.
3443         * config/alpha/alpha.c (alpha_rtx_costs): Add an opno parameter and
3444         adjust any recursive rtx-cost calls.
3445         * config/avr/avr.c (avr_operand_rtx_cost, avr_rtx_costs): Likewise.
3446         * config/bfin/bfin.c (bfin_rtx_costs): Likewise.
3447         * config/c6x/c6x.c (c6x_rtx_costs): Likewise.
3448         * config/cris/cris.c (cris_rtx_costs): Likewise.
3449         * config/frv/frv.c (frv_rtx_costs): Likewise.
3450         * config/h8300/h8300.c (h8300_rtx_costs): Likewise.
3451         * config/i386/i386.c (ix86_rtx_costs): Likewise.
3452         * config/ia64/ia64.c (ia64_rtx_costs): Likewise.
3453         * config/iq2000/iq2000.c (iq2000_rtx_costs): Likewise.
3454         * config/lm32/lm32.c (lm32_rtx_costs): Likewise.
3455         * config/m32c/m32c.c (m32c_rtx_costs): Likewise.
3456         * config/m32r/m32r.c (m32r_rtx_costs): Likewise.
3457         * config/m68k/m68k.c (m68k_rtx_costs): Likewise.
3458         * config/mcore/mcore.c (mcore_rtx_costs): Likewise.
3459         * config/mep/mep.c (mep_rtx_cost): Likewise.
3460         * config/microblaze/microblaze.c (microblaze_rtx_costs): Likewise.
3461         * config/mips/mips.c (mips_binary_cost): Update call to rtx_cost.
3462         (mips_zero_extend_cost): Add an opno parameter.
3463         * config/mmix/mmix.c (mmix_rtx_costs): Likewise.
3464         * config/mn10300/mn10300.c (mn10300_address_cost): Update call
3465         to rtx_cost.
3466         (mn10300_rtx_costs): Add an opno parameter and adjust any recursive
3467         rtx-cost calls.
3468         * config/pa/pa.c (hppa_rtx_costs): Likewise.
3469         * config/pdp11/pdp11.c (pdp11_rtx_costs): Likewise.
3470         * config/picochip/picochip.c (picochip_rtx_costs): Likewise.
3471         * config/rs6000/rs6000.c (rs6000_rtx_costs): Likewise.
3472         (rs6000_debug_rtx_costs): Likewise.
3473         * config/s390/s390.c (s390_rtx_costs): Likewise.
3474         * config/score/score-protos.h (score_rtx_costs): Likewise.
3475         * config/score/score.c (score_rtx_costs): Likewise.
3476         * config/sh/sh.c (andcosts): Update call to rtx_cost.
3477         (sh_rtx_costs): Add an opno parameter.
3478         * config/sparc/sparc.c (sparc_rtx_costs): Likewise.
3479         * config/spu/spu.c (spu_rtx_costs): Likewise.
3480         * config/stormy16/stormy16.c (xstormy16_rtx_costs): Likewise.
3481         * config/v850/v850.c (v850_rtx_costs): Likewise.
3482         * config/vax/vax.c (vax_rtx_costs): Likewise.
3483         * config/xtensa/xtensa.c (xtensa_rtx_costs): Likewise.
3484
3485 2011-08-18  Richard Sandiford  <richard.sandiford@linaro.org>
3486
3487         * rtl.h (set_src_cost, get_full_set_src_cost): New functions.
3488         * auto-inc-dec.c (attempt_change): Use set_src_cost instead of
3489         rtx_cost.
3490         * calls.c (precompute_register_parameters): Likewise.
3491         * combine.c (expand_compound_operation, make_extraction): Likewise.
3492         (force_to_mode, distribute_and_simplify_rtx): Likewise.
3493         * dse.c (find_shift_sequence): Likewise.
3494         * expmed.c (init_expmed, expand_mult, expand_smod_pow2): Likewise.
3495         * expr.c (compress_float_constant): Likewise.
3496         * fwprop.c (should_replace_address, try_fwprop_subst): Likewise.
3497         * gcse.c (want_to_gcse_p): Likewise.
3498         * ifcvt.c (noce_try_sign_mask): Likewise.
3499         * loop-doloop.c (doloop_optimize): Likewise.
3500         * loop-invariant.c (create_new_invariant): Likewise.
3501         * optabs.c (avoid_expensive_constant): Likewise.
3502         * postreload.c (reload_cse_simplify_set, reload_cse_simplify_operands)
3503         (try_replace_in_use, reload_cse_move2add): Likewise.
3504         * reload1.c (calculate_elim_costs_all_insns): Likewise.
3505         (note_reg_elim_costly): Likewise.
3506         * rtlanal.c (insn_rtx_cost): Likewise.
3507         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
3508         * stmt.c (lshift_cheap_p): Likewise.
3509         * tree-ssa-loop-ivopts.c (seq_cost, computation_cost): Likewise.
3510         * config/avr/avr.c (final_prescan_insn): Likewise.
3511         * config/bfin/bfin.c (bfin_rtx_costs): Likewise.
3512         * config/mips/mips.c (mips_binary_cost, mips_rtx_costs): Likewise.
3513
3514 2011-08-18  Richard Sandiford  <richard.sandiford@linaro.org>
3515
3516         * rtl.h (set_rtx_cost, get_full_set_rtx_cost): New functions.
3517         * auto-inc-dec.c (attempt_change): Use set_rtx_cost.
3518         * cfgloopanal.c (seq_cost): Likewise.
3519         * loop-invariant.c (create_new_invariant): Likewise.
3520         * postreload.c (move2add_use_add2_insn, move2add_use_add3_insn)
3521         (reload_cse_move2add): Use get_full_set_rtx_cost.
3522
3523 2011-08-18  Richard Guenther  <rguenther@suse.de>
3524
3525         * expr.c (get_inner_reference): Fix typo in last change.
3526
3527 2011-08-18  Paolo Carlini  <paolo.carlini@oracle.com>
3528             Joseph Myers  <joseph@codesourcery.com>
3529
3530         PR tree-optimization/49963
3531         * hwint.c (absu_hwi): Define.
3532         * hwint.h (absu_hwi): Declare.
3533         * fold-const.c (fold_plusminus_mult_expr): Use absu_hwi instead
3534         of abs_hwi.
3535         * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Likewise.
3536         * tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Likewise.
3537
3538 2011-08-18  Richard Guenther  <rguenther@suse.de>
3539
3540         * expr.c (get_inner_reference): Sign-extend the constant
3541         twos-complement offset before doing arbitrary precision
3542         arithmetic on it.
3543         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
3544         (get_constraint_for_1): Pass the offset of a MEM_REF unchanged
3545         to get_constraint_for_ptr_offset.
3546
3547 2011-08-17  Kaz Kojima  <kkojima@gcc.gnu.org>
3548
3549         PR target/50068
3550         * config/sh/sh.c (sh_output_mi_thunk): Don't call dbr_schedule.
3551
3552 2011-08-17  Richard Guenther  <rguenther@suse.de>
3553
3554         * tree.h (convert_to_ptrofftype_loc): New function.
3555         (convert_to_ptrofftype): Define.
3556         * builtins.c (expand_builtin_bzero): Use size_type_node.
3557         (fold_builtin_bzero): Likewise.
3558         (std_gimplify_va_arg_expr): Build the BIT_AND_EXPR on the pointer.
3559         * c-typeck.c (build_unary_op): Use convert_to_ptrofftype_loc.
3560         * cgraphunit.c (thunk_adjust): Use fold_build_pointer_plus_loc.
3561         (cgraph_redirect_edge_call_stmt_to_callee): Use size_int.
3562         * expr.c (expand_expr_addr_expr_1): Use fold_build_pointer_plus.
3563         * fold-const.c (build_range_check): Negate using the original type.
3564         (fold_unary_loc): Use fold_build_pointer_plus_loc.
3565         * gimple-fold.c (gimple_adjust_this_by_delta): Use
3566         convert_to_ptrofftype.
3567         * gimplify.c (gimplify_self_mod_expr): Likewise.
3568         * graphite-clast-to-gimple.c (clast_to_gcc_expression): Likewise.
3569         (graphite_create_new_loop_guard): Likewise.
3570         * graphite-sese-to-poly.c (my_long_long): Remove.
3571         (scop_ivs_can_be_represented): Adjust.
3572         * tree-cfg.c (verify_gimple_assign_unary): Use ptrofftype_p.
3573         * tree-chrec.c (chrec_fold_plus_1): Use fold_build_pointer_plus.
3574         * tree-loop-distribution.c (build_size_arg_loc): Use
3575         size_type_node.
3576         (generate_memset_zero): Simplify.
3577         * tree-mudflap.c: Use fold_convert, not convert.
3578         * tree-predcom.c (suitable_reference_p): Expand DR_OFFSET in
3579         its own type.
3580         (determine_offset): Likewise for DR_STEP.
3581         (valid_initializer_p): Likewise.
3582         * tree-profile.c (prepare_instrumented_value): Convert the pointer
3583         to an integer type of same size.
3584         * tree-scalar-evolution.c (interpret_rhs_expr): Do not refer
3585         to sizetype without need.
3586         * tree-ssa-address.c (tree_mem_ref_addr): Likewise.
3587         * tree-ssa-loop-ivopts.c (find_bivs): Use convert_to_ptrofftype.
3588         * tree-ssa-loop-manip.c (create_iv): Likewise.
3589         (determine_exit_conditions): Adjust comment.
3590         * tree-ssa-pre.c (create_expression_by_pieces): Use
3591         convert_to_ptrofftype.
3592         * tree-ssa-structalias.c (get_constraint_for_1): Likewise.
3593         * varasm.c (array_size_for_constructor): Compute using double_ints.
3594
3595 2011-08-16  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3596
3597         * config/spu/spu.c (spu_emit_branch_or_set): Avoid reverse tests
3598         when generating an integer result where possible.  Short-cut
3599         comparison against 0 also for QImode.
3600
3601 2011-08-16  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3602
3603         * config/spu/spu.h (LEGITIMIZE_RELOAD_ADDRESS): New macro.
3604         * config/spu/spu-protos.h (spu_legitimize_reload_address): Add
3605         prototype.
3606         * config/spu/spu.c (spu_legitimize_reload_address): New function.
3607         (spu_legitimate_address_p): Do not check displacement if the base
3608         is an eliminable stack register.
3609
3610 2011-08-16  Anatoly Sokolov  <aesok@post.ru>
3611
3612         * config/m32c/m32c.h (PREFERRED_RELOAD_CLASS,
3613         PREFERRED_OUTPUT_RELOAD_CLASS): Remove macro.
3614         * config/m32c/m32c-protos.h (m32c_preferred_reload_class,
3615         m32c_preferred_output_reload_class): Remove.
3616         * config/m32c/m32c.c (m32c_preferred_reload_class): Make static.
3617         Change rclass argument and return types to reg_class_t. Use
3618         reg_class_subset_p instead of class_sizes.
3619         (m32c_preferred_output_reload_class): Make static. Change rclass
3620         argument and return types to reg_class_t.
3621         (TARGET_PREFERRED_RELOAD_CLASS,
3622         TARGET_PREFERRED_OUTPUT_RELOAD_CLASS): Define.
3623
3624 2011-08-16  Kai Tietz  <ktietz@redhat.com>
3625
3626         * config/i386/mingw32.h (GOMP_SELF_SPEC): Add -pthread option.
3627
3628 2011-08-16  Richard GUenther  <rguenther@suse.de>
3629
3630         PR tree-optimization/50082
3631         * tree-ssa-forwprop.c (combine_cond_expr_cond): Handle overflow
3632         warnings here, instead of ...
3633         (ssa_forward_propagate_and_combine): ... here.
3634         (forward_propagate_into_comparison_1): Adjust.
3635         (forward_propagate_into_comparison): Likewise.
3636         (forward_propagate_into_gimple_cond): Likewise.
3637         (forward_propagate_into_cond): Likewise.
3638
3639 2011-08-16  Andreas Schwab  <schwab@redhat.com>
3640
3641         * ggc.h (ggc_alloc_rtvec_sized): Use ggc_alloc_zone_rtvec_def
3642         instead of ggc_alloc_zone_vec_rtvec_def.
3643
3644 2011-08-16  Richard Guenther  <rguenther@suse.de>
3645
3646         * tree.h (ptrofftype_p): New helper function.
3647         * tree-cfg.c (verify_expr): Use ptrofftype_p for POINTER_PLUS_EXPR
3648         offset verification.
3649         (verify_gimple_assign_binary): Likewise.
3650         * tree.c (build2_stat): Likewise.
3651         * tree-chrec.c (chrec_fold_plus_poly_poly): Likewise.
3652         (reset_evolution_in_loop): Likewise.
3653         * tree-chrec.h (build_polynomial_chrec): Likewise.
3654
3655 2011-08-16  Liang Wang  <lwang1@marvell.com>
3656
3657         * ggc.h (ggc_alloc_rtvec_sized): Change arguments of
3658         ggc_alloc_zone_vec_rtvec_def.
3659
3660 2011-08-16  Richard Guenther  <rguenther@suse.de>
3661
3662         * tree-vrp.c (extract_range_from_multiplicative_op_1): New
3663         helper factored out from ...
3664         (extract_range_from_binary_expr_1): ... here.  Re-structure
3665         to not glob handling too different tree codes.
3666
3667 2011-08-15  Richard Henderson  <rth@redhat.com>
3668
3669         PR middle-end/50006
3670         * explow.c (allocate_dynamic_stack_space): Move suppress_reg_args_size
3671         setting out to include allocate_stack named pattern as well.
3672         * builtins.c (expand_builtin_apply): Add ARG_SIZE 0 note.
3673         * stmt.c (expand_stack_restore): Likewise.
3674
3675 2011-08-15  Richard Guenther  <rguenther@suse.de>
3676
3677         PR middle-end/50082
3678         * fold-const.c (maybe_canonicalize_comparison_1): Properly
3679         convert the modified operand to the other operand type.
3680         (fold_comparison): Call maybe_canonicalize_comparison_1 with
3681         useless conversions stripped from comparison operands.
3682
3683 2011-08-15  Richard Guenther  <rguenther@suse.de>
3684
3685         * tree-vrp.c (value_range_nonnegative_p): Fix anti-range case.
3686         (extract_range_from_unary_expr_1): Restructure.
3687
3688 2011-08-15  Richard Guenther  <rguenther@suse.de>
3689
3690         PR tree-optimization/50058
3691         * tree-ssa-sccvn.c (vn_reference_lookup_3): Relax aggregate
3692         copy matching.
3693
3694 2011-08-15  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
3695
3696         PR target/50022
3697         * config/arm/arm.c (output_move_double): Add 2 parameters
3698         to count the number of insns emitted and whether to emit or not.
3699         Use the flag to decide when to emit and count number of instructions
3700         that will be emitted.
3701         Handle case where output_move_double might be called for calculating
3702         lengths with an invalid constant.
3703         (arm_count_output_move_double_insns): Define.
3704         * config/arm/arm-protos.h (arm_count_output_move_double_insns): Declare.
3705         (output_move_double): Adjust prototype.
3706         * config/arm/vfp.md ("*movdi_vfp"): Adjust call to
3707         output_move_double.
3708         ("*movdi_vfp_cortexa8"): Likewise and add attribute
3709         for ce_count.
3710         * config/arm/arm.md ("*arm_movdi"): Adjust call to output_move_double.
3711         ("*movdf_soft_insn"): Likewise.
3712         * config/arm/cirrus.md ("*cirrus_arm_movdi"): Likewise.
3713         ("*cirrus_thumb2_movdi"): Likewise.
3714         ("*thumb2_cirrus_movdf_hard_insn"): Likewise.
3715         ("*cirrus_movdf_hard_insn"): Likewise.
3716         * config/arm/neon.md (*neon_mov<mode> VD): Likewise.
3717         * config/arm/iwmmxt.md ("*iwmmxt_arm_movdi"): Likewise.
3718         ("mov<mode>_internal VMMX"): Likewise.
3719         * config/arm/fpa.md (*movdf_fpa, *thumb2_movdf_fpa): Likewise.
3720
3721 2011-08-14  Uros Bizjak  <ubizjak@gmail.com>
3722
3723         * config/i386/i386.c (ix86_expand_round_sse4): New function.
3724         * config/i386/i386-protos.h (ix86_expand_round_sse4): New prototype.
3725         * config/i386/i386.md (round<mode>2): Use ix86_expand_round_sse4
3726         for TARGET_ROUND.
3727
3728         (rint<mode>2): Simplify TARGET_ROUND check.
3729         (floor<mode>2): Ditto.
3730         (ceil<mode>2): Ditto.
3731         (btrunc<mode>2): Ditto.
3732
3733 2011-08-14  Anatoly Sokolov  <aesok@post.ru>
3734
3735         * config/mmix/mmix.c (TARGET_PREFERRED_OUTPUT_RELOAD_CLASS): Redefine
3736         as mmix_preferred_output_reload_class.
3737
3738 2011-08-14  Georg-Johann Lay  <avr@gjlay.de>
3739
3740         * PR target/49903
3741         * config/avr/avr.md (UNSPEC_IDENTITY): New c_enum.
3742         (branch_unspec): New insn.
3743         (branch): Beauty farm.
3744         * config/avr/avr.c (compare_condition): Use JUMP_P.  Test SET_SRC
3745         to be IF_THEN_ELSE.
3746         (avr_compare_pattern, avr_reorg_remove_redundant_compare):
3747         New static functions.
3748         (avr_reorg): Use them.  Use next_real_insn instead of NEXT_INSN.
3749         Use CONST_INT_P.  Beauty.
3750
3751 2011-08-12  Richard Henderson  <rth@redhat.com>
3752
3753         PR rtl-opt/49994
3754         * sched-init.h (struct deps_desc): Add sched_before_next_jump.
3755         * sched-deps.c (init_deps): Clear it.
3756         (deps_analyze_insn): Consume it.
3757         (sched_analyze_insn): Fill it.
3758
3759 2011-08-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
3760
3761         PR target/48328
3762         * config/arm/arm.h (CASE_VECTOR_SHORTEN_MODE): Fix distance
3763         for tbh instructions.
3764
3765 2011-08-12  Diego Novillo  <dnovillo@google.com>
3766
3767         * data-streamer.h (streamer_write_zero): Rename from output_zero.
3768         (streamer_write_uhwi): Rename from lto_output_uleb128.
3769         (streamer_write_hwi): Rename from output_sleb128.
3770         (streamer_write_string): Rename from lto_output_string.
3771         (streamer_string_index): Rename from lto_string_index.
3772         (streamer_write_string_with_length): Rename from
3773         lto_output_string_with_length.
3774         (streamer_write_uhwi_stream): Rename from lto_output_uleb128_stream.
3775         (streamer_write_hwi_stream): Rename from lto_output_sleb128_stream.
3776         (streamer_read_string): Rename from lto_input_string.
3777         (streamer_read_indexed_string): Rename from input_string_internal.
3778         (streamer_read_uhwi): Rename from lto_input_uleb128.
3779         (streamer_read_hwi): Rename from lto_input_sleb128.
3780         (streamer_write_hwi_in_range): Rename from lto_output_int_in_range.
3781         (streamer_read_hwi_in_range): Rename from lto_input_int_in_range.
3782         (streamer_write_enum): Rename from lto_output_enum.
3783         (streamer_read_enum): Rename from lto_input_enum.
3784         (streamer_write_record_start): Rename from output_record_start.
3785         (streamer_read_record_start): Rename from input_record_start.
3786         (streamer_write_bitpack): Rename from lto_output_bitpack.
3787         (streamer_read_bitpack): Rename from lto_input_bitpack.
3788         (streamer_write_char_stream): Rename from lto_output_1_stream.
3789         (streamer_read_uchar): Rename from lto_input_1_unsigned.
3790         * tree-streamer.h (streamer_cache_d): Rename from lto_streamer_cache_d.
3791         (streamer_handle_as_builtin_p): Rename from lto_stream_as_builtin_p.
3792         (streamer_read_string_cst): Rename from input_string_cst.
3793         (streamer_read_chain): Rename from lto_input_chain.
3794         (streamer_alloc_tree): Rename from lto_materialize_tree.
3795         (streamer_read_tree_body): Rename from lto_input_tree_pointers.
3796         (streamer_get_pickled_tree): Rename from lto_get_pickled_tree.
3797         (streamer_get_builtin_tree): Rename from lto_get_builtin_tree.
3798         (streamer_read_integer_cst): Rename from lto_input_integer_cst.
3799         (streamer_read_tree_bitfields): Rename from tree_read_bitfields.
3800         (streamer_write_chain): Rename from lto_output_chain.
3801         (streamer_write_tree_header): Rename from lto_output_tree_header.
3802         (streamer_pack_tree_bitfields): Rename from pack_value_fields.
3803         (streamer_write_tree_body): Rename from lto_output_tree_pointers.
3804         (streamer_write_integer_cst): Rename from lto_output_integer_cst.
3805         (streamer_write_builtin): Rename from lto_output_builtin_tree.
3806         (streamer_check_handled_ts_structures): Rename from
3807         check_handled_ts_structures.
3808         (streamer_tree_cache_insert): Rename from lto_streamer_cache_insert.
3809         (streamer_tree_cache_insert_at): Rename from
3810         lto_streamer_cache_insert_at.
3811         (streamer_tree_cache_append): Rename from lto_streamer_cache_append.
3812         (streamer_tree_cache_lookup): Rename from lto_streamer_cache_lookup.
3813         (streamer_tree_cache_get): Rename from lto_streamer_cache_get.
3814         (streamer_tree_cache_create): Rename from lto_streamer_cache_create.
3815         (streamer_tree_cache_delete): Rename from lto_streamer_cache_delete.
3816         * tree-streamer-out.c (write_string_cst): Rename from output_string_cst.
3817         (write_identifier): Rename from output_identifier.
3818         (write_ts_common_tree_pointers): Rename from
3819         lto_output_ts_common_tree_pointers.
3820         (write_ts_vector_tree_pointers): Rename from
3821         lto_output_ts_vector_tree_pointers.
3822         (write_ts_complex_tree_pointers): Rename from
3823         lto_output_ts_complex_tree_pointers.
3824         (write_ts_decl_minimal_tree_pointers): Rename from
3825         lto_output_ts_decl_minimal_tree_pointers.
3826         (write_ts_decl_common_tree_pointers): Rename from
3827         lto_output_ts_decl_common_tree_pointers.
3828         (write_ts_decl_non_common_tree_pointers): Rename from
3829         lto_output_ts_decl_non_common_tree_pointers.
3830         (write_ts_decl_with_vis_tree_pointers): Rename from
3831         lto_output_ts_decl_with_vis_tree_pointers.
3832         (write_ts_field_decl_tree_pointers): Rename from
3833         lto_output_ts_field_decl_tree_pointers.
3834         (write_ts_function_decl_tree_pointers): Rename from
3835         lto_output_ts_function_decl_tree_pointers.
3836         (write_ts_type_common_tree_pointers): Rename from
3837         lto_output_ts_type_common_tree_pointers.
3838         (write_ts_type_non_common_tree_pointers): Rename from
3839         lto_output_ts_type_non_common_tree_pointers.
3840         (write_ts_list_tree_pointers): Rename from
3841         lto_output_ts_list_tree_pointers.
3842         (write_ts_vec_tree_pointers): Rename from
3843         lto_output_ts_vec_tree_pointers.
3844         (write_ts_exp_tree_pointers): Rename from
3845         lto_output_ts_exp_tree_pointers.
3846         (write_ts_block_tree_pointers): Rename from
3847         lto_output_ts_block_tree_pointers.
3848         (write_ts_binfo_tree_pointers): Rename from
3849         lto_output_ts_binfo_tree_pointers.
3850         (write_ts_constructor_tree_pointers): Rename from
3851         lto_output_ts_constructor_tree_pointers.
3852         (write_ts_target_option): Rename from lto_output_ts_target_option.
3853         (write_ts_translation_unit_decl_tree_pointers): Rename from
3854         lto_output_ts_translation_unit_decl_tree_pointers.
3855         * tree-streamer.c (streamer_tree_cache_add_to_node_array):
3856         Rename from lto_streamer_cache_add_to_node_array.
3857         (streamer_tree_cache_insert_1): Rename from lto_streamer_cache_insert_1.
3858         (record_common_node): Rename from lto_record_common_node.
3859
3860         * streamer-hooks.h (bitpack_d, lto_streamer_cache_d): Remove forward
3861         declarations.
3862         * data-streamer-in.c (lto_input_widest_uint_uleb128): Remove unused
3863         function.
3864         * data-streamer-out.c (lto_output_widest_uint_uleb128_stream): Remove
3865         unused function.
3866         * Makefile.in (lto-section-out.o): Add dependency on DATA_STREAMER_H.
3867         (ipa-reference.o): Likewise.
3868         * lto-section-out.c: Include data-streamer.h.
3869         * ipa-reference.c: Include data-streamer.h.
3870
3871 2011-08-12  Nick Clifton  <nickc@redhat.com>
3872
3873         * builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi pattern.
3874         * doc/md.texi (cmpstrn): Note that the comparison stops if both
3875         fetched bytes are zero.
3876         (cmpstr): Likewise.
3877         (cmpmem): Note that the comparison does not stop if both of the
3878         fetched bytes are zero.
3879
3880 2011-08-12  Uros Bizjak  <ubizjak@gmail.com>
3881
3882         * builtins.def (BUILT_IN_ICEIL{,F,L}, BUILT_IN_IFLOOR{,F,L}
3883         BUILT_IN_IRINT{,F,L}, BUILT_IN_IROUND{,F,L}: New builtin definitions.
3884         * convert.c (convert_to_integer): Convert to BUILT_IN_ICEIL,
3885         BUILT_IN_IFLOOR, BUILT_IN_IRINT or BUILT_INT_IROUND when converting
3886         to integer_type_node.
3887         * fold-const.c (tree_call_nonnegative_warnv_p): Handle BUILT_IN_ICEIL,
3888         BUILT_IN_IFLOOR, BUILT_IN_IRINT and BUILT_INT_IROUND.
3889         * builtins.c (expand_builtin_in): Ditto.
3890         (mathfn_built_in_1): Ditto.
3891         (expand_builtin_int_roundingfn): Handle BUILT_IN_ICEIL and
3892         BUILT_IN_IFLOOR.
3893         (expand_builtin_int_roundingfn_2): Handle BUILT_IN_IRINT and
3894         BUILT_IN_IROUND.
3895         (fold_fixed_mathfn): Canonicalize BUILT_IN_ICEIL, BUILTIN_IN_IFLOOR
3896         BUILT_IN_IRINT and BUILT_IN_IROUND to BUILT_IN_LCEIL,
3897         BUILTIN_IN_LFLOOR, BUILT_IN_LRINT and BUILT_IN_LROUND on ILP32 targets.
3898
3899 2011-08-12  Richard Guenther  <rguenther@suse.de>
3900
3901         * tree-vrp.c (extract_range_from_unary_expr_1): Implement -X as 0 - X.
3902
3903 2011-08-12  Romain Geissler  <romain.geissler@gmail.com>
3904
3905         * Makefile.in (PLUGIN_HEADERS): Add C_TREE_H.
3906
3907 2011-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
3908
3909         * config/arm/arm.c (get_label_padding): New function.
3910         (create_fix_barrier, arm_reorg): Use it.
3911
3912 2011-08-11  Uros Bizjak  <ubizjak@gmail.com>
3913
3914         PR target/49781
3915         * config/i386/i386.md (*lea_5_zext): New.
3916         (*lea_6_zext): Ditto.
3917         * config/i386/predicates.md (const_32bit_mask): New predicate.
3918         (lea_address_operand): Reject AND.
3919         * config/i386/i386.c (ix86_decompose_address): Allow Dimode AND with
3920         const_32bit_mask immediate.
3921         (ix86_print_operand_address): Handle AND.
3922         (memory_address_length): Ditto.
3923
3924 2011-08-11  Romain Geissler  <romain.geissler@gmail.com>
3925             Brian Hackett  <bhackett1024@gmail.com>
3926
3927         * plugin.def: Add event for finish_decl.
3928         * plugin.c (register_callback, invoke_plugin_callbacks): Same.
3929         * c-decl.c (finish_decl): Invoke callbacks on above event.
3930         * doc/plugins.texi: Document above event.
3931
3932 2011-08-11  Richard Guenther  <rguenther@suse.de>
3933
3934         * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid redundant
3935         lookups, make looking through aggregate copies stronger.
3936
3937 2011-08-11  Richard Henderson  <rth@redhat.com>
3938
3939         PR bootstrap/50018
3940         * expr.c (fixup_args_size_notes): Accept and ignore normal calls.
3941
3942 2011-08-11  Richard Guenther  <rguenther@suse.de>
3943
3944         * lto-cgraph.c (input_node): Use DECL_BUILT_IN.
3945         * tree-vrp.c (stmt_interesting_for_vrp): Likewise.
3946         (vrp_visit_stmt): Likewise.
3947
3948 2011-08-11  Richard Guenther  <rguenther@suse.de>
3949
3950         PR middle-end/50040
3951         * gimplify.c (gimplify_modify_expr_complex_part): Mark the
3952         load of the other piece with TREE_NO_WARNING.
3953         * tree-flow.h (warn_uninit): Adjust prototype.
3954         * tree-ssa.c (warn_uninit): Take uninitialized SSA name,
3955         the base variable and the expression that is used separately.
3956         Properly query all TREE_NO_WARNING flags.
3957         (struct walk_data): Remove.
3958         (warn_uninitialized_var): Likewise.
3959         (warn_uninitialized_vars): Do not walk gimple pieces but simply
3960         look at all SSA uses of the statement.  Handle unused memory
3961         separately.
3962         * tree-ssa-uninit.c (warn_uninitialized_phi): Adjust.
3963
3964 2011-08-11   Kazuhiro Inaoka  <kazuhiro.inaoka.ud@renesas.com>
3965
3966         * config/rx/rx.md (movsicc): Allow register to register transfers.
3967         (*movsicc): Likewise.
3968         (*stcc): Restrict this pattern to EQ and NE compares.
3969         (*stcc_reg): New pattern.  Works for any comparison but only for
3970         register transfers.
3971
3972 2011-08-11   Diego Novillo  <dnovillo@google.com>
3973
3974         * tree-streamer-out.c (lto_output_ts_decl_with_vis_tree_pointers):
3975         Call stream_write_tree instead of output_record_start.
3976         (lto_output_ts_binfo_tree_pointers): Likewise.
3977
3978         * streamer-hooks.h (stream_write_tree): Move from tree-streamer.h.
3979         Convert it to a macro.
3980         (stream_read_tree): Likewise.
3981
3982         * lto-streamer.h (lto_stream_as_builtin_p): Move ...
3983         * tree-streamer.h (lto_stream_as_builtin_p): ... here.
3984
3985         * lto-streamer-in.c (lto_read_tree): Call lto_streamer_cache_append
3986         and tree_read_bitfields.
3987         * lto-streamer-out.c (lto_is_streamable): Move from lto-streamer.c