OSDN Git Service

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