OSDN Git Service

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