OSDN Git Service

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