OSDN Git Service

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