OSDN Git Service

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