OSDN Git Service

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