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