1 2007-04-27 Mike Stump <mrs@apple.com>
3 * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
5 2007-04-27 Ian Lance Taylor <iant@google.com>
8 * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
9 TYPE_MAX_VALUE exist, convert them to the new type.
11 2007-04-27 Zdenek Dvorak <dvorakz@suse.cz>
13 * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
14 if it claims to be available.
15 * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
17 (perform_tree_ssa_dce): Always free postdominators.
19 2007-04-27 Richard Henderson <rth@redhat.com>
21 * config/alpha/predicates.md (aligned_memory_operand): Mark
22 as define_special_predicate.
23 (unaligned_memory_operand, normal_memory_operand): Likewise.
24 (reg_or_unaligned_mem_operand): Remove.
25 (any_memory_operand): Match the documentation and check for
26 non-renumbered pseudos during reload.
27 * config/alpha/alpha.c (alpha_secondary_reload): Rename from
28 alpha_secondary_reload_class, update to new interface, make static.
29 Handle CQImode like HImode. Remove FP subreg check.
30 (alpha_expand_mov): Use replace_equiv_address.
31 (alpha_expand_mov_nobwx): Use any_memory_operand.
32 (TARGET_SECONDARY_RELOAD): New.
33 * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
34 (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
35 * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
36 * config/alpha/alpha.md: ... here.
37 (RELOAD12, reloadmode): New.
39 (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
40 Don't handle the aligned case here.
41 (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
42 (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
43 reload_inhi_help. Don't expect a scratch register.
44 (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
46 * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
48 2007-04-27 Richard Guenther <rguenther@suse.de>
50 * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
52 2007-04-27 Richard Guenther <rguenther@suse.de>
54 PR tree-optimization/30965
55 PR tree-optimization/30978
56 * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
57 * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
58 (find_equivalent_equality_comparison): Likewise.
59 (simplify_cond): Likewise.
60 (get_prop_source_stmt): New helper.
61 (get_prop_dest_stmt): Likewise.
62 (can_propagate_from): Likewise.
63 (remove_prop_source_from_use): Likewise.
64 (combine_cond_expr_cond): Likewise.
65 (forward_propagate_comparison): New function.
66 (forward_propagate_into_cond): Rewrite to use fold for
68 (tree_ssa_forward_propagate_single_use_vars): Call
69 forward_propagate_comparison to propagate comparisons.
71 2007-04-27 Richard Guenther <rguenther@suse.de>
73 PR tree-optimization/31715
74 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
75 sure to do computation on the offset in an appropriate
78 2007-04-27 Richard Sandiford <richard@codesourcery.com>
80 * reload.h (elimination_target_reg_p): Declare.
81 * reload.c (find_reloads): Don't apply the reg_rtx move
82 optimization if the SET_DEST satisfies elimination_target_reg_p.
83 * reload1.c (elimination_target_reg_p): New function.
84 (gen_reload): In the move/add2 fallback, make sure that op0
85 does not overlap the destination register.
87 2007-04-27 Zdenek Dvorak <dvorakz@suse.cz>
89 * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
90 transform only GIMPLE_MODIFY_STMTs.
91 * tree-complex.c (expand_complex_operations_1): Ditto.
92 (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
93 * tree-ssa-loop-manip.c (build_if_stmt): Removed.
94 (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
96 * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
97 tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
98 * omp-low.c (expand_parallel_call, expand_omp_for_generic,
99 expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
100 * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
101 slpeel_add_loop_guard): Ditto.
102 * tree-mudflap.c (mf_build_check_statement_for): Ditto.
103 * lambda-code.c (perfect_nestify): Ditto.
104 * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
105 before the first statement.
106 * tree-optimize.c (execute_free_datastructures): Fix comments.
107 (execute_free_cfg_annotations): Do not call disband_implicit_edges.
108 * tree-flow.h (disband_implicit_edges): Declaration removed.
109 * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
111 (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
113 (disband_implicit_edges, has_label_p): Removed.
114 (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
115 (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
117 * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
119 * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
121 * cfgexpand.c (label_rtx_for_bb): New function.
122 (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
123 Use label_rtx_for_bb to find the labels.
124 (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
125 last block. Detect fallthru edges.
127 2007-04-26 Ian Lance Taylor <iant@google.com>
130 * reload.c (find_reloads_subreg_address): If the address was valid
131 in the original mode but not in the new mode, reload the whole
134 2007-04-27 Zdenek Dvorak <dvorakz@suse.cz>
136 * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
137 (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
138 (cleanup_control_expr_graph): Do not invalidate dominance info.
139 Record altered blocks.
140 (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
141 (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
142 cleanup_tree_cfg_bb): New functions.
143 (remove_forwarder_block): Do not maintain the worklist of blocks.
144 Record altered blocks.
145 (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
147 (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1. Only call
148 delete_unreachable_blocks if dominators are not available.
149 * tree-inline.c (optimize_inline_calls): Free dominance information
151 * tree-flow.h (remove_edge_and_dominated_blocks,
152 cfgcleanup_altered_bbs): Altered.
153 * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
155 (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
157 (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
158 do not invalidate dominators.
160 2007-04-26 Anatoly Sokolov <aesok@post.ru>
162 * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
163 ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
164 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
165 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
167 2007-04-26 Steve Ellcey <sje@cup.hp.com>
169 * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
171 2007-04-26 Richard Guenther <rguenther@suse.de>
173 PR tree-optimization/31703
174 * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
175 the right type for the target of the bittest.
177 2007-04-26 Richard Sandiford <richard@codesourcery.com>
179 * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
180 ix86_sol10_return_in_memory.
182 2007-04-26 Richard Sandiford <richard@codesourcery.com>
184 * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
187 2007-04-26 Jakub Jelinek <jakub@redhat.com>
190 * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
192 PR tree-optimization/30558
193 * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
194 clear this_state.prev_try.
196 2007-04-26 Richard Sandiford <richard@codesourcery.com>
197 Mark Mitchell <mark@codesourcery.com>
199 * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
200 * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
201 * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
203 2007-04-26 Richard Sandiford <richard@codesourcery.com>
206 * doc/invoke.texi (%:print-asm-header): Document.
207 * gcc.c (asm_options): Use %:print-asm-header() for --target-help
209 (static_spec_functions): Add print-asm-header.
210 (main): Print a banner before the --target-help linker options.
211 (print_asm_header_spec_function): New function.
213 2007-04-25 Kaz Kojima <kkojima@gcc.gnu.org>
216 * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
217 (movsf_ie): Likewise.
219 2007-04-25 Paolo Carlini <pcarlini@suse.de>
221 * doc/extend.texi ([Type Traits]): Adjust per N2255.
223 2007-04-25 Bob Wilson <bob.wilson@acm.org>
225 * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
227 (__umodsi3, __modsi3): Likewise.
229 2007-04-25 Dirk Mueller <dmueller@suse.de>
231 * c-typeck.c (build_compound_expr): Annotate warning()
232 call with OPT_Wunused_value.
233 * tree-ssa.c (warn_uninit): Annotate warning with
235 * c-common.c (handle_sentinel_attribute): Annotate warning
236 call with OPT_Wattributes.
238 2007-04-25 Thiemo Seufer <ths@mips.com>
240 * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
242 * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
243 on to the assembler. Improve handling of -mno-mips16. Add handling
244 of -mno-mips3d, -mno-dsp, -mno-dspr2.
245 * doc/invoke.texi (MIPS Options): Whitespace cleanup. Fix wrong use
246 of @itemx. Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
247 -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
249 2007-04-25 Danny Smith <dannysmith.users.sourceforge.net>
252 * config/i386/winnt.c (i386_pe_file_end): Strip only
253 USER_LABEL_PREFIX when writing export name.
255 2007-04-25 Richard Sandiford <richard@codesourcery.com>
257 * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h. Include
258 sh/elf.h, vx-common.h and vxworks.h.
259 * config/sh/sh.h: Include config/vxworks-dummy.h.
260 (SUBTARGET_OVERRIDE_OPTIONS): Define.
261 (OVERRIDE_OPTIONS): Use it.
262 * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
263 (vxworks_picreg): New pattern.
264 * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
265 VXWORKS_OS_CPP_BUILTINS.
266 (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
267 to their VXWORKS_* equivalents.
268 (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
269 (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
270 * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
271 (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
272 * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
273 -mrtp/-fPIC multilibs.
274 (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
275 (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
276 (MULTILIB_OSDIRNAMES): Delete.
278 2007-04-25 Anatoly Sokolov <aesok@post.ru>
281 * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
283 2007-04-24 Brooks Moses <brooks.moses@codesourcery.com>
285 * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
286 rounding mode to be specified by the caller.
287 (real_to_mpfr) Likewise.
288 * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
289 include new arguments.
290 * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
292 2007-04-24 Ian Lance Taylor <iant@google.com>
294 PR tree-optimization/31605
295 * tree-vrp.c (set_value_range): Check that min and max are not
296 both overflow infinities.
297 (set_value_range_to_value): New static function.
298 (extract_range_from_binary_expr): Call set_value_range_to_value.
299 (extract_range_from_cond_expr): Likewise.
300 (extract_range_from_expr): Likewise.
301 (extract_range_from_unary_expr): Likewise. Don't create a range
302 which overflows on both sides.
303 (vrp_meet): Check for a useless range.
304 (vrp_visit_phi_node): If we see a constant which looks like an
305 overflow infinity, turn off the TREE_OVERFLOW flag.
307 2007-04-24 Ian Lance Taylor <iant@google.com>
309 * flow.c (elim_reg_cond): Handle a comparison of a subreg.
311 2007-04-24 Simon Martin <simartin@users.sourceforge.net>
314 * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
315 diagnostic message is being built.
316 * tree-pretty-print.c (dump_generic_node): Only write the
317 formatted text into BUFFER's stream if we are not building a
319 * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
321 * Makefile.in (toplev.o): Depend on tree-pass.h.
323 2007-04-24 Ian Lance Taylor <iant@google.com>
325 PR tree-optimization/31602
326 * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
327 conditionals in the copied loop header.
328 * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
329 warnings if TREE_NO_WARNING is set.
330 * doc/invoke.texi (Warning Options): Clarify that
331 -Wstrict-overflow does not warn about loops.
333 2007-04-24 Janis Johnson <janis187@us.ibm.com>
335 * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
336 expand on the comment about _Decimal128 arguments and check the
337 integer result of the modulus operation; for 64-bit ELF ABI, ensure
338 that _Decimal128 argument uses even/odd register pair.
339 (function_arg): Ditto.
341 2007-04-24 Hui-May Chang <hm.chang@apple.com>
343 * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
344 instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
346 2007-04-24 Richard Guenther <rguenther@suse.de>
347 Olga Golovanevsky <olga@il.ibm.com>
349 * fold-const.c (multiple_of_p): Check for bottom
352 2007-04-24 Richard Henderson <rth@redhat.com>
354 * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
355 IS_IBM_EXTENDED. Also define in terms of WIDEST_HARDWARE_FP_SIZE.
356 * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
357 looking for non-zero bits shifted out. Avoid a recursive call
358 when constructing the scalar.
359 (__floatundisf): Likewise.
361 2007-04-24 Nathan Froyd <froydnj@codesourcery.com>
363 * dwarf2out.c (field_byte_offset): Move the existing logic
364 under the control of PCC_BITFIELD_TYPE_MATTERS and just use
365 the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
367 2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
370 * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
371 argument of 0 for memset.
372 (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
373 unsigned shift instead of the signed variant.
375 2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
377 * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
378 "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
379 "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
380 "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
381 "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
382 "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
383 "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
384 "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
385 "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
386 ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
387 "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
388 "mul<mode>3", "div<mode>3"): Insn definitions added.
389 ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
390 "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
391 to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
392 ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
393 "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
394 "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
395 ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
396 * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
397 TARGET_FLOAT_FORMAT): Macro definitions removed.
398 (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
399 * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
400 z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
401 (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
402 (s390_gen_rtx_const_DI): Function removed.
403 * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
405 2007-04-24 Richard Sandiford <richard@codesourcery.com>
407 * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
408 over an external ffs function.
410 2007-04-24 Chao-ying Fu <fu@mips.com>
411 Richard Sandiford <richard@nildram.co.uk>
413 * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
414 * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
415 (smadd_widen_optab, umadd_widen_optab): Define.
416 * optabs.c (init_optabs): Initialize smadd_widen_optab and
418 * genopinit.c (optabs): Fill in smadd_widen_optab and
420 * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
421 and umadd_widen_optab to implement multiply-add sequences.
422 * config/mips/mips.md (*<su>mul_acc_di): Rename to...
423 (<u>maddsidi4): ...this. Extend condition to include
424 GENERATE_MADD_MSUB and TARGET_DSPR2. Change the constraint
425 of operand 0 to "ka" and use the three-operand form of madd<u>
427 * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
429 * config/mips/constraints.md (ka): New register constraint.
431 2007-04-24 Jan Hubicka <j@suse.cz>
435 2007-04-23 Jan Hubicka <jh@suse.cz>
436 * function.c (init_function_start): Don't init line number info.
437 (expand_function_end): Update.
438 (reset_block_changes, record_block_change, finalize_block_changes,
439 check_block_change, free_block_changes): Kill.
440 * function.h (reset_block_changes, record_block_change,
441 finalize_block_changes, check_block_change, free_block_changes): Remove
443 (struct function): Remove ib_boundaries_block.
444 * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
445 Use curr_insn_locator to initialize locator.
446 (emit_line_note): Remove.
447 * cfgexpand.c (expand_gimple_cond_expr): Update.
448 (construct_exit_block): Likewise.
449 (tree_expand_cfg): Initialize/finalize locators.
450 * expr.c (expand_expr_real): Update.
451 * cfglayout.c (line_locators_locs, line_locators_lines,
452 file_locators_locs, file_locators_files): Remove.
453 (set_block_levels): Move to cfgexpand.c.
454 (insn_locators_initialize): Remove.
455 (pass_insn_locators_initialize): Remove.
456 (locations_locators_locs, locations_locators_vals): New static vars.
457 (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
459 (insn_locators_alloc, insn_locators_finalize,
460 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
462 (locator_location): New.
463 (locator_line, locator_file): Rewrite.
464 * rtl.h (emit_line_note): Kill.
465 (insn_locators_alloc, insn_locators_finalize,
466 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
468 * tree-inline.c (initialize_cfun): Do not initialize
470 * passes.c (pass_insn_locators_initialize): Remove.
472 2007-04-24 Daniel Franke <franke.daniel@gmail.com>
474 * doc/invoke.texi: Removed leading '-' from option index entries.
476 2007-04-23 Zdenek Dvorak <dvorakz@suse.cz>
478 * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
480 (create_phi_node): Use set_phi_nodes.
481 * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
482 * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
483 (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
484 * tree-flow-inline.h (phi_nodes, set_phi_nodes,
485 (bsi_start, bsi_last): Use bb_stmt_list.
486 (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
487 * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
488 Traverse the statements using tsi iterator.
489 * basic-block.h (struct basic_block_def): Fields stmt_list
490 and phi_nodes moved to ...
491 (struct tree_bb_info): ... new structure.
492 * tree-cfg.c (create_bb): Allocate il.tree. Use set_bb_stmt_list.
493 (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
494 (remove_bb): Handle blocks with NULL stmt list. Clear il.tree field.
495 (tree_verify_flow_info): Verify that il.tree is not set for
496 entry and exit block.
497 (tree_split_block): Use set_bb_stmt_list.
499 2007-04-23 Mike Stump <mrs@apple.com>
501 * config/i386/i386.c (ix86_tune_features
502 [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
505 2007-04-23 H.J. Lu <hongjiu.lu@intel.com>
507 * config/i386/i386.md (prefix_extra): New attribute.
508 (length): Add prefix_extra.
510 * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
511 (sse2_movntv2di): Likewise.
512 (sse2_cvtps2dq): Likewise.
513 (sse2_cvtpd2pi): Likewise.
514 (sse2_cvttpd2pi): Likewise.
515 (*sse2_cvtpd2ps): Likewise.
516 (*add<mode>3): Likewise.
517 (sse2_ssadd<mode>3): Likewise.
518 (sse2_usadd<mode>3): Likewise.
519 (*sub<mode>3): Likewise.
520 (sse2_sssub<mode>3): Likewise.
521 (sse2_ussub<mode>3): Likewise.
522 (*mulv8hi3): Likewise.
523 (*smulv8hi3_highpart): Likewise.
524 (*umulv8hi3_highpart): Likewise.
525 (sse2_umulv2siv2di3): Likewise.
526 (sse2_pmaddwd): Likewise.
527 (ashr<mode>3): Likewise.
528 (lshr<mode>3): Likewise.
529 (ashl<mode>3): Likewise.
530 (sse2_ashlti3): Likewise.
531 (sse2_lshrti3): Likewise.
532 (*umaxv16qi3): Likewise.
533 (*smaxv8hi3): Likewise.
534 (*uminv16qi3): Likewise.
535 (*sminv8hi3): Likewise.
536 (sse2_eq<mode>3): Likewise.
537 (sse2_gt<mode>3): Likewise.
538 (*and<mode>3): Likewise.
539 (sse2_nand<mode>3): Likewise.
540 (*ior<mode>3): Likewise.
541 (*xor<mode>3): Likewise.
542 (sse2_packsswb): Likewise.
543 (sse2_packssdw): Likewise.
544 (sse2_packuswb): Likewise.
545 (sse2_punpckhbw): Likewise.
546 (sse2_punpcklbw): Likewise.
547 (sse2_punpckhwd): Likewise.
548 (sse2_punpcklwd): Likewise.
549 (sse2_punpckhdq): Likewise.
550 (sse2_punpckldq): Likewise.
551 (sse2_punpckhqdq): Likewise.
552 (sse2_punpcklqdq): Likewise.
553 (*sse2_pinsrw): Likewise.
554 (*sse2_pextrw): Likewise.
555 (sse2_pshufd_1): Likewise.
556 (sse2_uavgv16qi3): Likewise.
557 (sse2_uavgv8hi3): Likewise.
558 (sse2_psadbw): Likewise.
559 (sse2_pmovmskb): Likewise.
560 (*sse2_maskmovdqu): Likewise.
561 (*sse2_maskmovdqu_rex64): Likewise.
562 (sse4a_extrqi): Likewise.
563 (sse4a_extrq): Likewise.
564 (sse3_lddqu): Set prefix_rep.
565 (sse3_addsubv4sf3): Likewise.
566 (sse3_haddv4sf3): Likewise.
567 (sse3_hsubv4sf3): Likewise.
568 (sse_cvtss2si): Likewise.
569 (sse_cvtss2si_2): Likewise.
570 (sse_cvtss2siq): Likewise.
571 (sse_cvtss2siq_2): Likewise.
572 (sse_cvttss2si): Likewise.
573 (sse_cvttss2siq): Likewise.
574 (sse2_cvttps2dq): Likewise.
575 (sse3_movshdup): Likewise.
576 (sse3_movsldup): Likewise.
577 (sse2_cvtsd2si): Likewise.
578 (sse2_cvtsd2si_2): Likewise.
579 (sse2_cvtsd2siq): Likewise.
580 (sse2_cvtsd2siq_2): Likewise.
581 (sse2_cvttsd2si): Likewise.
582 (sse2_cvttsd2siq): Likewise.
583 (*sse2_cvtpd2dq): Likewise.
584 (*sse2_cvttpd2dq): Likewise.
585 (sse2_pshuflw_1): Likewise.
586 (sse2_pshufhw_1): Likewise.
587 (sse4a_insertqi): Likewise.
588 (sse4a_insertq): Likewise.
589 (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
590 (ssse3_phadddv4si3): Likewise.
591 (ssse3_phaddswv8hi3): Likewise.
592 (ssse3_phsubwv8hi3): Likewise.
593 (ssse3_phsubdv4si3): Likewise.
594 (ssse3_phsubswv8hi3): Likewise.
595 (ssse3_pmaddubswv8hi3): Likewise.
596 (ssse3_pmulhrswv8hi3): Likewise.
597 (ssse3_pshufbv16qi3): Likewise.
598 (ssse3_psign<mode>3): Likewise.
599 (ssse3_palignrti): Likewise.
600 (abs<mode>2): Likewise.
601 (ssse3_phaddwv4hi3): Set prefix_extra.
602 (ssse3_phadddv2si3): Likewise.
603 (ssse3_phaddswv4hi3): Likewise.
604 (ssse3_phsubwv4hi3): Likewise.
605 (ssse3_phsubdv2si3): Likewise.
606 (ssse3_phsubswv4hi3): Likewise.
607 (ssse3_pmaddubswv4hi3): Likewise.
608 (ssse3_pmulhrswv4hi3): Likewise.
609 (ssse3_pshufbv8qi3): Likewise.
610 (ssse3_psign<mode>3): Likewise.
611 (ssse3_palignrdi): Likewise.
612 (abs<mode>2): Likewise.
613 (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
614 (*vec_dupv2df): Set mode to V2DF instead of V4SF.
615 (sse2_pmovmskb): Set mode to SI instead of V2DF.
617 2007-04-23 Nick Clifton <nickc@redhat.com>
619 * params.def: Fix formatting of emacs local variables.
621 2007-04-23 H.J. Lu <hongjiu.lu@intel.com>
623 * config/i386/sse.md (sse2_stored): Don't split to inter-unit
624 move if inter-unit move isn't allowed.
625 Don't split moving the first element of V2DI to DI to inter-unit
626 move if inter-unit move isn't allowed.
628 2007-04-23 Richard Guenther <rguenther@suse.de>
630 * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
631 and CDI_POST_DOMINATORS separately.
633 2007-04-23 Nick Clifton <nickc@redhat.com>
635 * c.opt (Wformat-contains-nul): Add warning attribute.
637 2007-04-23 Jan Hubicka <jh@suse.cz>
639 * function.c (init_function_start): Don't init line number info.
640 (expand_function_end): Update.
641 (reset_block_changes, record_block_change, finalize_block_changes,
642 check_block_change, free_block_changes): Kill.
643 * function.h (reset_block_changes, record_block_change,
644 finalize_block_changes, check_block_change, free_block_changes): Remove
646 (struct function): Remove ib_boundaries_block.
647 * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
648 Use curr_insn_locator to initialize locator.
649 (emit_line_note): Remove.
650 * cfgexpand.c (expand_gimple_cond_expr): Update.
651 (construct_exit_block): Likewise.
652 (tree_expand_cfg): Initialize/finalize locators.
653 * expr.c (expand_expr_real): Update.
654 * cfglayout.c (line_locators_locs, line_locators_lines,
655 file_locators_locs, file_locators_files): Remove.
656 (set_block_levels): Move to cfgexpand.c.
657 (insn_locators_initialize): Remove.
658 (pass_insn_locators_initialize): Remove.
659 (locations_locators_locs, locations_locators_vals): New static vars.
660 (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
662 (insn_locators_alloc, insn_locators_finalize,
663 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
665 (locator_location): New.
666 (locator_line, locator_file): Rewrite.
667 * rtl.h (emit_line_note): Kill.
668 (insn_locators_alloc, insn_locators_finalize,
669 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
671 * tree-inline.c (initialize_cfun): Do not initialize
673 * passes.c (pass_insn_locators_initialize): Remove.
675 2007-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
678 * expr.c (reduce_to_bit_field_precision): Handle
681 2007-04-22 Uros Bizjak <ubizjak@gmail.com>
683 PR tree-optimization/24659
684 * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
685 OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
686 (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
687 * genopinit.c (optabs): Rename vec_pack_mod_optab
688 to vec_pack_trunc_optab.
689 * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
690 early for scalar floating point operands for NOP_EXPR.
691 (vectorizable_type_promotion): Ditto.
692 * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
693 vec_pack_trunc_optab.
694 (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
696 * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
697 * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
698 Rename from VEC_PACK_MOD_EXPR.
699 (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
700 * expr.c (expand_expr_real_1): Ditto.
701 * tree-inline.c (estimate_num_insns_1): Ditto.
702 * tree-vect-generic.c (expand_vector_operations_1): Ditto.
704 * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
705 (vec_unpacks_lo_v4sf): Ditto.
706 (vec_pack_trunc_v2df): Ditto.
707 (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
708 (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
709 (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
711 * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
713 (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
715 * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
716 Rename from VEC_PACK_MOD_EXPR. This expression also represent
717 packing of floating point operands.
718 [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
719 represent unpacking of floating point operands.
720 * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
721 [vec_unpacks_hi]: Ditto.
722 [vec_unpacks_lo]: Ditto.
724 2007-04-22 Jan Hubicka <jh@suse.cz>
726 * final.c (rest_of_handle_final): Call
727 targetm.asm_out.constructor/targetm.asm_out.destructor
728 * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
729 proper priority via decl_*_priority_insert.
730 * c-common.c (c_expand_body): Likewise.
732 2007-04-22 Richard Guenther <rguenther@suse.de>
734 PR tree-optimization/29789
735 * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
736 (rewrite_reciprocal): New helper split out from
737 determine_invariantness_stmt.
738 (rewrite_bittest): Likewise.
739 (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
740 A & (1 << B) if (1 << B) is loop invariant but (A >> B)
743 2007-04-22 Revital Eres <eres@il.ibm.com>
745 * loop-unroll.c (var_to_expand): New field to support also
746 insns of the form x = something + x.
747 (analyze_insn_to_expand_var): Use it.
748 (expand_var_during_unrolling): Likewise.
750 2007-04-21 Zdenek Dvorak <dvorakz@suse.cz>
752 * predict.c: Include pointer-set.h.
753 (bb_predictions): New variable.
754 (tree_predicted_by_p, tree_predict_edge,
755 remove_predictions_associated_with_edge): Use bb_predictions map
756 instead of bb->predictions.
757 (clear_bb_predictions, assert_is_empty): New functions.
758 (combine_predictions_for_bb): Use bb_predictions map. Call
759 clear_bb_predictions.
760 (tree_estimate_probability): Create and free bb_predictions map.
761 * Makefile.in (predict.o): Add pointer-set.h dependency.
762 * basic-block.h (struct basic_block_def): Remove predictions
764 * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
766 2007-04-21 Kaz Kojima <kkojima@gcc.gnu.org>
769 * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
772 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
774 * timevar.c (timevar_print): Change reference of --disable-checking to
775 --enable-checking=release. Also warn if assert checking is disabled.
777 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
780 * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
781 decl as addressable if the compound literal was marked as
783 Mark the decl as a gimple register if it is a complex or
784 vector decl and does not live in memory.
786 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
788 * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
789 (GENERIC_NEXT): New function macro.
790 (PHI_CHAIN): Use phi_node's new chain variable.
791 (tree_phi_node): Change tree_common to tree_base
792 and add the chain field.
793 * tree-phinodes.c (make_phi_node): Don't set
794 TREE_TYPE on the new node.
795 * c-decl.c (lang_tree_node): Use GENERIC_NEXT
796 instead of checking GIMPLE_TUPLE_P in chain_next.
797 * tree-vect-transform.c
798 (get_initial_def_for_induction): Look at
799 PHI_RESULT_TREE for the type of the phi node.
800 (update_vuses_to_preheader): Use PHI_CHAIN
801 instead of TREE_CHAIN on the phi node.
802 * tree-ssa-structalias.c (compute_points_to_sets):
804 (ipa_pta_execute): Likewise.
806 2007-04-21 Richard Guenther <rguenther@suse.de>
809 * fold-const.c (fold_unary): Call fold_convert_const on the
812 2007-04-21 Alexandre Oliva <aoliva@redhat.com>
814 * gcse.c (store_killed_in_insn): Handle PARALLELs.
815 (store_killed_in_pat): New.
817 2007-04-20 Richard Henderson <rth@redhat.com>
820 * config/i386/i386.c (type_has_variadic_args_p): Look for any
821 TREE_LIST with a void_type_node value, not void_list_node exactly.
823 2007-04-21 Douglas Gregor <doug.gregor@gmail.com>
825 * doc/standards.texi: Re-arrange into language-specific
826 subsections. Add a C++ section, documenting which standards we
829 2007-04-21 Zdenek Dvorak <dvorakz@suse.cz>
831 * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
832 * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
834 2007-04-20 Daniel Jacobowitz <dan@codesourcery.com>
836 * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
837 ecrti.o and crtbegin.o.
838 (LIB_DEFAULT_SPEC): Include -lc.
839 (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
841 2007-04-20 Richard Henderson <rth@redhat.com>
844 * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
845 argument; update all callers.
846 (get_unaligned_offset): New.
847 * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
848 get_unaligned_address, just pass on the address directly.
849 (unaligned_extendqidi): Use gen_lowpart instead of open-coding
850 the subreg in the helper patterns.
851 (unaligned_extendqidi_le): Use get_unaligned_offset.
852 (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
853 (unaligned_extendhidi_be): Likewise.
854 (unaligned_extendhidi): Tidy.
855 * config/alpha/alpha-protos.h: Update.
857 2007-04-20 Richard Henderson <rth@redhat.com>
859 * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
860 (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
861 * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
862 * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
863 * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
864 (CPP_SPEC): Don't include %(cpp_subtarget).
865 * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
866 (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
867 * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
869 2007-04-20 Jakub Jelinek <jakub@redhat.com>
871 * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
872 for __builtin_ia32_cmpordss.
874 PR tree-optimization/31632
875 * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
876 and arg1 for optimizations of comparison against min/max values.
877 Fold arg0 to arg1's type for optimizations of comparison against
878 min+1 and max-1 values.
880 2007-04-19 Bernd Schmidt <bernd.schmidt@analog.com>
882 * reload.c (combine_reloads): When trying to use a dying register,
883 check whether it's uninitialized and don't use if so.
885 2007-04-19 Brooks Moses <brooks.moses@codesourcery.com>
887 * fold-const.c: Remove prototypes for native_encode_expr and
888 native_interpret_expr.
889 (native_encode_expr): Make non-static.
890 (native_interpret_expr): Likewise.
891 * tree.h: Add prototypes for the above.
893 2007-04-19 Joseph Myers <joseph@codesourcery.com>
895 * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
896 *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
897 *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
898 spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
899 tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
900 Add length attributes.
902 2007-04-19 Janis Johnson <janis187@us.ibm.com>
904 * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
907 * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
908 __STDC_WANT_DEC_FP__.
910 2007-04-19 Joseph Myers <joseph@codesourcery.com>
912 * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
913 for long double compatibility.
914 * configure: Regenerate.
916 2007-04-19 Eric Botcazou <ebotcazou@libertysurf.fr>
918 PR rtl-optimization/29841
919 * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
921 * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
922 that may cause control flow transfer from being moved.
924 2007-04-18 Jan Hubicka <jh@suse.cz>
926 * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
929 2007-04-18 Eric Christopher <echristo@apple.com>
931 * config/rs6000/darwin.md (load_macho_picbase): Use link register
932 only. Update operands.
933 * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
934 * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
935 link register to pic register.
937 2007-04-18 Dirk Mueller <dmueller@suse.de>
940 * tree-vrp.c (search_for_addr_array): New.
941 (check_array_bounds): Suppress warning about
942 address taken of array refs if its not de-referenced.
944 2007-04-18 Dorit Nuzman <dorit@il.ibm.com>
946 * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
947 * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
949 * tree-vectorizer.h (NITERS_KNOWN_P): New.
950 * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
951 instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
953 * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
955 (vect_analyze_operations): Fix indenetation. Fix a comment. Fix a
957 (vect_analyze_scalar_cycles): Fix indentation.
958 (vect_enhance_data_refs_alignment): Fix check in case of peeling.
959 (vect_mark_relevant): Include phis in relevance analysis.
961 * tree-vect-transform.c (vect_transform_loop): Add an assert.
963 2007-04-18 Anatoly Sokolov <aesok@post.ru>
965 * config/avr/avr.c (ptrreg_to_str): Replace error() with
966 output_operand_lossage().
968 2007-04-18 Dorit Nuzman <dorit@il.ibm.com>
970 * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
971 the unused code for reduction without adjust-in-epilog to simplify the
974 2007-04-18 Wolfgang Gellerich <gellerich@de.ibm.com>
976 * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
977 (S390_TDC_NEGATIVE_ZERO): New constant.
978 (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
979 (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
980 (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
981 (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
982 (S390_TDC_POSITIVE_INFINITY): New constant.
983 (S390_TDC_NEGATIVE_INFINITY): New constant.
984 (S390_TDC_POSITIVE_QUIET_NAN): New constant.
985 (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
986 (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
987 (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
988 (S390_TDC_INFINITY): New constant.
989 * config/s390/s390.c (s390_canonicalize_comparison): Renamed
990 UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
991 optimization for UNSPEC_CCZ_TO_INT.
992 * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
993 ("*ccz_to_int"): New insn.
994 ("isinf<mode>2"): New insn.
995 (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
996 (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
997 (UNSPEC_CCZ_TO_INT): New constant.
999 2007-04-18 Richard Guenther <rguenther@suse.de>
1001 PR tree-optimization/19431
1002 PR tree-optimization/21463
1003 * tree-pass.h (pass_phiprop): Declare.
1004 * passes.c (init_optimization_passes): New phiprop pass.
1005 * tree-ssa-forwprop.c (struct phiprop_d): New structure.
1006 (phivn_valid_p): New helper function.
1007 (phiprop_insert_phi): Likewise.
1008 (propagate_with_phi): Likewise.
1009 (tree_ssa_phiprop): New propagator propagating loads
1010 through phi nodes if profitable.
1012 2007-04-18 Dorit Nuzman <dorit@il.ibm.com>
1014 * tree-vect-analyze.c (process_use): New function.
1015 (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
1016 Check phis in all bbs.
1017 * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
1020 2007-04-18 Bernd Schmidt <bernd.schmidt@analog.com>
1022 * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
1025 2007-04-17 Anatoly Sokolov <aesok@post.ru>
1028 * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
1031 2007-04-17 H.J. Lu <hongjiu.lu@intel.com>
1033 * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
1035 (sse_vmmulv4sf3): Likewise.
1036 (sse2_vmaddv2df3): Likewise.
1037 (sse2_vmmulv2df3): Likewise.
1039 2007-04-17 Zdenek Dvorak <dvorakz@suse.cz>
1041 PR rtl-optimization/31360
1042 * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
1043 (target_reg_cost): New.
1044 (init_set_costs): Initialize target_reg_cost. Add comments
1045 regarding the rationale of the costs.
1046 (global_cost_for_size): Renamed to...
1047 (estimate_reg_pressure_cost): ... and simplify. Decrease importance
1048 of register pressure.
1049 * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
1050 estimate_reg_pressure_cost. Add number of ivs.
1051 (determine_set_costs): Dump target_reg_cost.
1052 * loop-invariant.c (gain_for_invariant): Use
1053 estimate_reg_pressure_cost. Removed n_inv_uses argument.
1054 (best_gain_for_invariant, find_invariants_to_move): Remove
1056 * cfgloop.h (target_small_cost, target_pres_cost): Removed.
1057 (target_reg_cost): Declare.
1058 (global_cost_for_size): Declaration removed.
1059 (estimate_reg_pressure_cost): Declare.
1061 2007-04-17 Peter Bergner <bergner@vnet.ibm.com>
1063 * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
1064 regnos into even/odd register pairs.
1065 * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
1066 TDmode similar to the other floating point modes.
1067 [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
1068 * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
1070 (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
1071 nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
1072 (movdd_hardfloat64): Use TARGET_MFPGPR.
1074 2007-04-17 Bernd Schmidt <bernd.schmidt@analog.com>
1076 * reload1.c (delete_output_reload): Don't count output in n_inherited.
1079 2005-01-05 Richard Henderson <rth@redhat.com>
1081 * reload1.c (do_input_reload): Restrict the optimization deleteing
1082 a previous output reload to RELOAD_FOR_INPUT.
1084 2007-04-17 Dorit Nuzman <dorit@il.ibm.com>
1086 * tree-vectorizer.h (stmt_vec_info_type): Add enum value
1087 induc_vec_info_type.
1088 (vectorizable_induction): New function declaration.
1089 * tree-vect-transform.c (get_initial_def_for_induction): No need to
1090 check if already vectorized. Find first place in BB where new stmts
1091 can be inserted. Takes only one argument.
1092 (vectorizable_induction): New function.
1093 (vect_transform_stmt): Add case for induc_vec_info_type to call
1094 vectorizable_induction.
1095 (vect_transform_loop): Consider phis for vectorization.
1096 * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
1098 (analyze_operations): Call vectorizable_induction when analyzing phis.
1100 (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
1101 (vect_mark_relevant): Include phis in relevance analysis.
1102 (vect_mark_stmts_to_be_vectorize): Likewise.
1103 * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
1105 2007-04-16 Lawrence Crowl <crowl@google.com>
1107 * doc/invoke.texi (Debugging Options): Add documentation for the
1108 -femit-struct-debug options -femit-struct-debug-baseonly,
1109 -femit-struct-debug-reduced, and
1110 -femit-struct-debug-detailed[=...].
1112 * c-opts.c (c_common_handle_option): Add
1113 OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
1114 and OPT_femit_struct_debug_detailed_.
1115 * c.opt: Add specifications for
1116 -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
1117 and -femit-struct-debug-detailed[=...].
1118 * opts.c (set_struct_debug_option): Parse the
1119 -femit-struct-debug-... options.
1120 * opts.c (matches_main_base, main_input_basename,
1121 main_input_baselength, base_of_path, matches_main_base): Add
1122 variables and functions to compare header base name to compilation
1124 * opts.c (should_emit_struct_debug): Add to determine to emit a
1125 structure based on the option.
1126 (dump_struct_debug) Also disabled function to debug this
1128 * opts.c (handle_options): Save the base name of the
1131 * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
1132 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
1133 This hook indicates if a type is generic. Set it by default
1135 * langhooks.h (struct lang_hooks_for_types): Add a new hook
1136 to determine if a struct type is generic or not.
1137 * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
1138 * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
1139 * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
1142 * flags.h (enum debug_info_usage): Add an enumeration to describe
1143 a program's use of a structure type.
1144 * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
1145 to indicate the program's usage of the type. Filter structs based
1146 on the -femit-struct-debug-... specification.
1147 (gen_type_die): Split into two routines, gen_type_die and
1148 gen_type_die_with_usage. gen_type_die is now a wrapper
1149 that assumes direct usage.
1150 (gen_type_die_with_usage): Replace calls to gen_type_die
1151 with gen_type_die_with_usage adding the program usage of
1152 the referenced type.
1153 (dwarf2out_imported_module_or_decl): Suppress struct debug
1154 information using should_emit_struct_debug when appropriate.
1156 2007-04-16 Ian Lance Taylor <iant@google.com>
1158 PR tree-optimization/31522
1159 * tree-vrp.c (vr_phi_edge_counts): New static variable.
1160 (vrp_initialize): Allocate vr_phi_edge_counts.
1161 (vrp_visit_phi_node): Don't push to infinity if we saw a new
1162 executable edge. Drop test for all constants.
1163 (vrp_finalize): Free vrp_phi_edge_counts.
1165 * doc/cpp.texi (Common Predefined Macros): Clarify description of
1166 __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1168 * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
1169 predecessors at head rather than tail.
1171 2007-04-16 Matthias Klose <doko@debian.org>
1173 * config/alpha/linux.h (CPP_SPEC): Define.
1174 * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
1176 2007-04-16 Aldy Hernandez <aldyh@redhat.com>
1178 * function.h: Remove sequence_stack extern declaration.
1180 2007-04-16 Kazu Hirata <kazu@codesourcery.com>
1182 * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
1184 (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
1187 2007-04-16 Anatoly Sokolov <aesok@post.ru>
1189 * config/avr/avr.c (avr_arch_types): Rearranging array.
1190 (enum avr_arch): Add.
1191 (avr_mcu_types): Use avr_arch enumeration constants instead of
1193 * config/avr/avr.h (LINK_SPEC): Simplify.
1195 2007-04-16 Kazu Hirata <kazu@codesourcery.com>
1197 * config/m68k/m68k.c (m68k_libcall_value,
1198 m68k_function_value): Use macros for register names more.
1200 * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
1202 (M68K_REGNAME): Use A6_REG.
1203 * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
1205 2007-04-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1208 * sched-int.h (struct deps): Split field 'pending_lists_length' into
1209 'pending_read_list_length' and 'pending_write_list_length'. Update
1211 * sched-deps.c (add_insn_mem_dependence): Change signature. Update
1212 to handle two length counters instead of one. Update all uses.
1213 (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
1214 two length counters instead of one.
1215 * sched-rgn.c (propagate_deps): Update to handle two length counters
1218 2007-04-16 H.J. Lu <hongjiu.lu@intel.com>
1221 * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
1222 copy of source, pass it to ix86_expand_vector_set and return
1225 2007-04-16 David Ung <davidu@mips.com>
1226 Joseph Myers <joseph@codesourcery.com>
1228 * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
1229 PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
1230 * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
1231 Add 74K processor information.
1232 * config/mips/mips.md: Include 74k.md.
1233 (cpu): Add 74kc,74kf,74kx.
1234 (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
1235 * config/mips/74k.md: New.
1236 * doc/invoke.texi (MIPS Options): Document 74K support.
1238 2007-04-16 Dorit Nuzman <dorit@il.ibm.com>
1240 * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
1241 vectorizable_* functions.
1242 * tree-vect-transform.c (vectorizable_call): Add check for
1243 STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
1244 (vectorizable_store): likewise.
1245 (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
1247 (vectorizable_operation, vectorizable_type_demotion): Likewise.
1248 (vectorizable_type_promotion, vectorizable_load): Likewise.
1249 (vectorizable_live_operation, vectorizable_condition): Likewise.
1250 (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
1252 (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
1254 2007-04-15 Kazu Hirata <kazu@codesourcery.com>
1256 * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
1257 register numbers more.
1258 * config/m68k/m68k.h (STACK_POINTER_REGNUM,
1259 FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
1260 M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
1261 FUNCTION_VALUE_REGNO_P): Likewise.
1262 * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
1263 STATIC_CHAIN_REGNUM): Likewise.
1264 * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
1265 * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
1266 STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
1267 * config/m68k/m68k.md (FP_REG): New.
1269 2007-04-15 Kazu Hirata <kazu@codesourcery.com>
1271 * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
1274 2007-04-15 Kazu Hirata <kazu@codesourcery.com>
1276 * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
1277 tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
1280 2007-04-11 Zdenek Dvorak <dvorakz@suse.cz>
1282 * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
1285 2007-04-14 Andrew Pinski <andrew_pinski@playstation.sony.com>
1288 * c-decl.c (finish_decl): Grab the type of the decl after the call
1289 to store_init_value.
1291 2007-04-14 Steven Bosscher <steven@gcc.gnu.org>
1293 * common.opt (fforward-propagate): Fix "Optimization" annotation.
1295 2007-04-14 Jakub Jelinek <jakub@redhat.com>
1298 * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
1299 post dominators and cleanup cfg before returning.
1301 2007-04-14 Bernd Schmidt <bernd.schmidt@analog.com>
1303 * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
1304 * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
1306 2007-04-14 Kazu Hirata <kazu@codesourcery.com>
1308 * config.gcc: Recognize fido.
1309 * config/m68k/m68k-devices.def (fidoa): New.
1310 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
1312 (FL_FIDOA, TARGET_FIDOA): New.
1313 * config/m68k/m68k.opt (mfidoa): New.
1315 2007-04-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1318 * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
1319 when a personality function is used.
1321 2007-04-13 Bob Wilson <bob.wilson@acm.org>
1323 * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
1325 2007-04-13 Mike Stump <mrs@apple.com>
1327 * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
1329 * config/darwin.opt (fapple-kext): Make C++ only.
1330 * config/darwin.c (darwin_override_options): Remove code to ensure
1331 -fapple-kext is given for C++ only.
1333 2007-04-13 Richard Sandiford <richard@codesourcery.com>
1335 * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
1336 * config/mips/mips.c (override_options): Call
1337 SUBTARGET_OVERRIDE_OPTIONS, if defined.
1339 2007-04-13 H.J. Lu <hongjiu.lu@intel.com>
1341 * config/i386/i386.opt (msvr3-shlib): Removed.
1343 * doc/invoke.texi: Remove -msvr3-shlib.
1345 2007-04-13 H.J. Lu <hongjiu.lu@intel.com>
1347 * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
1348 with "popcnt" instruction.
1350 2007-04-13 Richard Guenther <rguenther@suse.de>
1352 PR tree-optimization/21258
1353 * tree-vrp.c (compare_case_labels): New helper.
1354 (find_switch_asserts): New function.
1355 (find_assert_locations): Call it for SWITCH_EXPRs.
1357 2007-04-13 Uros Bizjak <ubizjak@gmail.com>
1359 * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
1360 * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
1361 check is now implied in X87_FLOAT_MODE_P.
1362 (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
1363 (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
1364 (fix_trunc<mode>_i386_fisttp): Ditto.
1365 (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
1366 (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
1367 (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
1368 (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
1369 (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
1370 (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
1371 (unnamed_splitters): Ditto.
1372 * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
1373 for X87_FLOAT_MODE_P mode. Override FIRST_FLOAT_REG with
1374 FIRST_SSE_REG for local functions when SSE math is enabled or
1375 for functions with sseregparm attribute.
1376 (standard_80387_constant_p): Return -1 if mode is not
1378 (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
1379 (ix86_expand_compare): Ditto.
1380 (ix86_expand_carry_flag_compare): Ditto.
1381 (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
1382 of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
1383 DECIMAL_FLOAT_MODE_P.
1384 (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
1385 of SCALAR_FLOAT_MODE_P.
1386 (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
1387 [MINUS]: ... here. Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
1388 checks before FLOAT_MODE_P.
1389 [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
1390 before FLOAT_MODE_P.
1395 [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
1397 2007-04-12 Paolo Bonzini <bonzini@gnu.org>
1398 Charles Wilson <libtool@cwilson.fastmail.fm>
1400 * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
1401 (libgcc.mvars): Don't depend on them.
1402 * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
1403 * exec-tool.in: New.
1405 2007-04-12 Brooks Moses <brooks.moses@codesourcery.com>
1407 * doc/invoke.text (--help): Document --help=common.
1409 2007-04-12 Thomas Neumann <tneumann@users.sourceforge.net>
1411 * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
1413 2007-04-12 Richard Sandiford <richard@codesourcery.com>
1415 * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
1416 * genemit.c (main): Emit #include "integrate.h".
1417 * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
1418 (LOADGP_RTP): New mips_loadgp_style.
1419 * config/mips/mips.h: Include config/vxworks-dummy.h.
1420 (TARGET_RTP_PIC): New macro.
1421 (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
1422 (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
1423 (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
1425 * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define. Pass down
1426 -mvxworks-pic when using -mrtp and a PIC option.
1427 * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
1429 (mips_symbolic_constant_p, mips_symbolic_address_p)
1430 (mips_symbol_insns): Handle SYMBOL_HALF.
1431 (override_options): Warn about -G and -mrtp being used together.
1432 Initialize mips_lo_relocs[SYMBOL_HALF].
1433 (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
1434 (mips_emit_loadgp): Handle LOADGP_RTP.
1435 (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
1436 * config/mips/mips.md (loadgp_rtp): New insn and splitter.
1437 (tablejump): Handle function-relative case table entries if
1439 * config/mips/predicates.md (symbol_ref_operand): New predicate.
1441 2007-04-12 Richard Sandiford <richard@codesourcery.com>
1443 * config/mips/mips.md (load_call<mode>): Allow any general register.
1445 (sibcall_value_internal, sibcall_value_multiple_internal)
1446 (call_value_internal, call_value_split, call_value_multiple_internal)
1447 (call_value_multiple_split): Remove constraints from operand 0.
1449 2007-04-12 Richard Sandiford <richard@codesourcery.com>
1451 * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
1452 rather than loadgp_noshared.
1453 * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
1454 instead of gen_loadgp_noshared. Use gen_loadgp_newabi instead of
1456 * config/mips/mips.md (loadgp): Rename to...
1457 (loadgp_newabi): ...this.
1458 (loadgp_noshared): Rename to...
1459 (loadgp_absolute): ...this.
1461 2007-04-12 Richard Sandiford <richard@codesourcery.com>
1463 * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
1464 false for locally-binding symbols.
1465 (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
1467 2007-04-12 Richard Sandiford <richard@codesourcery.com>
1469 * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
1470 (SYMBOL_GOT_PAGE_OFST): ...this.
1471 (SYMBOL_GOT_GLOBAL): Rename to...
1472 (SYMBOL_GOT_DISP): ...this.
1473 (SYMBOL_GOTOFF_GLOBAL): Rename to...
1474 (SYMBOL_GOTOFF_DISP): ...this. Update comments accordingly.
1475 * config/mips/mips.c (mips_global_symbol_p): New function.
1476 (mips_symbol_binds_local_p): Likewise.
1477 (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
1478 and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST. Use mips_global_symbol_p
1479 and mips_symbol_binds_local_p.
1480 (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
1481 (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
1482 SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
1484 (mips_ok_for_lazy_binding_p): New function.
1485 (mips_load_call_address, mips_expand_call): Use it.
1486 (mips_dangerous_for_la25_p): Likewise.
1487 * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
1488 (*got_disp<mode>): Use got_disp_operand instead of
1489 global_got_operand. Use SYMBOL_GOTOFF_DISP instead of
1490 SYMBOL_GOTOFF_GLOBAL.
1491 (*got_page<mode>): Use got_page_ofst_operand instead of
1493 * config/mips/predicates.md (const_call_insn_operand): Use
1494 SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
1495 (global_got_operand): Rename to...
1496 (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
1498 (local_got_operand): Rename to...
1499 (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
1500 of SYMBOL_GOT_LOCAL.
1502 2007-04-12 Richard Sandiford <richard@codesourcery.com>
1504 * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
1505 TARGET_CALL_CLOBBERED_GP.
1506 (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1507 (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
1508 (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
1509 (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
1510 of TARGET_ABICALLS && !TARGET_NEWABI.
1511 (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1512 * config/mips/mips.c (mips_load_call_address): Check
1513 TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
1514 (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1515 Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
1516 (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
1517 TARGET_ABICALLS && TARGET_NEWABI.
1518 (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
1520 (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
1521 (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
1522 TARGET_ABICALLS && TARGET_NEWABI.
1523 (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
1524 TARGET_ABICALLS. Check TARGET_CALL_SAVED_GP instead of
1525 TARGET_NEWABI. Use TARGET_USE_PIC_FN_ADDR_REG to decide
1526 whether indirect calls must use $25.
1527 (mips_extra_live_on_entry): Check TARGET_GOT instead of
1529 * config/mips/mips.md (jal_macro): Check flag_pic and
1530 TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
1531 (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
1532 instead of TARGET_ABICALLS.
1533 (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
1534 TARGET_ABICALLS && TARGET_OLDABI.
1535 (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1536 (sibcall): In the comment above the define_insn, mention
1537 TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
1538 * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
1539 instead of TARGET_ABICALLS.
1541 2007-04-12 Bernd Schmidt <bernd.schmidt@analog.com>
1543 * doc/md.texi (Blackfin family constraints): Document PA and PB.
1544 * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
1545 (MACFLAGS_MATCH_P): New macro.
1546 * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
1547 (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
1548 * config/bfin/bfin.md (MACFLAG_IS_M): New constant. Renumber some of
1549 the other MACFLAG constants.
1550 (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
1551 (flag_machi): Tighten constraints. Renumber some of the operands.
1552 (flag_machi_acconly): Tighten constraints. Correct operand numbers in
1554 (flag_machi_parts_acconly): New pattern.
1555 (flag_macinithi): Tighten constraints. Allow any accumulator to be
1557 (flag_macinit1hi): Tighten constraints.
1558 (flag_mul_macv2hi_parts_acconly): New pattern.
1560 * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
1561 Use a more efficient implementation.
1562 * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
1563 inline sequences when not optimizing for size.
1565 * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
1566 movhi_high2low): Delete, merge functionality into...
1567 (packv2hi): ... this pattern.
1569 2007-02-11 Jie Zhang <jie.zhang@analog.com>
1570 * config/bfin/bfin.opt (msim): New option.
1571 (mcpu=): New option.
1572 * config/bfin/bfin-protos.h (enum bfin_cpu): New.
1573 (bfin_cpu_t): Typedef of enum bfin_cpu.
1574 (bfin_cpu_type): New declaration.
1575 * config/bfin/elf.h (STARTFILE_SPEC): Add support for
1576 -msim and -mcpu= options.
1577 (LIB_SPEC): Likewise.
1578 * config/bfin/bfin.c (bfin_cpu_type): Define.
1579 (bfin_handle_option): Handle -mcpu= option.
1580 * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
1581 (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
1582 __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
1584 2007-04-12 Richard Sandiford <richard@codesourcery.com>
1586 * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
1587 (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
1588 (powerpc-wrs-vxworksae): Use ${tm_file}.
1589 (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
1590 after elfos.h. Remove i386/sysv4.h and add i386/vx-common.h.
1591 * config/i386/vx-common.h: New file.
1593 2007-04-12 Richard Sandiford <richard@codesourcery.com>
1595 * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
1598 2007-04-12 Andreas Krebbel <krebbel1@de.ibm.com>
1600 * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
1603 2007-04-12 Douglas Gregor <doug.gregor@gmail.com>
1607 * c-common.c (c_build_qualified_type): Set canonical type
1610 2007-04-12 Richard Guenther <rguenther@suse.de>
1612 * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
1613 lower bound and element size if lower bound is not zero
1614 or either of the ARRAY_REF operands is set.
1616 2007-04-12 Richard Guenther <rguenther@suse.de>
1618 PR tree-optimization/24689
1619 PR tree-optimization/31307
1620 * fold-const.c (operand_equal_p): Compare INTEGER_CST array
1622 * gimplify.c (canonicalize_addr_expr): To be consistent with
1623 gimplify_compound_lval only set operands two and three of
1624 ARRAY_REFs if they are not gimple_min_invariant. This makes
1625 it never at this place.
1626 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
1628 2007-04-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1630 * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
1631 null before emitting a .nsubspa directive.
1633 2007-04-11 Diego Novillo <dnovillo@redhat.com>
1635 * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
1636 need_to_partition_p if there are no memory statements in the
1639 2007-04-11 Zdenek Dvorak <dvorakz@suse.cz>
1641 * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
1642 (gcd_of_steps_may_divide_p): New function.
1643 (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
1645 2007-04-11 Bernd Schmidt <bernd.schmidt@analog.com>
1647 * reload.c (find_reloads_toplev, find_reloads_address,
1648 find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
1649 not a pointer equality test, to decide if we need to call
1650 push_reg_equiv_alt_mem.
1652 2007-04-11 Sebastian Pop <sebastian.pop@inria.fr>
1654 * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
1655 insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
1656 (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
1658 2007-04-11 Zdenek Dvorak <dvorakz@suse.cz>
1660 * tree-data-ref.c (add_multivariate_self_dist): Force the distance
1661 vector to be positive.
1663 2007-04-11 Diego Novillo <dnovillo@redhat.com>
1667 * doc/invoke.texi: Document --params max-aliased-vops and
1669 * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
1670 debug_memory_partitions): Move to tree-flow.h
1671 * params.h (AVG_ALIASED_VOPS): Define.
1672 * tree-ssa-alias.c (struct mp_info_def): Remove. Update all
1674 (mp_info_t): Likewise.
1675 (get_mem_sym_stats_for): New.
1676 (set_memory_partition): Move from tree-flow-inline.h.
1677 (mark_non_addressable): Only clear the set of symbols for the
1678 partition if it exists.
1679 (dump_memory_partitions): Move from tree-ssa-operands.c
1680 (debug_memory_partitions): Likewise.
1681 (need_to_partition_p): New.
1682 (dump_mem_ref_stats): New.
1683 (debug_mem_ref_stats): New.
1684 (dump_mem_sym_stats): New.
1685 (debug_mem_sym_stats): New.
1686 (update_mem_sym_stats_from_stmt): New.
1687 (compare_mp_info_entries): New.
1688 (mp_info_cmp): Call it.
1689 (sort_mp_info): Change argument to a list of mem_sym_stats_t
1691 (get_mpt_for): Move from tree-ssa-operands.c.
1692 (find_partition_for): New.
1693 (create_partition_for): Remove.
1694 (estimate_vop_reduction): New.
1695 (update_reference_counts): New.
1696 (build_mp_info): New.
1697 (compute_memory_partitions): Refactor.
1698 Document new heuristic.
1699 Call build_mp_info, update_reference_counts,
1700 find_partition_for and estimate_vop_reduction.
1701 (compute_may_aliases): Populate virtual operands before
1702 calling debugging dumps.
1703 (delete_mem_sym_stats): New.
1704 (delete_mem_ref_stats): New.
1705 (init_mem_ref_stats): New.
1706 (init_alias_info): Call it.
1707 (maybe_create_global_var): Remove alias_info argument.
1708 Get number of call sites and number of pure/const call sites
1709 from gimple_mem_ref_stats().
1710 (dump_alias_info): Call dump_memory_partitions first.
1711 (dump_points_to_info_for): Show how many times a pointer has
1713 * opts.c (decode_options): For -O2 set --param
1714 max-aliased-vops to 500.
1715 For -O3 set --param max-aliased-vops to 1000 and --param
1716 avg-aliased-vops to 3.
1717 * fortran/options.c (gfc_init_options): Remove assignment to
1719 * tree-flow-inline.h (gimple_mem_ref_stats): New.
1720 * tree-dfa.c (dump_variable): Dump memory reference
1722 Dump NO_ALIAS* settings.
1723 (referenced_var_lookup): Tidy.
1724 (mem_sym_stats): New.
1725 * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
1726 and ORIG are different SSA names for a memory partition.
1727 * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
1728 * tree-flow.h (struct mem_sym_stats_d): Define.
1729 (mem_sym_stats_t): Define.
1730 (struct mem_ref_stats_d): Define.
1731 (struct gimple_df): Add field mem_ref_stats.
1732 (enum noalias_state): Define.
1733 (struct var_ann_d): Add bitfield noalias_state.
1734 (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
1735 debug_mem_ref_stats, debug_memory_partitions,
1736 debug_mem_sym_stats): Declare.
1737 * tree-ssa-structalias.c (update_alias_info): Update call
1738 sites, pure/const call sites and asm sites in structure
1739 returned by gimple_mem_ref_stats.
1740 Remove local variable IS_POTENTIAL_DEREF.
1741 Increase NUM_DEREFS if the memory expression is a potential
1743 Call update_mem_sym_stats_from_stmt.
1744 If the memory references memory, call
1745 update_mem_sym_stats_from_stmt for all the direct memory
1746 symbol references found.
1747 (intra_create_variable_infos): Set noalias_state field for
1748 pointer arguments according to the value of
1749 flag_argument_noalias.
1750 * tree-ssa-structalias.h (struct alias_info): Remove fields
1751 num_calls_found and num_pure_const_calls_found.
1752 (update_mem_sym_stats_from_stmt): Declare.
1753 * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
1754 Set default value to 100.
1755 (PARAM_AVG_ALIASED_VOPS): Define.
1757 2007-04-11 Richard Guenther <rguenther@suse.de>
1760 * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
1761 a * -b + c as c - a * b if we honor sign dependent rounding.
1763 2007-04-11 Bernd Schmidt <bernd.schmidt@analog.com>
1765 * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
1767 * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
1768 bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
1770 (initialize_trampoline): Don't use old-style function definition.
1771 (bfin_secondary_reload): Mark IN_P argument as unused.
1773 2007-04-10 Sebastian Pop <sebastian.pop@inria.fr>
1775 PR tree-optimization/31343
1776 * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
1777 (build_polynomial_chrec): Return a scalar when the evolution is zero.
1778 * testsuite/gcc.dg/vect/pr31343.c: New.
1780 2007-04-10 Eric Christopher <echristo@apple.com>
1782 * config/i386/i386.h (X87_FLOAT_MODE_P): New.
1783 * config/i386/i386.md (*cmpfp0): Use.
1784 (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
1785 (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
1786 (fix_trunc<mode>_i386_fisttp): Ditto.
1787 (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
1788 (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
1789 (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
1790 (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
1791 (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
1792 (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
1793 (unnamed_splitters): Ditto.
1794 * config/i386/i386.c (output_fix_trunc): Assert that
1795 we're not being passed a TFmode operand.
1797 2007-04-10 Zdenek Dvorak <dvorakz@suse.cz>
1799 PR tree-optimization/31526
1800 * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
1801 n_basic_blocks to find newly added blocks.
1803 2007-04-10 Uros Bizjak <ubizjak@gmail.com>
1805 * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
1807 (fix_trunc<mode>si_sse): Ditto.
1808 (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
1809 (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
1810 (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
1811 (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
1812 (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
1813 expander using SSEMODEF mode macro.
1814 (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
1815 expander using SSEMODEF mode macro.
1816 (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
1817 *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
1818 (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
1819 *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
1820 (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
1821 *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
1822 (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
1823 Macroize insn using X87MODEF mode macro.
1825 2007-04-09 H.J. Lu <hongjiu.lu@intel.com>
1827 * config/i386/sse.md (sse2_pinsrw): Removed.
1828 (sse2_pextrw): Renamed to ...
1829 (*sse2_pextrw): This.
1831 2007-04-09 Jan Hubicka <jh@suse.cz>
1834 * config/i386/sse.md
1835 (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
1836 (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
1837 (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
1838 (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
1840 2007-04-09 Jan Hubicka <jh@suse.cz>
1842 * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
1843 multiple fields of union.
1845 2007-04-09 Zdenek Dvorak <dvorakz@suse.cz>
1847 * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
1848 (create_preheaders): Check that loops are available.
1849 (fix_loop_structure): Clean up, improve comments.
1850 * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
1851 Check that loops are available. Set LOOP_CLOSED_SSA to the loops
1853 * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
1854 * predict.c (tree_estimate_probability): Do not call
1855 calculate_dominance_info. Call create_preheaders.
1856 * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
1857 rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
1859 * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
1860 * cfgloop.h (LOOP_CLOSED_SSA): New constant.
1861 * tree-cfg.c (tree_split_edge): Make an assert more precise.
1862 * tree-ssa-threadedge.c (thread_across_edge): Comment the function
1865 2007-04-08 Jan Hubicka <jh@suse.cz>
1867 * tree.h (maybe_fold_offset_to_component_ref): Declare.
1868 * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
1869 * fold-const.c (fold_unary): Use it.
1871 2007-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
1873 * varasm.c (assemble_variable): Remove call to
1874 lang_hooks.decls.prepare_assemble_variable.
1875 * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
1876 (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
1877 * langhooks.h (lang_hooks_for_decls): Remove
1878 prepare_assemble_variable.
1880 2007-04-08 Mike Stump <mrs@apple.com>
1882 * config/i386/i386.c: Use inc/dec on Core2.
1884 2007-04-08 Steven Bosscher <steven@gcc.gnu.org>
1886 * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
1887 lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1888 lhd_tree_inlining_end_inlining): Remove.
1889 * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
1890 add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
1892 * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
1893 lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1894 lhd_tree_inlining_end_inlining): Remove prototypes.
1895 (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
1896 LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
1897 LANG_HOOKS_TREE_INLINING_START_INLINING,
1898 LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
1900 * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
1903 2007-04-08 Anatoly Sokolov <aesok@post.ru>
1906 * config/avr/predicates.md (io_address_operand): Delete predicate.
1907 (low_io_address_operand): Don't use 'mode' argument.
1908 (higth_io_address_operand): Rename ...
1909 (high_io_address_operand): ... to this. Don't use 'mode' argument.
1910 * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
1913 2007-04-07 Daniel Berlin <dberlin@dberlin.org>
1915 Revert change removing staticp.
1917 2007-04-07 Anatoly Sokolov <aesok@post.ru>
1920 * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
1923 2007-04-07 Bruce Korb <bkorb@gnu.org>
1925 * c.opt: Add -Wformat-contains-nul.
1926 * c-format.c (set_Wformat): Set warn_format_contains_nul to the
1928 (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
1929 the NUL byte warning.
1931 2007-04-07 H.J. Lu <hongjiu.lu@intel.com>
1933 * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
1935 2007-04-06 Daniel Berlin <dberlin@dberlin.org>
1937 * tree.c (staticp): No longer use staticp langhook.
1938 * langhooks.c (lhd_staticp): Removed.
1939 * langhooks.h (struct lang_hooks): Remove staticp.
1940 * c-common.c (c_staticp): Remove.
1941 * c-common.h (c_staticp): Ditto.
1942 * langhooks-defs.h (lhd_staticp): Ditto.
1943 (LHD_HOOKS_STATICP): Ditto
1944 * tree.h (gcc_assert_lowered): New macro.
1946 2007-04-06 Zdenek Dvorak <dvorakz@suse.cz>
1948 * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
1949 argument "reliable".
1950 (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
1951 Add argument "reliable". Propagate it through calls.
1952 (infer_loop_bounds_from_undefined): Derive number of iterations
1953 estimates from references in blocks that do not dominate loop latch.
1954 (gcov_type_to_double_int): New function.
1955 (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
1956 and expected_loop_iterations_unbounded.
1957 * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
1958 (expected_loop_iterations): Use expected_loop_iterations_unbounded.
1959 * tree-data-ref.c (estimated_loop_iterations): Export.
1960 (get_references_in_stmt): Fix -- do not return addresses of local
1962 * cfgloop.h (expected_loop_iterations_unbounded,
1963 estimated_loop_iterations): Declare.
1965 2007-04-06 Andreas Tobler <a.tobler@schweiz.org>
1967 * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
1969 2007-04-06 Uros Bizjak <ubizjak@gmail.com>
1971 * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
1972 and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
1973 (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
1974 Use output_387_reg_move().
1975 (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
1976 expander using X87MODEF12 mode macro.
1977 (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
1978 choosing register preferences. Use output_387_reg_move().
1979 (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
1980 instead of "x". Use output_387_reg_move().
1981 (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
1982 *truncxfdf2_i387_noop. Macroize insn using X87MODEF12 mode macro.
1983 (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
1984 *truncxfdf2_i387. Macroize insn using X87MODEF12 mode macro.
1985 Use output_387_reg_move().
1986 (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
1988 (*truncxf?f_i387 splitter): Ditto.
1990 2007-04-06 Daniel Berlin <dberlin@dberlin.org>
1992 * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1993 LANG_HOOKS_SAFE_FROM_P.
1994 * expr.c (safe_from_p): Remove langhook call.
1995 * langhooks.h (lang_hooks): Remove safe_from_p.
1996 (lhd_safe_from_p): Remove prototype.
1997 * langhooks.c (lhd_safe_from_p): Remove.
1999 2007-04-06 Jan Hubicka <jh@suse.cz>
2001 * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
2004 2007-04-06 Uros Bizjak <ubizjak@gmail.com>
2006 * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
2007 * config/i386/i386.md (*movsf_1, *movdf_nointeger,
2008 *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
2009 *movxf_integer): Use output_387_reg_move() for x87 reg->mem
2011 (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
2012 *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
2014 2007-04-05 Richard Henderson <rth@redhat.com>
2016 * config/alpha/alpha.c (print_operand) [+]: Remove.
2017 (alpha_end_function): Print nop if call at end of function.
2018 * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
2019 * config/alpha/alpha.md (UNSPEC_LDGP1): New.
2020 (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
2021 (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
2022 (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
2023 the call pattern. Update peepholes to match.
2025 2007-04-05 Janis Johnson <janis187@us.ibm.com>
2027 * doc/extend.texi (Other Builtins): Add decimal float variants
2029 * builtins.def: Ditto.
2030 * builtins.c (expand_builtin): Ditto.
2032 2007-04-05 Uros Bizjak <ubizjak@gmail.com>
2033 H.J. Lu <hongjiu.lu@intel.com>
2036 * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
2037 of V8HImode when calling ix86_binary_operator_ok.
2038 (sse2_pmaddwd): Call ix86_binary_operator_ok.
2039 (sdot_prodv8hi): Operands 1 and 2 must be register.
2041 2007-04-05 Alexandre Oliva <aoliva@redhat.com>
2043 * tree-sra.c (try_instantiate_multiple_fields): Needlessly
2044 initialize align to silence bogus warning.
2046 2007-04-05 Alexandre Oliva <aoliva@redhat.com>
2049 * tree-sra.c (struct sra_elt): Add in_bitfld_block. Remove
2051 (struct sra_walk_fns): Remove use_all parameter from use.
2052 (sra_hash_tree): Handle BIT_FIELD_REFs.
2053 (sra_elt_hash): Don't hash bitfld blocks.
2054 (sra_elt_eq): Skip them in parent compares as well. Handle
2056 (sra_walk_expr): Don't maintain or pass down use_all_p.
2057 (scan_use): Remove use_all parameter.
2058 (scalarize_use): Likewise. Re-expand assignment to
2059 BIT_FIELD_REF of gimple_reg. De-scalarize before input or
2060 output, and re-scalarize after output. Don't mark anything
2062 (scalarize_ldst): Adjust.
2063 (scalarize_walk_gimple_modify_statement): Likewise.
2064 (build_element_name_1): Handle BIT_FIELD_REFs.
2065 (instantiate_element): Don't warn for any element whose parent
2067 (instantiate_missing_elements_1): Return the sra_elt.
2068 (canon_type_for_field): New.
2069 (try_instantiate_multiple_fields): New.
2070 (instantiate_missing_elemnts): Use them.
2071 (mark_no_warning): Removed.
2072 (generate_one_element_ref): Handle BIT_FIELD_REFs.
2073 (REPLDUP, sra_build_elt_assignment): New.
2074 (generate_copy_inout): Use them.
2075 (generate_element_copy): Likewise. Handle bitfld differences.
2076 (generate_element_zero): Don't recurse for blocks. Use
2077 sra_build_elt_assignment.
2078 (generate_one_element_int): Take elt instead of var. Use
2079 sra_build_elt_assignment.
2080 (generate_element_init_1): Adjust.
2081 (scalarize_use, scalarize_copy): Use REPLDUP.
2082 (scalarize_ldst): Move assert before dereference.
2083 (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2085 2007-04-05 Steven Bosscher <steven@gcc.gnu.org>
2087 * regmove.c: Fix unused variable warnings due to previous commit.
2089 2007-04-05 Steven Bosscher <steven@gcc.gnu.org>
2091 * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
2092 (regmove_bb_head): Remove.
2093 (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
2094 (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
2095 problems with fixup_match_1.
2096 Don't initialize/free regmove_bb_head.
2098 (reg_is_remote_constant_p): If an insn is in the same basic block
2099 but not before INSN, consider it remote, too.
2101 2007-04-05 Anatoly Sokolov <aesok@post.ru>
2104 * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
2105 DECL_ASSEMBLER_NAME, not the DECL_NAME.
2107 2007-04-05 H.J. Lu <hongjiu.lu@intel.com>
2109 * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
2110 (CONDITIONAL_REGISTER_USAGE): Likewise.
2112 2007-04-04 Richard Henderson <rth@redhat.com>
2114 * config/alpha/lib1funcs.asm: Remove unused file.
2116 2007-04-04 Brooks Moses <brooks.moses@codesourcery.com>
2119 * opts.c (print_specific_help): Fix --help=<language>
2121 (common_handle_option): Support --help=common.
2123 2007-04-04 Brooks Moses <brooks.moses@codesourcery.com>
2126 * gcc.c (main): Do not run the linker if
2127 print_subprocess_help indicates that it shouldn't be
2130 2007-04-04 Brooks Moses <brooks.moses@codesourcery.com>
2133 * doc/invoke.texi (--help=): Document <languages> value, fix
2134 formatting in tables of values.
2136 2007-04-04 Danny Smith <dannysmith.users.sourceforge.net>
2138 * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
2139 dllimport attribute of virtual methods.
2141 2007-04-04 Chen Liqin <liqin@sunnorth.com.cn>
2143 * config/score/crti.asm: Change _bss_start to __bss_start.
2144 * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
2145 (OUTGOING_REG_PARM_STACK_SPACE) update.
2146 * config/score/score.opt: add options to make backend support
2147 score5, score5u, score7 and score7d.
2148 * config/score/score.md: Likewise.
2149 * config/score/misc.md: Likewise.
2150 * config/score/mac.md: Likewise.
2151 * doc/invoke.texi: Likewise.
2152 * doc/md.texi: update constraints define.
2154 2007-04-03 Richard Henderson <rth@redhat.com>
2156 * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
2157 an appropriate type, use the mode instead.
2159 2007-04-03 Richard Sandiford <richard@codesourcery.com>
2161 * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
2162 Set the default --with-arch setting to mips2.
2163 * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
2164 (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2165 (MULTILIB_OSDIRNAMES): Delete.
2166 (MULTILIB_DIRNAMES): Define.
2167 * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
2168 (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
2169 (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
2170 definitions, except for _WRS_R3K_EXC_SUPPORT. Call
2171 VXWORKS_OS_CPP_BUILTINS.
2172 (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
2173 (MIPS_DEBUGGING_INFO): Undefine.
2174 (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
2176 2007-04-03 Jakub Jelinek <jakub@redhat.com>
2179 * fold-const.c (native_encode_real): Encode real.c provided longs
2180 as a series of 32-bit native integers.
2181 (native_interpret_real): Interpret buffer as a series of 32-bit
2184 2007-04-03 Richard Guenther <rguenther@suse.de>
2186 * genpreds.c (write_insn_constraint_len): Write function
2187 optimized for CONSTRAINT_LEN implementation.
2188 (write_tm_preds_h): Output insn_constraint_len inline and
2189 use it for CONSTRAINT_LEN.
2190 (write_insn_preds_c): Don't output insn_constraint_len.
2191 * doc/md.texi (define_register_constraint): Document multi-letter
2192 constraints shall have the same length if they start with the same
2195 2007-04-03 Uros Bizjak <ubizjak@gmail.com>
2198 * config/i386/i386.md (isinf<mode>2): Expand only when
2199 TARGET_C99_FUNCTIONS is set.
2201 2007-04-03 Uros Bizjak <ubizjak@gmail.com>
2203 * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
2204 (x86_64-*-linux*): Ditto.
2205 * config/i386/i386.opt (mpc): New option.
2206 * config/i386/i386.c (overrride_options): Handle
2207 ix87_precision_string.
2208 * config/i386/crtprec.c: New file.
2209 * config/i386/t-crtpc: Ditto.
2210 * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
2212 * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
2213 * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
2214 crtprec32.o, crtprec64.o and crtprec80.o.
2216 * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
2218 (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
2220 2007-04-02 Eric Christopher <echristo@apple.com>
2222 * doc/invoke.texi (i386 and x86-64 Options): Document -m64
2223 limitations on darwin.
2225 2007-04-02 Anatoly Sokolov <aesok@post.ru>
2228 * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
2230 2007-04-02 Dave Korn <dave.korn@artimi.com>
2232 * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
2234 2007-04-02 Dave Korn <dave.korn@artimi.com>
2236 * libgcc2.h (exception_descriptor): Don't forward-declare.
2237 (__get_eh_table_language, __get_eh_table_version): Delete
2238 prototypes of long-dead functions.
2240 2007-04-01 Daniel Berlin <dberlin@dberlin.org>
2242 * ebitmap.h: New file
2243 * ebitmap.c: New file
2244 * Makefile.in (ebitmap.o): New target.
2246 2007-04-01 Jan Hubicka <jh@suse.cz>
2248 * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
2249 before very first instruction.
2251 2007-04-01 Jan Hubicka <jh@suse.cz>
2253 * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
2254 waring on 64bit hosts.
2255 * bitmap.h: Fix typo in bitmap_head_def.
2257 2007-04-01 Steven Bosscher <steven@gcc.gnu.org>
2259 PR rtl-optimization/31391
2260 * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
2261 into a DELETED_LABEL note, and the label is in an empty basic
2262 block, update BB_END as well as BB_HEAD.
2264 2007-04-01 Richard Henderson <rth@redhat.com>
2266 PR tree-optimization/31169
2267 * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
2268 to varying if the range is outside [0, prec-1].
2270 2007-04-01 Richard Sandiford <richard@codesourcery.com>
2273 * config/mips/mips.md (load_const_gp): New insn.
2274 * config/mips/mips.c (mips_split_symbol): Avoid using or creating
2275 the MIPS16 GP pseudo register if no_new_pseudos.
2276 (mips16_gp_pseudo_reg): Use gen_load_const_gp.
2278 2007-03-31 Andrew Pinski <andrew_pinski@playstation.sony.com>
2281 * config/rs6000/rs6000.md (call): Convert to LR hard reg for
2283 (call_value): Likewise.
2285 2007-03-31 Wolfgang Bangerth <bangerth@dealii.org>
2286 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2289 * doc/invoke.texi: (optimization options): Reword description
2290 of -ffast-math. Document its primary purpose.
2292 2007-03-31 Richard Guenther <rguenther@suse.de>
2294 * omp-low.c (splay-tree.h): Include.
2295 (lookup_decl): Replace splay-tree usage by pointer-map.
2296 (maybe_lookup_decl): Likewise.
2297 (new_omp_context): Likewise.
2298 (delete_omp_context): Likewise.
2299 * gimplify.c (splay-tree.h): Include.
2300 * tree-inline.c (insert_decl_map): Replace splay-tree usage by
2302 (remap_ssa_name): Likewise.
2303 (remap_decl): Likewise.
2304 (remap_type_1): Likewise.
2305 (remap_type): Likewise.
2306 (copy_body_r): Likewise.
2307 (expand_call_inline): Likewise.
2308 (clone_body): Likewise.
2309 (copy_tree_r): Likewise.
2310 (remap_save_expr): Likewise.
2311 (unsave_r): Likewise.
2312 (unsave_expr_now): Likewise.
2313 (tree_function_versioning): Likewise.
2314 (build_duplicate_type): Likewise.
2315 * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
2316 (struct copy_body_data): Replace splay-tree by pointer-map.
2317 * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
2318 not $(SPLAY_TREE_H).
2319 (gimplify.o): Depend on $(SPLAY_TREE_H).
2320 (omp-low.p): Likewise.
2322 2007-03-31 Anatoly Sokolov <aesok@post.ru>
2324 * config/avr/predicates.md (even_register_operand,
2325 odd_register_operand): New predicates.
2326 * config/avr/avr.md (movw peephole2): New.
2327 (movw_r peephole2): New.
2329 2007-03-30 Rafael Avila de Espindola <espindola@google.com>
2331 * tree.h (get_signed_or_unsigned_type): New.
2332 * fold-const.c (operand_equal_for_comparison_p): Use
2333 get_signed_or_unsigned_type instead of
2334 lang_hooks.types.signed_or_unsigned_type.
2335 * expr.c (store_expr): Ditto.
2336 * langhooks.c (get_signed_or_unsigned_type): New.
2337 (lhd_signed_or_unsigned_type): New.
2338 * langhooks.h (lhd_signed_or_unsigned_type): New.
2339 * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
2341 2007-03-30 Richard Henderson <rth@redhat.com>
2343 * tree-ssa-loop-ivopts.c: Include target.h.
2344 (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
2345 (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
2346 (force_expr_to_var_cost): Use produce_memory_decl_rtl.
2347 * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
2349 2007-03-30 Richard Henderson <rth@redhat.com>
2350 Kai Tietz <kai.tietz@onevision.com>
2352 * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
2354 (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
2355 (TARGET_64BIT_MS_ABI): New.
2356 (DBX_REGISTER_NUMBER): Handle 64-bit.
2357 (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
2358 (LONG_TYPE_SIZE): Force to 32.
2359 (REG_PARM_STACK_SPACE): New.
2360 (OUTGOING_REG_PARM_STACK_SPACE): New.
2361 (REGPARM_MAX, SSE_REGPARM_MAX): New.
2362 (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
2363 (STACK_BOUNDARY): Use 128 for 64-bit.
2364 * config/i386/cygwin.asm: Use push/ret to preserve call stack.
2365 Add 64-bit implementation.
2366 * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
2368 * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
2369 (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
2370 Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
2371 for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
2372 (ix86_handle_cconv_attribute): Don't warn when ignoring if
2373 TARGET_64BIT_MS_ABI.
2374 (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
2375 (ix86_pass_by_reference): Likewise.
2376 (ix86_function_value_regno_p): Likewise.
2377 (ix86_build_builtin_va_list): Likewise.
2378 (ix86_va_start, ix86_gimplify_va_arg): Likewise.
2379 (function_arg_advance_ms_64): New.
2380 (function_arg_advance): Call it.
2381 (function_arg_ms_64): New.
2382 (function_arg): Call it.
2383 (function_value_ms_64): New.
2384 (ix86_function_value_1): Call it.
2385 (return_in_memory_ms_64): New.
2386 (ix86_return_in_memory): Call it.
2387 (setup_incoming_varargs_ms_64): New.
2388 (ix86_setup_incoming_varargs): Call it.
2389 (ix86_expand_prologue): Handle 64-bit stack probing.
2390 (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
2391 (output_pic_addr_const): Likewise.
2392 (x86_this_parameter): Likewise.
2393 (x86_output_mi_thunk): Likewise.
2394 (x86_function_profiler): Likewise.
2395 (TARGET_STRICT_ARGUMENT_NAMING): New.
2396 * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
2397 (TARGET_64BIT_MS_ABI): New.
2398 (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
2399 * config/i386/i386.md (allocate_stack_worker): Remove.
2400 (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
2401 describe the clobber of eax without a match_scratch.
2402 (allocate_stack_worker_postreload): Remove.
2403 (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
2404 describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
2405 (allocate_stack_worker_rex64_postreload): Remove.
2406 (allocate_stack): Handle 64-bit.
2407 * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
2408 * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
2409 (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
2410 (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
2411 (STANDARD_STARTFILE_PREFIX_1): Likewise.
2412 * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
2413 * config.build (x86_64-*-mingw*): New host.
2414 * config.host (x86_64-*-mingw*): New host.
2415 * config.gcc (x86_64-*-mingw*): New target.
2416 * gthr-win32.h (__gthread_key_create): Mark dtor unused.
2418 2007-03-30 Richard Henderson <rth@redhat.com>
2419 Kai Tietz <kai.tietz@onevision.com>
2421 * c-pragma.c (struct def_pragma_macro_value): New.
2422 (struct def_pragma_macro): New.
2423 (pushed_macro_table): New.
2424 (dpm_hash, dpm_eq): New.
2425 (handle_pragma_push_macro, handle_pragma_pop_macro): New.
2426 (init_pragma): Install them.
2427 * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
2429 2007-03-30 Anatoly Sokolov <aesok@post.ru>
2431 * config/avr/avr.c (avr_override_options): Clear
2432 'flag_delete_null_pointer_checks'.
2434 2007-03-30 Paolo Carlini <pcarlini@suse.de>
2437 * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
2438 RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
2439 RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
2440 RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
2441 RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
2442 RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
2443 RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
2445 * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
2447 2007-03-30 Steven Bosscher <steven@gcc.gnu.org>
2449 * regmove.c: Move all of pass_stack_adjustments from here...
2450 * combine-stack-adj.c: ...to this new file.
2451 * Makefile.in: Add rules for combine-stack-adj.o.
2453 2007-03-30 Zdenek Dvorak <dvorakz@suse.cz>
2455 PR tree-optimization/31383
2456 * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
2457 to have the same length.
2459 2007-03-30 Jan Hubicka <jh@suse.cz>
2462 * dwarf2out.c (reference_to_unused): Ask cgraph for functions
2463 availablility; add more sanity checking; ask varpool only about
2466 2007-03-29 Richard Henderson <rth@redhat.com>
2468 * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
2469 to decide, but __SIZEOF_LONG_LONG__.
2471 2007-03-29 Richard Henderson <rth@redhat.com>
2473 * emutls.c (struct __emutls_array): New.
2474 (emutls_destroy): Use it instead of casting element 0 from void*.
2475 (__emutls_get_address): Likewise.
2477 2007-03-29 Richard Henderson <rth@redhat.com>
2479 * varasm.c (initializer_constant_valid_p): Don't deny
2480 DECL_DLLIMPORT_P on functions.
2482 * config/i386/cygming.h: Remove function declarations.
2483 (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
2484 (ASM_OUTPUT_LABELREF): Remove.
2485 (COMMON_ASM_OP): Remove.
2486 (ASM_OUTPUT_COMMON): Remove.
2487 (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
2488 (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
2489 (ASM_DECLARE_FUNCTION_NAME): Likewise.
2490 * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
2491 Rename from TARGET_ENCODE_SECTION_INFO.
2492 * config/i386/netware.h: Likewise.
2493 * config/i386/i386-protos.h: Update.
2494 * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
2495 of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
2496 (legitimate_constant_p): Reject dllimports.
2497 (dllimport_map, get_dllimport_decl): New.
2498 (legitimize_dllimport_symbol): New.
2499 (legitimize_address, ix86_expand_move): Use it.
2500 (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
2501 * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
2502 (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
2503 (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
2504 * config/i386/predicates.md (constant_call_address_operand): Only
2505 accept symbols; reject dllimport_p symbols.
2506 * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
2507 i386_pe_maybe_record_exported_symbol.
2508 * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
2509 (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
2510 (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
2511 trust the setting of DECL_DLLIMPORT_P.
2512 (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
2513 (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
2514 (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
2515 tidy the argument scanning loop.
2516 (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
2517 SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
2518 (i386_pe_strip_name_encoding): Remove.
2519 (i386_pe_binds_local_p): New.
2520 (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
2521 (i386_pe_output_labelref): Remove.
2522 (i386_pe_asm_output_aligned_decl_common): New.
2523 (i386_pe_maybe_record_exported_symbol): Rename from
2524 i386_pe_record_exported_symbol; check for dllexported symbols.
2526 2007-03-29 Zack Weinberg <zack@mrtock.ucsd.edu>
2528 * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
2529 add comment explaining why vsnprintf cannot be used.
2531 2007-03-29 Douglas Gregor <doug.gregor@gmail.com>
2533 PR tree-optimization/30666
2534 * tree.c (build_complex_type): When creating type names for DWARF2
2535 debug info, create TYPE_DECLs for TYPE_NAME instead of
2537 (build_common_tree_nodes_2): Use build_complex_type when building
2538 predefined complex types, to preserve canonical types.
2540 2007-03-29 Steven Bosscher <steven@gcc.gnu.org>
2542 * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
2543 (noce_get_alt_condition): Look at it to determine whether to
2544 reverse the condition or not.
2545 (noce_get_condition): Substitute the truth for lies.
2546 (noce_find_if_block): Set the then_else_reversed field.
2548 2007-03-29 Lars Poeschel <larsi@wh2.tu-dresden.de>
2550 * config/fr30/fr30.md (movdi): Do not accept immediates as the
2551 destination of this insn.
2552 * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
2553 than calling gen_rtx_SET directly. Use r0 to hold the value of
2554 'address + 4' rather than a stack based temporary which can be
2557 2007-03-29 Andreas Krebbel <krebbel1@de.ibm.com>
2559 * config/s390/s390.c (s390_secondary_input_reload_class,
2560 s390_secondary_output_reload_class): Functions removed.
2561 (s390_secondary_reload): New function.
2562 (TARGET_SECONDARY_RELOAD): Target macro defined.
2563 * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
2564 SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
2565 * config/s390/s390.md ("reload_outti", "reload_outdi",
2566 "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
2567 "reload_out<mode>"): Expanders removed.
2568 ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
2569 "reload<mode>_nonoffmem_out"): Expanders added.
2571 2007-03-29 Andreas Krebbel <krebbel1@de.ibm.com>
2573 * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
2574 SRC->DEST replacement failed anyway.
2576 2007-03-28 Mike Stump <mrs@apple.com>
2578 * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
2579 * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
2580 * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
2582 2007-03-28 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2584 * config.gcc: Accept barcelona as a variant of amdfam10.
2585 * config/i386/i386.c (override_options): Likewise.
2586 * doc/invoke.texi: Likewise.
2588 2007-03-28 Eric Botcazou <ebotcazou@adacore.com>
2590 * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
2591 offsets for BIT_FIELD_REF and COMPONENT_REF.
2593 2007-03-28 Richard Guenther <rguenther@suse.de>
2595 * tree.c (is_global_var): Move ...
2596 * tree-flow-inline.h (is_global_var): ... here.
2597 * tree.h (is_global_var): Remove declaration.
2599 2007-03-28 Uros Bizjak <ubizjak@gmail.com>
2601 * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
2603 (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
2604 * config/i386/i386.c (ix86_tune_features): Initialize new
2606 * config/i386/predicates.md (promotable_binary_operator): Use
2607 TARGET_TUNE_PROMOTE_HIMODE_IMUL.
2609 2007-03-28 Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
2612 * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
2614 2007-03-28 Lars Poeschel <larsi@wh2.tu-dresden.de>
2616 * config/fr30/fr30.md (movsi_internal): Change destination
2617 constraint from m to V and add m to the end.
2619 2007-03-28 Christian Bruel <christian.bruel@st.com>
2621 * config/sh/sh.md (movsi_i): Fix type attribute.
2623 2007-03-28 Christian Bruel <christian.bruel@st.com>
2625 * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
2626 (movsf_ie): Likewise.
2628 2007-03-28 Christian Bruel <christian.bruel@st.com>
2630 * config.gcc: Add sh4-300 to multilib.
2631 * config/sh/t-mlib-sh4-300: New file.
2633 2007-03-28 Andreas Krebbel <krebbel1@de.ibm.com>
2635 * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
2636 ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
2638 ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
2639 fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
2640 ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
2641 "fixuns_trunctddi2"): Whitespace fix.
2643 2007-03-28 Kaz Kojima <kkojima@gcc.gnu.org>
2645 * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
2646 the definition of struct sh_args.
2647 (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
2648 CALL_COOKIE_INT_REG_GET): Likewise.
2650 2007-03-28 Steven Bosscher <steven@gcc.gnu.org>
2652 * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
2653 transformations are applied successfully.
2655 2007-03-27 Douglas Gregor <doug.gregor@gmail.com>
2657 * tree.c (tree_contains_struct): Permit 512 tree codes.
2658 * tree.h (tree_contains_struct): Ditto.
2659 (MAX_TREE_CODES): Ditto.
2660 (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
2661 SPARE member to store remaining padding bits.
2663 2007-03-27 Anatoly Sokolov <aesok@post.ru>
2665 * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
2668 2007-03-27 Janis Johnson <janis187@us.ibm.com>
2670 * configure.ac: Fix assembler test for powerpc*-linux decimal float.
2671 * configure: Regenerate.
2673 * configure: Regenerate using the correct version of autoconf.
2675 2007-03-27 Anatoly Sokolov <aesok@post.ru>
2677 * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
2679 * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
2680 regs to "__SP_L__" and "__SP_H__".
2682 2007-03-27 Richard Guenther <rguenther@suse.de>
2684 * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
2685 computations with it with a HOST_WIDE_INT variable.
2687 2007-03-26 Mike Stump <mrs@apple.com>
2689 * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
2690 objective-c-header, objective-c++-header and objc++-cpp-output
2692 * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
2694 2007-03-26 Richard Henderson <rth@redhat.com>
2697 * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
2698 IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
2699 IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
2700 IX86_BUILTIN_PSRLQ128): New.
2701 (ix86_init_mmx_sse_builtins): Add them.
2702 (ix86_expand_builtin): Expand them.
2703 * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
2704 operand 2 be TImode.
2705 * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
2706 _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
2707 _mm_srli_epi64): Mark __B const.
2708 (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
2709 (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
2710 _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
2711 new two-vector shift builtins.
2713 2007-03-26 Ian Lance Taylor <iant@google.com>
2715 PR tree-optimization/31345
2716 * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
2717 [+INF, +INF(OVF)] into VARYING.
2719 2007-03-26 Zack Weinberg <zackw@panix.com>
2721 * gengtype-parse.c: New file.
2722 * gengtype-yacc.y: Delete.
2723 * gengtype-lex.l: Don't include gengtype-yacc.h.
2724 Define YY_DECL and yyterminate appropriately for recursive
2725 descent parser. yylval is now a string out-parameter to yylex.
2726 (HWS, EOID): New shorthand.
2727 (IWORD): Add a couple more types.
2728 (yylex): Add a setup stanza. Remove the complex rules for
2729 detecting GTY'ed types and typedefs; replace with simple
2730 keyword detectors. Adjust everything for the changed
2731 definition of yylval. Ignore all pp-directives, not just #define.
2733 (parse_file): Rename yybegin; do not call yyparse.
2735 * gengtype.c (xasprintf): Export again.
2736 (this_file): New. Use everywhere __FILE__ was being used.
2737 (get_lang_bitmap): Special case types defined in gengtype.c.
2738 (do_typedef, new_structure): Suppress definition of certain types.
2739 (new_structure): Improve diagnostics of duplicate definitions.
2740 Make sure location_s is associated with input.h.
2741 (nreverse_pairs, define_location_structures): New functions.
2742 (main): Improve tagging of kludge types. Remove old kludges
2743 for input.h types; use define_location_structures.
2744 * gengtype.h: Update prototypes. Define token codes here.
2745 * Makefile.in: Remove all references to gengtype-yacc.
2746 Add rules for gengtype-parse.o. Adjust rules for gengtype-lex.o
2748 * bitmap.h (struct bitmap_head_def): Coalesce definitions,
2749 add GTY((skip)) to the field that's only conditionally there.
2750 * doc/install.texi: Document that Bison is no longer required
2751 unless building treelang.
2753 * gengtype.c: Don't include gtyp-gen.h.
2754 (srcdir): Declare here.
2755 (base_files, lang_dir_names): Allocate dynamically.
2756 (gt_files, num_gt_files, num_lang_dirs): New globals.
2757 (measure_input_list, read_input_line, read_input_list)
2758 (set_lang_bitmap): New functions.
2759 (get_base_file_bitmap): Rename get_lang_bitmap and drastically
2760 simplify, relying on read_input_list to set up the bitmaps.
2761 (main): Arguments are no longer unused. Check for correct number
2762 of command line arguments, set srcdir and srcdir_len, then call
2763 read_input_list, before doing anything else. No need to worry
2764 about duplicates in main loop.
2765 * configure.ac: Simplify the calculation of all_gtfiles.
2766 Put language tags in there. Don't set or substitute
2767 all_gtfiles_files_langs or all_gtfiles_files_frags.
2768 * Makefile.in: Revamp the way gengtype is invoked, now that it
2769 takes a file on its command line with a much simpler format.
2770 Remove or replace with gtyp-input.list all references to gtyp-gen.h.
2771 (GTFILES): Remove duplicates and C source files.
2772 * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
2773 * objcp/config-lang.in: Add c-pragma.h to gtfiles.
2774 * configure: Regenerate.
2776 * gengtype.h: Remove all type definitions to gengtype.c; leave
2777 only definitions of options_p, type_p, and pair_p as opaque
2778 pointers. Update prototypes.
2779 * gengtype.c: Many type definitions moved here from gengtype.h.
2780 Consolidate type definitions at the top of the file.
2781 (xvasprintf): Delete.
2782 (xasprintf): Make static.
2783 (create_nested_pointer_option): Add 'next' parameter.
2784 (create_field_all, create_field_at): New functions.
2785 (create_field): Now a thin wrapper around create_field_all.
2786 (create_optional_field): Rename create_optional_field_ and add
2787 line argument. Original name is now a macro which supplies
2789 (oprintf): Use vsnprintf directly.
2790 (close_output_files): Use fatal rather than perror/exit.
2791 (note_def_vec, note_def_vec_alloc): Use create_field_at.
2792 (main): Set progname. Don't use exit.
2793 * gengtype-yacc.y (struct_fields): Use create_field_at.
2794 (option, optionseqopt): Delete.
2795 (optionseq): Consolidate productions from option here so we
2796 can use the first argument to create_option.
2798 * gengtype-lex.l: Distinguish unions from structures in the
2799 token type. Don't call find_structure; return the tag as a string.
2800 * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
2801 Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
2802 Reorganize typedef_struct production accordingly.
2803 Use create_nested_ptr_option.
2804 * gengtype.c (create_nested_ptr_option): New function.
2805 * gengtype.h: Declare it.
2807 * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
2808 (string_type): Don't declare.
2809 (do_scalar_typedef): Declare.
2810 (create_scalar_type): Update prototype.
2811 * gengtype.c (string_type): Make static.
2812 (scalar_nonchar, scalar_char): New.
2813 (do_scalar_typedef): Export. Always use scalar_nonchar for the type.
2814 (resolve_typedef): Use scalar_nonchar for error recovery.
2815 (create_scalar_type): Remove name_len field. Return scalar_char
2816 or scalar_nonchar as appropriate.
2817 (adjust_field_type): Look at scalar_is_char boolean to decide whether
2819 (throughout): Use scalar_nonchar instead of calling create_scalar_type,
2821 (main): Initialize scalar_char and scalar_nonchar before calling
2823 * gengtype-lex.l: Adjust for removal of second argument to
2824 create_scalar_type. Use yylval.s instead of yylval.t when
2826 * gengtype-yacc.y: Type of SCALAR is string. Call
2827 create_scalar_type from type:SCALAR rule. Adjust for removal of
2828 second argument to create_scalar_type.
2830 * vec.h: Remove all #if IN_GENGTYPE blocks.
2831 Add comment saying that changes may require adjustments to gengtype.
2832 * gengtype.c: Don't include coretypes.h or tm.h.
2833 Add comment to inclusion of errors.h.
2834 (note_def_vec, note_def_vec_alloc): New functions.
2835 * gengtype.h: Declare new functions.
2836 * gengtype-lex.l: Don't include coretypes.h.
2837 (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
2839 (update_lineno): Remove unnecessary prototype.
2840 (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
2841 (VEC rule): Just return VEC_TOKEN.
2842 * gengtype-yacc.y (VEC_TOKEN): New token type.
2843 (type): Add a production for VEC(a,b).
2844 * Makefile.in: Update dependencies.
2846 * gengtype-lex.l: Remove rules for parsing pointer-to-function
2847 typedefs that use the old PARAMS macro.
2849 * gengtype-lex.l: Remove all rules and states relating to yacc
2851 * gengtype-yacc.y: Similarly.
2852 * gengtype.c (note_yacc_type): Delete function.
2853 * gengtype.h: Update prototypes.
2855 2007-03-26 Joseph Myers <joseph@codesourcery.com>
2857 * tree-pretty-print.c (dump_generic_node): Report precision of
2858 unnamed integer types.
2860 2007-03-26 Steven Bosscher <steven@gcc.gnu.org>
2862 * ifcvt.c (noce_try_store_flag_constants): Don't check
2863 no_new_pseudos here.
2864 (noce_try_store_flag_constants): Don't check no_new_pseudos.
2865 (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
2866 noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
2867 noce_try_sign_mask): Likewise.
2868 (if_convert): Check no_new_pseudos here.
2870 (cond_exec_process_if_block, noce_process_if_block, find_if_block):
2872 (struct noce_if_info): Add then_bb, else_bb, join_bb members.
2873 (noce_get_condition): Handle new then_else_reversed argument.
2874 (noce_init_if_info): Remove, fold into noce_find_if_block.
2875 (noce_process_if_block): Take a struct noce_if_info as the
2876 argument. Don't set up one based on ce_if_info. Update pointer
2877 references accordingly.
2878 (cond_move_process_if_block): Likewise.
2879 (process_if_block): Removed.
2880 (find_if_block): Removed. Move functionality two new functions,
2881 noce_find_if_block and cond_exec_find_if_block.
2882 (noce_find_if_block): New function. Be aware of IF-THEN-JOIN
2883 blocks and the symmetric IF-ELSE-JOIN case.
2884 (cond_exec_find_if_block): Also new function mostly based on old
2885 find_if_block and process_if_block.
2886 (find_if_header): Replace find_if_block call with separately
2887 guarded calls to noce_find_if_block and cond_exec_find_if_block.
2888 (find_cond_trap): Update noce_get_condition call.
2889 (dead_or_predicable): Likewise.
2891 2007-03-26 Jakub Jelinek <jakub@redhat.com>
2893 * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
2895 (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
2896 IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
2897 IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
2898 (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
2899 v4si_ftype_v4si_v2di. Remove __builtin_ia32_psllw128,
2900 __builtin_ia32_pslld128, __builtin_ia32_psllq128,
2901 __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
2902 __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
2903 __builtin_ia32_psrad128 builtins.
2905 2007-03-26 Uros Bizjak <ubizjak@gmail.com>
2907 * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
2908 * config/i386/constraints.md
2909 (define_constraint "I"): Use IN_RANGE macro.
2910 (define_constraint "J"): Ditto.
2911 (define_constraint "K"): Ditto.
2912 (define_constraint "M"): Ditto.
2913 (define_constraint "N"): Ditto.
2914 (define_constraint "O"): Ditto.
2915 * config/i386/predicates.md
2916 (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
2917 (define_predicate "const_0_to_3_operand"): Ditto.
2918 (define_predicate "const_0_to_7_operand"): Ditto.
2919 (define_predicate "const_0_to_15_operand"): Ditto.
2920 (define_predicate "const_0_to_63_operand"): Ditto.
2921 (define_predicate "const_0_to_255_operand"): Ditto.
2922 (define_predicate "const_1_to_31_operand"): Ditto.
2923 (define_predicate "const_2_to_3_operand"): Ditto.
2924 (define_predicate "const_4_to_7_operand"): Ditto.
2926 2007-03-25 David Edelsohn <edelsohn@gnu.org>
2928 * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
2929 in SImode for save_world.
2930 * config/rs6000/altivec.md (save_world, restore_world): Convert to
2933 2007-03-25 Dorit Nuzman <dorit@il.ibm.com>
2935 PR tree-optimization/30784
2936 * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
2939 2007-03-25 Revital Eres <eres@il.ibm.com>
2941 * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
2942 Fold movement_possibility function into it.
2944 2007-03-25 David Edelsohn <edelsohn@gnu.org>
2946 * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
2947 (load_macho_picbase_{si,di}): Convert to LR hard reg.
2948 (call_indirect_nonlocal_darwin64): Same.
2949 (call_nonlocal_darwin64): Same.
2950 (call_value_indirect_nonlocal_darwin64): Same.
2951 (call_value_nonlocal_darwin64): Same.
2952 (sibcall_nonlocal_darwin64): Same.
2953 (sibcall_value_nonlocal_darwin64): Same.
2954 (sibcall_symbolic_64): Same.
2955 (sibcall_value_symbolic_64): Same.
2956 * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
2958 (rs6000_emit_load_toc_table): Same.
2959 * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
2960 * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
2966 (load_toc_v4_pic_si): Same
2967 (load_toc_v4_PIC_1): Same.
2968 (load_toc_v4_PIC_1b): Same.
2969 (call_indirect_aix{32,64}): Same.
2970 (call_value_indirect_aix{32,64}): Same.
2973 (call_local{32,64}): Same.
2974 (call_value_local{32,64}): Same.
2975 (call_indirect_nonlocal_aix{32,64}): Same.
2976 (call_nonlocal_aix{32,64}): Same.
2977 (call_value_indirect_nonlocal_aix{32,64}): Same.
2978 (call_value_nonlocal_aix{32,64}): Same.
2979 (call_indirect_nonlocal_sysv<mode>): Same.
2980 (call_nonlocal_sysv<mode>): Same.
2981 (call_value_indirect_nonlocal_sysv<mode>): Same.
2982 (call_value_nonlocal_sysv<mode>): Same.
2984 (sibcall_local{32,64}): Same.
2985 (sibcall_value_local{32,64}): Same.
2986 (sibcall_nonlocal_aix{32,64}): Same.
2987 (sibcall_value_nonlocal_aix{32,64}): Same.
2988 (sibcall_nonlocal_sysv<mode>): Same.
2989 (sibcall_value): Same.
2990 (sibcall_value_nonlocal_sysv<mode>): Same.
2992 2007-03-24 Paul Brook <paul@codesourcery.com>
2994 * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
2995 * config/arm/linux-eabi.h: Remove legacy syscall hack.
2997 2007-03-24 Richard Henderson <rth@redhat.com>
2999 * config/ia64/constraints.md: New file.
3000 * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
3001 satisfies_constraint_?.
3002 * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
3003 ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
3004 ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
3005 ia64_output_mi_thunk): Likewise.
3006 (ia64_const_ok_for_letter_p): Remove.
3007 (ia64_const_double_ok_for_letter_p): Remove.
3008 (ia64_extra_constraint): Remove.
3009 * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
3010 (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
3011 CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
3012 CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
3013 CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
3014 EXTRA_MEMORY_CONSTRAINT): Remove.
3015 * config/ia64/ia64.md: Include constriants.md. Replace
3016 CONST_OK_FOR_? with satisfies_constraint_?.
3018 2007-03-23 Michael Meissner <michael.meissner@amd.com>
3019 H.J. Lu <hongjiu.lu@intel.com>
3021 * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
3023 (name macros): Use DPD_BID_NAME to convert names properly.
3025 * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
3026 decimal floating point format.
3027 (init_floating_libfuncs): Change decimal functions so that they
3028 have a "bid_" prefix if the decimal system uses the BID format,
3029 and "dpd_" prefix if the decimal system uses the DPD format.
3030 (init_interclass_conv_libfuncs): Ditto.
3031 (init_intraclass_conv_libfuncs): Ditto.
3033 * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3034 using the BID format.
3036 * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3037 whether we are using the BID decimal format.
3038 * configure: Regenerate.
3040 * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3041 the compiler has decimal floating point enabled. Define
3042 __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3045 * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3046 using the BID format.
3048 * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3049 whether we are using the BID decimal format.
3050 * configure: Regenerate.
3052 * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3053 the compiler has decimal floating point enabled. Define
3054 __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3057 * doc/install.texi (--enable-decimal-float): Document BID and DPD
3058 options, and that it is enabled for i386/x86_64 systems.
3060 * Makefile.in (enable_decimal_float): New.
3062 (DECNUMINC): Add -I$(DECNUMFMT).
3063 (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
3064 to $(DECNUMFMT) from $(DECNUM).
3066 * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
3067 Substitute enable_decimal_float.
3068 * configure: Regenerated.
3071 * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
3074 * configure.ac: Enable decimal float for x86_64-*-linux*.
3075 * configure: Regenerated.
3078 * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
3079 decimal128ClearSign to flip and clear the sign bit in decimal128.
3080 (decimal_real_maxval): Set decimal128SetSign to set the sign
3083 2007-03-23 Ian Lance Taylor <iant@google.com>
3085 * fold-const.c (fold_binary): Correct warning for X - c >= X.
3087 2007-03-23 Ian Lance Taylor <iant@google.com>
3089 * tree-dump.c (dump_files): Correct comment.
3091 2007-03-23 Ian Lance Taylor <iant@google.com>
3093 * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
3095 2007-03-23 Steven Bosscher <steven@gcc.gnu.org>
3097 * tracer.c (tracer): Don't take FLAGS argument. Assert we are
3098 in cfglayout mode. Don't go into and out of cfglayout mode.
3099 Link the blocks in the order of the constructed traces.
3100 (rest_of_handle_tracer): Adjust call to tracer.
3101 * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
3102 Don't go into cfglayout mode.
3103 (rtl_loop_done): Don't go out of cfglayout mode.
3104 * cfglayout.c (relink_block_chain): New function, split out from...
3105 (fixup_reorder_chain): ...here. Remove redundant checking.
3106 (cfg_layout_finalize): Don't clear the header, footer, and aux
3107 fields here, move the code to do so to relink_block_chain. Likewise
3108 for free_original_copy_tables.
3109 * rtl.h (tracer): Update prototype.
3110 * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
3111 Assert we are in cfglayout mode. Don't go into and out of cfglayout
3112 mode. Use relink_block_chain to serialize the CFG according to the
3113 new basic block order. Move targetm.cannot_modify_jumps_p check from
3115 (gate_handle_reorder_blocks): ...to here.
3116 (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
3118 (gate_duplicate_computed_gotos): ...to here.
3119 (rest_of_handle_reorder_blocks): Don't see if anything has changed,
3120 something always changes when going into and out of cfglayout mode.
3121 Perform an expensive cfg cleanup while going into cfglayout mode.
3122 Always update liveness information on HAVE_conditional_execution
3123 targets. Reserialize the basic blocks and go out of cfglayout mode.
3124 * reg-stack.c: Include cfglayout.h.
3125 (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
3126 the call to reorder_basic_blocks.
3127 * basic-block.h (reorder_basic_blocks): Update prototype.
3128 (relink_block_chain): New prototype.
3129 * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
3131 2007-03-23 Joseph Myers <joseph@codesourcery.com>
3133 * config/mips/mips.md (type, hazard, *movdi_32bit,
3134 *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
3135 *movhi_internal, *movqi_internal, *movsf_hardfloat,
3136 *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
3137 movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
3138 mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
3140 (movcc): Change first xfer to multi.
3141 * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
3142 config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
3143 config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
3144 config/mips/generic.md: Change reservations using "xfer" to use
3146 * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
3147 using match_operand.
3148 (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
3149 * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
3151 (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
3153 2007-03-22 Richard Henderson <rth@redhat.com>
3155 * config/i386/i386.c: Remove unnecessary function declarations.
3156 Move targetm definition, and all related macros, to the end of
3157 the file. Resort some functions to put definitions before uses.
3158 (ix86_attribute_table): Make static. Move to end of file.
3159 (ix86_gimplify_va_arg): Make static.
3161 2007-03-22 Richard Henderson <rth@redhat.com>
3163 * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
3164 don't increase local_regparm with force_align_arg_pointer check.
3165 (ix86_function_sseregparm): Assert 32-bit.
3166 (type_has_variadic_args_p): New.
3167 (ix86_return_pops_args): Early exit for 64-bit. Reindent; use
3168 type_has_variadic_args_p.
3169 (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
3170 (init_cumulative_args): Remove TARGET_DEBUG_ARG. Remove zero_cum;
3171 use memset instead. Do maybe_vaarg check first; skip attribute
3172 tests if true; skip attribute tests for 64-bit.
3173 (construct_container): Remove TARGET_DEBUG_ARG.
3174 (function_arg_advance_32, function_arg_advance_64): Split out ...
3175 (function_arg_advance): ... from here.
3176 (function_arg_32, function_arg_64): Split out ...
3177 (function_arg): ... from here.
3178 (ix86_pass_by_reference): Tidy.
3179 (ix86_function_value_regno_p): Rearrange w/ switch on regno.
3180 (function_value_32): New, from parts of ix86_function_value
3181 and ix86_value_regno.
3182 (function_value_64): New, from parts of ix86_function_value
3183 and ix86_libcall_value.
3184 (ix86_function_value_1): New.
3185 (ix86_function_value, ix86_libcall_value): Use it.
3186 (return_in_memory_32, return_in_memory_64): Split out ...
3187 (ix86_return_in_memory): ... from here.
3188 (ix86_struct_value_rtx): Skip for 64-bit.
3189 (ix86_libcall_value, ix86_value_regno): Remove.
3190 (setup_incoming_varargs_64): Split out ...
3191 (ix86_setup_incoming_varargs): ... from here.
3192 (ix86_va_start): Remove TARGET_DEBUG_ARG.
3193 (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
3194 * config/i386/i386-protos.h (ix86_function_value): Remove.
3195 * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
3197 2007-03-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3200 * c-lex.c (interpret_float): On overflow, emit pedantic warning if
3201 infinities not supported, otherwise emit warning if -Woverflow. On
3202 underflow, emit warning if -Woverflow.
3203 * real.c (real_from_string): Return -1 if underflow, +1 if overflow
3205 * real.h (real_from_string): Update declaration
3207 2007-03-22 Kai Tietz <kai.tietz@onevision.com>
3208 Richard Henderson <rth@redhat.com>
3210 * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
3211 * calls.c (compute_argument_block_size, expand_call,
3212 emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
3213 * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
3214 * function.c (STACK_DYNAMIC_OFFSET): Likewise.
3215 * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
3216 * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
3217 config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
3218 config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
3219 config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
3222 2007-03-22 Joseph Myers <joseph@codesourcery.com>
3224 * c-incpath.c (add_sysroot_to_chain): New.
3225 (merge_include_chains): Add sysroot argument. Call
3226 add_sysroot_to_chain if sysrooted.
3227 (register_include_chains): Update call to merge_include_chains.
3228 * doc/cppopts.texi: Document use of '=' in include directory
3231 2007-03-22 Uros Bizjak <ubizjak@gmail.com>
3233 * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
3234 Macroize expander using SSEMODEF mode macro. Use SSE_FLOAT_MODE_P.
3235 (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
3236 insn pattern using X87MODEF12 mode macro.
3238 2007-03-21 Seongbae Park <seongbae.park@gmail.com>
3240 * regmove.c (regmove_optimize): Use reg_mentioned_p
3241 instead of reg_overlap_mentioned_p for DST.
3243 2007-03-21 Mike Stump <mrs@apple.com>
3245 * c.opt: Fixup for Objective-C/C++.
3247 2007-03-21 Steve Ellcey <sje@cup.hp.com>
3249 * explow.c (convert_memory_address): Fold memory reference when
3250 POINTERS_EXTEND_UNSIGNED < 0
3252 2007-03-21 Richard Henderson <rth@redhat.com>
3255 * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
3256 * config/i386/mmintrin.h (__m64): Likewise.
3257 * config/i386/xmmintrin.h (__m128): Likewise.
3259 2007-03-21 Richard Sandiford <richard@codesourcery.com>
3261 * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
3262 (VXWORKS_OS_CPP_BUILTINS): Define.
3263 * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
3264 (TARGET_OS_CPP_BUILTINS): ...here. Use VXWORKS_OS_CPP_BUILTINS.
3266 2007-03-21 Richard Sandiford <richard@codesourcery.com>
3268 * rtl.h (constant_pool_reference_p): Delete.
3269 (find_constant_src): Declare.
3270 * rtlanal.c (find_constant_src): New function.
3271 * simplify-rtx.c (constant_pool_reference_p): Delete.
3272 * config/i386/i386.md: Use find_constant_src instead of
3273 constant_pool_reference_p/avoid_constant_pool_reference pairs.
3275 2007-03-21 Richard Sandiford <richard@codesourcery.com>
3277 * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
3278 * c-cppbuiltin.c (c_cpp_builtins): Define them.
3280 2007-03-20 Mark Mitchell <mark@codesourcery.com>
3282 * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
3283 * config/arm/arm.c (arm_elf_asm_cdtor): New function.
3284 (arm_elf_asm_constructor): Use it.
3285 (arm_elf_asm_destructor): New function.
3287 2007-03-20 Bernd Schmidt <bernd.schmidt@analog.com>
3289 * jump.c (mark_jump_label): Treat SEQUENCE specially.
3291 2007-03-20 Nathan Sidwell <nathan@codesourcery.com>
3293 * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
3295 2007-03-19 Andrew Haley <aph@redhat.com>
3297 PR tree-optimization/31264
3298 * tree-vrp.c (register_edge_assert_for_1): Don't look though
3301 2007-03-19 Paolo Bonzini <bonzini@gnu.org>
3303 PR rtl-optimization/30907
3304 * fwprop.c (forward_propagate_into): Never propagate inside a loop.
3305 (fwprop_init): Always call loop_optimizer_initialize.
3306 (fwprop_done): Always call loop_optimizer_finalize.
3307 (fwprop): We always have loop info now.
3308 (gate_fwprop_addr): Remove.
3309 (pass_fwprop_addr): Use gate_fwprop as gate.
3311 PR rtl-optimization/30841
3312 * df-problems.c (df_ru_local_compute, df_rd_local_compute,
3313 df_chain_alloc): Call df_reorganize_refs unconditionally.
3314 * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
3315 refs_organized to refs_organized_size.
3316 (df_ref_create_structure): Use refs_organized_size instead of
3317 bitmap_size if refs had been organized, and keep refs_organized_size
3319 * df.h (struct df_ref_info): Change refs_organized to
3320 refs_organized_size.
3321 (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
3324 2007-03-19 Mark Mitchell <mark@codesourcery.com>
3326 * except.c (output_function_exception_table): Do not reference the
3327 EH personality routine for functions that do not require an
3330 2007-03-20 Jakub Jelinek <jakub@redhat.com>
3333 * c-typeck.c (convert_for_assignment): Call comptypes for
3334 RECORD_TYPE or UNION_TYPE.
3337 * reload1.c (reload): Do invalid ASM checking after
3338 cleanup_subreg_operands.
3340 2007-03-19 Jeff Law <law@redhat.com>
3342 * tree-cfg.c (find_taken_edge): Tighten conditions for
3343 optimizing computed gotos.
3345 2007-03-19 Michael Matz <matz@suse.de>
3347 * builtins.c (expand_builtin_sync_operation,
3348 expand_builtin_compare_and_swap,
3349 expand_builtin_lock_test_and_set): Care for extending CONST_INTs
3352 * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
3353 sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
3356 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
3358 * doc/tm.texi: Add brackets around the return type of
3359 TARGET_SECONDARY_RELOAD.
3361 2007-03-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
3362 Richard Guenther <rguenther@suse.de>
3364 PR tree-optimization/31254
3365 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
3366 Use handled_component_p () where appropriate. Continue
3367 propagating into the rhs if we propagated into an INDIRECT_REF
3370 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
3372 * config/s390/s390.md (op_type attribute): RRR instruction type added.
3373 (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
3374 (xde, xdee): Mode attributes adjusted to support DFP modes.
3375 (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
3376 ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
3377 DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
3378 "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
3379 "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
3380 "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
3381 "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
3383 ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
3384 "movsf"): Insn definitions removed.
3385 ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
3386 "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
3387 "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
3389 ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
3390 "reload_in<mode>", "reload_out<mode>"): Expander added.
3391 ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
3394 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
3396 * config/s390/s390.md: Only non-functional changes. Renamed
3397 FPR mode macro to BFP all over the file.
3399 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
3401 * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
3402 (op_type attribute): RRF instruction type added.
3403 (fT0): New mode attribute.
3404 ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",