OSDN Git Service

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