OSDN Git Service

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