OSDN Git Service

* loop-unroll.c (struct iv_to_split): Add pointer to next.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
2
3         * loop-unroll.c (struct iv_to_split): Add pointer to next.
4         (struct var_to_expand): Likewise.
5         (struct opt_info): Add head and tail for linked lists of the above.
6         (analyze_insn_to_expand_var): Initialize next.
7         (analyze_iv_to_split_insn): Likewise.
8         (analyze_insns_in_loop): Create linked lists.
9         (allocate_basic_variable): Simplify for use without hash table.
10         (insert_var_expansion_initialization): Likewise, make it type-safer.
11         (combine_var_copies_in_loop_exit): Likewise.
12         (apply_opt_in_copies): Walk lists rather than hash tables.
13         (release_var_copies): Simplified and inlined by hand into...
14         (free_opt_info): ... this function.
15
16 2009-06-02  Richard Guenther  <rguenther@suse.de>
17
18         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19         for field decls.
20
21 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
22
23         * cfgexpand.c (gimple_expand_cfg): Discard the source location
24         only for builtins that are not overridden.
25
26 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
27
28         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
29         label string.
30
31 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
32
33         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
34
35 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
36
37         * combine.c (move_deaths): Compare LUIDs within the same BB only.
38
39 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
40
41         * common.opt (fdump-unnumbered-links): New.
42         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
43         * print-rtl.c (flag_dump_unnumbered_links): New.
44         (print_rtx): Test it.
45
46 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
47
48         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
49         push/pop multiple to 8-byte alignment.
50         
51 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
52
53         * config/i386/i386.c (queued_cfa_restores): New static variable.
54         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
55         functions.
56         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
57         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
58         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
59         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
60         note unconditionally.
61         (ix86_emit_restore_regs_using_mov): Likewise.
62         (ix86_emit_restore_sse_regs_using_mov): Likewise.
63         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
64         it through to ix86_emit_restore_reg_using_pop.
65         (ix86_emit_leave): Add RED_OFFSET argument.  Call
66         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
67         instead of adding REG_CFA_OFFSET note unconditionally.
68         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
69         the above functions.  Call ix86_add_queued_cfa_restore_notes when
70         needed.
71
72         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
73         force output of the label even for dwarf2out_do_cfi_asm.
74         (add_fde_cfi): If -g2 and above and cfi might change CFA,
75         force creation of CFI label and chain DW_CFA_set_loc jumping to it
76         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
77         caller.
78         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
79         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
80         dwarf2out_cfi_label callers.
81         * tree.h (dwarf2out_cfi_label): Adjust prototype.
82         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
83         Adjust dwarf2out_cfi_label callers.
84         * config/vax/vax.c (vax_output_function_prologue): Likewise.
85
86         * config/i386/i386.h (struct machine_cfa_state,
87         struct machine_function): Guard with ifndef USED_FOR_TARGET
88         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
89
90         PR other/40024
91         * emutls.c (__emutls_get_address): Change arr->size to mean number
92         of allocated arr->data entries instead of # of slots + 1.
93
94         PR middle-end/40316
95         * recog.c (peep2_reinit_state): New function.
96         (peephole2_init_state): Use it at the end of a basic block and also
97         when seeing a RTX_FRAME_RELATED_P insn.
98
99 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
100
101         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
102         fixuns_truncrfdi2): New.
103         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
104         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
105         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
106         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
107         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
108         *recip_approx): Remove.
109         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
110         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
111         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
112         move to div.md.
113         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
114         setf_exp_rf): New.
115
116 2009-06-01  Ian Lance Taylor  <iant@google.com>
117
118         * attribs.c (register_attribute): Use CONST_CAST.
119         * collect2.c (main): Use CONST_CAST2.
120         (scan_prog_file): Likewise.
121         * gcc.c (process_command, main): Likewise.
122         * toplev.c (toplev_main): Likewise.
123
124         * c-typeck.c (handle_warn_cast_qual): New static function,
125         partially broken out of build_c_cast.
126         (build_c_cast): Call handle_warn_cast_qual.
127         * doc/invoke.texi (Warning Options): Document new effect of
128         -Wcast-qual.
129
130 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
131
132         * diagnostic.c (diagnostic_build_prefix): Always print columns.
133         (diagnostic_report_current_module): Print columns.
134         * common.opt (flag_show_column): Enable by default.
135
136 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
137
138         * alias.c (find_base_term): Check for NULL term before returning.
139
140 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
141
142         Revert due to PR40320:
143         
144         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
145         * calls.c (emit_library_call_value_1): Don't force_operand for move
146         and push insns.
147
148 2009-06-01  Olivier Hainque  <hainque@adacore.com>
149             Eric Botcazou  <botcazou@adacore.com>
150
151         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
152         to be processed as a bitfield for constructor output purposes.
153         * output.h (initializer_constant_valid_for_bitfield_p): Declare
154         new function.
155         * varasm.c (oc_local_state): New type, output_constructor
156         local state to support communication with helpers.
157         (oc_outer_state): New type, output_constructor outer state of
158         relevance in recursive calls.
159         (output_constructor_array_range): New output_constructor helper,
160         extracted code for an array range element.
161         (output_constructor_regular_field): New output_constructor helper,
162         extracted code for an element that is not a bitfield.
163         (output_constructor_bitfield): New output_constructor helper,
164         extracted code for a bitfield element.  Accept an OUTER state
165         argument for recursive processing.  Recurse on record or array
166         CONSTRUCTOR values, possibly past noop conversions.
167         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
168         VALUE is a valid constant-valued expression for use in a static
169         bit-field initializer.
170         (output_constructor): Rework to use helpers.  Accept and honor an
171         OUTER state argument for recursive calls.  Return total size.  Be
172         prepared for nested constructors initializing bitfields.
173         (output_constant): Feed OUTER in calls to output_constructor.
174
175 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
176
177         * calls.c (emit_library_call_value_1): Don't force_operand for move
178         and push insns.
179
180 2009-06-01  Nick Clifton  <nickc@redhat.com>
181
182         * doc/invoke.texi (IA-64 Options): Fix typo.
183
184 2009-06-01  Ira Rosen  <irar@il.ibm.com>
185
186         PR tree-optimization/39129
187         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
188         printed message.
189         (vect_do_peeling_for_loop_bound): Use 
190         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
191         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
192         (vect_loop_versioning): Likewise.
193         (vect_create_cond_for_alias_checks): Fix indentation.
194         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
195         macros.
196         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
197         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
198         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
199         "control flow in loop".
200         (vect_estimate_min_profitable_iters): Use 
201         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
202         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
203         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
204         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
205         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
206         statement belongs to a group of strided accesses with the exact code 
207         check.
208         (vectorizable_load): Likewise.
209         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
210         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
211
212 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
213
214         * config/freebsd-stdint.h: New file.
215         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
216         Add freebsd-stdint.h to tm_file.
217
218 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
219
220         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
221         (thumb2_extendhidi2): Likewise.
222
223 2009-05-31  Ian Lance Taylor  <iant@google.com>
224
225         * regstat.c (regstat_n_sets_and_refs): Remove duplicate
226         definition.
227
228 2009-05-31  Ian Lance Taylor  <iant@google.com>
229
230         * Makefile.in (except.o): Depend upon gt-except.h, not
231         gt-$(EXCEPT_H).
232         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
233         (ipa-reference.o): Depend upon gt-ipa-reference.h.
234
235 2009-05-31  Jason Merrill  <jason@redhat.com>
236
237         * tree-pretty-print.c (print_call_name): Take the callee, not the
238         call itself.  Make non-static.  Use dump_function_name for
239         functions.
240         (dump_generic_node): Adjust.
241         * diagnostic.h: Declare print_call_name.
242         * gimple-pretty-print.c (dump_gimple_call): Use it.
243
244 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
245
246         * config/sh/sh.md (ashldi3_std): New define_expand.
247         (ashldi3): Use it.
248
249 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
250
251         PR target/40313
252         * config/sh/sh.c: Include debug.h.
253         (sh_expand_epilogue): Emit a blockage insn before the frame
254         pointer adjustment also when dwarf2out_do_frame returns true.
255
256 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
257
258         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
259         (thumb2_extendqidi2): New pattern.
260
261 2009-05-31  Ira Rosen  <irar@il.ibm.com>
262
263         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
264         mark phis for renaming.
265         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
266         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
267         Call mark_sym_for_renaming.
268         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
269         * tree-vect-loop.c (vect_transform_loop): Remove vect_memsyms_to_rename
270         initialization and a call to mark_set_for_renaming.
271
272 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
273
274         PR middle-end/40304
275         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
276         frame related even if !set_cfa && style < 0.
277
278 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
279
280         * config/i386/mingw-tls.c: New file.
281         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add
282         mingw-tls.c file.
283         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define
284         it for targets defining _WIN32 but not __CYGWIN__.
285
286 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
287
288         * configure.ac: Add MPC support.
289         
290         * config.in, configure: Regenerate.     
291
292 2009-05-29  Richard Henderson  <rth@redhat.com>
293
294         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
295         NOTE_INSN_BASIC_BLOCK.
296         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
297         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
298         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
299         to be deleted.
300         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
301         add in_use field.
302         (add_cfi): Disable check redefining cfa away from drap.
303         (lookup_cfa_1): Add remember argument; handle remember/restore.
304         (lookup_cfa): Pass remember argument.
305         (cfa_remember): New.
306         (compute_barrier_args_size_1): Remove sibcall check.
307         (dwarf2out_frame_debug_def_cfa): New.
308         (dwarf2out_frame_debug_adjust_cfa): New.
309         (dwarf2out_frame_debug_cfa_offset): New.
310         (dwarf2out_frame_debug_cfa_register): New.
311         (dwarf2out_frame_debug_cfa_restore): New.
312         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
313         (dwarf2out_begin_epilogue): New.
314         (dwarf2out_frame_debug_restore_state): New.
315         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
316         DW_CFA_restore_state.
317         (output_cfi_directive): Likewise.
318         (convert_cfa_to_fb_loc_list): Likewise.
319         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
320         * dwarf2out.h: Update.
321         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
322         (copy_insn_1): Early out for null.
323         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
324         and dwarf2out_frame_debug_restore_state.
325         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
326         (prologue_insn_hash, epilogue_insn_hash): New.
327         (free_after_compilation): Adjust freeing accordingly.
328         (record_insns): Create hash table if needed; push insns into
329         hash instead of array.
330         (maybe_copy_epilogue_insn): New.
331         (contains): Search hash table instead of array.
332         (sibcall_epilogue_contains): Remove.
333         (thread_prologue_and_epilogue_insns): Split eh_return insns
334         and mark them as epilogues.
335         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
336         scanning in terms of basic blocks.
337         * insn-notes.def (CFA_RESTORE_STATE): New.
338         * jump.c (returnjump_p_1): Accept EH_RETURN.
339         (eh_returnjump_p_1, eh_returnjump_p): New.
340         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
341         CFA_REGISTER, CFA_RESTORE): New.
342         * rtl.def (EH_RETURN): New.
343         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
344
345         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
346         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
347
348         * config/i386/i386.c (gen_push): Update cfa state.
349         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
350         add a CFA_ADJUST_CFA note.
351         (ix86_dwarf_handle_frame_unspec): Remove.
352         (ix86_expand_prologue): Update cfa state.
353         (ix86_emit_restore_reg_using_pop): New.
354         (ix86_emit_restore_regs_using_pop): New.
355         (ix86_emit_leave): New.
356         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
357         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
358         * config/i386/i386.h (struct machine_cfa_state): New.
359         (ix86_cfa_state): New.
360         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
361         (eh_return_internal): Merge from eh_return_<mode>,
362         use eh_return rtx, split w/ epilogue.
363
364 2009-05-29  Ian Lance Taylor  <iant@google.com>
365
366         * builtins.c (validate_gimple_arglist): Don't use va_arg with
367         enum type.
368         * calls.c (emit_library_call_value_1): Likewise.
369
370         * c-typeck.c (c_build_va_arg): New function.
371         * c-tree.h (c_build_va_arg): Declare.
372         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
373         instead of build_va_arg.
374
375 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
376
377         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
378         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
379         (ptr_difference_cost): Use affine combinations to compute it.
380         (difference_cost): Likewise.
381         (get_computation_cost_at): Compute more accurate cost for addresses
382         if the ratio is a multiplier allowed in addresses.
383         For non-addresses, consider that an additional offset or symbol is
384         added only once.
385
386 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
387
388         * config/i386/i386.c (ix86_decompose_address): Avoid useless
389         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
390
391         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
392         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
393         (prefix_rex): For UNIT_MMX don't imply the prefix by default
394         if MODE_DI.
395         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
396         to 1 for TYPE_SSE{IADD1,CVT1}.
397         (prefix_vex_imm8): Removed.
398         (length_vex): Only pass 1 as second argument to
399         ix86_attr_length_vex_default if prefix_extra is 0.
400         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
401         (length): For prefix vex computation use length_immediate
402         attribute instead of prefix_vex_imm8.
403         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
404         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
405         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
406         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
407         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
408         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
409         a space in between the operands.
410         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
411         if one operand is 0xff and the other one si, di, bp or sp.
412         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
413         other one si, di, bp or sp.
414         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
415         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
416         type and mode attributes.
417         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
418         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
419         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
420         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
421         prefix_data16 attribute iff MODE_DF.
422         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
423         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
424         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
425         constm128_operand in length_immediate computation.
426         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
427         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
428         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
429         length_immediate attribute to 1.
430         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
431         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
432         for certain alternatives.
433         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
434         prefix_data16 attribute if MODE_V1DF.
435         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
436         length_immediate to 1.
437         (set_got_rex64, set_rip_rex64): Remove length attribute, set
438         length_address to 4, set mode attribute to MODE_DI.
439         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
440         (fxam<mode>2_i387): Set length attribute to 4.
441         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
442         *prefetch_3dnow_rex): Override length_address attribute.
443         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
444         attributes.
445         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
446         (constm128_operand): Removed.
447         * config/i386/i386.c (memory_address_length): For
448         disp && !index && !base in 64-bit mode account for SIB byte if
449         print_operand_address can't optimize disp32 into disp32(%rip)
450         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
451         for fs: or gs: segment.
452         (ix86_attr_length_immediate_default): When checking if shortform
453         is possible, truncate immediate to the length of the non-shortened
454         immediate.
455         (ix86_attr_length_address_default): Ignore MEM_P operands
456         with X constraint.
457         (ix86_attr_length_vex_default): Only check for DImode on
458         GENERAL_REG_P operands.
459         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
460         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
461         (sse_cvttps2pi): Clear prefix_rep attribute.
462         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
463         attribute.
464         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
465         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
466         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
467         iff operand 2 is const_int_operand.
468         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
469         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
470         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
471         instead of vex.
472         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
473         prefix_data16.
474         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
475         prefix_data16 attribute for movlpd and movhpd instructions.
476         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
477         length_immediate for shufpd instruction.
478         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
479         (avx_cmpp<avxmodesuffixf2c><mode>3,
480         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
481         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
482         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
483         *vec_dupv4sf_avx, *vec_dupv4sf): Set
484         length_immediate attribute to 1.
485         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
486         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
487         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
488         prefix_data16 attribute for the first alternative to 1.
489         (*avx_loadlps): Override length_immediate for the first alternative.
490         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
491         attributes for second alternative.
492         (*vec_concatv2sf_sse4_1): Override length_immediate and
493         prefix_data16 attributes for second alternative.
494         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
495         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
496         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
497         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
498         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
499         prefix_data16 and length_immediate to 1.
500         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
501         to 1.
502         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
503         prefix_extra attribute for variants that don't have 0f prefix
504         alone.
505         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
506         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
507         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
508         *sse4_1_pextrd): Set length_immediate to 1.
509         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
510         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
511         to 1.
512         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
513         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
514         length_immediate to 1 for second alternative.
515         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
516         prefix_extra and length_immediate attributes for the first
517         alternative.
518         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
519         first alternative.
520         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
521         to 1 for the first and third alternative.
522         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
523         alternative.
524         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
525         attribute.
526         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
527         attribute to 0.
528         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
529         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
530         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
531         *avx_psign<mode>3): Set prefix_extra attribute to 1.
532         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
533         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
534         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
535         ssse3_psign<mode>3): Override prefix_rex attribute.
536         (*avx_palignrti): Override prefix_extra and length_immediate
537         to 1.
538         (ssse3_palignrti): Override length_immediate to 1.
539         (ssse3_palignrdi): Override length_immediate to 1, override
540         prefix_rex attribute.
541         (abs<mode>2): Override prefix_rep to 0, override prefix_rex
542         attribute.
543         (sse4a_extrqi): Override length_immediate to 2.
544         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
545         (sse4a_insertq): Override prefix_data16 to 0.
546         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
547         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
548         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
549         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
550         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
551         and length_immediate to 1.
552         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
553         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
554         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
555         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
556         and length_immediate to 1.
557         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
558         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
559         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
560         avx_ptest256): Override prefix_extra to 1.
561         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
562         Override prefix_data16 and length_immediate to 1.
563         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
564         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
565         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
566         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
567         prefix_data16 to 0 and prefix_extra to 2.
568         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
569         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
570         attribute.
571         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
572         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
573         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
574         and prefix_extra to 2.
575         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
576         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
577         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
578         avx_vpermilvar<mode>3,
579         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
580         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
581         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
582         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
583         Override prefix_extra to 1.
584         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
585         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
586         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
587         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
588         prefix_extra and length_immediate to 1.
589         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
590         modrm to 0.
591         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
592         to 1 for the first alternative.
593         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
594         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
595         cases.
596         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
597         *movv2sf_internal_avx, *movv2sf_internal): Override
598         prefix_rep attribute for certain alternatives.
599         (*mov<mode>_internal): Override prefix_rep or prefix_data16
600         attributes for certain alternatives.
601         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
602         attributes for certain alternatives.
603         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
604         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
605         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
606         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
607         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
608         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
609         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
610         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
611         length_immediate to 1 if operand 2 is const_int_operand.
612         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
613         *vec_extractv2si_1): Set length_immediate
614         attribute to 1.
615         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
616         using old 3DNOW insn rather than SSE/3DNOW_A.
617         (mmx_emms, mmx_femms): Clear modrm attribute.
618
619 2009-05-29  Martin Jambor  <mjambor@suse.cz>
620
621         * tree-sra.c:  New implementation of SRA.
622
623         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
624         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
625         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
626         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
627         (SRA_MAX_STRUCTURE_COUNT): Removed.
628         (SRA_FIELD_STRUCTURE_RATIO): Removed.
629         * doc/invoke.texi (sra-max-structure-size): Removed.
630         (sra-field-structure-ratio): Removed.
631
632 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
633
634         PR middle-end/40291
635         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
636         before expansion.
637
638 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
639
640         PR rtl-optimization/40101
641         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
642         seqno.  Adjust comment.
643         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
644         inserting bookkeeping before a jump, the jump is not scheduled.
645         When no positive seqno found, provide a value.  Add comment.
646
647 2009-05-29  Richard Guenther  <rguenther@suse.de>
648
649         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
650         short-cutting on the first component.
651
652 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
653
654         PR middle-end/39958
655         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
656         for trees other than decls/types.
657
658 2009-05-29  Richard Guenther  <rguenther@suse.de>
659
660         * tree-ssa-operands.c (get_expr_operands): Do not handle
661         INDIRECT_REFs in the handled-component case.  Remove
662         unused get_ref_base_and_extent case.
663         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
664         tree_low_cst and host_integerp where possible.
665         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
666         codes for equivalence.
667         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
668
669 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
670
671         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
672         to tmake_file for i[34567]86-*-cygwin*. 
673
674 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
675
676         PR target/40017
677         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
678         (altivec_categorize_keyword, init_vector_keywords,
679         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
680         similar to bool.
681
682 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
683
684         * tree.c (handle_dll_attribute): Check if node is
685         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
686
687 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
688
689         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
690         component.
691         (thumb2_zero_extendqidi2): Likewise.
692
693 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
694
695         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
696         instead of gen_movrt.
697         * config/sh/sh.md (movrt): Remove.
698
699 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
700
701         * doc/invoke.texi (IA-64 Options)
702         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
703         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
704         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
705         -msched-prefer-non-control-spec-insns,
706         -msched-stop-bits-after-every-cycle,
707         -msched-count-spec-in-critical-path,
708         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
709         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns
710         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
711         and -msched-spec-verbose.
712
713 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
714
715         * config/arm/lib1funcs.asm (__clear_cache): Define if
716         L_clear_cache.
717         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
718         error if used.
719         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
720
721 2009-05-28  Richard Guenther  <rguenther@suse.de>
722
723         * tree-ssa-alias.c (ao_ref_init): New function.
724         (ao_ref_base): Likewise.
725         (ao_ref_base_alias_set): Likewise.
726         (ao_ref_alias_set): Likewise.
727         (refs_may_alias_p_1): Change signature.
728         (refs_may_alias_p): Adjust.
729         (refs_anti_dependent_p): Likewise.
730         (refs_output_dependent_p): Likewise.
731         (call_may_clobber_ref_p_1): Change signature.
732         (call_may_clobber_ref_p): Adjust.
733         (stmt_may_clobber_ref_p_1): New function split out from ...
734         (stmt_may_clobber_ref_p): ... here.
735         (maybe_skip_until): Adjust signature.
736         (get_continuation_for_phi): Likewise.
737         (walk_non_aliased_vuses): Likewise.
738         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
739         (ao_ref_init): Declare.
740         (ao_ref_base): Likewise.
741         (ao_ref_alias_set): Likewise.
742         (stmt_may_clobber_ref_p_1): Likewise.
743         (walk_non_aliased_vuses): Adjust.
744         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
745         (get_ref_from_reference_ops): remove.
746         (vn_reference_lookup_2): Adjust signature.
747         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
748         (vn_reference_lookup_pieces): Adjust signature, do not re-build
749         trees.
750         (vn_reference_lookup): Adjust.
751         (vn_reference_insert): Likewise.
752         (vn_reference_insert_pieces): Adjust signature.
753         (visit_reference_op_call): Adjust.
754         * tree-ssa-pre.c (get_expr_type): Simplify.
755         (phi_translate_1): Adjust.
756         (compute_avail): Likewise.
757         (translate_vuse_through_block): Do not re-build trees.
758         (value_dies_in_block_x): Likewise.
759         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
760         fields.
761         (vn_reference_lookup_pieces): Adjust declaration.
762         (vn_reference_insert_pieces): Likewise.
763
764 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
765
766         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
767         with checking disabled.
768
769 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
770
771         PR target/37216
772
773         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
774         macro definition for support of three-operand format aligned
775         .comm directive in assembler on cygwin/pe/mingw target OS.
776         * configure:  Regenerate.
777         * config.h:  Regenerate.
778
779         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
780         aligned form of .comm directive if -mpe-aligned-commons is in effect.
781         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
782
783         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
784         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
785
786 2009-05-28  Ira Rosen  <irar@il.ibm.com>
787
788         PR tree-optimization/40254
789         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
790         in analysis of basic blocks.
791
792 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
793
794         PR middle-end/33699
795         * target.h (struct gcc_target): Fix indentation.  Add
796         const_anchor.
797         * target-def.h (TARGET_CONST_ANCHOR): New macro.
798         (TARGET_INITIALIZER): Use it.
799         * cse.c (CHEAPER): Move it up to the other macros.
800         (insert): Rename this ...
801         (insert_with_costs): ... to this.  Add cost parameters.  Update
802         function comment.
803         (insert): New function.  Call insert_with_costs.
804         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
805         find_reg_offset_for_const, try_const_anchors): New functions.
806         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
807         when using a const-anchor.  Call insert_const_anchors.
808         * config/mips/mips.c (mips_set_mips16_mode): Set
809         targetm.const_anchor.
810         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
811
812 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
813
814         * tree-inline.c (remap_decls): Enable nonlocalized variables
815         when not optimizing.
816
817 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
818
819         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
820         Simplify other tests involving optimize.
821
822 2009-05-27  Tom Tromey  <tromey@redhat.com>
823
824         * unwind-dw2.c (_Unwind_DebugHook): New function.
825         (uw_install_context): Call _Unwind_DebugHook.
826
827 2009-05-27  Tom Tromey  <tromey@redhat.com>
828
829         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
830
831 2009-05-27  Ian Lance Taylor  <iant@google.com>
832
833         * Makefile.in (LINKER, LINKER_FLAGS): Define.
834         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
835         (ALL_LINKERFLAGS): Define.
836         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
837         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
838         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
839         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
840         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
841         $(LINKER_FOR_BUILD).
842         (build/gcov-iov$(build_exeext)): Likewise.
843
844 2009-05-27  Julian Brown  <julian@codesourcery.com>
845
846         * gcse.c (target.h): Include.
847         (can_assign_to_reg_without_clobbers_p): Check that the target allows
848         copy of argument to a pseudo register.
849
850 2009-05-27  Diego Novillo  <dnovillo@google.com>
851
852         * tree-ssa-live.c (dump_scope_block): Document arguments.
853         (dump_scope_blocks): Document.
854         (debug_scope_blocks): New.
855         * tree-flow.h (debug_scope_blocks): Declare.
856
857 2009-05-21  Denis Chertykov  <denisc@overta.ru>
858
859         * doc/contrib.texi (Contributors): add myself to the list.
860
861 2009-05-27  Olivier Hainque  <hainque@adacore.com>
862
863         * expr.c (target_align): New function.  Alignment the TARGET of an
864         assignment may be assume to have.
865         (highest_pow2_factor_for_target): Use it instead of relying on
866         immediate tree attributes of TARGET, not necessarily honored when
867         intermediate bitfields are involved.
868         
869 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
870
871         PR target/40266
872         * config/i386/driver-i386.c (host_detect_local_cpu): Support
873         AVX, SSE4, AES, PCLMUL and POPCNT.
874
875 2009-05-27  Diego Novillo  <dnovillo@google.com>
876
877         * tree-pretty-print.c (dump_location): New.
878         (dump_generic_node): Call it.
879         Factor code to handle BLOCK nodes ...
880         (dump_block_node): ... here.
881
882 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
883
884         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with
885         it.
886         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
887         included.
888         * gcc-plugin.h: Include config.h and system.h.
889         (IN_GCC): Define if not defined.
890
891 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
892
893         PR middle-end/40249
894         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
895         with -fno-inline.
896
897 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
898
899         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
900         applicable.
901         * config/m32r/m32r.h: Ditto.
902         * config/m32r/m32r.md: Ditto.
903         * config/m32r/predicates.md: Ditto.
904
905 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
906
907         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
908
909 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
910
911         * doc/plugins.texi
912         (Loading plugins): typo.
913         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
914         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
915         (Interacting with the GCC Garbage Collector): Added new section.
916         (Giving information about a plugin): Added new section for
917         PLUGIN_INFO.
918         * ggc.h (ggc_register_root_tab): Added declaration.
919         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
920         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
921         (register_callback): Improved comment in declaration.
922         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for
923         vectors.
924         (extra_root_vec) Added static variable for dynamic roots
925         registration.
926         (ggc_register_root_tab) Added new routine.
927         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
928         PLUGIN_GGC_MARKING event.
929         * ggc-zone.c: Include plugin.h.
930         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
931         * ggc-page.c: Include plugin.h.
932         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
933         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
934         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
935         (register_callback): check lack of callbacks for
936         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
937         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
938         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
939         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
940         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
941         dependency on plugin.h.
942         (plugin.o): Added dependency on ggc.h...
943
944 2009-05-26  Richard Guenther  <rguenther@suse.de>
945
946         PR middle-end/40248
947         Revert
948         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
949         with mismatched comparison modes.
950
951         * expr.c (expand_expr_real_1): Expand the operand of a
952         VIEW_CONVERT_EXPR in its natural mode.
953
954 2009-05-26  Ian Lance Taylor  <iant@google.com>
955
956         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
957         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
958         (ALL_COMPILERFLAGS): Define.
959         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
960         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
961         (collect2$(exeext), collect2.o): Likewise.
962         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
963         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
964         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
965         (libbackend.o, intl.o, cppdefault.o): Likewise.
966         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
967         (build/%.o): Use $(COMPILER_FOR_BUILD).
968         (build/gen%$(build_exeext)): Likewise.
969         (build/gcov-iov$(build_exeext)): LIkewise.
970         * config/t-darwin (darwin.o): Use $(COMPILER).
971         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
972         * config/t-sol2 (sol2-c.o): Likewise.
973         (sol2.o): Likewise.
974         * config/t-vxworks (vxworks.o): Likewise.
975         * config/x-darwin (host-darwin.o): Likewise.
976         * config/x-hpux (host-hpux.o): Likewise.
977         * config/x-linux (host-linux.o): Likewise.
978         * config/x-solaris (host-solaris.o): Likewise.
979         * config/alpha/x-alpha (driver-alpha.o): Likewise.
980         * config/arm/t-arm (arm-c.o): Likewise.
981         * config/arm/t-pe (pe.o): Likewise.
982         * config/arm/t-wince-pe (pe.o): Likewise.
983         * config/i386/t-cygming (winnt.o): Likewise.
984         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
985         * config/i386/t-cygwin (cygwin1.o): Likewise.
986         (cygwin2.o): Likewise.
987         * config/i386/t-i386 (i386-c.o): Likewise.
988         * config/i386/t-interix (winnt.o): Likewise.
989         * config/i386/t-netware (netware.o): Likewise.
990         * config/i386/t-nwld (nwld.o): Likewise.
991         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
992         * config/i386/x-i386 (driver-i386.o): Likewise.
993         * config/i386/x-cygwin (host-cygwin.o): Likewise.
994         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
995         * config/ia64/t-ia64 (ia64-c.o): Likewise.
996         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
997         * config/mips/x-native (driver-native.o): Likewise.
998         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
999         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
1000         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
1001         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
1002         * config/score/t-score-elf (score7.o): Likewise.
1003         (score3.o): Likewise.
1004         * config/sh/t-sh (sh-c.o): Likewise.
1005         * config/sh/t-symbian (sh-c.o): Likewise.
1006         (symbian.o): Likewise.
1007         * config/spu/t-spu-elf (spu-c.o): Likewise.
1008         * config/v850/t-v850 (v850-c.o): Likewise.
1009         * config/v850/t-v850e (v850-c.o): Likewise.
1010
1011 2009-05-26  Richard Guenther  <rguenther@suse.de>
1012
1013         PR tree-optimization/40122
1014         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
1015         VECTOR_CSTs if possible.
1016         (fold_gimple_assign): Likewise.
1017
1018 2009-05-26  Richard Guenther  <rguenther@suse.de>
1019
1020         PR middle-end/40252
1021         * fold-const.c (fold_binary): Use the correct types for building
1022         rotates.
1023
1024 2009-05-26  Richard Guenther  <rguenther@suse.de>
1025
1026         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1027         redundant calls to merge_alias_info.
1028         (bump_vector_ptr): Likewise.
1029         * tree-ssa-copy.c (merge_alias_info): Remove.
1030         (replace_exp_1): Remove call to merge_alias_info.
1031         (propagate_tree_value): Likewise.
1032         (fini_copy_prop): Propagate points-to info.
1033         * tree-flow.h (merge_alias_info): Remove.
1034
1035 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
1036
1037         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1038
1039 2009-05-25  Jan Hubicka  <jh@suse.cz>
1040
1041         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1042         * cgraph.h (struct inline_summary): New filed self_wize,
1043         size_inlining_benefit, self_time and time_inlining_benefit.
1044         (struct cgraph_global_info): Replace insns by time ans size fields.
1045         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1046         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1047         (ipcp_update_callgraph): Do not touch function bodies.
1048         * ipa-inline.c: Include except.h
1049         (MAX_TIME): New constant.
1050         (overall_insns): Remove.
1051         (leaf_node_p): New.
1052         (overall_size, max_benefit): New static variables.
1053         (cgraph_estimate_time_after_inlining): New function.
1054         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1055         (cgraph_clone_inlined_nodes): Update size.
1056         (cgraph_mark_inline_edge): Update size.
1057         (cgraph_estimate_growth): Use size info.
1058         (cgraph_check_inline_limits): Check size.
1059         (cgraph_default_inline_p): Likewise.
1060         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1061         (cgraph_decide_recursive_inlining): Check size.
1062         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
1063         times.
1064         (cgraph_decide_inlining): Likewise.
1065         (cgraph_decide_inlining_incrementally): Likewise; honor
1066         PARAM_EARLY_INLINING_INSNS.
1067         (likely_eliminated_by_inlining_p): New predicate.
1068         (estimate_function_body_sizes): New function.
1069         (compute_inline_parameters): Use it.
1070         * except.c (must_not_throw_labels): New function.
1071         * except.h (must_not_throw_labels): Declare.
1072         * tree-inline.c (init_inline_once): Kill inlining_weigths
1073         * tree-ssa-structalias.c: Avoid uninitialized warning.
1074         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1075         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1076         (PARAM_INLINE_CALL_COST): Remove.
1077         (PARAM_EARLY_INLINING_INSNS): New.
1078
1079 2009-05-25  Richard Guenther  <rguenther@suse.de>
1080
1081         PR tree-optimization/36327
1082         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1083         callback for reference translation or lookup at the point
1084         of may-defs.
1085         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1086         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1087         for union COMPONENT_REFs.
1088         (vn_reference_lookup_3): New callback.  Lookup from memset
1089         and CONSTRUCTOR assignment, translate through struct copies.
1090         (vn_reference_lookup_pieces): Make sure to not free the
1091         passed operands array.  Adjust walk_non_aliased_vuses call.
1092         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1093         make sure we do not leak memory.
1094
1095 2009-05-25  Richard Guenther  <rguenther@suse.de>
1096
1097         * tree-ssa-alias.h (dump_points_to_solution): Declare.
1098         * tree-inline.c (expand_call_inline): Reset the escaped and
1099         callused solutions.
1100         * tree-ssa-structalias.c (pass_build_ealias): New.
1101         * tree-pass.h (pass_build_ealias): Declare.
1102         * passes.c (init_optimization_passes): Add PTA during 
1103         early optimizations.
1104         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1105         and CALLUSED solutions.
1106         (dump_points_to_solution): New function, split out from ...
1107         (dump_points_to_info_for): ... here.
1108         * tree-parloops.c (parallelize_loops): Reset the escaped and
1109         callused solutions.
1110
1111 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1112
1113         PR bootstrap/40027
1114         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1115         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1116
1117 2009-05-25  Ira Rosen  <irar@il.ibm.com>
1118
1119         PR tree-optimization/40238
1120         * tree-vect-stmts.c (vect_init_vector): Insert initialization
1121         statements after basic block's labels.
1122         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
1123         to free the allocated memory.
1124
1125 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1126
1127         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1128         return address with a USE.
1129
1130 2009-05-24  Richard Guenther  <rguenther@suse.de>
1131
1132         PR middle-end/40233
1133         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1134         array type from the main variant of the inner type.
1135
1136 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1137
1138         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1139         definition to bool (from int) to un-break build.
1140         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1141
1142 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
1143
1144         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1145         discard_stmt_changes): Delete.
1146         * tree-ssa-operands.c (scb_stack): Delete.
1147         (init_ssa_operands): Do not initialize it.
1148         (fini_ssa_operands): Do not free it.
1149         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1150
1151         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
1152         update_stmt, remove the others.  Fix comments.
1153         * tree-dfa.c (optimize_stack_restore): Likewise.
1154         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1155         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1156         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1157         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1158         Likewise.
1159         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1160         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1161         (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan.
1162         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1163         (stmts_to_rescan): Change item type to gimple.
1164         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1165
1166 2009-05-24  Ira Rosen  <irar@il.ibm.com>
1167
1168         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1169         * tree-pass.h (pass_slp_vectorize): New pass.
1170         * params.h (SLP_MAX_INSNS_IN_BB): Define.
1171         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1172         * tree-vectorizer.c (timevar.h): Include.
1173         (user_vect_verbosity_level): Declare.
1174         (vect_location): Fix comment.
1175         (vect_set_verbosity_level): Update user_vect_verbosity_level
1176         instead of vect_verbosity_level.
1177         (vect_set_dump_settings): Add an argument. Ignore user defined
1178         verbosity if dump flags require higher level of verbosity. Print to
1179         stderr only for loop vectorization.
1180         (vectorize_loops): Update call to vect_set_dump_settings.
1181         (execute_vect_slp): New function.
1182         (gate_vect_slp): Likewise.
1183         (struct gimple_opt_pass pass_slp_vectorize): New.
1184         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1185         access its members.
1186         (vec_info_for_bb): New function.
1187         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1188         (VECTORIZATION_ENABLED): New macro.
1189         (SLP_ENABLED, SLP_DISABLED): Likewise.
1190         (vect_is_simple_use): Add bb_vec_info argument.
1191         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1192         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1193         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1194         vect_schedule_slp, vect_analyze_slp): Likewise.
1195         (vect_analyze_stmt): Add slp_tree argument.
1196         (find_bb_location): Declare.
1197         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1198         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1199         (vect_analyze_loop_operations, vect_analyze_loop,
1200         get_initial_def_for_induction, vect_create_epilog_for_reduction,
1201         vect_finalize_reduction, vectorizable_reduction,
1202         vectorizable_live_operation, vect_transform_loop): Likewise.
1203         * tree-data-ref.c (dr_analyze_innermost): Update comment,
1204         skip evolution analysis if analyzing a basic block.
1205         (dr_analyze_indices): Likewise.
1206         (initialize_data_dependence_relation): Skip the test whether the
1207         object is invariant for basic blocks.
1208         (compute_all_dependences): Skip dependence analysis for data
1209         references in basic blocks.
1210         (find_data_references_in_stmt): Don't fail in case of invariant
1211         access in basic block.
1212         (find_data_references_in_bb): New function.
1213         (find_data_references_in_loop): Move code to
1214         find_data_references_in_bb and add a call to it.
1215         (compute_data_dependences_for_bb): New function.
1216         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1217         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1218         that STEP is 0.
1219         (vect_analyze_data_ref_dependence): Check for interleaving in case of
1220         unknown dependence in basic block and fail in case of dependence in
1221         basic block.
1222         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1223         dependence instances from either loop or basic block vectorization
1224         info.
1225         (vect_compute_data_ref_alignment): Check if it is loop vectorization
1226         before calling nested_in_vect_loop_p.
1227         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1228         dependence instances from either loop or basic block vectorization
1229         info.
1230         (vect_verify_datarefs_alignment): Likewise.
1231         (vect_enhance_data_refs_alignment): Adjust function calls.
1232         (vect_analyze_data_refs_alignment): Likewise.
1233         (vect_analyze_group_access): Fix printing. Skip different checks if
1234         DR_STEP is 0. Keep strided stores either in loop or basic block
1235         vectorization data structure. Fix indentation.
1236         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1237         basic blocks.
1238         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1239         dependence instances from either loop or basic block vectorization
1240         info.
1241         (vect_analyze_data_refs): Update comment. Call
1242         compute_data_dependences_for_bb to analyze basic blocks.
1243         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1244         case of loop vectorization. In case of basic block vectorization use
1245         data-ref itself as a base.
1246         (vect_create_data_ref_ptr): In case of basic block vectorization:
1247         don't advance the pointer, add new statements before the current
1248         statement.  Adjust function calls.
1249         (vect_supportable_dr_alignment): Support only aligned accesses in
1250         basic block vectorization.
1251         * common.opt (ftree-slp-vectorize): New flag.
1252         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1253         (vect_pattern_recog_1): Likewise.
1254         * tree-vect-stmts.c (process_use): Likewise.
1255         (vect_init_vector): Add new statements in the beginning of the basic
1256         block in case of basic block SLP.
1257         (vect_get_vec_def_for_operand): Adjust function calls.
1258         (vect_finish_stmt_generation): Likewise.
1259         (vectorizable_call): Add assert that it is loop vectorization, adjust
1260         function calls.
1261         (vectorizable_conversion, vectorizable_assignment): Likewise.
1262         (vectorizable_operation): In case of basic block SLP, take
1263         vectorization factor from statement's type and skip the relevance
1264         check. Adjust function calls.
1265         (vectorizable_type_demotion): Add assert that it is loop
1266         vectorization, adjust function calls.
1267         (vectorizable_type_promotion): Likewise.
1268         (vectorizable_store): Check for outer loop only in case of loop
1269         vectorization. Adjust function calls. For basic blocks, skip the
1270         relevance check and don't advance pointers.
1271         (vectorizable_load): Likewise.
1272         (vectorizable_condition): Add assert that it is loop vectorization,
1273         adjust function calls.
1274         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1275         that it is not reduction, get vector type, call only supported
1276         functions, skip loop specific parts.
1277         (vect_transform_stmt): Check for outer loop only in case of loop
1278         vectorization.
1279         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1280         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1281         for external definition.
1282         * passes.c (pass_slp_vectorize): New pass.
1283         * tree-vect-slp.c (find_bb_location): New function.
1284         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1285         check for patterns only in loops.
1286         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1287         case of multiple types in basic block SLP.
1288         (vect_mark_slp_stmts_relevant): New function.
1289         (vect_supported_load_permutation_p): Fix comment.
1290         (vect_analyze_slp_instance): Add argument. In case of basic block
1291         SLP, take vectorization factor from statement's type, check that
1292         unrolling factor is 1. Adjust function call. Save SLP instance in
1293         either loop or basic block vectorization structure. Return FALSE,
1294         if SLP failed.
1295         (vect_analyze_slp): Add argument. Get strided stores groups from
1296         either loop or basic block vectorization structure. Return FALSE
1297         if basic block SLP failed.
1298         (new_bb_vec_info): New function.
1299         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1300         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1301         (vect_schedule_slp): Add argument. Get SLP instances from either
1302         loop or basic block vectorization structure. Set vectorization factor
1303         to be 1 for basic block SLP.
1304         (vect_slp_transform_bb): New function.
1305         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1306
1307 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1308
1309         * final.c (shorten_branches): Do not align labels for jump tables.
1310         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1311
1312 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1313
1314         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1315         Remove outdated reference to flow.c and fix nits.
1316         * doc/gccint.texi: Tweak RTL description.
1317         * doc/rtl.texi: Likewise.
1318
1319 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1320
1321         * config/avr/avr.c: Change my email address.
1322         * config/avr/avr.h: Likewise.
1323         * config/avr/avr.md: Likewise.
1324         * config/avr/avr-protos.h: Likewise.
1325         * config/avr/libgcc.S: Likewise.
1326
1327 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1328
1329         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1330         (spu_split_load, spu_split_store): Change return type to int.
1331         (spu_split_convert): Declare.
1332         * config/spu/predicates.md (spu_mem_operand): Remove.
1333         (spu_mov_operand): Update.
1334         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1335         * config/spu/spu.c (regno_aligned_for_load): Remove.
1336         (reg_aligned_for_addr, spu_expand_load): Define.
1337         (spu_expand_extv): Reimplement and handle MEM.
1338         (spu_expand_insv): Handle MEM.
1339         (spu_sched_reorder): Handle insn's with length 0.
1340         (spu_legitimate_address_p): Reimplement.
1341         (store_with_one_insn_p): Return TRUE for any mode with size
1342         larger than 16 bytes.
1343         (address_needs_split): Define.
1344         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1345         operands.
1346         (spu_convert_move): Define.
1347         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1348         (spu_split_store): Change all MEM's to TImode.
1349         (spu_init_expanders): Preallocate registers that correspond to
1350         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1351         mark_reg_pointer.
1352         (spu_split_convert): Define.
1353         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1354         (_move<mode>, _movdi, _movti): Update predicate and condition.
1355         (load, store): Change to define_split.
1356         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1357         extend<mode>ti2.
1358         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1359         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1360         define_insn_and_split of lshr<mode>3.
1361         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1362         (<v>ashr<mode>3_imm): Define.
1363         (extv, extzv, insv): Allow MEM operands.
1364         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1365         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1366         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1367         (_spu_convert2): Change to define_insn_and_split and remove the
1368         corresponding define_peephole2.
1369         (stack_protect_set, stack_protect_test, stack_protect_test_si):
1370         Change predicates to memory_operand.
1371
1372 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1373
1374         * config/arm/thumb2.md: Add 16-bit multiply instructions.
1375
1376 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1377
1378         PR tree-optimization/40219
1379         * tree.c (iterative_hash_expr): Make sure the builtin function is
1380         a normal builtin function and not a front end or back end builtin
1381         before indexing into the built_in_decls array.
1382
1383 2009-05-22  Richard Guenther  <rguenther@suse.de>
1384
1385         PR middle-end/38964
1386         * alias.c (write_dependence_p): Do not use TBAA for answering
1387         anti-dependence or output-dependence.
1388         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1389         (emit_pointer_definition): Remove.
1390         (emit_alias_warning): Likewise.
1391         (find_what_var_points_to): Remove TBAA pruning code.
1392         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
1393         violations.
1394         (compute_points_to_sets): Remove code computing the set of
1395         dereferenced pointers.
1396         * tree-data-ref.c (dr_may_alias_p): Properly use the split
1397         oracle for querying anti and output dependencies.
1398         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1399         if TBAA may be applied.
1400         (refs_anti_dependent_p): New function.
1401         (refs_output_dependent_p): Likewise.
1402         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1403         (refs_output_dependent_p): Likewise.
1404         * doc/tree-ssa.texi (Memory model): New section.
1405         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1406         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1407         * cfgexpand.c (expand_gimple_basic_block): Do not handle
1408         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1409         * expr.c (expand_expr_real_1): Likewise.
1410         * gimple-low.c (lower_stmt): Likewise.
1411         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1412         (dump_gimple_cdt): Remove.
1413         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1414         (gimple_size): Likewise.
1415         (walk_gimple_op): Likewise.
1416         (is_gimple_stmt): Likewise.
1417         (walk_stmt_load_store_addr_ops): Likewise.
1418         (gimple_build_cdt): Remove.
1419         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1420         * gimple.h (gimple_cdt_new_type): Remove.
1421         (gimple_cdt_new_type_ptr): Likewise.
1422         (gimple_cdt_set_new_type): Likewise.
1423         (gimple_cdt_location): Likewise.
1424         (gimple_cdt_location_ptr): Likewise.
1425         (gimple_cdt_set_location): Likewise.
1426         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1427         * tree-cfg.c (remove_useless_stmts_1): Do not handle
1428         GIMPLE_CHANGE_DYNAMIC_TYPE.
1429         (verify_types_in_gimple_stmt): Likewise.
1430         * tree-inline.c (estimate_num_insns): Likewise.
1431         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1432         (copy_decl_to_var): Likewise.
1433         (copy_result_decl_to_var): Likewise.
1434         * tree-pretty-print.c (dump_generic_node): Do not handle
1435         CHANGE_DYNAMIC_TYPE_EXPR.
1436         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1437         * tree-ssa-operands.c (get_expr_operands): Likewise.
1438         * tree-ssa-structalias.c (struct variable_info): Remove
1439         no_tbaa_pruning member.
1440         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1441         (unify_nodes): Do not copy it.
1442         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1443         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1444         (set_uids_in_ptset): Do not check it.
1445         (find_what_var_points_to): Likewise.
1446         (compute_tbaa_pruning): Remove.
1447         (compute_points_to_sets): Do not call it.
1448         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1449         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1450         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1451         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1452         (DECL_NO_TBAA_P): Likewise.
1453         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1454         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1455         (expand_omp_atomic_pipeline): Do not set it.
1456         * print-tree.c (print_node): Do not dump it.
1457         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1458         redundant check.
1459
1460 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1461
1462         PR target/39856
1463         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1464         for clobber.
1465
1466 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1467
1468         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1469         non-external.
1470
1471 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1472
1473         * Makefile.in (bversion.h, s-bversion): New targets.
1474         (TOPLEV_H): Add bversion.h.
1475         * toplev.h: Include "bversion.h".
1476         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1477         the __format__ attribute only if compiling with the same version
1478         of GCC as the sources (the "build version").
1479
1480 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1481
1482         * c-format.c (handle_format_attribute): Fix comment typo.
1483
1484 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
1485
1486         PR target/37846
1487         * config/ia64/ia64.opt (mfused-madd): New.
1488         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1489         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1490         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1491         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1492         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1493         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1494         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1495         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
1496         instruction if !TARGET_FUSED_MADD.
1497         (fpma, fpms): Remove colon from name.
1498
1499 2009-05-22  Richard Guenther  <rguenther@suse.de>
1500
1501         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1502         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
1503         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1504         TARGET_MEM_REF.
1505         (create_expression_by_pieces): Only convert if necessary.
1506         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1507         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1508
1509 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
1510
1511         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1512         regular pattern from a template and rename it ...
1513         (*extzv_truncsi_exts): ... to this.
1514
1515 2009-05-21  Richard Guenther  <rguenther@suse.de>
1516
1517         * cgraph.h (struct cgraph_node): Remove inline_decl member.
1518         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1519         (cgraph_default_inline_p): Likewise.
1520         (cgraph_decide_inlining_incrementally): Likewise.
1521
1522 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1523             Uros Bizjak  <ubizjak@gmail.com>
1524
1525         * config/i386/cpuid.h (bit_MOVBE): New.
1526
1527         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1528
1529         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1530         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1531         (ix86_handle_option): Handle OPT_mmovbe.
1532         (ix86_target_string): Add -mmovbe.
1533         (pta_flags): Add PTA_MOVBE.
1534         (processor_alias_table): Add PTA_MOVBE to "atom".
1535         (override_options): Handle PTA_MOVBE.
1536
1537         * config/i386/i386.h (TARGET_MOVBE): New.
1538
1539         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1540         (*bswapsi_movbe): New.
1541         (*bswapdi_movbe): Likewise.
1542         (bswapdi2): Renamed to ...
1543         (*bswapdi_1): This.
1544         (bswapdi2): New expander.
1545
1546         * config/i386/i386.opt (mmovbe): New.
1547
1548         * doc/invoke.texi: Document -mmovbe.
1549
1550 2009-05-21  Taras Glek  <tglek@mozilla.com>
1551
1552         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1553         * gcc-plugin.h (plugin_init): Updated signature.
1554         * gcc-plugin.h (plugin_name_args): Moved to this header.
1555         * doc/plugins.texi (plugin_init): Updated documention to reflect
1556         API change.
1557         * doc/plugins.texi (plugin_name_args): Added to documention.
1558
1559 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
1560
1561         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1562         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1563
1564 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
1565
1566         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1567         JUMP_TABLE_DATA_P predicates where applicable.
1568         * config/i386/predicates.md: Ditto.
1569         * config/i386/sse.md: Ditto.
1570
1571 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
1572
1573         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1574         operand2 -128 override length_immediate attribute to 1.
1575         * config/i386/predicates.md (constm128_operand): New predicate.
1576
1577         * config/i386/i386.c (memory_address_length): Handle %r12
1578         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
1579         also check REGNO.
1580         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1581         mode look through optional ZERO_EXTEND and SUBREG.
1582         * config/i386/i386.md (R12_REG): New define_constant.
1583         (prefix_data16): For sse unit set also for MODE_TI insns.
1584         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
1585         insns set if operand 1 is ext_QIreg_operand.
1586         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
1587         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1588         immediate.
1589         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1590         mode from MODE_DI to MODE_SI.
1591         (movdi_1_rex64): Override modrm and length_immediate attributes
1592         only for movabs (TYPE_IMOV, alternative 2).
1593         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1594         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1595         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1596         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1597         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1598         prefix_rex attribute if DImode.
1599         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1600         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1601         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1602         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1603         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1604         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1605         Likewise.  For TYPE_IMOV clear length_immediate attribute.
1606         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1607         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1608         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1609         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1610         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1611         or one operand TYPE_ISHIFT.
1612         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1613         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1614         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1615         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1616         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1617         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1618         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1619         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1620         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1621         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1622         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1623         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1624         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1625         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1626         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1627         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1628         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1629         set mode attribute, don't override length attribute.
1630         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1631         to 1.
1632         (return_internal_long): Set length attribute to 2 instead of 1.
1633         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1634         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1635         prefix_rex attribute.
1636         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1637         New predicates.
1638         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1639
1640 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1641
1642         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1643
1644 2009-05-20  Ian Lance Taylor  <iant@google.com>
1645
1646         * tree.c (build_tree_list_vec_stat): New function.
1647         (ctor_to_vec): New function.
1648         (build_nt_call_vec): New function.
1649         (build_call_array): Change args to be a const pointer.
1650         (build_call_vec): New function.
1651         * tree.h (build_nt_call_vec): Declare.
1652         (build_tree_list_vec_stat): Declare.
1653         (build_tree_list_vec): Define.
1654         (build_call_array): Update declaration.
1655         (build_call_vec): Declare.
1656         (ctor_to_vec): Declare.
1657         * c-common.c (tree_vector_cache): New static variable.
1658         (make_tree_vector): New function.
1659         (release_tree_vector): New function.
1660         (make_tree_vector_single): New function.
1661         (make_tree_vector_copy): New function.
1662         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1663         (make_tree_vector_single, make_tree_vector_copy): Declare.
1664         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1665         (c_parser_expr_list): Don't manage cache here, instead call
1666         make_tree_vector.
1667         (c_parser_release_expr_list): Remove static function.
1668         (c_parser_vec_to_tree_list): Remove static function.
1669         (c_parser_attributes): Call build_tree_list_vec instead of
1670         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
1671         c_parser_release_expr_list.
1672         (c_parser_postfix_expression_after_primary): Likewise.
1673         (c_parser_objc_keywordexpr): Likewise.
1674
1675 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
1676
1677         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1678         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1679         TARGET_CONVERT_TO_TYPE.
1680         * hooks.c (hook_tree_const_tree_null): Define.
1681         * hooks.h (hook_tree_const_tree_null): Declare.
1682         * target.h (struct gcc_target):  Add invalid_parameter_type,
1683         invalid_return_type, promoted_type, and convert_to_type fields.
1684         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1685         (TARGET_INVALID_RETURN_TYPE): Define.
1686         (TARGET_PROMOTED_TYPE): Define.
1687         (TARGET_CONVERT_TO_TYPE): Define.
1688         (TARGET_INITIALIZER): Update for new fields.
1689         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1690         (grokparms): Check targetm.invalid_parameter_type.
1691         * c-typeck.c (default_conversion): Check targetm.promoted_type.
1692         * c-convert.c (convert): Check targetm.convert_to_type.
1693
1694 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
1695
1696         * config/mips/mips.md (*extenddi_truncate<mode>,
1697         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
1698         defintions.
1699         (*extendhi_truncateqi): New define_insn_and_sptit.
1700
1701 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
1702
1703         PR middle-end/40204
1704         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1705         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1706
1707 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
1708
1709         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1710         the operand of VIEW_CONVERT_EXPR.
1711
1712 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
1713
1714         * config/i386/driver-i386.c (host_detect_local_cpu): Check
1715         extended family and model for Intel processors.  Support Intel
1716         Atom.
1717
1718 2009-05-20  Olivier Hainque  <hainque@adacore.com>
1719
1720         * gstab.h (stab_code_type): Define, to be used instead of the
1721         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
1722         notice.
1723         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1724         occurrences by stab_code_type.
1725         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1726
1727 2009-05-20  Martin Jambor  <mjambor@suse.cz>
1728
1729         * tree-flow.h (insert_edge_copies_seq): Undeclare.
1730         (sra_insert_before): Likewise.
1731         (sra_insert_after): Likewise.
1732         (sra_init_cache): Likewise.
1733         (sra_type_can_be_decomposed_p): Likewise.
1734         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1735         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1736         (sra_insert_before): Likewise.
1737         (sra_insert_after): Likewise.
1738         (sra_init_cache): Likewise.
1739         (insert_edge_copies_seq): Made static and moved upwards.
1740
1741         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1742         case.
1743
1744         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1745
1746         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1747         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1748         simple copies.
1749
1750 2009-05-20  Richard Guenther  <rguenther@suse.de>
1751
1752         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1753         with mismatched comparison modes.
1754
1755 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1756
1757         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1758         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1759         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1760         with shifts for Thumb2.
1761         (orsi_notsi): New for orn.
1762         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1763         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1764         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1765         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1766         Don't invert remainder for IOR.
1767         
1768 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
1769
1770         PR tree-optimization/40087
1771         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1772         number_of_iterations_ne): Rename never_infinite argument.
1773         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1774         number_of_iterations_le): Handle pointer-type ivs when
1775         exit_must_be_taken is false.
1776         (number_of_iterations_cond):  Do not always assume that
1777         exit_must_be_taken if the control variable is a pointer.
1778
1779 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1780
1781         * c-typeck.c (build_binary_op): Allow % on integal vectors.
1782         * doc/extend.texi (Vector Extension): Document that % is allowed too.
1783
1784 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1785
1786         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1787         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1788
1789 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1790
1791         PR c/40172
1792         * c.opt (Wlogical-op): Disabled by default.
1793         * c-opt (c_common_post_options): Do not enable Wlogical-op with
1794         Wextra.
1795         * doc/invoke.texi (Wlogical-op): Likewise.
1796         
1797 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
1798
1799         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1800         into CASE_CONVERT.
1801         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1802         Propagate the type of the first operand.
1803         <ASSERT_EXPR>: Simplify.
1804         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1805         Rewrite using the RHS code as discriminant.
1806         <NOP_EXPR>: Turn into CASE_CONVERT.
1807         <PLUS_EXPR>: Propagate the type of the first operand.
1808
1809 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
1810
1811         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1812         (ia64_dconst_0_375): New.
1813         * config/ia64/ia64.c (ia64_override_options): Remove
1814         -minline-sqrt-min-latency warning.
1815         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1816         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1817         * config/ia64/ia64.md (*sqrt_approx): Remove.
1818         (sqrtsf2): Remove #if 0.
1819         (sqrtsf2_internal_thr): Rewrite and move to div.md.
1820         (sqrtdf): Remove assert.
1821         (sqrtdf2_internal_thr): Rewrite and move to div.md.
1822         (sqrtxf2): Remove #if 0.
1823         (sqrtxf2_internal_thr): Rewrite and move to div.md.
1824         * div.md (sqrt_approx_rf): New.
1825         (sqrtsf2_internal_thr): New implementation.
1826         (sqrtsf2_internal_lat): New.
1827         (sqrtdf2_internal_thr: New implementation.
1828         (sqrtxf2_internal): New implementation.
1829
1830 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1831             Hans-Peter Nilsson  <hp@axis.com>
1832
1833         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
1834         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
1835         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
1836         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
1837         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
1838         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
1839         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
1840         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
1841         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
1842         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
1843         * c-common.c: ...from here.
1844
1845 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1846
1847         * c-common.c (warn_logical_operator): Remove unnecessary
1848         conditionals.
1849
1850 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1851
1852         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
1853
1854 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1855
1856         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
1857         assignments with memcpy calls.
1858         (add_fdes): Likewise.
1859         (binary_search_unencoded_fdes): Likewise.
1860         (linear_search_fdes): Eliminate type puns.
1861         
1862 2009-05-19  Richard Guenther  <rguenther@suse.de>
1863
1864         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
1865         not falsely claim to have propagated into all uses.
1866
1867 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1868
1869         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
1870         version to v3.0.
1871
1872 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1873
1874         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
1875         * config/sh/sh.c (sh_legitimate_address_p): Make static.
1876         (TARGET_LEGITIMATE_ADDRESS_P): New.
1877         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1878         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1879         
1880 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
1881
1882         PR debug/40109
1883         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
1884         child of the containing namespace's DIE.
1885
1886 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
1887
1888         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
1889         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
1890         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
1891         extend patterns.
1892
1893 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
1894
1895         PR target/39942
1896         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
1897         gen_align with gen_pad.
1898         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
1899         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
1900
1901         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
1902         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
1903
1904         * config/i386/i386.md (align): Renamed to ...
1905         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
1906         ASM_OUTPUT_MAX_SKIP_PAD.
1907
1908 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
1909
1910         * config.gcc: Fix variable syntax.
1911
1912         PR target/39531
1913         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
1914         before calling exact_log2.
1915         (output_iorsi3): Likewise.
1916         (output_xorsi3): Likewise.
1917
1918 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1919
1920         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
1921         for the none zero constant operand except for EQ and NE
1922         comprisons even when the first operand is R0.
1923
1924 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
1925
1926         * config/s390/2064.md: Remove trailing whitespaces.
1927         * config/s390/2084.md: Likewise.
1928         * config/s390/constraints.md: Likewise.
1929         * config/s390/fixdfdi.h: Likewise.
1930         * config/s390/libgcc-glibc.ver: Likewise.
1931         * config/s390/s390-modes.def: Likewise.
1932         * config/s390/s390-protos.h: Likewise.
1933         * config/s390/s390.c: Likewise.
1934         * config/s390/s390.h: Likewise.
1935         * config/s390/s390.md: Likewise.
1936         * config/s390/tpf-unwind.h: Likewise.
1937
1938 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1939
1940         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
1941
1942 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1943
1944         M68K TLS support.
1945         * configure.ac (m68k-*-*): Check if binutils support TLS.
1946         * configure: Regenerate.
1947         * config/m68k/predicates.md (symbolic_operand): Extend comment.
1948         * config/m68k/constraints.md (Cu): New constraint.
1949         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
1950         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
1951         (movsi): Handle TLS symbols.
1952         (addsi3_5200): Handle XTLS symbols, indent.
1953         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
1954         (m68k_tls_reference_p): Declare.
1955         (m68k_legitimize_address): Declare.
1956         (m68k_unwrap_symbol): Declare.
1957         * config/m68k/m68k.opt (mxtls): New option.
1958         * config/m68k/m68k.c (ggc.h): Include.
1959         (m68k_output_dwarf_dtprel): Implement hook.
1960         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1961         (m68k_expand_prologue): Load GOT pointer when function needs it.
1962         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
1963         (m68k_legitimate_constant_address_p): Same.
1964         (m68k_decompose_address): Handle TLS references.
1965         (m68k_get_gp): New static function.
1966         (enum m68k_reloc): New contants.
1967         (TLS_RELOC_P): New macro.
1968         (m68k_wrap_symbol): New static function.
1969         (m68k_unwrap_symbol): New function.
1970         (m68k_final_prescan_insn_1): New static function.
1971         (m68k_final_prescan_insn): New function.
1972         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
1973         functions.
1974         (legitimize_pic_address): Handle TLS references..
1975         (m68k_tls_get_addr, m68k_get_tls_get_addr)
1976         (m68k_libcall_value_in_a0_p)
1977         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
1978         (m68k_call_m68k_read_tp): Helper variables and functions for ...
1979         (m68k_legitimize_tls_address): Handle TLS references.
1980         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
1981         New functions.
1982         (m68k_legitimize_address): Handle TLS symbols.
1983         (m68k_get_reloc_decoration): New static function.
1984         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
1985         UNSPEC_RELOC32.
1986         (m68k_output_dwarf_dtprel): Implement hook.
1987         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
1988         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
1989         m68k_call_* routines.
1990         (sched_attr_op_type): Handle TLS symbols.
1991         (gt-m68k.h): Include.
1992         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
1993         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
1994
1995 2009-05-18  Martin Jambor  <mjambor@suse.cz>
1996
1997         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
1998         (visit_store_addr_for_mod_analysis): New function.
1999         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
2000         (determine_cst_member_ptr): Use gimple_assign_single_p.
2001         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
2002         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
2003         operands.  Don't check number of operands of a NOP_EXPR.
2004
2005 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
2006
2007         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
2008
2009 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2010
2011         PR c/40172
2012         * c-common.c (warn_logical_operator): Don't warn if one of
2013         expression isn't always true or false.
2014
2015 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
2016
2017         * config/i386/biarch32.h: New file.
2018         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
2019
2020 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
2021
2022         * config/mips/mips.md (*zero_extend<mode>_trunchi,
2023         *zero_extend<mode>_truncqi): Merge these into ...
2024         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2025         Name the pattern following this as *zero_extendhi_truncqi.
2026
2027 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
2028
2029         PR middle-end/39301
2030         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2031         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2032         (output_info): Make field HOST_WIDEST_INT.
2033         (print_statistics): Use HOST_WIDEST_INT_PRINT.
2034         (dump_bitmat_statistics): Same.
2035
2036 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2037
2038         * config.gcc (use_gcc_stdint):  Set to wrap.
2039         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2040         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2041         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2042         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2043         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2044         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2045         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2046         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2047
2048 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
2049
2050         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2051         tune_64.
2052         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2053         Move definitions earlier.
2054         (OPT_ARCH64, OPT_ARCH32): Define.
2055         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2056         and tune_64.
2057
2058 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2059
2060         PR target/40153
2061         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2062         implies.
2063
2064 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2065
2066         * arm.md (movdi2): Copy non-reg values to DImode registers.
2067
2068 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
2069
2070         PR target/39942
2071         * final.c (label_to_max_skip): New function.
2072         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2073         CODE_LABEL_NUMBER <= max_labelno.
2074         * output.h (label_to_max_skip): New prototype.
2075         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2076         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
2077         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
2078         Handle CODE_LABELs with >= 16 byte alignment or with
2079         max_skip == (1 << align) - 1.
2080         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2081         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2082
2083         PR target/39942
2084         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2085         .p2align 3 if MAX_SKIP is smaller than 7.
2086         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2087
2088 2009-05-15  Ian Lance Taylor  <iant@google.com>
2089
2090         * alias.c (struct alias_set_entry_d): Rename from struct
2091         alias_set_entry.  Change all uses.
2092         * except.c (struct call_site_record_d): Rename from struct
2093         call_site_record.  Change all uses.
2094         * except.h (struct eh_region_d): Rename from struct eh_region.
2095         Change all uses.
2096         * gcse.c (struct hash_table_d): Rename from struct hash_table.
2097         Change all uses.
2098         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2099         ivtype_map_elt.  Change all uses.
2100         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2101         Change all uses.
2102         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
2103         * graphite.h (struct name_tree_d): Rename from struct name_tree.
2104         Change all uses.
2105         (struct sese_d): Rename from struct sese.  Change all uses.
2106         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
2107         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
2108         * optabs.h (struct optab_d): Rename from struct optab.  Change all
2109         uses.
2110         (struct convert_optab_d): Rename from struct convert_optab.
2111         Change all uses.
2112         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2113         ipa_opt_pass.  Change all uses.
2114         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
2115         all uses.
2116
2117         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2118         defined as a typedef.
2119         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2120         defined as a tag.
2121
2122 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2123
2124         PR 16302
2125         * fold-const.c (make_range,build_range_check,merge_ranges): Move
2126         declaration to...
2127         (merge_ranges): Returns bool. 
2128         * tree.h (make_range): .. to here.
2129         (build_range_check): Likewise.
2130         (merge_ranges): Likewise. Renamed from merge_ranges.
2131         * c-typeck.c (parser_build_binary_op): Update calls to
2132         warn_logical_operator.
2133         * c-common.c (warn_logical_operator): Add new warning.
2134         * c-common.h (warn_logical_operator): Update declaration.
2135         
2136 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2137
2138         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2139         
2140 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2141
2142         * doc/install.texi: Document MPC requirements, flags etc.
2143
2144         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2145         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2146         Evaluate constant arguments.
2147         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2148         (fold_builtin_1): Likewise, also evaluate constant arguments.
2149         Remove superfluous break.
2150         (do_mpc_ckconv): New.
2151         * real.h: Include mpc.h.
2152         * toplev.c (print_version): Output MPC version info if available.
2153
2154 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2155
2156         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2157
2158 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
2159
2160         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2161         only once.
2162
2163 2009-05-15  Jan Hubicka  <jh@suse.cz>
2164
2165         * doc/invoke.texi (max-early-inliner-iterations): New flag.
2166         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2167         (try_inline): Fix return value.
2168         (cgraph_decide_inlining_incrementally): Honor new value.
2169         (cgraph_early_inlining): Handle indirect inlining.
2170         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2171
2172 2009-05-15  Jan Hubicka  <jh@suse.cz>
2173
2174         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2175         * cgraphunit.c (cgraph_finalize_function): Set it.
2176         (cgraph_expand_function): Use it.
2177
2178 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2179
2180         * real.c (encode_ieee_half): Define.
2181         (decode_ieee_half): Define.
2182         (ieee_half_format): Define.
2183         (arm_half_format): Define.
2184         * real.h (ieee_half_format): Declare.
2185         (arm_half_format): Declare.
2186
2187 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2188
2189         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
2190         swapped, and reversed optabs exist before trying to use them.
2191
2192 2009-05-15  Paul Brook  <paul@codesourcery.com>
2193             Sandra Loosemore  <sandra@codesourcery.com>
2194
2195         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2196         loads.  Allow PRE_DEC.
2197         (output_move_neon): Handle PRE_DEC.
2198         (arm_print_operand): Add 'A' for neon structure loads.
2199         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2200         * config/arm/neon.md (neon_mov): Update comment.
2201         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2202         calls.
2203         (Um): New constraint.
2204
2205 2009-05-15  Jan Hubicka  <jh@suse.cz>
2206
2207         Revert the following patch until testsuite fallout is fixed:
2208         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2209         * cgraph.h (struct inline_summary): New filed self_wize,
2210         size_inlining_benefit, self_time and time_inlining_benefit.
2211         (struct cgraph_global_info): Replace insns by time ans size fields.
2212         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2213         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2214         (ipcp_update_callgraph): Do not touch function bodies.
2215         * ipa-inline.c: Include except.h
2216         (MAX_TIME): New constant.
2217         (overall_insns): Remove
2218         (overall_size, max_benefit): New static variables.
2219         (cgraph_estimate_time_after_inlining): New function.
2220         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2221         (cgraph_clone_inlined_nodes): Update size.
2222         (cgraph_mark_inline_edge): Update size.
2223         (cgraph_estimate_growth): Use size info.
2224         (cgraph_check_inline_limits): Check size.
2225         (cgraph_default_inline_p): Likewise.
2226         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2227         (cgraph_decide_recursive_inlining): Check size.
2228         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2229         times.
2230         (cgraph_decide_inlining): Likewise.
2231         (cgraph_decide_inlining_incrementally): Likewise; honor
2232         PARAM_EARLY_INLINING_INSNS.
2233         (likely_eliminated_by_inlining_p): New predicate.
2234         (estimate_function_body_sizes): New function.
2235         (compute_inline_parameters): Use it.
2236         * except.c (must_not_throw_labels): New function.
2237         * except.h (must_not_throw_labels): Declare.
2238         * tree-inline.c (init_inline_once): Kill inlining_weigths
2239         * tree-ssa-structalias.c: Avoid uninitialized warning.
2240         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2241         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2242         (PARAM_INLINE_CALL_COST): Remove.
2243         (PARAM_EARLY_INLINING_INSNS): New.
2244
2245 2009-05-15  Richard Guenther  <rguenther@suse.de>
2246
2247         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2248         not TODO_update_ssa.
2249
2250 2009-05-15  Richard Guenther  <rguenther@suse.de>
2251
2252         PR tree-optimization/39999
2253         * gimple.h (gimple_expr_type): Use the expression type looking
2254         through useless conversions.
2255         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2256         (vn_nary_op_insert_stmt): Likewise.
2257         (simplify_binary_expression): Likewise.
2258
2259 2009-05-15  Richard Guenther  <rguenther@suse.de>
2260
2261         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2262         New options, enabled by default.
2263         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2264         Document.
2265         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2266         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2267         * tree-ssa-structalias.c (gate_tree_pta): New function.
2268         (pass_build_alias): Use it.
2269
2270 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2271
2272         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2273         recurse on an invariant address if a conversion from a pointer
2274         type to a wider integer type is involved.
2275
2276 2009-05-15  Jan Hubicka  <jh@suse.cz>
2277
2278         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2279         * cgraph.h (struct inline_summary): New filed self_wize,
2280         size_inlining_benefit, self_time and time_inlining_benefit.
2281         (struct cgraph_global_info): Replace insns by time ans size fields.
2282         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2283         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2284         (ipcp_update_callgraph): Do not touch function bodies.
2285         * ipa-inline.c: Include except.h
2286         (MAX_TIME): New constant.
2287         (overall_insns): Remove
2288         (overall_size, max_benefit): New static variables.
2289         (cgraph_estimate_time_after_inlining): New function.
2290         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2291         (cgraph_clone_inlined_nodes): Update size.
2292         (cgraph_mark_inline_edge): Update size.
2293         (cgraph_estimate_growth): Use size info.
2294         (cgraph_check_inline_limits): Check size.
2295         (cgraph_default_inline_p): Likewise.
2296         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2297         (cgraph_decide_recursive_inlining): Check size.
2298         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2299         times.
2300         (cgraph_decide_inlining): Likewise.
2301         (cgraph_decide_inlining_incrementally): Likewise; honor
2302         PARAM_EARLY_INLINING_INSNS.
2303         (likely_eliminated_by_inlining_p): New predicate.
2304         (estimate_function_body_sizes): New function.
2305         (compute_inline_parameters): Use it.
2306         * except.c (must_not_throw_labels): New function.
2307         * except.h (must_not_throw_labels): Declare.
2308         * tree-inline.c (init_inline_once): Kill inlining_weigths
2309         * tree-ssa-structalias.c: Avoid uninitialized warning.
2310         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2311         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2312         (PARAM_INLINE_CALL_COST): Remove.
2313         (PARAM_EARLY_INLINING_INSNS): New.
2314         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2315         (inline-call-cost): Remove.
2316         (early-inlining-insns): New.
2317
2318 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2319
2320         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2321         for bounds.
2322         (print_int_cst_bounds_in_octal_p): Likewise.
2323         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2324         with subtypes.
2325         * dwarf2out.c (base_type_die): Likewise.
2326         (is_subrange_type): Delete.
2327         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2328         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2329         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
2330         the destination type is boolean.
2331         (build_range_check): Do not special-case subtypes.
2332         (fold_sign_changed_comparison): Likewise.
2333         (fold_unary): Likewise.
2334         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2335         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2336         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2337         * tree.c (subrange_type_for_debug_p): New predicate based on the former
2338         is_subrange_type.
2339         * tree.h (subrange_type_for_debug_p): Declare.
2340         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2341         (convert_affine_scev): Remove call to above function.
2342         (chrec_convert_aggressive): Likewise.
2343         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2344         false for conversions involving subtypes.
2345         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2346         (vrp_val_min): Likewise.
2347         (needs_overflow_infinity): Likewise.
2348         (extract_range_from_unary_expr): Likewise.
2349
2350 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2351
2352         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2353         * config/frv/frv.c: Likewise.
2354         * config/s390/s390.c: Likewise.
2355         * config/sparc/sparc.h: Likewise.
2356         * config/i386/i386.h: Likewise.
2357         * config/i386/i386.c: Likewise.
2358         * config/crx/crx.c: Likewise.
2359         * config/m68hc11/m68hc11.h: Likewise.
2360         * config/iq2000/iq2000.c: Likewise.
2361         * config/mn10300/mn10300.h: Likewise.
2362         * config/mn10300/mn10300.c: Likewise.
2363         * config/m68k/m68k.c: Likewise.
2364         * config/rs6000/rs6000.c: Likewise.
2365         * config/rs6000/xcoff.h: Likewise.
2366         * config/rs6000/linux64.h: Likewise.
2367         * config/rs6000/sysv4.h: Likewise.
2368         * config/score/score3.c: Likewise.
2369         * config/score/score7.c: Likewise.
2370         * config/score/score.c: Likewise.
2371         * config/arm/arm.md: Likewise.
2372         * config/mips/mips.c: Likewise.
2373         * config/mips/mips.md: Likewise.
2374         * config/bfin/bfin.h: Likewise.
2375         * config/pa/pa.c: Likewise.
2376         * config/pa/constraints.md: Likewise.
2377
2378         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2379         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2380         * config/pdp11/pdp11.h: Use memory_address_p instead.
2381
2382 2009-05-14  Ian Lance Taylor  <iant@google.com>
2383
2384         * passes.c (finish_optimization_passes): Change i to int.
2385         * plugin.c (plugins_active_p): Change event to int.
2386         (dump_active_plugins): Likewise.
2387         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2388         Add cast.
2389         * tree.c (tree_range_check_failed): Change c to unsigned int.
2390         (omp_clause_range_check_failed): Likewise.
2391         (build_common_builtin_nodes): Change mode to int.  Add cast.
2392         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2393         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2394
2395         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2396         ++ or -- with a variable of enum type.
2397
2398 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2399
2400         PR driver/40144
2401         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2402
2403 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2404
2405         * store-motion.c: Do not include params.h
2406         * Makefile.in: Fix dependencies for various files.
2407
2408 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2409
2410         * auto-inc-dec.c: Fix pass description, remove apparent
2411         accidental duplication.
2412
2413 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2414
2415         PR middle-end/40147
2416         * ipa-utils.h (memory_identifier_string): Moved to ...
2417         * tree.h (memory_identifier_string): Here.  Add GTY(()).
2418
2419 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2420
2421         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2422         in the former documentation of...
2423         (GO_IF_LEGITIMATE_ADDRESS): ... this.
2424         * ira-conflicts.c (get_dup_num): Use address_operand.
2425         * targhooks.c (default_legitimate_address_p): New.
2426         * targhooks.h (default_legitimate_address_p): New.
2427         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2428         Call hook.
2429         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2430         * target.h (struct target): Add legitimate_address_p.
2431         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2432         (TARGET_INITIALIZER): Include it.
2433
2434         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2435         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2436         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2437         (TARGET_LEGITIMATE_ADDRESS_P): New.
2438
2439         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2440         (REG_OK_STRICT_P): Delete.
2441         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2442         (frv_legitimate_address_p_1): ... this.
2443         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2444         (frv_legitimate_address_p_1): ... the renamed old
2445         frv_legitimate_address_p.
2446         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2447         (TARGET_LEGITIMATE_ADDRESS_P): New.
2448
2449         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2450         * config/s390/s390-protos.h (legitimate_address_p): Remove.
2451         * config/s390/s390.c (legitimate_address_p): Rename to...
2452         (s390_legitimate_address_p): ... this, make static.
2453         (legitimize_address): Adjust call.
2454         (TARGET_LEGITIMATE_ADDRESS_P): New.
2455         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2456
2457         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2458         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2459         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2460         (TARGET_LEGITIMATE_ADDRESS_P): New.
2461
2462         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2463         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2464         * config/spu/spu.c (spu_legitimate_address): Rename to...
2465         (spu_legitimate_address_p): ... this, make static.
2466         (TARGET_LEGITIMATE_ADDRESS_P): New.
2467
2468         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2469         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2470         * config/sparc/sparc.c (legitimate_address_p): Rename to...
2471         (sparc_legitimate_address_p): ... this, make static and return bool.
2472         (legitimize_address): Adjust call.
2473         (TARGET_LEGITIMATE_ADDRESS_P): New.
2474
2475         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2476         * config/i386/i386-protos.h (legitimate_address_p): Remove.
2477         * config/i386/i386.c (legitimate_address_p): Rename to...
2478         (ix86_legitimate_address_p): ... this, make static.
2479         (constant_address_p): Move after it, adjust call.
2480         (TARGET_LEGITIMATE_ADDRESS_P): New.
2481
2482         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2483         * config/avr/avr-protos.h (legitimate_address_p): Remove.
2484         * config/avr/avr.c (legitimate_address_p): Rename to...
2485         (avr_legitimate_address_p): ... this, make static.
2486         (legitimize_address): Adjust call.
2487         (TARGET_LEGITIMATE_ADDRESS_P): New.
2488
2489         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2490         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2491         * config/crx/crx.c (crx_legitimate_address_p): Make static.
2492         (TARGET_LEGITIMATE_ADDRESS_P): New.
2493
2494         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2495         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2496         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2497         (TARGET_LEGITIMATE_ADDRESS_P): New.
2498
2499         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2500         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2501         Remove.
2502         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2503         Make static.
2504         (TARGET_LEGITIMATE_ADDRESS_P): New.
2505
2506         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2507         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2508         Remove.
2509         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2510         Rename to...
2511         (m68hc11_legitimate_address_p): ... this, make static.
2512         (go_if_legitimate_address_internal): Rename to...
2513         (m68hc11_legitimate_address_p_1): ... this.
2514         (legitimize_address): Adjust call.
2515         (TARGET_LEGITIMATE_ADDRESS_P): New.
2516
2517         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2518         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2519         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2520         (TARGET_LEGITIMATE_ADDRESS_P): New.
2521
2522         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2523         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2524         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2525         (mn10300_legitimate_address_p): ... this, make static.
2526         (TARGET_LEGITIMATE_ADDRESS_P): New.
2527
2528         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2529         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2530         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2531         (TARGET_LEGITIMATE_ADDRESS_P): New.
2532
2533         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2534         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2535         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2536         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2537         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2538         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2539         (rs6000_legitimate_address_p): ... this, make static.
2540         (TARGET_LEGITIMATE_ADDRESS_P): New.
2541         (REG_MODE_OK_FOR_BASE_P): Delete.
2542         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2543
2544         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2545         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2546         Delete.
2547         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2548         static, adjust types.
2549         (TARGET_LEGITIMATE_ADDRESS_P): New.
2550
2551         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2552         * config/score/score.c (score_address_p): Rename to...
2553         (score_legitimate_address_p): ... this.
2554         (TARGET_LEGITIMATE_ADDRESS_P): New.
2555         * config/score/score3.c (score3_address_p): Rename to...
2556         (score3_legitimate_address_p): ... this.
2557         * config/score/score7.c (score7_address_p): Rename to...
2558         (score7_legitimate_address_p): ... this.
2559
2560         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2561         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2562         GO_IF_LEGITIMATE_ADDRESS): Delete.
2563         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2564         thumb2_legitimate_address_p): Delete.
2565         (arm_legitimate_address_p): Rename to...
2566         (arm_legitimate_address_outer_p): ... this.
2567         * config/arm/constraints.md ("Uq"): Adjust call.
2568         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2569         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
2570         (arm_legitimate_address_outer_p): ... this.
2571         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
2572         (TARGET_LEGITIMATE_ADDRESS_P): New.
2573
2574         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2575         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2576         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2577         (TARGET_LEGITIMATE_ADDRESS_P): New.
2578
2579         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2580         * config/vax/vax-protos.h (legitimate_address_p): Remove.
2581         * config/vax/vax.c (legitimate_address_p): Rename to...
2582         (vax_legitimate_address_p): ... this, make static.
2583         (TARGET_LEGITIMATE_ADDRESS_P): New.
2584
2585         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2586         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2587         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2588         (TARGET_LEGITIMATE_ADDRESS_P): New.
2589
2590         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2591         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2592         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2593         (mmix_legitimate_address_p): ... this, make static.
2594         (TARGET_LEGITIMATE_ADDRESS_P): New.
2595
2596         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2597         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2598         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2599         (TARGET_LEGITIMATE_ADDRESS_P): New.
2600
2601 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2602
2603         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2604         of MODE_COMPLEX_INT.
2605
2606 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2607
2608         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2609         LCT_NORMAL in function call.
2610         * mips-tdump.c (print_file_desc): Add cast to enum type.
2611         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2612         (mark_stabs): Add casts to enum types.
2613         (parse_stabs_common): Add casts to enum types.
2614
2615 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2616
2617         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2618         Check for invalid values of LETTER.
2619
2620 2009-05-13  Taras Glek  <tglek@mozilla.com>
2621
2622         * attribs.c (register_attribute): moved out attribute registration into
2623         register_attribute.
2624         * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
2625         * gcc-plugin.h: Added forward decl for register_attribute.
2626         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2627         * plugin.c (register_callback, invoke_plugin_callbacks): Added
2628         PLUGIN_ATTRIBUTES boilerplate.
2629
2630 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
2631
2632         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
2633         values even in sentinel and empty entries.
2634         (ms_printf_flag_specs):  Likewise.
2635         (ms_scanf_flag_specs):  Likewise.
2636         (ms_strftime_flag_specs):  Likewise.
2637         (ms_print_char_table):  Likewise.
2638         (ms_scan_char_table):  Likewise.
2639         (ms_time_char_table):  Likewise.
2640
2641 2009-05-13  Doug Kwan  <dougkwan@google.com>
2642
2643         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2644
2645 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2646
2647         * config/mips/mips.md (store): Add attributes for QI and HI.
2648         Update comment.
2649         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2650         (truncdi<mode>2): ... this new pattern.
2651
2652 2009-05-13  Brad Hards  <bradh@kde.org>
2653
2654         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2655
2656 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
2657             Ben Elliston <bje@au.ibm.com>
2658
2659         PR middle-end/40035
2660         * dse.c (check_mem_read_rtx): Guard against width == -1.
2661
2662 2009-05-13  Michael Matz  <matz@suse.de>
2663
2664         PR middle-end/39976
2665         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2666         (trivially_conflicts_p): New function.
2667         (insert_backedge_copies): Use it.
2668
2669 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
2670
2671         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2672         (handle_stdc_pragma): Use new enum constant names.
2673         (handle_pragma_float_const_decimal64): Ditto.
2674
2675 2009-05-13  Ian Lance Taylor  <iant@google.com>
2676
2677         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2678         tree.def.
2679
2680 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
2681
2682         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2683         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2684         multilibs.
2685         * config/m68k/m68k.h (FL_UCLINUX): Define.
2686
2687 2009-05-13  Jan Hubicka  <jh@suse.cz>
2688
2689         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2690
2691 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2692
2693         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2694         unless -fschedule-insns is specified.
2695
2696 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2697
2698         PR target/39561
2699         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2700         TARGET_EXPAND_CBRANCHDI4.
2701         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2702         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2703         (cmpeqdi): Fix comment.
2704
2705 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2706
2707         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2708         (sh_legitimate_address_p): Likewise.
2709         * config/sh/sh.c (sh_legitimate_index_p): New.
2710         (sh_legitimate_address_p): Likewise.
2711         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2712         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2713         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2714         (MAYBE_BASE_REGISTER_RTX_P): New macro.
2715         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2716         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2717         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2718         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2719         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2720
2721 2009-05-12  Jan Hubicka  <jh@suse.cz>
2722
2723         * tree-inline.c (estimate_operator_cost): Add operands;
2724         when division happens by constant, it is cheap.
2725         (estimate_num_insns): Loads and stores are not having cost of 0;
2726         EH magic stuff is cheap; when computing runtime cost of switch,
2727         use log2 base of amount of its cases; builtin_expect has cost of 0;
2728         compute cost for moving return value of call.
2729         (init_inline_once): Initialize time_based flags.
2730         * tree-inline.h (eni_weights_d): Add time_based flag.
2731
2732 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2733
2734         * df-core.c: Update head documentation.
2735
2736 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2737
2738         PR bootstrap/40118
2739         * rs6000.c (rs6000_generate_compare): Use op1b instead of
2740         shadowing exisiting variable op1.
2741
2742 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
2743
2744         PR target/37179
2745         * config/i386/driver-i386.c (processor_signatures): New enum.
2746         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2747         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2748         processor signature to detect geode processor.
2749
2750 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2751
2752         Revert:
2753
2754         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2755
2756         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2757         causes spurious differences between trunk and cond-optab branch.
2758
2759 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2760
2761         * dojump.c (compare_from_rtx): Delete.
2762         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
2763         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
2764         if the comparison does not satisfy the predicate; test predicates for
2765         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
2766         further if one existing pattern fails.
2767         * expr.h (compare_from_rtx): Delete.
2768         (prepare_operand): Declare it.
2769         * optabs.c: Change "lib call" to "libcall" throughout.
2770         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2771         HAVE_conditional_trap, emit_cmp_insn): Delete.
2772         (can_compare_p): Delete cmp_optab case.
2773         (prepare_float_lib_cmp): Return an rtx and a machine mode.
2774         Accept other parameters by value.
2775         (prepare_operand): Make non-static.
2776         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
2777         other parameters by value.  Try to widen operands here based on
2778         an optab_methods argument and looking at cbranch_optab.
2779         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2780         loop.  Use cbranch_optab directly.
2781         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
2782         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2783         assertion.
2784         (emit_conditional_move, emit_conditional_add): Inline what's needed
2785         of compare_from_rtx, using new prepare_cmp_insn for the rest.
2786         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2787         with COMPARE.  Move cmov_optab and cstore_optab above
2788         with cbranch_optab, move cmp_optab down with ucmp_optab,
2789         remove tst_otpab.  Do not initialize trap_rtx.
2790         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
2791         for trap code.  Do not check HAVE_conditional_trap.  Use
2792         prepare_cmp_insn.  Accept no predicate for operand 3.
2793         * optabs.h (OTI_cmp): Mark as used only for libcalls.
2794         (OTI_ctrap, ctrap_optab): New.
2795         (tst_optab): Delete.
2796         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2797         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2798         with lookup of ctrap_optab.
2799         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
2800         setcc_gen_code): Delete.
2801         (ctrap_optab): New.
2802
2803         * combine.c (combine_simplify_rtx, simplify_set): Do not
2804         special case comparing against zero for cc0 machines.
2805         * simplify-rtx.c (simplify_binary_operation_1): Never remove
2806         COMPARE on cc0 machines.
2807         (simplify_relational_operation): Return a new expression when
2808         a COMPARE could be removed.
2809         * final.c (final_scan_insn): Compare cc_status values
2810         against LHS of a (compare FOO (const_int 0)) cc0 source.
2811         Also check if cc_status.value is the full compare.
2812
2813         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2814         (cstoreMM4): Document.
2815         (conditional_trap): Document ctrapMM4 instead.
2816         (sync_compare_and_swapMM): Refer to cbranchcc4.
2817         (Dependent Patterns): Eliminate obsolete information referring to
2818         the old jump optimization phase.
2819         (Canonicalization): Include cbranchcc4 case, omit canonicalization
2820         of compares with 0 on cc0 machines.
2821         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
2822         avoiding references to cc0.  Remove text about storing operands
2823         in cmpMM.
2824         * doc/tm.texi (Condition Codes): Include blurb on different
2825         condition code representations, separate into subsections for
2826         CC0, MODE_CC and conditional execution.
2827
2828         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
2829         alpha_emit_setcc): Accept operands and a machine mode.
2830         * config/alpha/alpha.c (alpha_emit_conditional_branch):
2831         Get code/op0/op1 from operands, use machine mode argument
2832         instead of alpha_compare.fp_p.  Emit the branch here.
2833         (alpha_emit_setcc): Likewise, and return boolean.
2834         (alpha_emit_conditional_move): Likewise.  Assert that
2835         cmp_op_mode == cmp_mode, and simplify accordingly.
2836         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
2837         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
2838         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
2839         Delete.
2840         (stack probe test): Use cbranchdi4.
2841         * config/alpha/predicates.md (alpha_cbranch_operator): New.
2842
2843         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
2844         * config/arc/arc.h (movsicc, movsfcc): Use it.
2845         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
2846         (cbranchsi4, cstoresi4): New.
2847         (cmpsi, bCC and sCC expanders): Remove. 
2848
2849         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
2850         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
2851         * config/arm/predicates.md (arm_comparison_operator): Only include
2852         floating-point operators if there is a hardware floating-point unit.
2853         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
2854         deferring to cbranch_cc and cstore_cc respectively.
2855         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
2856         cbranch_cc, cstore_cc): New.
2857         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
2858         arm_compare_op1.
2859         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
2860
2861         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
2862         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
2863         as an argument.
2864         (adjust_insn_length): Adjust calls.
2865         (avr_reorg): Handle (compare (foo) (const_int 0)).
2866         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
2867         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
2868         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
2869         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
2870         (bCC): Remove.
2871         (cbranchqi4, cbranchhi4, cbranchsi4): New.
2872         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
2873
2874         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
2875         (cbranchsi4, cstorebi4, cstoresi4): New.
2876         (movbisi): This insn is duplicate, split it to zero_extend.
2877         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
2878         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
2879         (bfin_optimize_loop): Use cbranch expander.
2880         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
2881         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
2882         (bfin_bimode_comparison_operator): ... this.
2883         (bfin_direct_comparison_operator): New.
2884  
2885         * config/cris/cris.c (cris_normal_notice_update_cc): Look
2886         inside (compare FOO (const_int 0)).
2887         (cris_rtx_costs): Handle ZERO_EXTRACT.
2888         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
2889         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
2890         (*tstdi_v32): Delete.
2891         (*cmpdi_non_v32): Add M alternative for operand 1.
2892         (cmpsi, cmp<mode>): Make private.
2893         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
2894         with COMPARE.
2895         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
2896
2897         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
2898         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
2899         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
2900         (cc_reg_operand): New.
2901         (any_cond): Delete.
2902         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
2903         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
2904         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
2905         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
2906         crx_expand_scond): Delete.
2907
2908         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
2909         (cbranchsi4): New.
2910         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
2911         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
2912
2913         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
2914         cstoresi4, cstoresf4, cstoredf4): New.
2915         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
2916         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2917         Receive the entire operands array.
2918         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
2919         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
2920         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2921         Get test/op0/op1 from the operands array.
2922         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
2923
2924         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
2925         (h8300_expand_store): New.
2926         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
2927         (const_int 0)).
2928         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
2929         (h8300_expand_store): New.
2930         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
2931         or do not try to produce (set (cc0) REG).
2932         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
2933         change a compare into a move to a scratch register.  Disable some
2934         peepholes when comparing with zero.
2935         (tstsi, tsthi, tstsi, cmpqi): Make private.
2936         (cmphi): Delete.
2937         (bCC, sCC): Delete.
2938         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
2939         cstoresi4): New.
2940
2941         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
2942         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
2943         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
2944         (ix86_emit_i387_log1p): Use cbranchxf2.
2945         (ix86_expand_setcc): Return void.
2946         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
2947         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
2948         cmp<MODEF>, cmpcc): Remove.
2949         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
2950         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
2951         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
2952         (sCC and bCC expanders): Remove.
2953         (stack_protect_test): Use cbranchcc4.
2954
2955         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
2956         Delete.
2957         (ia64_expand_compare): Accept three rtx by reference and return void.
2958         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
2959         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
2960         from *expr.  Update *expr with the BImode comparison to do.
2961         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
2962         cmptf, bCC, sCC, conditional_trap): Delete.
2963         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
2964         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
2965         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
2966         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
2967         * config/ia64/predicates.md (ia64_cbranch_operator): New.
2968
2969         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
2970         type of last argument.
2971         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
2972         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
2973         use machine mode argument instead of branch_type.  Remove dead
2974         code for floating-point comparisons.
2975         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
2976         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
2977         Remove.
2978         (cbranchsi4, cstoresi4): New.
2979         * config/iq2000/predicates.md (reg_or_const_operand): New.
2980
2981         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
2982         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
2983         (b<code>_op): Rewrite to...
2984         (bcc_op): ... this, using match_operator.
2985         (s<code>_op): Rewrite to...
2986         (scc_op): ... this, using match_operator.
2987         (s<code>_24_op): Rewrite to...
2988         (scc_op_24): ... this, using match_operator.
2989         (s<code>_<mode>): Rewrite to...
2990         (cstore<mode>4): ... this, using match_operator.
2991         (s<code>_<mode>_24): Rewrite to...
2992         (cstore<mode>4_24): ... this, using match_operator.
2993         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
2994         m32c_unpend_compare, m32c_expand_scc): Delete.
2995         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
2996         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
2997         (m32c_expand_movcc): Change NE to EQ if necessary.
2998         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
2999
3000         * config/m32r/m32r-protos.h (gen_cond_store): New.
3001         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
3002         (gen_cond_store): New, from sCC patterns.
3003         (m32r_expand_block_move): Use cbranchsi4.
3004         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
3005         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
3006         (cbranchsi4, cstoresi4): New.
3007         
3008         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
3009         Delete.
3010         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
3011         (m68hc11_notice_update_cc): Look into a compare with 0.
3012         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
3013         Delete.
3014         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
3015         cmphi, cmpqi, bCC): Delete.
3016         (cbranchsi4, cbranchhi4, cbranchqi4): New.
3017         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
3018         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
3019         sets with COMPARE.
3020
3021         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
3022         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
3023         * config/m68k/constraints.md (H): New.
3024         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
3025         the define_insn below.
3026         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
3027         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
3028         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
3029         patterns): Wrap RHS with COMPARE.
3030         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
3031         (*cmpdi_internal): Name this pattern.
3032         (cmpdi): Change to define_insn.
3033         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
3034         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
3035         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
3036         predicate.
3037         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
3038         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
3039         (conditional_trap): Change to...
3040         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
3041         (*conditional_trap): Use the ordered_comparison_operator and
3042         const1_operand predicates.
3043         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
3044         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
3045         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
3046         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
3047
3048         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
3049         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
3050         (mcore_gen_compare): New. 
3051         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
3052         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
3053         (mcore_gen_compare): ... this.
3054         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
3055         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
3056         (stack probe pattern): Use cbranchsi4.
3057
3058         * config/mips/predicates.md (mips_cstore_operator): New.
3059         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
3060         * config/mips/mips.md (any_cond): Delete.
3061         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
3062         always succeed.
3063         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
3064         fixuns_truncsfdi2): Use cbranch patterns.
3065         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
3066         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
3067         Adjust call to mips_expand_conditional_branch.
3068         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
3069         cstore<GPR:mode>4.
3070         * config/mips/mips-protos.h (mips_expand_conditional_branch,
3071         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
3072         * config/mips/mips.c (cmp_operands): Delete.
3073         (mips_emit_compare): Get comparison operands from *op0/*op1.
3074         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
3075         that it succeeds.  Use op0/op1 instead of cmp_operands.
3076         (mips_expand_conditional_branch, mips_expand_conditional_move,
3077         mips_expand_conditional_trap): Likewise.
3078         (mips_block_move_loop): Use cbranch patterns. 
3079         * config/mips/mips.h (cmp_operands): Delete.
3080
3081         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
3082         (mmix_gen_compare_reg): Just return a register in the right CC mode.
3083         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
3084         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
3085         (*cmpcc_folded): Rename to...
3086         (*cmpdi_folded): this.
3087         (*cmpcc): Rename to...
3088         (*cmps): ... this.
3089         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
3090         (bCC): Remove.
3091         (cbranchdi4): New.
3092         (cbranchdf4): New.  Handle invalid comparisons here.
3093         * config/mmix/predicates.md (float_comparison_operator): New.
3094
3095         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
3096         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
3097         * config/mn10300/mn10300.md (tst): Delete.
3098         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
3099         Name these patterns and wrap RHS in a compare.
3100         (*cmpsi): Make this pattern private.  Include tst.
3101         (*cmpsf): Make this pattern private.
3102         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
3103         (compare with zero peepholes): Likewise.
3104         (bCC): Remove.
3105         (cbranchsi4, cbranchsf4): New.
3106         (casesi): Use cbranchsi4.
3107
3108         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
3109         hppa_branch_type): Delete.
3110         (return_addr_rtx): Use cbranchsi4.
3111         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
3112         Emit CCFPmode comparison here.
3113         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
3114         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
3115         hppa_branch_type): Delete.
3116         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
3117         (movsicc, movdicc): Remove references to hppa_compare_op0,
3118         hppa_compare_op1 and compare_from_rtx.
3119         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
3120         (casesi): Use cbranchsi4.
3121
3122         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
3123         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
3124         * config/pdp11/pdp11.md (register_or_const0_operand): New.
3125         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
3126         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
3127         (bCC): Delete.
3128         (cbranchdf4, cbranchhi4, cbranchqi4): New.
3129         (*branch, *branch_inverted): New.
3130
3131         * config/picochip/picochip.md (cbranchhi4): Use
3132         ordered_comparison_operator.
3133         (cmphi, bCC): Remove.
3134
3135         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
3136         (trap_comparison_operator): Delete.
3137         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
3138         rs6000_emit_cbranch): Accept mode and operands.
3139         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
3140         rs6000_compare_fp_p): Delete.   
3141         (rs6000_generate_compare): Accept mode and comparison.  Extract code
3142         and op0/op1 from there.  Replace references to rs6000_compare_op0
3143         and rs6000_compare_op1.
3144         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
3145         extract result from passed operands.
3146         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
3147         extract loc from passed operands.
3148         (rs6000_emit_cmove): Likewise.
3149         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
3150         rs6000_compare_fp_p): Delete.
3151         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
3152         (cbranch<GPR>4, cbranch<FP>4): New.
3153         (cstore<mode>4): New.  Consolidate here all choices about when to use
3154         portable or specialized sCC sequences.
3155         (stack_protect_test): Use cbranchsi4.
3156         (conditional_trap): Replace with ctrap<GPR>4.
3157         (conditional trap insn): Replace trap_comparison_operator with
3158         ordered_comparison_operator. 
3159
3160         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
3161         (s390_emit_prologue): Use ctrap.
3162         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
3163         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
3164         New predicates replacing...
3165         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
3166         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
3167         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
3168         (add<mode>cc): Do not use s390_compare_op0/op1.
3169         (s<code>): Change to...
3170         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
3171         (seq): Change to...
3172         (cstorecc4): ... this.  Handle EQ or NE equally.
3173         (*sne): Un-privatize for use in cstorecc4.
3174         (b<code>): Change to...
3175         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
3176         (conditional_trap): Replace with...
3177         (ctrap<GPR>4, ctrap<FP>4): ... these.
3178         (stack_protect): Use cbranchcc4.
3179
3180         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
3181         * config/score/score-protos.h (score_gen_cmp): Delete.
3182         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
3183         (score_block_move-loop): Use cbranchsi4.
3184         * config/score/score.md (cbranchsi4): New.
3185         (cmpsi, bCC): Delete.
3186         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
3187         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3188         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
3189         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3190         * config/score/score3.h (score3_gen_cmp): Delete.
3191         * config/score/score7.h (score7_gen_cmp): Delete.
3192
3193         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
3194         (sh_emit_scc_to_t): ... this.  Return void.
3195         (from_compare): Rename to...
3196         (sh_emit_compare_and_branch): ... this.
3197         (sh_emit_compare_and_set): New.
3198         (sh_expand_t_scc): Accept operands.
3199         * config/sh/predicates.md (sh_float_comparison_operator): New.
3200         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
3201         (prepare_scc_operands): Rename to...
3202         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
3203         arguments.
3204         (sh_emit_cheap_store_flag): New.
3205         (sh_emit_set_t_insn): New.
3206         (from_compare): Rename to...
3207         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
3208         handling of TARGET_SH2E floating point to avoid recursive call.
3209         Generate branch here.
3210         (sh_emit_compare_and_set): New.
3211         (sh_expand_t_scc): Get op0/op1 from arguments.
3212         (sh_emit_cheap_store_flag): New.
3213         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3214         cases.
3215         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3216         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3217         (movsicc, movdicc): Do nothing when it recreated operands from
3218         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
3219         prepare_scc_operands (now sh_emit_scc_to_t).
3220         (udivdi3): Use cstoresi4.
3221         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3222         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3223         (cbranchint4_media, cbranchfp4_media): New.
3224         (casesi): Use cbranchdi4.
3225         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3226         Delete.
3227         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3228         (movnegt): Remove second operand.
3229         (cbranchsf4, cbranchdf4): New.
3230         (stack_protect): Use cbranchdi4/cbranchsi4.
3231
3232         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3233         (gen_compare_reg): Accept comparison, extract part of it to...
3234         (gen_compare_reg_1): ... this. 
3235         (gen_compare_operator): Delete.
3236         (gen_v9_scc): Accept separate destination, comparison code and arms.
3237         Do not use sparc_compare_op0/sparc_compare_op1.
3238         (emit_scc_insn, emit_conditional_branch_insn): New.
3239         (emit_v9_brxx): Make static.  Remove useless assertion.
3240         (sparc_emit_float_lib_cmp): Return RTL instead of calling
3241         emit_cmp_insn.
3242         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3243         * config/sparc/sparc-protos.h (gen_compare_reg,
3244         sparc_emit_float_lib_cmp): Adjust prototype.
3245         (emit_scc_insn, emit_conditional_branch_insn): New.
3246         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3247         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3248         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3249         iterators to the top.
3250         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3251         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3252         snedi_special_trunc): Delete.
3253         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3254         and snedi_special_trunc.
3255         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3256         cbranchdi4, cbranch<F:mode>4): New.
3257         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3258         here.  Use gen_compare_reg instead of gen_compare_operator.
3259         (conditional_trap): Replace with...
3260         (ctrapsi4, ctrapdi4): ... this.
3261         (stack_protect_test): Use cbranchcc4.
3262
3263         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3264         argument to rtx.
3265         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3266         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3267         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3268         from operands[0] or operands[3] depending on is_set.
3269         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3270         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3271         cmpdf, bCC), sCC: Remove.
3272         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
3273         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3274         cstoredf4): New.
3275         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3276         spu_emit_branch_or_set.
3277
3278         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3279         Add two arguments.
3280         * config/stormy16/stormy16.h (xstormy16_compare_op0,
3281         xstormy16_compare_op1): Delete.
3282         * config/stormy16/stormy16.c (xstormy16_compare_op0,
3283         xstormy16_compare_op1): Delete. 
3284         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3285         Adjust calls.
3286         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3287         (cmphi, cmpsi, bCC): Remove.
3288
3289         * config/v850/v850.md (tstsi, cmpsi): Fold into...
3290         (*cmpsi): ... this one.
3291         (cbranchsi4, cstoresi4): New.
3292         (bCC expanders): Delete.
3293         (sCC insns): Fold into...
3294         (*setcc): ... this one.
3295         (casesi): Do not use gen_cmpsi and gen_bgtu. 
3296         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3297         (movsicc): Simplify.
3298         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3299
3300         * config/vax/vax-protos.h (cond_name): New.
3301         (vax_output_conditional_branch): Remove.
3302         * config/vax/vax.c (cond_name): New.
3303         (vax_output_conditional_branch): Remove.
3304         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3305         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3306         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
3307         (bit<VAXint>): Wrap source with (compare).
3308         (b<code> and following unnamed pattern): Rename to *branch and
3309         *branch_reversed.  Change macroization to match_operator.
3310         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3311
3312         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3313         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3314         Change last argument to machine_mode.
3315         (xtensa_expand_scc): Add machine_mode argument.
3316         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3317         (gen_conditional_move, xtensa_expand_conditional_branch,
3318         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3319         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3320         Adjust operand numbers.
3321         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3322         Delete.
3323         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3324         (cmpsi, cmpsf, b<code>, s<code>): Delete.
3325         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3326
3327 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3328
3329         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3330         causes spurious differences between trunk and cond-optab branch.
3331
3332 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3333
3334         PR target/37137
3335         * doc/insta