OSDN Git Service

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