OSDN Git Service

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