OSDN Git Service

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