OSDN Git Service

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