OSDN Git Service

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