1 2005-04-26 Kazu Hirata <kazu@cs.umass.edu>
3 * tree-ssa-loop-ivopts.c (ivopts_data, decl_rtl_to_reset,
4 n_iv_uses, iv_use, n_iv_cands, iv_cand,
5 tree_ssa_iv_optimize_init, record_use, add_candidate_1,
6 prepare_decl_rtl, free_loop_data,
7 tree_ssa_iv_optimize_finalize): Use the VEC API instead of
10 * tree.h (tree_phi_node): Add a comment about the order of PHI
13 2005-04-26 Paul Brook <paul@codesourcery.com>
15 * config/arm/arm.md (thumb_mulsi3): Use two-operand assembly form.
17 2005-04-26 Nathan Sidwell <nathan@codesourcery.com>
19 * config/mips.mips.c (mips_legitimize_tls_address): Use
22 * config/mmix/mmix.c (mmix_assemble_integer): Use gcc_assert.
23 * config/mmix/crti.asm (_init): Reword comment to avoid 'abort'.
24 * config/mmix/mmix.md (nonlocal_goto_receiver): Likewise.
26 * config/sparc/sparc.h (enum reg_class): Reword comment to avoid
29 2005-04-26 Jeff Law <law@redhat.com>
31 * tree-flow-inline.h (op_iter_next_must_and_may_def): New.
32 (op_iter_init_must_and_may_def): Likewise.
33 (unmodifiable_var_p): Move to a later point in the file.
34 * tree-ssa-operands.h (FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND): New.
35 * tree-ssa-dse.c (need_imm_uses_for): Remove, no longer needed.
36 (dse_record_phis): Directly check for virtual operands rather than
37 using need_imm_uses_for.
38 (dse_optimize_stmt): Handle V_MUST_DEF operands. Handle case where
39 store has multiple V_{MAY,MUST}_DEF operands.
41 2005-04-26 Andrew MacLeod <amacleod@redhat.com>
43 * tree-cfg.c (bsi_replace): Delink immediate uses for the original
46 2005-04-26 Kazu Hirata <kazu@cs.umass.edu>
48 * tree-cfg.c (lv_adjust_loop_header_phi): Speed up moving a
49 call to find_edge outside a loop to go through a PHI chain.
51 2004-04-26 Richard Guenther <rguenth@gcc.gnu.org>
53 PR tree-optimization/17598
54 * fold-const.c (fold_binary): Fold comparisons of addresses
55 of COMPONENT_REFs which reference the same field to
56 comparisons of the addresses of the base objects.
58 2005-04-26 Julian Brown <julian@codesourcery.com>
60 * config/arm/arm.c (arm_return_in_msb): New function.
61 (arm_must_pass_in_stack): New function.
62 (TARGET_RETURN_IN_MSB): Define target hook.
63 (TARGET_MUST_PASS_IN_STACK): Define target hook.
64 (arm_function_value): Pad small aggregate return.
65 (arm_pad_arg_upward): New function.
66 (arm_pad_reg_upward): New function.
67 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Include complex values.
68 (FUNCTION_ARG_PADDING): Define macro.
69 (BLOCK_REG_PADDING): Define macro.
70 (PAD_VARARGS_DOWN): Correct padding for AAPCS.
71 * config/arm/arm-protos.h (arm_pad_arg_upward): Declare function.
72 (arm_pad_reg_upward): Declare function.
74 2005-04-26 Kazu Hirata <kazu@cs.umass.edu>
76 * basic-block.h (ei_cond): New.
77 (FOR_EACH_EDGE): Call ei_cond.
79 PR tree-optimization/21047
80 * fold-const.c (fold_binary): Abort on ASSERT_EXPR.
81 (fold): Don't handle ASSERT_EXPR.
83 2005-04-25 Roger Sayle <roger@eyesopen.com>
85 * sched-deps.c (sched_analyze_1): On STACK_REGS targets, x87, treat
86 all writes to any stack register as a read/write dependency on
88 (sched_analyze_2): Likewise, for reads from any stack register.
90 2005-04-25 Richard Henderson <rth@redhat.com>
92 * final.c (output_addr_const): Revert 2005-04-09 change.
94 2005-04-25 Mike Stump <mrs@apple.com>
96 * config/darwin.c (darwin_encode_section_info): Always set
97 MACHO_SYMBOL_STATIC for all ! TREE_PUBLIC symbols.
99 2005-04-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
101 * collect2.c, gcc.c, gcov-dump.c, gcov.c, gen-protos.c,
102 gensupport.c, protoize.c, toplev.c: Replace calls to
103 `unlock_stream' with `unlock_std_streams'.
105 2005-04-25 Devang Patel <dpatel@apple.com>
107 * dbxout.c (dbxout_type): Emit attribute vector.
109 2005-04-05 Paul Brook <julian@codesourcery.com>
111 * target-def.h (TARGET_CXX_USE_AEABI_ATEXIT): Define.
112 * target.h (struct gcc_target): Add cxx.use_aeabi_atexit.
113 * config/arm/arm.c (arm_cxx_atexit_name): New function.
114 (TARGET_CXX_USE_AEABI_ATEXIT): New macro.
115 * cp/decl.c (get_atexit_node): Reorder arguments for __aeabi_atexit.
116 (register_dtor_fn): Likewise.
117 * doc/tm.texi: Document TARGET_CXX_USE_AEABI_ATEXIT.
119 2005-04-25 Ian Lance Taylor <ian@airs.com>
121 * c-common.def (EXPR_STMT): Remove, moved to C++ frontend.
122 * c-common.h (EXPR_STMT_EXPR): Don't define.
123 (c_common_stmt_codes): Don't define.
124 * c-dump.c (c_dump_tree): Remove EXPR_STMT case.
125 * c-gimplify.c (gimplify_expr_stmt): Remove.
126 (c_gimplify_expr): Remove EXPR_STMT case.
127 * c-objc-common.c (c_objc_common_init): Remove stmt_codes and call
128 to INIT_STATEMENT_CODES.
129 * c-pretty-print.c (pp_c_statement): Just call dump_generic_node.
131 2005-04-25 Jan Hubicka <jh@suse.cz>
133 * tree-cfg.c (tree_duplicate_bb): Duplicate EH region too.
135 * except.c: Include diagnostic.h
136 (dump_eh_tree, verify_eh_tree): New functions.
137 * except.h (verify_eh_tree, dump_eh_tree, verify_eh_edges): Declare.
138 * tree-cfg.c (tree_verify_flow_info): verify eh edges.
139 (dump_function_to_file): dump eh tree.
140 * tree-eh.c (mark_eh_edge): New function.
141 (mark_eh_edge_found_error): New static variable.
142 (verify_eh_edges): New function.
144 2005-04-25 Nathan Sidwell <nathan@codesourcery.com>
146 * tree-ssa-alias.c (fieldoff_t): Remove.
147 (fieldoff_s): typedef the structure itself. Create a vector of
149 (push_fields_onto_fieldstack): Return count of fields pushed.
150 Remove peeling of first field. Adjust.
151 (fieldoff_compare): Adjust.
152 (create_overlap_variables_for): Adjust.
154 2005-04-25 Joseph S. Myers <joseph@codesourcery.com>
156 * doc/invoke.texi (Blackfin Options): Avoid empty @opindex line.
158 2005-04-25 Joseph S. Myers <joseph@codesourcery.com>
161 * doc/install.texi: Document correct assembler and linker to use
162 on i?86-*-solaris2.10.
164 2005-04-25 Steven Bosscher <stevenb@suse.de>
166 Fix PR tree-optimization/21173
168 * tree-ssa-pre.c (create_expression_by_pieces): Simplify code.
169 Unshare expression we pass to force_gimple_operand.
171 2005-04-25 J"orn Rennecke <joern.rennecke@st.com>
172 Stephen Clarke <stevec@superh.com>
173 Roger Sayle <roger@eyesopen.com>
175 PR rtl-optimization/20413
176 * cfgrtl.c (redirect_edge_and_branch): Use Pmode instead of
177 VOIDmode for LABEL_REF.
178 * final.c (shorten_branches): Likewise.
179 * jump.c (mark_all_labels, redirect_exp_1): Likewise.
180 * loop.c (reg_dead_after_loop): Likewise.
181 * varasm.c (decode_addr_const): Likewise.
182 * doc/rtl.texi: Document mode requirement for LABEL_REF.
184 2005-04-25 Ralf Corsepius <ralf.corsepius@rtems.org>
186 * config.gcc (avr-*-*): Remove redundant "case".
188 2005-04-25 Kazu Hirata <kazu@cs.umass.edu>
190 * tree-vect-analyze.c (vect_mark_relevant): Take
191 VEC(tree,heap) instead of varray_type as an argument.
192 (vect_mark_stmts_to_be_vectorized): Change the type of
193 worklist to VEC(tree,heap). Adjust uses of worklist.
195 2005-04-24 Devang Patel <dpatel@apple.com>
197 * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
199 2005-04-24 Ian Lance Taylor <ian@airs.com>
201 * c-semantics.c (build_stmt): Remove test of specific tree codes
202 for TREE_SIDE_EFFECTS handling.
204 2005-04-24 Per Bothner <per@bothner.com>
206 * c-opts.c (finish_options): Make the line-number of the <built-in>
207 location 0, as assumed elsewhere, rather than 1.
209 2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
211 * tree-ssa-uncprop.c (equiv_stack): Change the type o
213 (tree_ssa_uncprop, uncprop_finalize_block,
214 uncprop_initialize_block): Update uses of equiv_stack.
216 2005-04-24 Richard Henderson <rth@redhat.com>
219 * simplify-rtx.c (simplify_binary_operation) <IOR>: Check
220 for SCALAR_INT_MODE_P instead of not MODE_CC before returning
222 <AND, LSHIFTRT, UMIN>: Use CONST0_RTX.
223 <UDIV, UMOD>: Use CONST0_RTX and CONST1_RTX.
224 <DIV, MOD>: Likewise.
226 2005-04-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
228 * collect2.c (main): Unlock the stdio streams.
229 * gcc.c (main): Likewise.
230 * gcov-dump.c (main): Likewise.
231 * gcov.c (main): Likewise.
232 * gen-protos.c (main): Likewise.
233 * gensupport.c (init_md_reader_args_cb): Likewise.
234 * protoize.c (main): Likewise.
235 * toplev.c (general_init): Likewise.
237 2005-04-24 Jakub Jelinek <jakub@redhat.com>
240 * cgraph.h (cgraph_local_info): Add vtable_method field.
241 * varasm.c (mark_decl_referenced): If cgraph_global_info_ready
242 and node is vtable_method, finalized and not reachable, don't do
245 2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
247 * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use
249 * tree-ssa-pre.c (create_value_expr_from): Use
250 CONSTANT_CLASS_P and REFERENCE_CLASS_P.
251 * tree-ssa-propagate.c (stmt_makes_single_load,
252 stmt_makes_single_store): Use REFERENCE_CLASS_P.
253 * tree-vect-transform.c (vect_is_simple_cond): Use
255 * tree-vrp.c (extract_range_from_assert,
256 build_assert_expr_for, fp_predicate, has_assert_expr): Use
259 * tree-ssa-live.c (build_tree_conflict_graph): Change the type
260 of tpa_to_clear to VEC(int,heap). Update uses of
261 tpa_to_clear. Free tpa_to_clear at the end.
263 2005-04-24 Andrew Pinski <pinskia@physics.uc.edu>
265 * tree.h (TREE_THIS_VOLATILE): Document the effect on a
268 2005-04-24 Nathan Sidwell <nathan@codesourcery.com>
270 * config/rs6000/rs6000.c (rs6000_override_options): Use gcc_assert
271 and gcc_unreachable as appropriate.
272 (num_insns_constant, output_vec_const_move,
273 build_mask64_2_operands, rs6000_output_dwarf_dtprel,
274 rs6000_emit_set_const, rs6000_emit_move,
275 spe_build_register_parallel, function_arg,
276 rs6000_move_block_from_reg, altivec_expand_predicate_builtin,
277 spe_expand_predicate_builtin, spe_expand_evsel_builtin,
278 rs6000_expand_builtin, spe_init_builtins, altivec_init_builtins,
279 rs6000_common_init_builtins, expand_block_clear,
280 expand_block_move, validate_condition_mode, ccr_bit, extract_MB,
281 extract_ME, rs6000_get_some_local_dynamic_name,
282 rs6000_output_function_entry, print_operand,
283 print_operand_address, rs6000_generate_compare, rs6000_emit_sCOND,
284 output_cbranch, output_e500_flip_gt_bit,
285 rs6000_emit_vector_compare, rs6000_emit_vector_compare,
286 rs6000_emit_cmove, rs6000_emit_minmax, rs6000_split_multireg_move,
287 compute_save_world_info, rs6000_stack_info,
288 rs6000_emit_load_toc_table, rs6000_frame_related,
289 spe_synthesize_frame_save, rs6000_emit_epilogue,
290 rs6000_output_function_epilogue, rs6000_hash_constant, output_toc,
291 output_function_profiler, rs6000_trampoline_size,
292 rs6000_initialize_trampoline, find_addr_reg,
293 rs6000_machopic_legitimize_pic_address,
294 rs6000_initial_elimination_offset,
295 rs6000_dbx_register_number): Likewise.
296 * config/rs6000/rs6000.md (*fix_truncdfsi2_internal,
297 *movdf_hardfloat32, *movdf_softfloat32, *fix_trunctfsi2_internal,
298 *movti_power, *movti_string, call, call_value, sibcall,
299 sibcall_value): Likewise.
300 * config/rs6000/spe.md (*movdf_e500_double,
301 *movv2si_internal): Likewise.
302 * config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Remove 'abort'
305 2005-04-24 Richard Henderson <rth@redhat.com>
308 * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ...
309 * config/i386/i386.c (ix86_cannot_change_mode_class): ... here.
310 Deny modes smaller than 4 bytes.
311 * config/i386/i386-protos.h: Update.
313 2005-04-24 Ralf Corsepius <ralf.corsepius@rtems.org>
315 * config.gcc (h8300-*-rtems*): Add h8300-*-rtemscoff*.
316 Switch h8300-*-rtems* to ELF.
318 2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
320 * vec.h (VEC_safe_grow): Replace grow with safe_grow.
322 2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
324 * ipa-inline.c, tree-ssa-operands.h: Fix comment typos.
326 2005-04-23 Richard Guenther <rguenth@gcc.gnu.org>
329 * fold-const.c: Fold &a[i]-&a[j] to i-j.
331 2005-04-23 Zdenek Dvorak <dvorakz@suse.cz>
333 * tree-ssa-loop-niter.c (tree_simplify_using_condition): Expand simple
334 definitions of ssa names in condition. Split recusive part to ...
335 (tree_simplify_using_condition_1): New function.
336 (expand_simple_operations): New function.
338 2005-04-23 Zdenek Dvorak <dvorakz@suse.cz>
340 * tree-ssa-loop-ivopts.c (struct cost_pair): Add value field.
341 (find_interesting_uses_cond): Do not use integer_zerop and
342 integer_nonzerop to check for integer constants.
343 (set_use_iv_cost): Record the value field.
344 (determine_use_iv_cost_generic, determine_use_iv_cost_address,
345 determine_use_iv_cost_outer): Set the value field of the cost pair.
346 (may_eliminate_iv): Do not return the comparison code.
347 (iv_elimination_compare): New function.
348 (determine_use_iv_cost_condition): Set the value field. Record
349 noneliminable invariants correctly.
350 (rewrite_use_compare, rewrite_use_outer): Use the value field.
352 2005-04-23 DJ Delorie <dj@redhat.com>
354 * diagnostic.c (warning): Accept parameter to classify warning option.
355 (warning0): New, for when a pointer to an error() like function is needed.
356 * errors.c (warning): Likewise.
357 * errors.h (warning, warning0): Adjust prototypes.
358 * toplev.h (warning, warning0): Likewise.
360 * attribs.c, builtins.c, c-common.c, c-decl.c, c-format.c,
361 c-gimplify.c, c-lex.c, c-objc-common.c, c-opts.c, c-parser.c,
362 c-pragma.c, c-typeck.c, calls.c, cgraph.c, coverage.c, emit-rtl.c,
363 fold-const.c, fortran/trans-decl.c, function.c, gcse.c,
364 genautomata.c, haifa-sched.c, opts.c, passes.c, regclass.c,
365 reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
366 tree-dump.c, tree-inline.c, tree-mudflap.c, tree-optimize.c,
367 tree-ssa.c, tree.c, varasm.c: Adjust warning() callers.
369 * config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
370 config/avr/avr.c, config/bfin/bfin.c, config/c4x/c4x-c.c,
371 config/c4x/c4x.c, config/cris/cris.c, config/darwin-c.c,
372 config/darwin.c, config/darwin.h, config/h8300/h8300.c,
373 config/i386/cygming.h, config/i386/djgpp.h, config/i386/i386.c,
374 config/i386/winnt.c, config/ia64/ia64-c.c, config/ia64/ia64.c,
375 config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
376 config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.c,
377 config/mmix/mmix.c, config/ns32k/ns32k.c, config/pa/pa-hpux11.h,
378 config/pa/pa.c, config/rs6000/aix43.h, config/rs6000/aix51.h,
379 config/rs6000/aix52.h, config/rs6000/darwin.h,
380 config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
381 config/s390/s390.c, config/sh/sh.c, config/sh/sh.h,
382 config/sh/symbian.c, config/sol2-c.c, config/sol2.c,
383 config/stormy16/stormy16.c, config/v850/v850-c.c,
384 config/v850/v850.c, config/xtensa/xtensa.c: Adjust warning()
387 2005-04-23 Richard Henderson <rth@redhat.com>
390 * simplify-rtx.c (simplify_binary_operation): Fix mode check before
391 performing some integral scalar simplifications.
393 2005-04-23 Richard Henderson <rth@redhat.com>
396 * config/i386/i386.c (ix86_split_to_parts): Use proper mode when
397 simplifying CONST_VECTOR.
399 2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
401 * tree-ssa-live.c (live_worklist): Take a stack allocated on
402 heap as an argument. Update uses of stack.
403 (calculate_live_on_entry): Allocate stack on heap.
405 * tree-ssa-live.c (build_tree_conflict_graph): Allocate
406 partition_link and tpa_nodes on heap.
408 * tree-ssa-dce.c (worklist): Change to VEC(tree,heap).
409 (mark_stmt_necessary, propagate_necessity,
410 mark_really_necessary_kill_operand_phis): Update uses of
412 (tree_dce_init): Allocate worklist using VEC_alloc.
413 (tree_dce_done): Free worklist using VEC_free.
415 2005-04-23 Mike Stump <mrs@apple.com>
417 * config/darwin.c (machopic_indirection_name): Don't use
419 (darwin_emit_unwind_label): Use user_label_prefix instead of
422 2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
424 * final.c, ipa-inline.c, varasm.c: Fix comment typos.
426 2005-04-23 Hans-Peter Nilsson <hp@axis.com>
428 * config.gcc <cris-*>: Specify .opt files.
429 * config/cris/cris.opt, config/cris/elf.opt, config/cris/aout.opt,
430 config/cris/linux.opt: New files.
431 * config/cris/aout.h (CRIS_SUBTARGET_SWITCHES)
432 (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
433 (TARGET_ELF): Override to 0.
434 (CRIS_SUBTARGET_HANDLE_OPTION): Override to handle -melinux and
435 -melinux-stacksize=N.
436 * config/cris/cris.c: (cris_handle_option): New function.
437 (TARGET_DEFAULT_TARGET_FLAGS): Override.
438 (TARGET_HANDLE_OPTION): Override to cris_handle_option.
439 (cris_override_options): Use MASK_*, not TARGET_MASK_*.
440 * config/cris/cris.h (TARGET_MASK_SVINTO, TARGET_SVINTO,
441 (TARGET_MASK_CCINIT, TARGET_CCINIT, TARGET_MASK_PDEBUG)
442 (TARGET_PDEBUG, TARGET_MASK_SIDE_EFFECT_PREFIXES)
443 (TARGET_SIDE_EFFECT_PREFIXES, TARGET_MASK_EXPAND_MUL)
444 (TARGET_EXPAND_MUL, TARGET_MASK_STACK_ALIGN, TARGET_STACK_ALIGN)
445 (TARGET_MASK_CONST_ALIGN, TARGET_CONST_ALIGN)
446 (TARGET_MASK_DATA_ALIGN, TARGET_DATA_ALIGN)
447 (TARGET_MASK_PROLOGUE_EPILOGUE, TARGET_PROLOGUE_EPILOGUE)
448 (TARGET_MASK_ETRAX4_ADD, TARGET_ETRAX4_ADD)
449 (TARGET_MASK_ALIGN_BY_32, TARGET_ALIGN_BY_32, TARGET_MASK_ELF)
450 (TARGET_ELF, TARGET_MASK_LINUX, TARGET_LINUX)
451 (TARGET_MASK_AVOID_GOTPLT, TARGET_AVOID_GOTPLT)
452 (TARGET_MASK_MUL_BUG, TARGET_MUL_BUG, TARGET_SWITCHES)
453 (CRIS_SUBTARGET_SWITCHES, TARGET_OPTIONS)
454 (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
455 (TARGET_LINUX): Define 0.
456 (TARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
457 (CRIS_SUBTARGET_DEFAULT): Define to 0, not TARGET_MASK_ELF.
458 (CRIS_SUBTARGET_DEFAULT): New empty default macro.
459 * config/cris/linux.h (CRIS_SUBTARGET_SWITCHES): Don't define.
460 (TARGET_LINUX): Override to 1.
461 (CRIS_SUBTARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
463 2005-04-23 Nathan Sidwell <nathan@codesourcery.com>
465 * haifa-sched.c (schedule_block): Fix thinko in previous
466 assertification patch.
468 2005-04-23 Richard Sandiford <rsandifo@redhat.com>
470 * config.gcc (hppa[12]*-*-hpux10*): Add pa/pa-hpux.opt to
471 $extra_options. Also add pa/pa-hpux1010.opt for hpux10.[1-9]*.
472 (hppa*64*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file. Add
473 pa/pa-hpux.opt, pa/pa-hpux1010.opt and pa/pa64-hpux.opt to
474 $extra_options. Also add pa/pa-hpux1111.opt for hpux11.[1-9]*.
475 (hppa[12]*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file. Add
476 pa/pa-hpux.opt to $extra_options. Also add pa/pa-hpux1111.opt
478 * config/pa/pa.h (architecture_type, rtx_def, pa_arch_string, pa_arch)
479 (pa_fixed_range_string, pa_cpu_string, pa_unix_string, target_flags)
480 (MASK_PA_11, MASK_DISABLE_FPREGS, TARGET_DISABLE_FPREGS)
481 (MASK_NO_SPACE_REGS, TARGET_NO_SPACE_REGS, MASK_JUMP_IN_DELAY)
482 (TARGET_JUMP_IN_DELAY, MASK_DISABLE_INDEXING, TARGET_DISABLE_INDEXING)
483 (MASK_PORTABLE_RUNTIME, TARGET_PORTABLE_RUNTIME, MASK_GAS, TARGET_GAS)
484 (MASK_SOFT_FLOAT, TARGET_SOFT_FLOAT, MASK_LONG_LOAD_STORE)
485 (TARGET_LONG_LOAD_STORE, MASK_FAST_INDIRECT_CALLS)
486 (TARGET_FAST_INDIRECT_CALLS, MASK_BIG_SWITCH, TARGET_BIG_SWITCH)
487 (MASK_PA_20, MASK_SIO, TARGET_SIO, MASK_GNU_LD, TARGET_GNU_LD)
488 (MASK_LONG_CALLS, TARGET_LONG_CALLS, TARGET_PA_11, TARGET_PA_20)
489 (TARGET_SWITCHES, SUBTARGET_SWITCHES, TARGET_OPTIONS)
490 (SUBTARGET_OPTIONS): Delete.
491 (TARGET_PA_10): Redefine in terms of TARGET_PA_11 and TARGET_PA_20.
492 (TARGET_SCHED_DEFAULT): Define to a PROCESSOR_* enum (PROCESSOR_8000)
494 * config/pa/pa.c (pa_arch, pa_arch_string, pa_fixed_range_string)
495 (pa_cpu_string, pa_unix_string): Delete.
496 (pa_cpu): Initialize to TARGET_SCHED_DEFAULT.
497 (flag_pa_unix): Initialize based on TARGET_HPUX_11_11 and
499 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
500 (pa_handle_option): New function.
501 (override_options): Remove handling of -march=, -mfixed-range=,
502 -mschedule= and -munix=.
503 * config/pa/pa-hpux.h (SUBTARGET_SWITCHES): Delete.
504 * config/pa/pa-hpux1010.h (SUBTARGET_OPTIONS): Delete.
505 * config/pa/pa-hpux10.h (SUBTARGET_OPTIONS): Delete.
506 * config/pa/pa-hpux1111.h (SUBTARGET_OPTIONS): Delete.
507 * config/pa/pa-hpux11.h (SUBTARGET_OPTIONS): Delete.
508 * config/pa/pa64-hpux.h (SUBTARGET_SWITCHES): Delete.
509 * config/pa/pa64-start.h (TARGET_PA_11, TARGET_PA_20): #undef before
511 * config/pa/pa.opt: New file.
512 * config/pa/pa-hpux.opt: New file.
513 * config/pa/pa-hpux1010.opt: New file.
514 * config/pa/pa-hpux1111.opt: New file.
515 * config/pa/pa64-hpux.opt: New file.
517 2005-04-22 David S. Miller <davem@davemloft.net>
519 * rtl.h (CONST_DOUBLE): Fix comment, a CONST_DOUBLE holds an
520 integer when it's mode is VOIDmode not DImode.
522 2005-04-22 Geoffrey Keating <geoffk@apple.com>
524 * config/rs6000/rs6000.md (sync_add<mode>_internal,
525 sync_addshort_internal, sync_sub<mode>_internal, sync_andsi_internal,
526 sync_anddi_internal, sync_boolsi_internal, sync_booldi_internal,
527 sync_boolc<mode>_internal, sync_boolc<mode>_internal2,
528 sync_boolcc<mode>_internal, sync_lock_test_and_set<mode>): Use
529 "bne- $-xxx" rather than local labels.
530 (sync_lock_release<mode>): Add second operand.
531 (lwsync): Use .long rather than a more meaningful opcode.
532 * doc/md.texi (Standard Names): Add description of second
533 parameter to sync_lock_test_and_set.
535 2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
537 PR tree-optimization/21088
538 * fold-const.c (fold_unary, fold_binary, fold_ternary):
540 * tree-vrp.c (compare_values): Use fold_binary to compare
541 pointers. Use boolean_type_node as the type of a comparison
542 expression being folded.
543 * tree.h: Add prototypes for fold_unary, fold_binary,
546 * tree-ssa-dom.c: Fix formatting.
548 2005-04-22 Diego Novillo <dnovillo@redhat.com>
550 * Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
551 * lambda-code.c (perfect_nestify): Mark virtual operands in
552 the moved statement for renaming.
553 * params.def (PARAM_MIN_VIRTUAL_MAPPINGS): Define.
554 (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
555 * params.h (MIN_VIRTUAL_MAPPINGS): Define.
556 (VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
557 * tree-flow.h (struct var_ann_d): Update comments.
558 (rewrite_to_new_ssa_names_bb, rewrite_to_new_ssa_names,
559 allocate_ssa_names, find_phi_node_for, dump_tree_ssa,
560 debug_tree_ssa, debug_def_blocks, dump_tree_ssa_stats,
561 debug_tree_ssa_stats, rewrite_ssa_into_ssa,
562 dump_repl_tbl, debug_repl_tbl, dump_names_replaced_by,
563 debug_names_replaced_by): Remove declarations.
564 (delete_update_ssa, get_current_def, set_current_def): Declare.
565 (rewrite_into_loop_closed_ssa): Add new argument. Update
567 * tree-into-ssa.c: Include params.h.
568 (old_virtual_ssa_names): Remove. Update all users.
569 (need_to_replace_names_p): Remove. Update all users.
570 (struct update_ssa_stats_d): Declare.
571 (update_ssa_stats): New local.
572 (dump_tree_ssa, debug_tree_ssa, debug_def_blocks,
573 dump_tree_ssa_stats, debug_tree_ssa_stats,
574 dump_update_ssa, debug_update_ssa,
575 dump_names_replaced_by, debug_names_replaced_by): Declare.
576 (get_current_def, set current_def): Make extern.
577 (is_old_name, is_new_name): Protect against references
578 past the end of the sets.
579 (add_new_name_mapping): Assert that OLD and NEW are
580 different SSA names for the same symbol.
581 When adding a virtual mapping, update stats for virtual
583 (insert_phi_nodes_for): If UPDATE_P is true, create the
584 LHS of the new PHI by duplicating SSA name VAR.
585 (insert_phi_nodes_1): Remove. Update all users.
586 (insert_phi_nodes): Remove second argument. Update all
588 (maybe_replace_use, maybe_replace_def): New.
589 (rewrite_update_stmt): Call them.
590 (mark_def_interesting): Remove calls to is_gimple_reg.
591 (prepare_phi_args_for_update): Remove. Update all users.
592 (prepare_block_for_update): Only process virtual operands
593 and GIMPLE registers in normal form.
594 (prepare_use_sites_for): New.
595 (prepare_names_to_update): Rename from prepare_def_sites.
596 Call prepare_use_sites_for.
597 (dump_update_ssa): Rename from dump_repl_tbl.
599 Show statistics for virtual mapping heuristic.
600 (debug_update_ssa): Rename from debug_debug_repl_tbl.
601 (init_update_ssa): Initialize UPDATE_SSA_STATS.
602 (delete_update_ssa): Make extern.
603 (mark_set_for_renaming): If the set is empty, do nothing.
604 (release_ssa_name_after_update_ssa): Update comment.
605 (insert_updated_phi_nodes_for): Do not remove existing
606 PHI nodes for symbols.
607 (switch_virtuals_to_full_rewrite_p): New.
608 (switch_virtuals_to_full_rewrite): New.
609 (update_ssa): Call them.
610 Clear REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT
611 for every statement before updating.
612 If all the names in NEW_SSA_NAMES have been marked for
614 Only start at the top of the CFG if there are symbols in
616 (ssa_rewrite_finalize_block): Remove.
617 (ssa_register_new_def): Remove.
618 (ssa_rewrite_stmt): Remove.
619 (ssa_rewrite_phi_arguments): Remove.
620 (ssa_rewrite_initialize_block): Remove.
621 (ssa_mark_def_sites): Remove.
622 (ssa_mark_def_sites_initialize_block): Remove.
623 (ssa_mark_phi_uses): Remove.
624 (rewrite_ssa_into_ssa): Remove.
625 * tree-phinodes.c (find_phi_node_for): Remove.
626 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
628 * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops):
629 Remove calls to verify_dominators and
630 verify_loop_structure.
631 (tree_unswitch_single_loop): Call update_ssa.
632 * tree-ssa.c (verify_ssa): Assert that need_ssa_update_p
635 (delete_tree_ssa): Assert that need_ssa_update_p returns
637 * tree-vect-transform.c (vect_transform_loop): Call update_ssa.
638 * tree-vectorizer.c (allocate_new_names, rename_def_op,
639 free_new_names): Remove. Update all users.
640 (rename_use_op): Call get_current_def.
641 (rename_variables_in_bb): Do not handle any real or
643 (slpeel_update_phis_for_duplicate_loop): Call
644 get_current_def and set_current_def instead of using
646 (slpeel_update_phi_nodes_for_guard2): Reformat comments.
647 (slpeel_can_duplicate_loop_p): Call need_ssa_update_p,
648 ssa_names_to_replace and delete_update_ssa.
649 * doc/invoke.texi: Document --param min-virtual-mappings
650 and --param virtual-mappings-ratio.
652 2005-04-22 Diego Novillo <dnovillo@redhat.com>
654 * tree-cfg.c (tree_duplicate_bb): Call create_new_def_for
655 for newly created PHI nodes.
656 Call create_new_def_for for every new V_MAY_DEF and
657 V_MUST_DEF on the copied statement.
658 (struct ssa_name_map_entry): Remove.
659 (ssa_name_map_entry_hash): Remove.
660 (ssa_name_map_entry_eq): Remove.
661 (allocate_ssa_names): Remove.
662 (rewrite_to_new_ssa_names_def): Remove.
663 (rewrite_to_new_ssa_names_use): Remove.
664 (rewrite_to_new_ssa_names_bb): Remove.
665 (rewrite_to_new_ssa_names): Remove.
666 (tree_duplicate_sese_region): Remove variables ver,
667 definitions, phi, ssa_name_map and bi.
668 Call need_ssa_update_p instead of any_marked_for_rewrite_p.
670 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
671 update_ssa instead of rewrite_ssa_into_ssa.
672 * tree-ssa-loop-manip.c (add_exit_phis_edge): Call
674 (find_uses_to_rename_use): Add argument 'need_phis'.
675 (find_uses_to_rename_stmt): Do not scan virtual operands.
676 (find_uses_to_rename): Only scan PHI nodes for
678 (rewrite_into_loop_closed_ssa): Call update_ssa.
679 (check_loop_closed_ssa_use): Ignore virtual operands.
680 (check_loop_closed_ssa_stmt): Likewise.
681 (verify_loop_closed_ssa): Do nothing if CURRENT_LOOPS is
683 (rename_variables, set_phi_def_stmts): Remove.
684 (tree_duplicate_loop_to_header_edge): Reformat comment.
685 Remove variables BB, I and DEFINITIONS.
686 Call need_ssa_update_p.
688 (lv_adjust_loop_header_phi): Reformat comment.
689 * tree-ssanames.c (ssa_names_to_rewrite): Remove.
690 (marked_for_rewrite_p, any_marked_for_rewrite_p,
691 mark_for_rewrite, unmark_all_for_rewrite,
692 marked_ssa_names): Remove. Update all users.
693 (release_ssa_name): If VAR has been registered for SSA
694 updating, do nothing.
695 * tree-vrp.c (new_ssa_names, old_ssa_names): Remove.
696 (build_assert_expr_for): Call register_new_name_mapping.
697 (insert_range_assertions): Update call to update_ssa.
698 * tree.h (mark_for_rewrite, unmark_all_for_rewrite,
699 marked_for_rewrite_p, any_marked_for_rewrite_p,
700 marked_ssa_names): Remove.
702 2005-04-22 Jeff Law <law@redhat.com>
704 * tree-ssa-dom.c (block_defs_stack): Remove, no longer needed.
705 (restore_currdefs_to_original_value): Likewise.
706 (register_definitions_for_stmt): Likewise.
707 (tree_ssa_dominator_optimize): No longer initialize CURRENT_DEF
708 for each variable. Do not allocate/free block_defs_stack either.
709 Do not iterate if we just thread jumps. Only iterate if the
710 tree_cleanup_cfg does useful work (temporary).
711 (dom_opt_initialize_block): No longer push a marker on
713 (dom_opt_finalize_block): Removal call to restore currdefs.
714 Relax restrictions for recording edge equivalences.
715 (record_equivalences_from_phis): No longer need to track
717 (optimize_stmt): Similarly.
718 (thread_across_edge): Simplify by removing the requirement that
719 statements in the block we are threading through must be nops.
720 (initialize_hash_element): Handle GOTO_EXPR.
722 2005-04-22 David S. Miller <davem@davemloft.net>
724 * sched-vis.c (print_value): Use CONST_DOUBLE_LOW and
726 * config/sparc/sparc.c (sparc_rtx_costs): Likewise, and
727 fix check on CONST_DOUBLE mode. It should be VOIDmode
728 when it is representing an integer.
730 2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
732 * builtins.c (gimplify_va_arg_expr): Reword comments to avoid
733 'abort'. Use gcc_assert and gcc_unreachable as appropriate.
734 * c-format.c (get_constant, decode_format_attr, get_flag_spec,
735 find_char_info_specifier_index,
736 find_length_info_modifier_index): Likewise.
737 * c-typeck.c (composite_type, pop_init_level): Likewise.
738 * combine.c (cant_combine_insn_p, try_combine): Likewise.
739 * cse.c (cse_insn): Likewise
740 * dominance.c (calc_dfs_tree): Likewise
741 dwarf2out.c (loc_descriptor_from_tree_1,
742 add_abstract_origin_attribute, force_decl_die,
743 force_type_die): Likewise
744 emit-rtl.c (operand_subword_force): Likewise
745 explow.c (hard_function_value): Likewise
746 expmed.c (store_bit_field, expand_divmod,
747 emit_store_flag_force): Likewise
748 expr.c (emit_move_multi_word, store_expr,
749 expand_expr_real_1): Likewise
750 final.c (this_is_asm_operands, shorten_branches, final_scan_insn,
751 output_operand): Likewise
752 flow.c (recompute_reg_usage): Likewise
753 * function.c (assign_stack_temp_for_type, assign_temp,
754 handle_epilogue_set): Likewise
755 * genextract.c (main): Likewise
756 * gimplify.c (mostly_copy_tree_r, gimplify_return_expr,
757 gimplify_modify_expr_rhs, gimplify_expr): Likewise
758 * haifa-sched.c (ready_lastpos, ready_remove_first, ready_element,
759 ready_remove, rm_line_notes, rm_other_notes,
760 schedule_block): Likewise
761 mips-tfile.c (copy_object, out_of_bounds): Likewise
763 2005-04-22 David Edelsohn <edelsohn@gnu.org>
766 * config/rs6000/default64.h (TARGET_DEFAULT): Add MASK_PPC_GFXOPT.
767 * config/rs6000/rs6000.c (processor_target_table): Rename rs64a to
768 rs64. Add MASK_PPC_GFXOPT to powerpc64 and rs64.
769 (rs6000_init_libfuncs): Set TFmode optabs to xlq names if
771 * doc/invoke.texi (PowerPC options): Change rs64a to rs64.
773 2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
775 * lambda-code.c: Define VEC(int,heap), VEC(lambda_loop,heap).
776 (gcc_tree_to_linear_expression): Convert to heap allocated
778 (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
779 lbv_to_gcc_expression, lle_to_gcc_expression,
780 lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
781 perfect_nestify): Likewise.
782 lambda.h (gcc_loopnest_to_lambda_loopnest,
783 lambda_loopnest_to_gcc_loopnest): Likewise.
784 tree-loop-linear.c (linear_transform_loops): Likewise.
786 2005-04-22 Eric Botcazou <ebotcazou@libertysurf.fr>
788 * config/sparc/predicates.md (arith_double_operand): Use
789 trunc_int_for_mode if HOST_BITS_PER_WIDE_INT >=64.
790 * config/sparc/sparc.md (movqi, movhi, movsi, movqi): Use gen_int_mode.
791 (DImode, DFmode constant splitters): Likewise. Remove code for
792 TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT < 64.
793 (logical constant splitters): Use const_int_operand predicate.
794 (lshrsi3_extend): Remove code for TARGET_ARCH64 &&
795 HOST_BITS_PER_WIDE_INT < 64.
797 2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
799 * config/pa/pa.c (legitimize_pic_address): Use gcc_assert and
800 gcc_unreachable as appropriate.
801 (force_mode, emit_move_sequence, singlemove_string,
802 output_move_double, output_fp_move_double, find_addr_reg,
803 output_block_move, output_block_clear, output_and,
804 output_64bit_and, output_ior, output_64bit_ior, store_reg_modify,
805 pa_adjust_cost, pa_issue_rate, print_operand,
806 output_global_address, output_arg_descriptor, output_cbranch,
807 output_lbranch, output_bb, output_bvb, output_dbra, output_movb,
808 output_call): Likewise.
809 * config/pa/pa.md (call, call_value, sibcall, sibcall_value,
810 prefetch, prefetch_cc, prefetch_nocc): Likewise.
812 2005-04-22 Zdenek Dvorak <dvorakz@suse.cz>
814 * Makefile.in (LIBGCOV): Add _gcov_interval_profiler,
815 _gcov_pow2_profiler and _gcov_one_value_profiler.
816 (tree-profile.o): Add GGC_H and gt-tree-profile.h dependency.
817 (GTFILES): Add $(srcdir)/tree-profile.c.
818 * gcov-io.h (__gcov_interval_profiler, __gcov_pow2_profiler,
819 __gcov_one_value_profiler): Declare.
820 * gimplify.c (force_gimple_operand): Check whether the statements
821 should be produced in ssa form.
822 (force_gimple_operand_bsi): New function.
823 * libgcov.c (__gcov_interval_profiler, __gcov_pow2_profiler,
824 __gcov_one_value_profiler): New functions.
825 * rtl-profile.c (rtl_gen_pow2_profiler): Only measure whether
826 the profiled value is a power of two or not.
827 * tree-cfg.c (tree_block_ends_with_condjump_p): Handle empty blocks.
828 * tree-flow.h (in_ssa_p): Declare.
829 (force_gimple_operand_bsi): Declare.
830 * tree-into-ssa.c (in_ssa_p): New variable.
831 (rewrite_into_ssa): Set in_ssa_p.
832 * tree-outof-ssa.c (rewrite_out_of_ssa): Set in_ssa_p.
833 * tree-profile.c: Include ggc.h and gt-tree-profile.h.
834 (gcov_type_node, tree_interval_profiler_fn, tree_pow2_profiler_fn,
835 tree_one_value_profiler_fn): New variables.
836 (tree_init_edge_profiler): Initialize the profiler function decls.
837 (tree_gen_edge_profiler): Use global gcov_type_node.
838 (prepare_instrumented_value): New function.
839 (tree_gen_interval_profiler, tree_gen_interval_profiler,
840 tree_gen_one_value_profiler): Call the library functions instead of
841 creating instrumentation code.
842 * tree.c (build_fn_decl): New function.
843 * tree.h (build_fn_decl): Declare.
844 * value-prof.c (rtl_divmod_values_to_profile,
845 rtl_find_values_to_profile, rtl_mod_pow2_value_transform,
846 tree_mod_pow2_value_transform, tree_find_values_to_profile):
847 Do not handle may_be_other and precise values of exponents at pow2
849 (tree_mod_subtract_transform): Reflect that value field of
850 histogram has changed meaning.
851 (tree_divmod_values_to_profile): Record the values correctly.
852 (tree_values_to_profile): Update comment.
853 * value-prof.h (struct histogram_value_t): Remove pow2 data.
855 2005-04-22 Joseph S. Myers <joseph@codesourcery.com>
857 * varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
860 2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
862 * config/i386/i386.md (length_immediate): Use gcc_assert or
863 gcc_unreachable, as appropriate.
864 (*movsi_1, *movqi_1, reload_outqi, *movdi_1_rex64, *pushsf,
865 *pushsf_rex64, *truncxfsf2_mixed, *truncxfsf2_i387,
866 *truncxfdf2_mixed, *truncxfdf2_i387, *adddi_1_rex64,
867 *adddi_2_rex64, *adddi_3_rex64, *adddi_4_rex64, *adddi_5_rex64,
868 *addsi_1, addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
869 *addsi_3_zext, *addsi_4, *addsi_5, *addhi_1_lea, *addhi_1,
870 *addhi_2, *addhi_3, *addhi_4, *addhi_5, *addqi_1_lea, *addqi_1,
871 *addqi_1_slp, *addqi_2, *addqi_3, *addqi_4, *addqi_5, addqi_ext_1,
872 *addqi_ext_1_rex64, *anddi_1_rex64, *andsi_1, *andhi_1,
873 *ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashlsi3_1, *ashlsi3_1_zext,
874 *ashlsi3_cmp, *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1,
875 *ashlhi3_cmp, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
876 pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64,
877 pro_epilogue_adjust_stack_rex64_2, prefetch, *prefetch_sse,
878 *prefetch_sse_rex): Likewise.
879 * config/i386/predicates.md (x86_64_immediate_operand,
880 x86_64_zext_immediate_operand, symbolic_operand,
881 no_seg_address_operand, aligned_operand,
882 memory_displacement_operand): Likewise.
883 * config/i386/sse.md (*mov<mode>_internal,
884 *movv2df_internal): Likewise.
886 2005-04-22 Jan Hubicka <jh@suse.cz>
888 * Makefile.in (ipa.o, ipa-inline.o): New files.
889 * cgraph.h (cgraph_remove_unreachable_nodes, cgraph_postorder,
890 cgraph_decide_inlining_incrementally, cgraph_clone_inlined_nodes,
891 cgraph_mark_inline_edge, cgraph_default_inline_p): Declare.
892 * cgraphunit.c (cgraph_default_inline_p,
893 cgraph_decide_inlining_incrementally, ncalls_inlined,
894 nfunctions_inlined, initial_insns, overall_insns,
895 cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
896 cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
897 cgraph_mark_inline, cgraph_check_inline_limits,
898 cgraph_default_inline_p, cgraph_recursive_inlining_p,
899 update_callee_keys, lookup_recursive_calls,
900 cgraph_decide_recursive_inlining, cgraph_set_inline_failed,
901 cgraph_decide_inlining_of_small_functions, cgraph_decide_inlining,
902 cgraph_decide_inlining_incrementally, cgraph_gate_inlining,
903 pass_ipa_inline): Move to ipa-inline.c
904 (cgraph_postorder, cgraph_remove_unreachable_nodes): Move to ipa.c
906 * ipa-inline.c: New file.
908 2005-04-22 Eric Botcazou <ebotcazou@libertysurf.fr>
910 * doc/invoke.texi (SPARC options): Document that -mapp-regs
911 is turned off by default on Solaris.
913 2005-04-21 Roger Sayle <roger@eyesopen.com>
915 * c-common.h (objc_build_method_signature): Update prototype.
916 * stub-objc.c (objc_build_method_signature): Update the stub
917 implementation to accept and ignore additional parameter.
918 * c-parser.c (c_parser_objc_method_decl): Reorgnize to pass
919 the value of ellipsis to objc_build_method_signature instead
920 of setting TREE_OVERFLOW on the parms TREE_LIST node.
922 2005-04-21 Geoffrey Keating <geoffk@apple.com>
924 * config/rs6000/rs6000-protos.h (rs6000_emit_sync): New.
925 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Use
926 gen_rtx_* not gen_rtx_fmt_*.
927 (rs6000_emit_vector_select): Likewise.
928 (rs6000_emit_sync): New.
929 * config/rs6000/rs6000.md (GPR, INT, INT1): New mode macros.
930 (larx, stcx, cmp): New mode substitutions.
931 (UNSPEC_SYNC, UNSPEC_SYNC_OP, UNSPEC_SYNC_SWAP, UNSPEC_LWSYNC,
932 UNSPEC_ISYNC): New constants.
934 (memory_barrier, isync, lwsync): New insns.
935 (sync_compare_and_swap<mode>, sync_lock_test_and_set<mode>): New insn.
936 (sync_lock_release<mode>): New expander.
937 (sync_add<mode>, sync_sub<mode>, sync_ior<mode>, sync_and<mode>,
938 sync_xor<mode>, sync_nand<mode>, sync_old_add<mode>,
939 sync_old_sub<mode>, sync_old_ior<mode>, sync_old_and<mode>,
940 sync_old_xor<mode>, sync_old_nand<mode>, sync_new_add<mode>,
941 sync_new_sub<mode>, sync_new_ior<mode>, sync_new_and<mode>,
942 sync_new_xor<mode>, sync_new_nand<mode>): New expanders.
943 (sync_add<mode>_internal, sync_addshort_internal,
944 sync_sub<mode>_internal, sync_andsi_internal, sync_anddi_internal,
945 sync_boolsi_internal, sync_booldi_internal, sync_boolc<mode>_internal,
946 sync_boolc<mode>_internal2, sync_boolcc<mode>_internal): New insns.
948 * doc/md.texi (Standard Names): sync_compare_and_swap's operand 0
949 is the memory before, not after, the operation. Clarify
950 barrier requirements.
952 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
954 * cfghooks.h (struct cfg_hooks): Reword comments to avoid 'abort'.
955 * lambda.h (lambda_vector_min_nz): Likewise.
956 * langhooks.h (struct lang_hooks_for_types,
957 struct lang_hooks): Likewise.
958 * output.h (assemble_integer, this_is_asm_operands): Likewise.
961 * tree-flow-inline.h (relink_imm_use): Use gcc_assert.
963 * optabs.c (prepare_cmp_insn, emit_cmp_and_jump_insns): Reword
964 comments to avoid 'abort'. Use gcc_assert as necessary.
965 * opts.c (common_handle_option): Likewise.
966 * pretty-print.c (pp_base_format_text): Likewise.
967 * print-rtl.c (print_rtx): Likewise.
968 * read-rtl.c (read_rtx_filename, read_rtx_1): Likewise.
969 * regmove.c (try_auto_increment): Likewise.
970 * reload.c (find_valid_class, find_reloads_toplev,
971 find_equiv_reg): Likewise.
972 * reload1.c (reload, forget_old_reloads_1, function_invariant_p,
973 merge_assigned_reloads): Likewise.
974 * tree-inline.c (inline_forbidden_p_1,
975 estimate_num_insns_1): Likewise.
976 * tree-optimize.c (execute_todo): Likewise.
977 * tree-outof-ssa.c (eliminate_phi): Likewise.
978 * tree-ssa-alias.c (add_pointed_to_expr): Likewise.
979 * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Likewise.
980 * tree-ssa-operands.c (parse_ssa_operands,
981 get_indirect_ref_operands, create_ssa_artficial_load_stmt): Likewise.
982 * tree-ssa-pre.c (find_or_generate_expression): Likewise.
983 * tree-ssanames.c (release_ssa_name): Likewise.
984 * tree.c (int_bit_position, int_byte_position, tree_low_cst,
985 walk_tree): Likewise.
987 * tree-ssa-operands.c (verify_abort): Fold into ..
988 (verify_imm_links): ... here.
990 2005-04-21 Richard Henderson <rth@redhat.com>
992 * config/alpha/sync.md (sync_new_nand<I48MODE>): Fix constraints
993 on non-memory operand for previous inversion.
995 2005-04-21 Devang Patel <dpatel@apple.com>
997 PR optimization/20994
998 * tree-if-conv.c (find_phi_replacement_condition): Avoid generating
999 x = !(a == b) : p , q;.
1000 (pass_if_conversion): Verify stmts and flow.
1002 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
1004 * optabs.c (gen_conditional_trap): Restore #define.
1006 * alias.c (true_dependence): Remove 'abort' from comments. Use
1007 gcc_assert and gcc_unreachable as appropriate.
1008 (canon_true_dependence): Likewise.
1009 * bb-reorder.c (connect_traces): Likewise.
1010 * c-common.c (c_add_case_label): Likewise.
1011 * c-decl.c (finish_function): Likewise.
1012 * caller-save.c (insert_restore, insert_save): Likewise.
1013 * cfg.c (update_bb_profile_for_threading): Likewise.
1014 * cfganal.c (flow_active_insn_p): Likewise.
1015 * cfgexpand.c (add_reg_br_prob_note): Likewise.
1016 * cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
1017 cfg_layout_merge_blocks): Likewise.
1018 * ifcvt.c (cond_exec_process_insns, merge_if_block,
1019 find_if_block): Likewise.
1020 * integrate.c (allocate_initial_values): Likewise.
1021 * jump.c (reverse_condition, reverse_condition_maybe_unordered,
1022 swap_condition, unsigned_condition, signed_condition,
1023 mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
1024 reg_or_subregno): Likewise.
1025 * lambda-code.c (lambda_compute_auxillary_space,
1026 lambda_transform_legal_p): Likewise.
1027 * lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
1028 * langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
1029 lhd_incomplete_type_error, lhd_expand_expr,
1030 lhd_types_compatible_p, lhd_tree_size): Likewise.
1031 * lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
1032 * local-alloc.c (update_equiv_regs): Likewise.
1033 * loop-unroll.c (peel_loop_completely
1034 unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
1035 peel_loop_simple, unroll_loop_stupid,
1036 analyze_iv_to_split_insn): Likewise.
1037 * loop.c (gen_prefetch, find_and_verify_loops,
1038 basic_induction_var): Likewise.
1039 * modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
1040 * value-prof.c (tree_find_values_to_profile): Likewise.
1041 * varasm.c (named_section, default_assemble_integer,
1042 decode_addr_const): Likewise.
1044 2005-04-21 Alan Modra <amodra@bigpond.net.au>
1045 Fariborz Jahanian <fjahanian@apple.com>
1047 * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Fix size of
1048 portion of argument passed in fpr.
1049 * expr.c (emit_push_insn): Fix computation of 'offset' used to
1050 decide on partial argument save on stack.
1052 2005-04-21 Kazu Hirata <kazu@cs.umass.edu>
1054 * config/sparc/predicates.md, config/sparc/sparc.md: Fix
1057 2005-04-21 Jan Hubicka <jh@suse.cz>
1059 * cgraphunit.c: Include tree-pass.h
1060 (cgraph_decide_recursive_inlining,
1061 cgraph_decide_inlining_of_small_function, cgraph_set_inline_failed,
1062 cgraph_decide_inlining): Dump goes to dump_file.
1063 (cgraph_optimize): Call ipa passes instead of inliner.
1064 (cgraph_gate_inlining, pass_ipa_inline): New.
1065 * tree-optimize.c (all_ipa_passes): New static variable.
1066 (register_one_dump_file): Dead with IPA passes.
1067 (register_dump_files): Likewise.
1068 (init_tree_optimization_passes): Initialize IPA passes.
1069 (execute_todo): Do cgraph dump when asked to, do not dump function body
1071 * tree-pass.h (TODO_dump_cgraph): New macro.
1072 (ipa_passes): Declare.
1073 * Makefile.in (cgraphunit.o): Add dependency on cgraphunit.h
1075 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
1077 * config/i386/i386.c (type_natural_mode): Use gcc_unreachable and
1078 gcc_assert instead of abort.
1079 (classify_argument, examine_argument, construct_container,
1080 contains_128bit_aligned_vector_p, ix86_check_movabs,
1081 standard_80387_constant_opcode, standard_80387_constant_rtx,
1082 ix86_initial_elimination_offset, ix86_compute_frame_layout,
1083 pro_epilogue_adjust_stack, ix86_expand_epilogue,
1084 ix86_address_cost, legitimate_address_p, legitimize_pic_address,
1085 legitimize_tls_address, output_pic_addr_const,
1086 i386_output_dwarf_dtprel, put_condition_code, print_reg,
1087 get_some_local_dynamic_name, print_operand, print_operand_address,
1088 output_387_binary_op, emit_i387_cw_initialization,
1089 output_fix_trunc, output_fp_compare, ix86_output_addr_vec_elt,
1090 ix86_expand_clear, ix86_expand_binary_operator,
1091 ix86_expand_unary_operator, ix86_match_ccmode, ix86_cc_mode,
1092 ix86_cc_modes_compatible, ix86_fp_comparison_codes,
1093 ix86_fp_comparison_arithmetics_cost, ix86_expand_fp_compare,
1094 ix86_expand_branch, ix86_expand_setcc,
1095 ix86_expand_carry_flag_compare, ix86_expand_fp_movcc,
1096 ix86_expand_int_addcc, ix86_split_to_parts, ix86_split_long_move,
1097 ix86_expand_movmem, ix86_expand_call, assign_386_stack_local,
1098 memory_address_length, ix86_attr_length_immediate_default,
1099 ix86_attr_length_address_default, ix86_agi_dependant,
1100 x86_initialize_trampoline, ix86_init_mmx_sse_builtins,
1101 ix86_expand_binop_builtin, ix86_force_to_memory,
1102 ix86_secondary_memory_needed, ix86_avoid_jump_misspredicts,
1103 x86_emit_floatuns): Likewise.
1104 * config/i386/netware.c (gen_regparm_prefix,
1105 i386_nlm_strip_name_encoding): Likewise.
1106 * config/i386/winnt.c (i386_pe_mark_dllexport): Likewise.
1108 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
1110 * optabs.c (gen_condiational_trap): Remove #define.
1111 (add_equal_note): Assertify. Remove explicit indirection from
1112 call via function pointer.
1113 (expand_ternary_op, expand_simple_binop, expand_binop,
1114 expand_twoval_unop, expand_twoval_binop,
1115 expand_twoval_binop_libfunc, expand_simple_unop expand_unop,
1116 emit_unop_insn, emit_no_conflict_block, prepare_cmp_insn,
1117 prepare_operand emit_cmp_and_jump_insn_1, emit_cmp_and_jump_insns,
1118 prepare_float_lib_cmp, emit_conditional_move,
1119 emit_conditional_add, gen_add2_insn, gen_add3_insn,
1120 have_add2_insn, gen_sub2_insn, gen_sub3_insn, have_sub2_insn,
1121 expand_float, expand_fix, debug_optab_libfuncs, gen_cond_trap,
1122 vector_compare_rtx, expand_vec_cond_expr): Likewise.
1124 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
1126 * vec.h: Update API to separate allocation mechanism from type.
1127 (VEC_safe_grow): New.
1128 * vec.c (calculate_allocation): New.
1129 (vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
1130 (vec_gc_free, vec_heap_free): Remove.
1131 * gengtype-lex.l (DEF_VEC_): Process mult-argument macros. Adjust.
1133 (mangle_macro_name): New.
1134 (struct macro_def): New.
1135 (struct macro): Add multiple argument values.
1136 (macro_expans_end): New.
1137 (push_macro_expansion): Chain on new macro. Process multiple
1138 args, create follow on expansion. Return follow on argument.
1139 (macro_input): Deal with multiple arguments.
1141 * tree.h: Define VEC(tree,heap) and VEC(tree,gc).
1142 (struct tree_binfo): Adjust.
1143 * basic-block.h: Define VEC(edge,gc).
1144 (struct edge_def): Adjust.
1145 (struct basic_block_def, struct edge_iterator): Likewise.
1146 (ei_container, ei_start_1, ei_last_1): Likewise.
1147 * cfg.c (connect_src, connect_dest): Likewise.
1148 * cfgrtl.c (force_nonfallthru_and_redirect)
1149 * dbxout.c (dbxout_type)
1150 * dwarf2out.c (gen_member_die)
1151 * lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
1152 (gcc_tree_to_linear_expression): Adjust.
1153 (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
1154 lbv_to_gcc_expression, lle_to_gcc_expression,
1155 lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
1156 perfect_nestify): Likewise.
1157 * lambda.h (gcc_loopnest_to_lambda_loopnest,
1158 lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
1159 * profile.c (instrument_values): Adjust.
1160 * tree-cfg.c (modified_noreturn_calls): Adjust.
1161 (remove_fallthru_edge): Likewise.
1162 * tree-dump.c (dequeue_and_dump): Adjust.
1163 * tree-flow-inline.h (mark_stmt_modified): Adjust.
1164 * tree-flow.h (modified_noreturn_calls): Adjust.
1165 (tree_on_heap): Remove. (yay!)
1166 (register_new_def): Adjust.
1167 * tree-into-ssa.c: Define VEC(int,heap).
1168 (block_defs_stack): Adjust.
1169 (find_idf, insert_phi_nodes, register_new_def,
1170 rewrite_initialize_block, rewrite_finalize_block,
1171 register_new_update_single, rewrite_update_init_block,
1172 rewrite_update_fini_block, rewrite_blocks,
1173 ssa_rewrite_finalize_block, ssa_register_new_def,
1174 ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
1175 * tree-loop-linear.c (linear_transform_loops): Adjust.
1176 * tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
1177 (push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
1178 * tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
1179 stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
1180 vrp_variables_stack): Adjust declarations.
1181 (tree_ssa_dominator_optimize): Adjust.
1182 (dom_opt_initialize_block, remove_local_expressions_from_table,
1183 restore_nonzero_vars_to_original_value,
1184 restore_vars_to_original_value,
1185 restore_currdefs_to_original_value, dom_opt_finalize_block,
1186 record_var_is_nonzero, record_cond, record_const_or_copy_1,
1187 optimize_stmt, update_rhs_and_lookup_avail_expr,
1188 lookup_avail_expr, record_range): Likewise.
1189 * tree-ssa-pre.c: Define VEC(basic_block,heap).
1190 (compute_antic_aux): Adjust.
1191 (inserted_exprs, create_expression_by_pieces,
1192 insert_into_preds_of_block, eliminate, mark_operand_necessary,
1193 remove_dead_inserted_code, fini_pre): Likewise.
1194 * tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
1195 (varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
1196 ssa_prop_init): Likewise.
1197 * tree-ssa.c: Define VEC(bitmap,heap).
1198 (verify_name_tags): Adjust.
1199 * value-prof.c (rtl_divmod_values_to_profile): Adjust.
1200 (insn_prefetch_values_to_profile, rtl_find_values_to_profile,
1201 tree_divmod_values_to_profile, tree_find_values_to_profile,
1202 value_profile_transformations): Likewise.
1203 * value-prof.h: Define VEC(histogram_value,heap).
1204 * varasm.c: Remove alias_pair pointer typedef, define
1206 (finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
1208 * config/pa/pa.c (typedef extern_symbol): Typedef the structure,
1209 not a pointer to it. Create an object vector.
1210 (extern_symbols): Turn into an object vector.
1211 (pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
1213 2005-04-21 Sebastian Pop <pop@cri.ensmp.fr>
1216 * Makefile.in (tree-chrec.o): Depend on params.h.
1217 * params.def (PARAM_SCEV_MAX_EXPR_SIZE): New parameter with
1219 * tree-chrec.c: Depend on params.h. Replace build with buildN,
1220 and fold build with fold_buildN.
1221 (chrec_fold_plus_1): Fail with a chrec_don_know when the size of
1222 the expression exceeds PARAM_SCEV_MAX_EXPR_SIZE.
1223 (tree_contains_chrecs): Compute an estimation of the size of the
1225 * tree-chrec.h (tree_contains_chrecs): Modify its declaration.
1226 (tree_does_not_contain_chrecs): Update the use of tree_contains_chrecs.
1227 * tree-scalar-evolution.c (simple_iv): Ditto.
1228 * doc/invoke.texi (scev-max-expr-size): Documented.
1230 2005-04-21 Richard Sandiford <rsandifo@redhat.com>
1232 * config.gcc (*-*-darwin*): Add darwin.opt to $extra_options.
1233 (i[34567]86-pc-msdosdjgpp*): Likewise i386/djgpp.opt.
1234 (i[34567]86-*-lynxos*, powerpc-*-lynxos*): Likewise lynx.opt.
1235 (i[34567]86-*-sco3.2v5*): Likewise i386/sco5.opt.
1236 (i[34567]86-*-pe, i[34567]86-*-cygwin*, i[34567]86-*-mingw32*)
1237 (i[34567]86-*-uwin*): Likewise i386/cygming.opt.
1238 * config/darwin.h (darwin_one_byte_bool, darwin_fix_and_continue)
1239 (darwin_fix_and_continue_switch, SUBTARGET_OPTIONS): Delete.
1240 * config/darwin.c (darwin_one_byte_bool, darwin_fix_and_continue)
1241 (darwin_fix_and_continue_switch): Delete.
1242 * config/lynx.h (SUBTARGET_OS_LYNX_SWITCHES): Delete.
1243 (SUBTARGET_SWITCHES): Delete.
1244 * config/i386/i386.h (target_flags, MASK_80387, MASK_RTD)
1245 (MASK_ALIGN_DOUBLE, MASK_SVR3_SHLIB, MASK_IEEE_FP, MASK_FLOAT_RETURNS)
1246 (MASK_NO_FANCY_MATH_387, MASK_OMIT_LEAF_FRAME_POINTER)
1247 (MASK_STACK_PROBE, MASK_NO_ALIGN_STROPS, MASK_INLINE_ALL_STROPS)
1248 (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS, MASK_MMX)
1249 (MASK_SSE, MASK_SSE2, MASK_SSE3, MASK_3DNOW, MASK_3DNOW_A)
1250 (MASK_128BIT_LONG_DOUBLE, MASK_64BIT, MASK_MS_BITFIELD_LAYOUT)
1251 (MASK_TLS_DIRECT_SEG_REFS, MASK_NO_RED_ZONE, TARGET_80387)
1252 (TARGET_RTD, TARGET_ALIGN_DOUBLE, TARGET_PUSH_ARGS)
1253 (TARGET_ACCUMULATE_OUTGOING_ARGS, TARGET_SVR3_SHLIB, TARGET_IEEE_FP)
1254 (TARGET_128BIT_LONG_DOUBLE, TARGET_NO_FANCY_MATH_387)
1255 (TARGET_USE_FANCY_MATH_387, TARGET_OMIT_LEAF_FRAME_POINTER)
1256 (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Delete.
1257 (TARGET_FLOAT_RETURNS_IN_80387): Make an alias of TARGET_FLOAT_RETURNS.
1258 (TARGET_64BIT): Undef before redefining.
1259 (TARGET_TLS_DIRECT_SEG_REFS, TARGET_STACK_PROBE)
1260 (TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS, TARGET_SSE)
1261 (TARGET_SSE2, TARGET_SSE3, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A)
1262 (TARGET_RED_ZONE, TARGET_USE_MS_BITFIELD_LAYOUT, TARGET_SWITCHES)
1263 (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS)
1264 (ix86_fpmath_string, ix86_tls_dialect_string, ix86_cmodel_string)
1265 (ix86_asm_string, ix86_regparm, ix86_regparm_string)
1266 (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
1267 (ix86_debug_arg_string, ix86_debug_addr_string)
1268 (ix86_align_loops_string, ix86_align_jumps_string)
1269 (ix86_align_funcs_string): Delete.
1270 * config/i386/cygming.h (MASK_NOP_FUN_DLLIMPORT)
1271 (TARGET_NOP_FUN_DLLIMPORT, SUBTARGET_SWITCHES): Delete.
1272 * config/i386/djgpp.h (MASK_BNU210, SUBTARGET_SWITCHES): Delete.
1273 (SUBTARGET_OVERRIDE_OPTIONS): Check TARGET_BNU210.
1274 * config/i386/lynx.h (SUBTARGET_SWITCHES): Delete.
1275 * config/i386/sco5.h (MASK_COFF, TARGET_ELF)
1276 (SUBTARGET_SWITCHES): Delete.
1277 * config/i386/i386.c (ix86_debug_arg_string): Delete.
1278 (ix86_debug_addr_string): Delete.
1279 (ix86_cmodel_string, ix86_asm_string, ix86_tls_dialect_string)
1280 (ix86_fpmath_string, ix86_regparm_string, ix86_regparm)
1281 (ix86_align_loops_string, ix86_align_jumps_string)
1282 (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
1283 (ix86_align_funcs_string): Make static.
1284 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
1285 (ix86_handle_option): New function.
1286 (TARGET_USE_MS_BITFIELD_LAYOUT): Delete.
1287 (ix86_ms_bitfield_layout_p): Check TARGET_MS_BITFIELD_LAYOUT.
1288 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Remove handling
1289 of darwin_fix_and_continue_switch.
1290 (darwin_one_byte_bool): Delete.
1291 * config/rs6000/lynx.h (EXTRA_SUBTARGET_SWITCHES): Delete.
1292 * config/rs6000/rs6000.c (rs6000_override_options): Update assignment
1293 to darwin_one_byte_bool.
1294 * config/darwin.opt, config/lynx.opt, config/i386/cygming.opt,
1295 * config/i386/djgpp.opt, config/i386/i386.opt,
1296 * config/i386/sco5.opt: New files.
1298 2005-04-21 Eric Botcazou <ebotcazou@libertysurf.fr>
1300 * config/sparc/sparc.c (reg_or_0_operand, const1_operand,
1301 fp_zero_operand, fp_register_operand, intreg_operand,
1302 fcc_reg_operand, fcc0_reg_operand, icc_or_fcc_reg_operand,
1303 call_operand, call_operand_address, tgd_symbolic_operand,
1304 tld_symbolic_operand, tie_symbolic_operand, tle_symbolic_operand,
1305 symbolic_operand, symbolic_memory_operand, label_ref_operand,
1306 sp64_medium_pic_operand, data_segment_operand,
1307 text_segment_operand, splittable_symbolic_memory_operand,
1308 reg_or_nonsymb_mem_operand, splittable_immediate_memory_operand,
1309 eq_or_neq, normal_comp_operator, noov_compare_op,
1310 noov_compare64_op, v9_regcmp_op, extend_op, cc_arithop,
1311 cc_arithopn, arith_operand, arith_4096_operand, arith_add_operand,
1312 const64_operand, const64_high_operand, arith11_operand,
1313 arith10_operand, arith_double_operand, arith_double_4096_operand,
1314 arith_double_add_operand, arith11_double_operand,
1315 arith10_double_operand, small_int, small_int_or_double,
1316 uns_small_int, uns_arith_operand, clobbered_register,
1317 input_operand, compare_operand): Delete.
1318 (sparc_emit_set_const32): Use predicates in assertion. Remove special
1319 code for TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT != 64.
1320 (sparc_emit_set_const64): Call gcc_unreachable if H_B_P_W_I == 32.
1321 (GEN_HIGHINT64, GEN_INT64): Delete.
1322 (sparc_emit_set_safe_HIGH64, gen_safe_SET64, gen_safe_OR64,
1323 gen_safe_XOR64): Adjust for above deletion.
1324 (sparc_emit_set_const64): Support only H_B_P_W_I == 64 and CONST_INTs.
1325 Use 'unsigned HOST_WIDE_INT' instead of 'long' for bitmask.
1326 (legitimate_constant_p): Use const_zero_operand instead.
1327 (sparc_extra_constraint_check): Likewise.
1328 * config/sparc/sparc.h (CONST_DOUBLE_OK_FOR_LETTER_P): Remove 'O'.
1329 (PREFERRED_RELOAD_CLASS): Use const_zero_operand.
1330 (PREDICATE_CODES): Delete.
1331 * config/sparc/sparc.md: Include predicates.md.
1332 (All patterns): Adjust for new predicate names.
1333 (cmpdi, cmpdi_sp64): Use arith_operand predicate.
1334 (movhi_const64_special, movsi_const64_special): Add 'K' constraint.
1335 (movdi): Use general_operand predicate.
1336 (movdi_sp64_dbl): Delete.
1337 (movdi_const64_special): Add 'N' constraint.
1338 (movdicc): Use arith10_operand predicate.
1339 (movdi_cc_sp64, movdi_cc_sp64_trunc): Use arith11_operand predicate.
1340 (movdi_cc_reg_sp64): Use arith10_operand predicate.
1341 (movdi_cc_reg_sp64_trunc): Delete.
1342 (cmp_zero_extract, cmp_zero_extract_sp64): Use small_int_operand.
1343 (adddi3_sp64, cmp_ccx_plus, cmp_ccx_plus_set): Use arith_operand.
1344 (subdi3_sp32): Delete.
1345 (subdi3_insn_sp32): Change to define_insn_and_split.
1346 (subdi3_sp64, cmp_minus_ccx, cmp_minus_ccx_set): Use arith_operand.
1347 (muldi3, muldi3_sp64, muldi3_v8plus): Likewise.
1348 (smulsi3_highpart_v8plus, const_smulsi3_highpart_v8plus,
1349 umulsi3_highpart_v8plus, const_umulsi3_highpart_v8plus): Use
1350 small_int_operand predicate.
1351 (divdi3, udivdi3): Use arith_operand predicate.
1352 (udivsi3, udivsi3_sp32, udivsi3_sp64): Use nonimmediate_operand.
1353 (and<V64I>3_sp64, ior<V64I>3_sp64, xor<V64I:mode>3_sp64,
1354 xor_not_<V64I:mode>_sp64) : Use arith_operand predicate.
1355 (xordi3_sp64_dbl): Delete.
1356 (cmp_ccx_arith_op, cmp_ccx_arith_op_set, cmp_ccx_xor_not,
1357 cmp_ccx_xor_not_set, cmp_ccx_arith_op_not, cmp_ccx_arith_op_not_set,
1358 cmp_ccx_neg, cmp_ccx_set_neg, one_cmpl<V64I>2_sp64, cmp_ccx_not,
1359 cmp_ccx_set_not): Use arith_operand predicate.
1360 (ashrsi3_extend2, lshrsi3_extend2 et al.): Use small_int_operand.
1361 * config/sparc/predicates.md: New file.
1363 2005-04-21 Kazu Hirata <kazu@cs.umass.edu>
1365 PR tree-optimization/14846
1366 * fold-const.c (fold_single_bit_test_into_sign_test): New,
1368 (fold_single_bit_test): ... here.
1369 (fold_binary): Call fold_single_bit_test_into_sign_test
1370 instead of fold_single_bit_test.
1372 2005-04-20 James E Wilson <wilson@specifixinc.com>
1375 * dwarf2out.c (gen_variable_die): Don't emit a specification if this
1376 is another declaration.
1378 2005-04-21 Hans-Peter Nilsson <hp@axis.com>
1380 * config/cris/predicates.md: New file.
1381 * config/cris/cris-protos.h (cris_store_multiple_op_p)
1382 (cris_movem_load_rest_p): Declare.
1383 * config/cris/cris.c (cris_store_multiple_op): Return bool, not int.
1384 (cris_movem_load_rest_p): Ditto. Globalize.
1385 (cris_bdap_operand, cris_bdap_biap_operand,
1386 cris_orthogonal_operator, cris_commutative_orth_op,
1387 cris_operand_extend_operator,
1388 cris_additive_operand_extend_operator, cris_extend_operator,
1389 cris_plus_or_bound_operator, cris_mem_op,
1390 cris_general_operand_or_symbol,
1391 cris_general_operand_or_gotless_symbol,
1392 cris_general_operand_or_plt_symbol, cris_mem_call_operand,
1393 cris_load_multiple_op): Remove predicate functions.
1394 (cris_symbol, cris_gotless_symbol) <case UNSPEC>: Return 0, don't
1395 abort, for UNSPECs other than CRIS_UNSPEC_PLT.
1396 * config/cris/cris.h (PREDICATE_CODES): Don't define.
1397 * config/cris/cris.md: Include predicates.md.
1398 ("call", "call_value"): Generate CONSTs of Pmode, not VOIDmode.
1400 2005-04-20 Ian Lance Taylor <ian@airs.com>
1402 * c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).
1403 * c-common.h (STMT_EXPR_STMT): Don't define.
1404 (STMT_EXPR_NO_SCOPE): Don't define.
1405 * c-dump.c (c_dump_tree): Don't handle STMT_EXPR.
1406 * c-pretty-print.c (pp_c_primary_expression): Likewise.
1407 (pp_c_expression): Likewise.
1409 2005-04-20 Richard Henderson <rth@redhat.com>
1412 * config/i386/mmx.md (push<MMXMODE>1): Fix predicate thinko.
1414 2005-04-20 Jeff Law <law@redhat.com>
1416 * reload1.c (reload): Ignore equivalences between pseudos and
1419 2005-04-20 Joseph S. Myers <joseph@codesourcery.com>
1422 * c-tree.h (struct c_label_list): Update comment.
1423 (struct c_label_context): Rename to struct c_label_context_se.
1424 (label_context_stack): Rename to label_context_stack_se.
1425 (C_DECL_UNJUMPABLE_VM, C_DECL_UNDEFINABLE_VM, struct
1426 c_label_context_vm, label_context_stack_vm, c_begin_vm_scope,
1427 c_end_vm_scope): New.
1428 (C_DECL_DECLARED_BUILTIN, C_DECL_USED): Use FUNCTION_DECL_CHECK.
1429 * c-decl.c (pop_scope): Call c_end_vm_scope.
1430 (pushdecl): Call c_begin_vm_scope for variably modified
1432 (define_label): Check for jumping into scope of identifier with
1433 variably modified type. Push label on stack for those defined at
1434 current context of identifiers with variably modified type.
1435 (start_function): Create stack level for context of identifiers
1436 with variably modified type.
1437 (finish_function): Pop stack level for context of identifiers with
1438 variably modified type.
1439 * c-typeck.c (label_context_stack): Rename to
1440 label_context_stack_se.
1441 (label_context_stack_vm, c_begin_vm_scope, c_end_vm_scope): New.
1442 (c_finish_goto_label): Check for jumping into scope of identifier
1443 with variably modified type. Push label on stack for those jumped
1444 to from current context of identifiers with variably modified
1446 (struct c_switch): Add blocked_vm.
1447 (c_start_case): Initialize blocked_vm.
1448 (do_case): Check blocked_vm.
1449 (c_finish_case): Add comment.
1450 (c_begin_stmt_expr, c_finish_stmt_expr): Update for renamed
1451 variable label_context_stack.
1453 2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
1455 * tree-ssa-phiopt.c (tree_ssa_phi_opt): Update calls to
1456 conditional_replacement, value_replacement, abs_replacement,
1458 (replace_phi_edge_with_variable): Remove argument BB.
1459 (conditional_replacement, value_replacement,
1460 minmax_replacement, abs_replacement): Remove argument PHI_BB.
1461 Update a call to replace_phi_edge_with_variable.
1463 * tree-ssa-phiopt.c: Fix comments.
1465 2005-04-20 Michael Matz <matz@suse.de>
1468 * reload.c (push_reload, find_dummy_reload): Check for uninitialized
1471 2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
1473 * tree-ssa-phiopt.c: Fix comment typos.
1475 PR tree-optimization/21116
1476 * tree-ssa-phiopt.c: Fix a typo.
1478 2005-04-19 Richard Henderson <rth@redhat.com>
1480 * builtins.c (expand_builtin_sync_operation): Revert last change.
1481 * optabs.c (expand_bool_compare_and_swap): Compare vs old value,
1483 (expand_compare_and_swap_loop): Likewise.
1484 (expand_sync_operation): Remove fallback from NAND to AND; invert
1485 memory operand when expanding from cmpxchg.
1486 (expand_sync_fetch_operation): Likewise.
1487 * doc/extend.texi (Atomic Builtins): Fix docs for nand and
1490 * config/alpha/alpha.c (alpha_split_atomic_op): Invert memory operand
1491 when implementing NAND. Fix double-add for AFTER.
1492 * config/alpha/sync.md (sync_nand<I48MODE>): Invert memory operand.
1493 (sync_old_nand<I48MODE>, sync_new_nand<I48MODE>): Likewise.
1494 (sync_compare_and_swap<I48MODE>): Fix compare vs zero. Return old
1496 (sync_lock_test_and_set<I48MODE>): Remove extra label and last
1499 * config/i386/sync.md (sync_compare_and_swap<IMODE>): Fix pattern
1500 to return old memory value.
1501 (sync_compare_and_swap_cc<IMODE>): Likewise.
1503 * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Early
1504 return pre-reload. Don't consider output or anti dependencies.
1505 * config/ia64/sync.md (IMODE): New.
1506 (modesuffix): Add QI and HI.
1507 (memory_barrier): Simplify expansion.
1508 (sync_compare_and_swap<IMODE>): Use IMODE, not I48MODE.
1509 (cmpxchg_acq_<IMODE>): Likewise.
1510 (sync_lock_test_and_set<IMODE>): Likewise.
1511 (sync_lock_release<IMODE>): Likewise.
1513 2005-04-19 James A. Morrison <phython@gcc.gnu.org>
1515 * fold-const.c (fold_binary): Fold ~(X ^ Y) to ~X ^ Y or X ^ ~Y if
1518 2005-04-19 James A. Morrison <phython@gcc.gnu.org>
1520 * fold-const (fold_binary): Fold ~X ^ ~ Y to X ^ Y.
1522 2005-04-20 Michael Pogue <michael.pogue@sun.com>
1523 Joseph S. Myers <joseph@codesourcery.com>
1525 * c.opt (Wint-to-pointer-cast, Wpointer-to-int-cast): New options.
1526 * c-typeck.c (build_c_cast): Check these options.
1527 * doc/invoke.texi: Document these options.
1529 2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
1531 * tree-ssa-phiopt.c: Update a comment about the pass.
1533 2005-04-19 Kazu Hirata <kazu@cs.umass.edu>
1535 * tree-ssa-phiopt.c, config/arm/arm.c, config/fr30/fr30.md,
1536 config/mcore/mcore.c: Fix comment typos.
1538 2005-04-19 Daniel Jacobowitz <dan@codesourcery.com>
1540 * Makefile.in (libgcc.mk): Pass GCC_FOR_TARGET.
1541 * mklibgcc.in: Use $GCC_FOR_TARGET instead of ./xgcc.
1543 2005-04-19 Paul Brook <paul@codesourcery.com>
1545 * config/arm/arm.c (arm_init_libfuncs): Clear mod optabs.
1547 2005-04-19 Andrew Haley <aph@redhat.com>
1550 * dbxout.c (dbxout_type_fields): Check DECL_IGNORED_P before
1551 looking at a field's bitpos.
1553 2005-04-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1555 * system.h (fopen, fdopen, freopen): Define these to the unlocked
1556 libiberty functions.
1558 2005-04-19 Kazu Hirata <kazu@cs.umass.edu>
1560 PR tree-optimization/21096
1561 * tree-ssa-copy.c (fini_copy_prop): Free cached_last_copy_of.
1563 2005-04-19 Alan Modra <amodra@bigpond.net.au>
1566 * config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
1567 * config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use the above.
1569 2005-04-19 Alexandre Oliva <aoliva@redhat.com>
1571 * tree-cfg.c (dump_function_to_file): Use cfun info only if it
1572 refers to the function being dumped.
1574 2005-04-18 Daniel Jacobowitz <dan@codesourcery.com>
1576 * varasm.c (assemble_start_function): Remove reset of in_section.
1578 2005-04-18 James A. Morrison <phython@gcc.gnu.org>
1580 PR tree-optimization/21085
1581 * fold-const (fold_binary): Don't change X % -C to X % C if C has
1584 2005-04-19 Ben Elliston <bje@au.ibm.com>
1586 * doc/invoke.texi (Optimize Options): Refer to the correct
1587 optimisation flag -ftree-dominator-opts, not -ftree-dom.
1589 2005-04-18 Christopher Jaillet <christophe.jaillet@wanadoo.fr>
1591 * config/rs6000/rs6000.c (machopic_output_stub): Increase
1592 alloca argument to be big enough.
1594 2005-04-18 Alexandre Oliva <aoliva@redhat.com>
1597 * tree-cfg.c (dump_function_to_file): Do not crash if cfun or
1600 2005-04-18 Tom Tromey <tromey@redhat.com>
1602 * cgraphunit.c (cgraph_finalize_compilation_unit): Fix a comment
1605 2005-04-18 Richard Henderson <rth@redhat.com>
1607 * config/alpha/alpha.c (alpha_split_atomic_op): New.
1608 (alphaev5_insn_pipe): Add LD_L, ST_C, MB types.
1609 (alphaev4_insn_pipe): Likewise. Correct IST and LDSYM pipes.
1610 * config/alpha/alpha-protos.h: Update.
1611 * config/alpha/alpha.md (UNSPECV_MB, UNSPECV_LL, UNSPECV_SC): New.
1612 (UNSPECV_ATOMIC, UNSPECV_CMPXCHG, UNSPECV_XCHG): New.
1613 (attr type): Add ld_l, st_c, mb.
1614 (andsi_internal, andnotsi3, iorsi_internal, one_cmplsi_internal,
1615 iornotsi3, xorsi_internal, xornotsi3): New.
1616 * config/alpha/ev4.md (ev4_ld): Add ld_l.
1617 (ev4_ist_c, ev4_mb): New.
1618 * config/alpha/ev5.md (ev5_st): Add st_c, mb.
1620 * config/alpha/ev6.md (ev6_ild): Add ld_l.
1621 (ev6_ist): Add st_c.
1623 * config/alpha/sync.md: New file.
1625 2005-04-18 Richard Henderson <rth@redhat.com>
1627 * builtins.c (expand_builtin_sync_operation): Fold nand to and
1630 * optabs.c (expand_sync_operation): Fix typo expanding nand to and.
1632 2005-04-18 Devang Patel <dpatel@apple.com>
1634 * config/rs6000/atlivec.md (mulv4si3): New pattern.
1636 2005-04-18 James A. Morrison <phython@gcc.gnu.org>
1638 PR tree-optimization/20922
1639 * fold-const.c (fold_binary): Fold X - c > X and X + c < X to false.
1640 Fold X + c >= X and fold X - c <= X to true.
1642 2005-04-18 James A. Morrison <phython@gcc.gnu.org>
1644 * config/ia64/unwind-ia64.c (emergency_reg_state_free): Make an
1646 (emergency_labeled_state_free): Likewise.
1648 2005-04-18 Nick Clifton <nickc@redhat.com>
1650 * config/h8300/h8300.md (jump): Remove prescan parameter from
1651 calls to final_scan_insn.
1653 * config/arc/arc.c (arc_output_function_epilogue): Remove prescan
1654 parameter from calls to final_scan_insn.
1656 * config.gcc (m68hc12): Use the m68hc11.opt file for target
1658 (v850e, v850e1): Use the v850.opt file for target specific
1661 2005-04-18 Kazu Hirata <kazu@cs.umass.edu>
1663 PR tree-optimization/21001
1664 * tree-optimize.c (init_tree_optimization_passes): Move the
1665 first pass_forwprop immediately before pass_vrp.
1667 2005-04-17 Ian Lance Taylor <ian@airs.com>
1669 * c-common.def (SIZEOF_EXPR, ARROW_EXPR, ALIGNOF_EXPR): Remove.
1670 * c-common.c (c_sizeof_or_alignof_type): Change second parameter
1671 from enum tree_code op to bool is_sizeof.
1672 * c-common.h (c_sizeof_or_alignof_type): Update declaration.
1673 (c_sizeof, c_alignof): Update calls to c_sizeof_or_alignof_type.
1674 * c-pretty-print.c (pp_c_postfix_expression): Remove ARROW_EXPR
1676 (pp_c_unary_expression): Remove SIZEOF_EXPR and ALIGNOF_EXPR
1678 (pp_c_expression): Remove ARROW_EXPR, SIZEOF_EXPR, and
1681 2005-04-17 Ian Lance Taylor <ian@airs.com>
1683 * system.h: Poison DONT_ACCESS_GBLS_AFTER_EPILOGUE.
1685 2005-04-17 Richard Henderson <rth@redhat.com>
1687 * config/alpha/alpha.c (va_list_skip_additions): Only define if
1689 (TARGET_STDARG_OPTIMIZE_HOOK): Likewise.
1690 (alpha_stdarg_optimize_hook): Likewise. Allow for one more round
1691 of indirection through ssa names while looking for the gpr counter
1693 (alpha_setup_incoming_varargs) <TARGET_ABI_OSF>: Make use of the
1694 saved va_list_gpr_size and va_list_fpr_size.
1696 2005-04-17 Kazu Hirata <kazu@cs.umass.edu>
1698 * tree-vrp.c (compare_values): Check that VAL1 and VAL2 are
1699 both pointers or both integers.
1701 * tree-vrp.c (maybe_add_assert_expr): Don't assert
1702 ASSERT_EXPRs for single-use variable.
1704 * tree-into-ssa.c: Fix a comment typo.
1706 2005-04-17 Richard Sandiford <rsandifo@redhat.com>
1708 * config/mips/iris6.h (DRIVER_SELF_SPECS): Check -march as well as
1709 -mipsN before forcing a default of -mips2.
1711 2005-04-17 Kazu Hirata <kazu@cs.umass.edu>
1713 * predict.h (IS_TAKEN): Remove.
1714 * rtl.h (NOTE_PREDICTION): Likewise.
1716 * modulo-sched.c (CFG_HOOKS): Remove.
1718 * c-parser.c (N_C_TTYPES): Remove.
1720 * tree-flow-inline.h (get_stmt_operands): Remove.
1721 * lambda-code.c, tree-ssa-loop-unswitch.c,
1722 tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa-propagate.c,
1723 tree-ssa-sink.c, tree-ssa.c, tree-tailcall.c,
1724 tree-vect-transform.c, tree-vectorizer.c, tree-vrp.c): Remove
1725 calls to get_stmt_operands.
1726 * doc/tree-ssa.texi: Don't mention get_stmt_operands.
1728 2005-04-17 Richard Henderson <rth@redhat.com>
1731 * config/alpha/alpha.c (alpha_setup_incoming_varargs): Advance a copy
1732 of CUMULATIVE_ARGS past the last named argument.
1733 (alpha_va_start): Expect pretend_args_size only if strictly less than
1736 2005-04-17 Kazu Hirata <kazu@cs.umass.edu>
1739 * builtins.c (expand_builtin_strcat): Convert the result of
1740 strlen to the right type.
1741 * fold-const.c (fold_binary) <PLUS_EXPR>: Use fold_convert to
1742 avoid creating type mismatches.
1743 <GE_EXPR>: Pass op0 and op1 to fold_build2 to avoid creating
1746 * c-lex.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Remove.
1748 2005-04-16 Richard Henderson <rth@redhat.com>
1751 * builtins.c (expand_builtin) <BUILT_IN_BOOL_COMPARE_AND_SWAP_*>:
1752 Use the mode of boolean_type_node when the user doesn't provide one.
1753 * config/ia64/sync.md (sync_lock_release<I48MODE>): Use operand 1.
1755 2005-04-16 Alexandre Oliva <aoliva@redhat.com>
1758 * loop.c (loop_givs_rescan): Handle non-replaceable (plus (reg)
1761 * tree-scalar-evolution.c (interpret_rhs_modify_expr): Fix typo in
1764 2005-04-16 Roger Sayle <roger@eyesopen.com>
1765 Steven Bosscher <stevenb@suse.de>
1767 * fold-const.c (fold_binary_to_constant): Delete obsolete comment.
1768 (fold_unary_to_constant): Likewise.
1770 2005-04-16 Kazu Hirata <kazu@cs.umass.edu>
1772 * basic-block.h: Adjust the value of PROP_SCAN_DEAD_STORES,
1775 2005-04-16 Gerald Pfeifer <gerald@pfeifer.com>
1777 * doc/install.texi (Specific): Avoid using asterisks in @anchor
1778 names related to target triplets.
1779 Remove i?86-*-esix from platform directory.
1780 Remove powerpc-*-eabiaix from platform directory.
1782 2005-04-16 Joseph S. Myers <joseph@codesourcery.com>
1785 * config/ia64/ia64.c (rtx_needs_barrier): Recurse instead of
1786 falling through from SUBREG case to REG.
1788 2005-04-15 Roger Sayle <roger@eyesopen.com>
1790 * fold-const.c (fold_relational_hi_lo): Delete function and prototype.
1791 (fold_binary): Update comment mentioning fold_relational_hi_lo.
1792 (fold_binary_to_constant): Simplify using fold_binary.
1793 (fold_unary_to_constant): Likewise, simplify using fold_unary.
1795 2005-04-15 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
1797 * gthr-posix.c (pthread_cancel): Define.
1798 (pthread_mutexattr_init): Likewise.
1799 (pthread_mutexattr_settype): Likewise.
1800 (pthread_mutexattr_destroy): Likewise.
1802 2005-04-15 David S. Miller <davem@davemloft.net>
1805 * config/sparc/sparc.h (sparc_hard_reg_printed): Mark as GTY(()).
1807 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
1809 PR tree-optimization/21031
1810 * tree-ssa-forwprop.c (ssa_name_defined_by_comparison_p): New.
1811 (forward_propagate_into_cond_1): Call it. Forward propagate
1812 integer-integer casts into COND_EXPRs.
1814 2005-04-15 Dave Korn <dave.korn@artimi.com>
1816 * gcc.c (default_compilers): Clarify obscure error message when
1817 reading from standard input.
1819 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
1821 * basic-block.h (PROP_EQUAL_NOTES): Remove.
1822 * flow.c (propagate_one_insn): Don't use PROP_EQUAL_NOTES.
1824 * tree-ssa-alias.c (init_alias_info): Remove a call to
1827 2005-04-15 Andrew MacLeod <amacleod@redhat.com>
1829 * tree-vect-analyze.c (vect_stmt_relevant_p): Process immediate uses
1830 of non-virtual PHI nodes like we use to.
1832 2005-05-15 Paolo Bonzini <bonzini@gnu.org>
1834 * genattrtab.c (ATTR_EQ_ATTR_P): Remove.
1835 (attr_copy_rtx): Do not use it.
1837 2005-04-15 Andrew Macleod <amacleod@redhat.com>
1839 * doc/tree-ssa.texi: Grammer/abbreviation updates.
1841 2005-04-15 Diego Novillo <dnovillo@redhat.com>
1843 * tree-vect-transform.c (vectorizable_store): Mark necessary
1844 objects in the vectorized store needing renaming. Update the
1845 SSA graph for V_MAY_DEF operands in the original store.
1847 2005-04-14 Daniel Berlin <dberlin@dberlin.org>
1849 * tree-ssa-pre.c (compute_avail): It's okay to have
1850 TREE_INVARIANT's here, and value number the resulting expressions.
1851 (create_expression_by_pieces): Make sure operands that were
1852 min_invariant when we started, stay that way.
1854 2005-04-15 David Edelsohn <edelsohn@gnu.org>
1856 * doc/install.texi (*-ibm-aix*): Add comment about system limits.
1858 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
1860 PR tree-optimization/20936.
1861 * tree-ssa-ccp.c (visit_assignment): Fix a typo.
1863 2005-04-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1865 * doc/invoke.texi: Fix typos.
1866 * doc/md.texi: Likewise.
1867 * doc/rtl.texi: Likewise.
1868 * doc/sourcebuild.texi: Likewise.
1869 * doc/tm.texi: Likewise.
1871 2005-04-15 Uros Bizjak <uros@kss-loka.si>
1873 PR tree-optimization/21004
1874 * convert.c (convert_to_integer): Convert ceilf, ceill, floorf
1875 and floorl in c99 mode only.
1876 * builtins.c (expand_builtin_int_roundingfn): Assert that
1877 fallback_fndecl is not NULL_TREE.
1879 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
1881 * cfgrtl.c (purge_all_dead_edge): Remove an unused argument.
1882 * basic-block.h: Update the prototype for
1883 purge_all_dead_edges.
1884 * cfgexpand.c (tree_expand_cfg): Update a call to
1885 purge_all_dead_edges.
1886 * combine.c (combine_instructions): Likewise.
1887 * passes.c (rest_of_handle_old_regalloc, rest_of_handle_cse,
1888 rest_of_handle_cse2, rest_of_handle_gcse,
1889 rest_of_handle_postreload): likewise.
1891 2005-04-15 Alexandre Oliva <aoliva@redhat.com>
1894 * gimplify.c (gimplify_addr_expr): Compensate for removal of
1895 e.g. cv-qualification conversions.
1897 2005-04-14 Mike Stump <mrs@apple.com>
1899 * config/darwin-c.c (framework_construct_pathname): We must
1900 find all headers of a framework in the first instance of it
1901 found in the seach path.
1903 2005-04-14 Kazu Hirata <kazu@cs.umass.edu>
1905 PR tree-optimization/21021
1906 * tree-vrp.c (compare_values): Work around a bug in the front
1907 end that produces a comparison of mismatched types.
1909 2004-04-14 Richard Henderson <rth@redhat.com>
1911 * config/ia64/ia64.h (enum fetchop_code): Remove.
1912 (enum ia64_builtins): Move ...
1913 * config/ia64/ia64.c (enum ia64_builtins): ... here. Remove all
1914 members except BSP and FLUSHRS.
1915 (ia64_init_builtins): Remove __sync builtins.
1916 (ia64_expand_builtin): Likewise.
1917 (ia64_expand_fetch_and_op, ia64_expand_op_and_fetch): Remove.
1918 (ia64_expand_compare_and_swap, ia64_expand_lock_test_and_set): Remove.
1919 (ia64_expand_lock_release): Remove.
1920 * config/ia64/ia64.md (mf): Move to sync.md.
1921 (mf_internal, fetchadd_acq_si, fetchadd_acq_di, cmpxchg_acq_si,
1922 cmpxchg_acq_di, xchgsi, xchgdi): Likewise.
1923 * config/ia64/sync.md: New file.
1924 (memory_barrier): Rename from mf.
1925 (fetchadd_acq_<I48MODE>): Macroize from _si/_di patterns.
1926 (cmpxchg_acq_<I48MODE>): Likewise.
1927 (sync_lock_test_and_set<I48MODE>): Likewise.
1929 * config/ia64/ia64intrin.h: Define nothing for C; limit #defines
1930 to c++. Remove __sync* declarations. s/_si/_4/. s/_di/_8/.
1932 2004-04-14 Richard Henderson <rth@redhat.com>
1934 * config/i386/i386.c (x86_cmpxchg, x86_xadd): New.
1935 (ix86_compare_emitted): New.
1936 (ix86_expand_compare): Use ix86_compare_emitted if set.
1937 (ix86_expand_setcc): Only emit REG_EQUAL if both ix86_compare_op0
1938 and ix86_compare_op0 are set.
1939 * config/i386/i386.h (x86_cmpxchg, x86_xadd): Declare.
1940 (TARGET_CMPXCHG, TARGET_XADD): New.
1941 (ix86_compare_emitted): Declare.
1942 * config/i386/i386.md: Include sync.md
1943 (UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2): New.
1944 (UNSPECV_XCHG, UNSPECV_LOCK): New.
1945 * config/i386/sync.md: New file.
1947 2004-04-14 Richard Henderson <rth@redhat.com>
1950 * builtin-types.def (BT_BOOL, BT_VOLATILE_PTR, BT_I1, BT_I2,
1951 BT_I4, BT_I8, BT_FN_VOID_VPTR, BT_FN_I1_VPTR_I1, BT_FN_I2_VPTR_I2,
1952 BT_FN_I4_VPTR_I4, BT_FN_I8_VPTR_I8, BT_FN_BOOL_VPTR_I1_I1,
1953 BT_FN_BOOL_VPTR_I2_I2, BT_FN_BOOL_VPTR_I4_I4, BT_FN_BOOL_VPTR_I8_I8,
1954 BT_FN_I1_VPTR_I1_I1, BT_FN_I2_VPTR_I2_I2, BT_FN_I4_VPTR_I4_I4,
1955 BT_FN_I8_VPTR_I8_I8): New.
1956 * builtins.def (DEF_SYNC_BUILTIN): New.
1957 (BUILT_IN_FETCH_AND_ADD_N, BUILT_IN_FETCH_AND_ADD_1,
1958 BUILT_IN_FETCH_AND_ADD_2, BUILT_IN_FETCH_AND_ADD_4,
1959 BUILT_IN_FETCH_AND_ADD_8, BUILT_IN_FETCH_AND_SUB_N,
1960 BUILT_IN_FETCH_AND_SUB_1, BUILT_IN_FETCH_AND_SUB_2,
1961 BUILT_IN_FETCH_AND_SUB_4, BUILT_IN_FETCH_AND_SUB_8,
1962 BUILT_IN_FETCH_AND_OR_N, BUILT_IN_FETCH_AND_OR_1,
1963 BUILT_IN_FETCH_AND_OR_2, BUILT_IN_FETCH_AND_OR_4,
1964 BUILT_IN_FETCH_AND_OR_8, BUILT_IN_FETCH_AND_AND_N,
1965 BUILT_IN_FETCH_AND_AND_1, BUILT_IN_FETCH_AND_AND_2,
1966 BUILT_IN_FETCH_AND_AND_4, BUILT_IN_FETCH_AND_AND_8,
1967 BUILT_IN_FETCH_AND_XOR_N, BUILT_IN_FETCH_AND_XOR_1,
1968 BUILT_IN_FETCH_AND_XOR_2, BUILT_IN_FETCH_AND_XOR_4,
1969 BUILT_IN_FETCH_AND_XOR_8, BUILT_IN_FETCH_AND_NAND_N,
1970 BUILT_IN_FETCH_AND_NAND_1, BUILT_IN_FETCH_AND_NAND_2,
1971 BUILT_IN_FETCH_AND_NAND_4, BUILT_IN_FETCH_AND_NAND_8,
1972 BUILT_IN_ADD_AND_FETCH_N, BUILT_IN_ADD_AND_FETCH_1,
1973 BUILT_IN_ADD_AND_FETCH_2, BUILT_IN_ADD_AND_FETCH_4,
1974 BUILT_IN_ADD_AND_FETCH_8, BUILT_IN_SUB_AND_FETCH_N,
1975 BUILT_IN_SUB_AND_FETCH_1, BUILT_IN_SUB_AND_FETCH_2,
1976 BUILT_IN_SUB_AND_FETCH_4, BUILT_IN_SUB_AND_FETCH_8,
1977 BUILT_IN_OR_AND_FETCH_N, BUILT_IN_OR_AND_FETCH_1,
1978 BUILT_IN_OR_AND_FETCH_2, BUILT_IN_OR_AND_FETCH_4,
1979 BUILT_IN_OR_AND_FETCH_8, BUILT_IN_AND_AND_FETCH_N,
1980 BUILT_IN_AND_AND_FETCH_1, BUILT_IN_AND_AND_FETCH_2,
1981 BUILT_IN_AND_AND_FETCH_4, BUILT_IN_AND_AND_FETCH_8,
1982 BUILT_IN_XOR_AND_FETCH_N, BUILT_IN_XOR_AND_FETCH_1,
1983 BUILT_IN_XOR_AND_FETCH_2, BUILT_IN_XOR_AND_FETCH_4,
1984 BUILT_IN_XOR_AND_FETCH_8, BUILT_IN_NAND_AND_FETCH_N,
1985 BUILT_IN_NAND_AND_FETCH_1, BUILT_IN_NAND_AND_FETCH_2,
1986 BUILT_IN_NAND_AND_FETCH_4, BUILT_IN_NAND_AND_FETCH_8,
1987 BUILT_IN_BOOL_COMPARE_AND_SWAP_N, BUILT_IN_BOOL_COMPARE_AND_SWAP_1,
1988 BUILT_IN_BOOL_COMPARE_AND_SWAP_2, BUILT_IN_BOOL_COMPARE_AND_SWAP_4,
1989 BUILT_IN_BOOL_COMPARE_AND_SWAP_8, BUILT_IN_VAL_COMPARE_AND_SWAP_N,
1990 BUILT_IN_VAL_COMPARE_AND_SWAP_1, BUILT_IN_VAL_COMPARE_AND_SWAP_2,
1991 BUILT_IN_VAL_COMPARE_AND_SWAP_4, BUILT_IN_VAL_COMPARE_AND_SWAP_8,
1992 BUILT_IN_LOCK_TEST_AND_SET_N, BUILT_IN_LOCK_TEST_AND_SET_1,
1993 BUILT_IN_LOCK_TEST_AND_SET_2, BUILT_IN_LOCK_TEST_AND_SET_4,
1994 BUILT_IN_LOCK_TEST_AND_SET_8, BUILT_IN_LOCK_RELEASE_N,
1995 BUILT_IN_LOCK_RELEASE_1, BUILT_IN_LOCK_RELEASE_2,
1996 BUILT_IN_LOCK_RELEASE_4, BUILT_IN_LOCK_RELEASE_8,
1997 BUILT_IN_SYNCHRONIZE: New.
1998 * builtins.c (called_as_built_in): Rewrite from CALLED_AS_BUILT_IN
1999 as a function. Accept __sync_ as a prefix as well.
2000 (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
2001 expand_builtin_lock_test_and_set, expand_builtin_synchronize,
2002 expand_builtin_lock_release): New.
2003 (expand_builtin): Call them.
2004 * c-common.c (DEF_BUILTIN): Don't require __builtin_ prefix if
2005 neither BOTH_P nor FALLBACK_P are defined.
2006 (builtin_type_for_size): New.
2007 (sync_resolve_size, sync_resolve_params, sync_resolve_return): New.
2008 (resolve_overloaded_builtin): New.
2009 * c-common.h (resolve_overloaded_builtin): Declare.
2010 (builtin_type_for_size): Declare.
2011 * c-typeck.c (build_function_call): Invoke resolve_overloaded_builtin.
2012 * expr.c (sync_add_optab, sync_sub_optab, sync_ior_optab,
2013 sync_and_optab, sync_xor_optab, sync_nand_optab, sync_old_add_optab,
2014 sync_old_sub_optab, sync_old_ior_optab, sync_old_and_optab,
2015 sync_old_xor_optab, sync_old_nand_optab, sync_new_add_optab,
2016 sync_new_sub_optab, sync_new_ior_optab, sync_new_and_optab,
2017 sync_new_xor_optab, sync_new_nand_optab, sync_compare_and_swap,
2018 sync_compare_and_swap_cc, sync_lock_test_and_set,
2019 sync_lock_release): New.
2020 * optabs.h: Declare them.
2021 * expr.h (expand_val_compare_and_swap, expand_bool_compare_and_swap,
2022 expand_sync_operation, expand_sync_fetch_operation,
2023 expand_sync_lock_test_and_set): Declare.
2024 * genopinit.c (optabs): Add sync optabs.
2025 * optabs.c (init_optabs): Initialize sync optabs.
2026 (expand_val_compare_and_swap_1, expand_val_compare_and_swap,
2027 expand_bool_compare_and_swap, expand_compare_and_swap_loop,
2028 expand_sync_operation, expand_sync_fetch_operation,
2029 expand_sync_lock_test_and_set): New.
2030 * doc/extend.texi (Atomic Builtins): New section
2031 * doc/md.texi (Standard Names): Add sync patterns.
2033 2005-04-14 Alexandre Oliva <aoliva@redhat.com>
2035 * tree-eh.c (lower_try_finally_copy): Generate new code in
2036 response to goto_queue entries as if the queue was sorted by
2037 index, not pointers.
2038 (lower_try_finally_switch): Likewise.
2040 2005-04-14 Richard Henderson <rth@redhat.com>
2042 * config/i386/i386.c (ix86_expand_sse_cmp): Split out from ...
2043 (ix86_expand_sse_movcc): ... here. Take cmp as a pre-computed
2045 (ix86_expand_fp_movcc): Update to match.
2046 (ix86_expand_fp_vcond, ix86_expand_int_vcond): New.
2047 * config/i386/i386-protos.h: Update.
2048 * config/i386/sse.md (vcondv4sf, vcondv2df): New.
2049 (vcond<SSEMODE124>, vcondu<SSEMODE12>): New.
2051 2005-04-14 Joseph S. Myers <joseph@codesourcery.com>
2053 * doc/cpp.texi, doc/install.texi: Change references to GCC 3.5 to
2056 2005-04-14 Julian Brown <julian@codesourcery.com>
2058 * Revert elfos.h part of my patch from 2005-04-13 for causing libstdc++
2059 link failures on ppc64 Linux.
2061 2005-04-14 Andreas Krebbel <krebbel1@de.ibm.com>
2063 * config.gcc: Set cpu_type for s390.
2065 2005-04-14 Daniel Berlin <dberlin@dberlin.org>
2067 Fix PR tree-optimization/20963
2068 * tree-ssa-pre.c (compute_avail): Remove special case for
2070 (create_expression_by_pieces): Add value numbers for forced out
2073 2005-04-14 Hans-Peter Nilsson <hp@axis.com>
2075 * config/cris/cris.md: Replace references to (reg:SI 16) with
2076 (reg:SI CRIS_SRP_REGNUM).
2078 2005-04-14 Kazu Hirata <kazu@cs.umass.edu>
2080 PR tree-optimization/20657
2081 * tree-vrp.c (extract_range_from_expr): Notice INTEGER_CST to
2082 create an appropriate range from it.
2084 2005-04-14 Uros Bizjak <uros@kss-loka.si>
2086 * reg-stack.c (subst_stack_regs_pat): Handle <UNSPEC_FIST_FLOOR> and
2087 <UNSPEC_FIST_CEIL> case.
2089 * config/i386/i386.md (UNSPEC_FIST_FLOOR, UNSPEC_FIST_CEIL): New.
2090 (*fist<mode>2_floor_1, fistdi2_floor, fistdi2_floor_with_temp)
2091 (fist<mode>2_floor, fist<mode>2_floor_with_temp): New isns patterns
2092 to implement lfloor and llfloor built-ins as x87 intrinsic function.
2093 (fistdi2_floor, fist<mode>2_floor splitters): New splitters.
2094 (lfloor<mode>2): New expanders.
2095 (*fist<mode>2_ceil_1, fistdi2_ceil, fistdi2_ceil_with_temp)
2096 (fist<mode>2_ceil, fist<mode>2_ceil_with_temp): New isns patterns
2097 to implement lceil and llceil built-ins as x87 intrinsic function.
2098 (fistdi2_ceil, fist<mode>2_ceil splitters): New splitters.
2099 (lceil<mode>2): New expanders.
2101 2005-04-14 Uros Bizjak <uros@kss-loka.si>
2103 * convert.c (convert_to_integer): Convert (long int)trunc{,f,l},
2104 and (long long int)ceil{,f,l} into FIX_TRUNC_EXPR.
2106 2005-04-14 Ulrich Weigand <uweigand@de.ibm.com>
2109 * config/s390/s390-modes.def: Define TFmode.
2111 2005-04-13 Richard Sandiford <rsandifo@redhat.com>
2113 * config/mips/mips.h (ASM_OUTPUT_CASE_LABEL): Delete.
2114 (JUMP_TABLES_IN_TEXT_SECTION): Define.
2115 * config/mips/mips.c (mips16_insn_length): Remove reference to
2116 JUMP_TABLES_IN_TEXT_SECTION.
2118 2005-04-13 Fariborz Jahanian <fjahanian@apple.com>
2120 * simplify-rtx.c (simplify_binary_operation_1): Return
2121 scalar or vector of constant 0, depending on the xor's
2124 2005-04-13 Dale Johannesen <dalej@apple.com>
2126 * objc/Make-lang.in (objc-lang.o): Depend on tree-gimple.h.
2127 (objc-act.o): Ditto.
2128 * objc/objc-act.c (objc_gimplify_expr): New.
2129 (objc_get_callee_fndecl): New.
2130 * objc/objc-act.h: Include tree-gimple.h. Declare new functions.
2131 * objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR): Define.
2132 (LANG_HOOKS_GET_CALLEE_FNDECL): Define.
2134 2005-04-13 Devang Patel <dpatel@apple.com>
2136 * tree-if-conv.c (tree_if_convert_cond_expr): Do not create extra
2139 2005-04-13 Hans-Peter Nilsson <hp@axis.com>
2141 CRIS prologue as RTL.
2142 * config/cris/cris-protos.h (cris_emit_movem_store)
2143 (cris_expand_prologue): Prototype.
2144 * config/cris/cris.c (struct machine_function): New member
2146 (cfa_label_num, cris_target_asm_function_prologue): Remove.
2147 (TARGET_ASM_FUNCTION_PROLOGUE): Don't override.
2148 (cris_general_operand_or_gotless_symbol): Accept CRIS_UNSPEC_GOT.
2149 (cris_load_multiple_op, cris_return_address_on_stack)
2150 (cris_return_address_on_stack_for_return): ISO-Cify.
2151 (cris_store_multiple_op): New predicate function.
2152 (cris_expand_prologue, cris_emit_movem_store): New functions.
2153 (cris_print_operand) <case 'O'>: Handle modifications other than
2155 (cris_symbol, cris_got_symbol): Return 0 for CRIS_UNSPEC_GOT.
2156 (cris_gotless_symbol): Return 1 for CRIS_UNSPEC_GOT.
2157 (cris_gen_movem_load): Rearrange slightly to make local variable
2158 src a parameter, removing osrc.
2159 (cris_setup_incoming_varargs): Set machine_function member
2160 stdarg_regs to correspond to the number of registers that need to
2162 * config/cris/cris.h (EXTRA_CONSTRAINT_S): Accept
2164 (PREDICATE_CODES): Add cris_store_multiple_op. Make
2165 cris_general_operand_or_gotless_symbol accept UNSPEC.
2166 * config/cris/cris.md (CRIS_UNSPEC_GOT): New constant.
2167 ("*movsi_internal") <alternative 8>: Handle CRIS_UNSPEC_GOT.
2168 ("*cris_store_multiple"): New pattern. Tweak common comment above
2169 this and "*cris_load_multiple".
2170 ("prologue"): New define_expand.
2172 * config/cris/cris.md ("epilogue"): Conditionalize on
2173 TARGET_PROLOGUE_EPILOGUE.
2175 2005-04-13 Steve Ellcey <sje@cup.hp.com>
2178 * config/ia64/ia64.md (divsf3_internal_lat): Generate frcpa with
2179 fpsr 0 instead of fpsr 1.
2180 (divsf3_internal_thr): Ditto.
2181 (divdf3_internal_lat): Ditto.
2182 (divdf3_internal_thr): Ditto.
2183 (divxf3_internal_lat): Ditto.
2184 (divxf3_internal_thr): Ditto.
2186 2005-04-13 Kazu Hirata <kazu@cs.umass.edu>
2188 PR tree-optimization/20913
2189 * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR.
2191 PR tree-optimization/20702
2192 * tree-vrp.c (maybe_add_assert_expr): Recurse into
2193 dominator children that haven't been walked into.
2195 2005-04-13 Julian Brown <julian@codesourcery.com>
2197 * config/elfos.h (MAKE_DECL_ONE_ONLY): Redefined to stop DECL_WEAK from
2198 being used for symbols with vague linkage when HAVE_GAS_COMDAT_GROUP
2201 2005-04-13 Kazu Hirata <kazu@cs.umass.edu>
2203 * basic-block.h, tree-ssa-uncprop.c, varasm.c,
2204 config/i386/sse.md: Fix comment typos.
2206 * genattrtab.c (NULL_ATTR): Remove.
2207 * ifcvt.c (NULL_EDGE): Likewise.
2209 * rtl.h (RTX_EXPR_FIRST, RTX_EXPR_LAST): Remove.
2211 * rtl.h (NOTE_PREDICTION_ALG, NOTE_PREDICTION_FLAGS,
2212 NOTE_PREDICT): Remove.
2214 2005-04-13 Eric Botcazou <ebotcazou@libertysurf.fr>
2216 * configure.ac (gcc_AC_CHECK_DECLS): Add vsnprintf.
2217 * configure: Regenerate.
2218 * config.in: Likewise.
2219 * system.h: Declare vsnprintf if not already declared.
2221 2005-04-13 Eric Botcazou <ebotcazou@libertysurf.fr>
2223 * optc-gen.awk: Handle stand-alone Mask records.
2224 * opth-gen.awk: Likewise.
2225 * doc/options.texi (Option file format): Document them.
2226 * config.gcc (sparc-*-netbsdelf*, sparc-*-linux*, sparc64-*-freebsd*,
2227 sparc64-*-linux*, sparc64-*-netbsd*): Add long-double-switch.opt.
2228 (sparc64-*-openbsd*, sparc64-*-elf*): Add little-endian.opt.
2229 * config/sparc/sparc.h (MASK_FPU, MASK_UNALIGNED_DOUBLES,
2230 MASK_V8, MASK_SPARCLITE, MASK_SPARCLET, MASK_V9,
2231 MASK_DEPRECATED_V8_INSNS, MASK_IMPURE_TEXT, MASK_APP_REGS,
2232 MASK_HARD_QUAD, MASK_LITTLE_ENDIAN, MASK_PTR64, MASK_64BIT,
2233 MASK_STACK_BIAS, MASK_FPU_SET, MASK_VIS, MASK_V8PLUS,
2234 MASK_FASTER_STRUCTS, MASK_LONG_DOUBLE_128): Delete.
2235 (TARGET_FPU, TARGET_UNALIGNED_DOUBLES, TARGET_V8, TARGET_SPARCLITE,
2236 TARGET_SPARCLET, TARGET_V9, TARGET_DEPRECATED_V8_INSNS,
2237 TARGET_IMPURE_TEXT, TARGET_APP_REGS, MASK_HARD_QUAD,
2238 TARGET_LITTLE_ENDIAN, TARGET_PTR64, TARGET_64BIT, MASK_STACK_BIAS,
2239 TARGET_FPU_SET, TARGET_VIS, TARGET_V8PLUS, TARGET_FASTER_STRUCTS,
2240 TARGET_LONG_DOUBLE_128): Likewise.
2241 (TARGET_SWITCHES, SUBTARGET_SWITCHES): Likewise.
2242 (TARGET_OPTIONS, SUBTARGET_OPTIONS): Likewise.
2243 * config/sparc/freebsd.h (SUBTARGET_SWITCHES): Likewise.
2244 * config/sparc/linux.h (SUBTARGET_SWITCHES): Likewise.
2245 * config/sparc/linux64.h (SUBTARGET_SWITCHES): Likewise.
2246 * config/sparc/netbsd-elf.h (SUBTARGET_SWITCHES): Likewise.
2247 * config/sparc/sp64-elf.h (SUBTARGET_SWITCHES): Likewise.
2248 * config/sparc/sparc.c (fpu_option_set): New global.
2249 (sparc_handle_option): New function.
2250 (sparc_override_options): Test fpu_option_set.
2251 (TARGET_DEFAULT_TARGET_FLAGS): Set to TARGET_DEFAULT.
2252 (TARGET_HANDLE_OPTION): Set to sparc_handle_option.
2253 * config/sparc/sparc.opt: New file.
2254 * config/sparc/little-endian.opt: Likewise.
2255 * config/sparc/long-double-switch.opt: Likewise.
2257 2005-04-13 Bernd Schmidt <bernd.schmidt@analog.com>
2259 * config/bfin/bfin.c (bfin_lib_id_given): New static variable.
2260 (bfin_handle_options): Set it if -mshared-library-id= is seen.
2261 * config/bfin/bfin.opt (mshared-library-id=): Lose
2262 Var(bfin_lib_id_given).
2264 2005-04-13 Matt Thomas <matt@3am-software.com>
2266 * config/rs6000/sysv4.h (NO_IMPLICIT_EXTERN_C): undefine before
2269 2005-04-13 Kazu Hirata <kazu@cs.umass.edu>
2271 * rtl.h (CLEAR_RTX_FLAGS): Remove.
2273 * cgraphunit.c (INSNS_PER_CALL): Remove.
2275 * tree-ssa-forwprop.c (vars,
2276 record_single_argument_cond_exprs,
2277 substitute_single_use_vars): Remove.
2278 (forward_propagate_into_cond_1, forward_propagate_into_cond):
2280 (tree_ssa_forward_propagate_single_use_vars): Call
2281 forward_propagate_into_cond for each COND_EXPR.
2283 * tree-inline.c (INSNS_PER_STMT): Remove.
2285 2005-04-12 Richard Henderson <rth@redhat.com>
2287 * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Split ...
2288 (ix86_expand_sse_fp_minmax): ... from ...
2289 (ix86_expand_fp_movcc): ... here.
2290 (ix86_expand_sse_movcc): Rewrite from ix86_split_sse_movcc.
2291 * config/i386/i386-protos.h: Update.
2292 * config/i386/i386.md (UNSPEC_IEEE_MIN, UNSPEC_IEEE_MAX): New.
2293 (sse_setccsf, sse_setccdf): Allow before reload.
2294 (movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): Remove.
2295 (movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): Remove.
2296 (ieee_sminsf3, ieee_smaxsf3, ieee_smindf3, ieee_smaxdf3): New.
2297 * config/i386/sse.md (andsf3, nandsf3, iorsf3, xorsf3): New.
2298 (anddf3, nanddf3, iordf3, xordf3): New.
2300 2005-04-12 Jeff Law <law@redhat.com>
2302 * Makefile.in (OBJS-common): Add tree-ssa-uncprop.o.
2303 (tree-ssa-uncprop.o): Add dependencies.
2304 * tree-cfg.c (remove_useless_stmts_bb, remove_useless_stmts): Remove.
2305 * tree-flow.h (remove_useless_stmts): Remove prototype.
2306 * tree-outof-ssa.c (rewrite_out_of_ssa): Remove call to
2307 remove_useless_stmts.
2308 * timevar.def (TV_TREE_SSA_UNCPROP): New timevar.
2309 * tree-optimize.c (init_tree_optimization_passes): Add uncprop pass.
2310 * tree-pass.h (pass_uncprop): Declare.
2311 * tree-ssa-uncprop.c: New file.
2313 2005-04-12 James E. Wilson <wilson@specifixinc.com>
2316 * unwind-ia64.c (uw_intall_context): Add missing load of r27.
2318 2005-04-12 Caroline Tice <ctice@apple.com>
2320 Temporary fix for partitioning problems.
2321 * passes.c (rest_of_handle_final): Remove code that
2322 frees unlikely_text_section_name,
2323 * varasm.c (assemble_start_function): Test for partitioning
2324 flag before writing out section labels.
2325 (assemble_end_function): Test for partitioning flag before
2326 writing out section labels.
2328 2005-04-12 Steven Bosscher <stevenb@suse.de>
2329 Stuart Hastings <stuart@apple.com>
2330 Jan Hubicka <jh@suse.cz>
2332 * Makefile.in: Add function.h to BASIC_BLOCK_H. Remove all
2333 references to gt-tree-cfg.h.
2334 * basic-block.h (struct basic_block_def): Don't skip rbi
2335 for garbage collection.
2336 (struct reorder_block_def): Make GTY-able.
2337 (struct control_flow_graph): New structure.
2338 (n_edges, n_basic_blocks, last_basic_block, basic_block_info,
2339 BASIC_BLOCK, EXIT_BLOCK_PTR, ENTRY_BLOCK_PTR): No longer vars,
2340 but instead defines to the control_flow_graph for cfun.
2341 (label_to_block_map): New define, points to the label map of
2342 the control_flow_graph for cfun.
2343 (n_edges_for_function, n_basic_blocks_for_function,
2344 last_basic_block_for_function, basic_block_info_for_function,
2345 EXIT_BLOCK_PTR_FOR_FUNCTION, ENTRY_BLOCK_PTR_FOR_FUNCTION,
2346 basic_block_info_for_function, label_to_block_map_for_function):
2347 Counterparts for the above, taking a struct function as an extra
2349 (alloc_rbi_pool, free_rbi_pool): Remove prototypes.
2350 * cfg.c: (n_edges, n_basic_blocks, last_basic_block,
2351 basic_block_info, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Remove.
2352 (alloc_rbi_pool, free_rbi_pool): Remove.
2353 (initialize_bb_rbi): Use ggc_alloc_cleared instead of pool_alloc.
2354 * cfglayout.c: (cfg_layout_initialize): Don't allocate the rbi pool
2356 (cfg_layout_finalize) ... and don't free it here.
2357 * cfgrtl.c (cfg_layout_delete_block): Zero out rbi so it gets
2359 * flow.c (free_basic_block_vars): Set label_to_block_map and
2360 n_edges to zero too.
2361 * function.h (struct function): Add cfg field.
2362 * function.c (allocate_struct_function): Allocate the cfg.
2363 * tree-cfg.c (label_to_block_map): Remove.
2364 (build_tree_cfg): Don't allocate the rbi pool here...
2365 (delete_tree_cfg_annotations): ...and don't free it here.
2366 Also don't nullify label_to_block_map for cfun.
2368 2005-04-12 Caroline Tice <ctice@apple.com>
2370 * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
2371 Revert my patch from April 9.
2372 (fix_edges_for_rarely_executed_code): Revert my patch from April 9.
2373 (reorder_basic_blocks): Revert my patch from April 9.
2374 (insert_section_boundary_note): Revert my patch from April 9.
2375 * dbxout.c (dbxout_function_end): Revert my patch from April 9.
2376 * dwarf2out.c (COLD_TEXT_SECTION_LABEL): Revert my patch from April 9.
2377 (COLD_END_LABEL): Revert my patch from April 9.
2378 (cold_text_section_label): Revert my patch from April 9.
2379 (cold_end_label): Revert my patch from April 9.
2380 (dwarf2out_switch_text_section): Revert my patch from April 9.
2381 (output_aranges): Revert my patch from April 9.
2382 (output_ranges): Revert my patch from April 9.
2383 (output_line_info): Revert my patch from April 9.
2384 (add_location_or_const_value_attribute): Revert my patch from April 9.
2385 (dwarf2out_var_location): Revert my patch from April 9.
2386 (dwarf2out_init): Revert my patch from April 9.
2387 (dwarf2out_finish): Revert my patch from April 9.
2388 * function.h (struct function): Revert my patch from April 9.
2389 * opts.c (decode_options): Revert my patch from April 9.
2390 * output.h (unlikely_section_label, hot_section_label,
2391 hot_section_end_label, cold_section_end_label,
2392 unlikely_text_section_name): Revert my patch from April 9.
2393 * passes.c (rest_of_handle_final): Revert my patch from April 9.
2394 * varasm.c (unlikely_section_label, hot_section_label,
2395 hot_section_end_label, cold_section_end_label,
2396 unlikely_text_section_name): Revert my patch from April 9.
2397 (initialize_cold_section_name): Revert my patch from April 9.
2398 (unlikely_text_section): Revert my patch from April 9.
2399 (in_unlikely_text_section): Revert my patch from April 9.
2400 (named_section): Revert my patch from April 9.
2401 (function_section): Revert my patch from April 9.
2402 (current_function_section): Revert my patch from April 9.
2403 (assemble_start_function): Revert my patch from April 9.
2404 (assemble_end_function): Revert my patch from April 9.
2405 (default_section_type_flags_1): Revert my patch from April 9.
2407 2005-04-12 Eric Botcazou <ebotcazou@libertysurf.fr>
2409 * config/sparc/sparc.h (APPLY_RESULT_SIZE): Set to 24 in 64-bit mode.
2410 * config/sparc/sparc.md (untyped_call): Save the registers manually.
2412 * config/sparc/sparc.c (legitimate_address_p): Use TARGET_ARCH32.
2414 2005-04-12 Ulrich Weigand <uweigand@de.ibm.com>
2417 * config/s390/s390.md ("*set_tp"): Use SET in pattern.
2418 ("set_tp_64", "set_tp_31"): Adapt expanded pattern.
2420 2004-04-12 Richard Henderson <rth@redhat.com>
2422 * config/i386/i386.md (UNSPEC_FIX, UNSPEC_MOVA, UNSPEC_SHUFFLE,
2423 UNSPEC_PSHUFLW, UNSPEC_PSHUFHW, UNSPEC_ADDSUB, UNSPEC_HADD,
2424 UNSPEC_HSUB, UNSPEC_MOVSHDUP, UNSPEC_MOVSLDUP, UNSPEC_MOVDDUP): Remove.
2425 (UNSPEC_*, UNSPECV_*): Renumber.
2427 2005-04-12 Frank Ch. Eigler <fche@redhat.com>
2430 From Richard Henderson <rth@redhat.com>:
2431 * tree-mudflap.c (mf_build_check_statement_for): Correct block
2434 2005-04-12 Dorit Naishlos <dorit@il.ibm.com>
2436 * tree-cfg.c (tree_verify_flow_info): Use LABEL_EXPR_LABEL.
2438 2005-04-12 Bernd Schmidt <bernd.schmidt@analog.com>
2440 * config/bfin/bfin.c (bfin_library_id_string): Remove.
2441 (bfin_library_id): New variable.
2442 (bfin_expand_prologue): Use bfin_library_id and bfin_lib_id_given
2443 instead of bfin_library_id_string.
2444 (bfin_handle_option): New function.
2445 (override_options): Remove most code to deal with shared library IDs,
2446 just check they aren't used without -mid-shared-library.
2447 (TARGET_HANDLE_OPTION): Define.
2448 * config/bfin/bfin.h (TARGET_OPTIONS): Delete macro.
2449 * config/bfin/bfin.opt (mshared-library-id=): New.
2451 2005-04-12 Kazu Hirata <kazu@cs.umass.edu>
2453 * tree-vect-transform.c: Fix comment typos.
2455 2005-04-12 Mostafa Hagog <mustafa@il.ibm.com>
2457 * postreload-gcse.c (eliminate_partially_redundant_load): Don't
2458 split critical edges when not possible/profitable.
2460 2005-04-12 Richard Sandiford <rsandifo@redhat.com>
2462 * config/ns32k/ns32k.h (target_flags, MASK_32081, MASK_RTD)
2463 (MASK_REGPARM, MASK_32532, MASK_32332, MASK_NO_SB, MASK_NO_BITFIELD)
2464 (MASK_HIMEM, MASK_32381, MASK_MULT_ADD, MASK_SRC, MASK_IEEE_COMPARE)
2465 (TARGET_32081, TARGET_32381, TARGET_MULT_ADD, TARGET_RTD)
2466 (TARGET_REGPARM, TARGET_32532, TARGET_32332, TARGET_SB, TARGET_HIMEM)
2467 (TARGET_BITFIELD, TARGET_IEEE_COMPARE, TARGET_SWITCHES): Delete.
2468 (OVERRIDE_OPTIONS): Clear MASK_SB instead of setting MASK_NO_SB.
2469 * config/ns32k/netbsd.h (TARGET_DEFAULT): Remove MASK_NO_SB and
2471 * config/ns32k/ns32k.c (ns32k_handle_option): New function.
2472 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2473 * config/ns32k/ns32k.opt: New file.
2475 2005-04-12 Richard Sandiford <rsandifo@redhat.com>
2477 * config.gcc (m68k-*-linux*): Add m68k/ieee.opt to $extra_options.
2478 * config/m68k/m68k.h (target_flags, MASK_68020, TARGET_68020)
2479 (MASK_68030, TARGET_68030, MASK_68040, TARGET_68040, MASK_68040_ONLY)
2480 (TARGET_68040_ONLY, MASK_68060, TARGET_68060, MASK_5200, TARGET_5200)
2481 (MASK_CFV3, TARGET_CFV3, MASK_CFV4, TARGET_CFV4, MASK_528x)
2482 (TARGET_528x, MASK_CF_HWDIV, TARGET_CF_HWDIV, MASK_68881, TARGET_68881)
2483 (MASK_BITFIELD, TARGET_BITFIELD, MASK_SHORT, TARGET_SHORT)
2484 (MASK_ALIGN_INT, TARGET_ALIGN_INT, MASK_PCREL, TARGET_PCREL)
2485 (MASK_NO_STRICT_ALIGNMENT, TARGET_STRICT_ALIGNMENT, MASK_RTD)
2486 (TARGET_RTD, MASK_SEP_DATA, TARGET_SEP_DATA, MASK_ID_SHARED_LIBRARY)
2487 (TARGET_ID_SHARED_LIBRARY, MASK_ALL_CF_BITS, TARGET_SWITCHES)
2488 (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS): Delete.
2489 (MASK_COLDFIRE): Formatting fixes.
2490 (TARGET_COLDFIRE): Turn into a boolean value for consistency.
2491 * config/m68k/linux.h (SUBTARGET_SWITCHES): Delete.
2492 * config/m68k/m68k.c (m68k_library_id_string): Initialize to
2493 "_current_shared_library_a5_offset_".
2494 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2495 (MASK_ALL_CPU_BITS): New macro.
2496 (m68k_handle_option): New function.
2497 (override_options): Remove handling of m68k_library_id_string.
2498 * config/m68k/m68k.opt: New file.
2499 * config/m68k/ieee.opt: New file.
2501 2005-04-11 Mark Mitchell <mark@codesourcery.com>
2503 * target-def.h (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
2504 (TARGET_CXX_DETERMINE_CLASS_VISIBILITY): New macro.
2505 (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
2506 (TARGET_CXX): Adjust accordingly.
2507 * target.h (struct gcc_target): Remove epxort_class_data. Add
2508 determine_class_data_visibility and class_data_always_comdat.
2509 * doc/tm.texi (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
2510 (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Document.
2511 (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
2512 * config/arm/arm.c (arm_cxx_export_class_data): Remove.
2513 (arm_cxx_determine_class_data_visibility): New.
2514 (arm_cxx_class_data_always_comdat): Likewise.
2515 (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
2516 (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Define.
2517 (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
2518 * config/arm/arm.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P): Define.
2519 * config/arm/symbian.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P):
2522 2005-04-11 Devang Patel <dpatel@apple.com>
2524 * tree-data-ref.c (build_classic_dist_vector,
2525 compute_subscript_distance): Make externally visible.
2526 * tree-data-ref.h (build_classic_dist_vector,
2527 compute_subscript_distance): Same.
2528 * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
2529 Check distance vector against vectorization factor.
2530 (vect_analyze_loop): Determine vectorizaion factor before
2531 analyzing data dependences.
2532 * tree-vectorizer.c (loops_num): Make it externally visible and
2534 * tree-vectorizer.c (vect_loops_num): ... new name.
2535 * tree-vectorizer.h (vect_loops_num): New.
2537 2005-04-11 Devang Patel <dpatel@apple.com>
2539 * tree-vect-analyze.c (vect_analyze_operations): Check
2540 vectorizable codition.
2541 * tree-vect-transform.c (vect_is_simple_cond): New function.
2542 (vectorizable_condition): New function.
2543 (vect_transform_stmt): Handle condition_vec_info_type.
2544 * tree-vectorizer.h (enum stmt_vec_info_type): Add
2545 condition_vec_info_type.
2546 (vectorizable_condition): New.
2548 2005-04-11 Geoffrey Keating <geoffk@apple.com>
2550 * config/i386/i386.h (TARGET_FPMATH_DEFAULT): New.
2551 * config/i386/darwin.h (TARGET_FPMATH_DEFAULT): New.
2552 * config/i386/i386.c (override_options): Use TARGET_FPMATH_DEFAULT.
2554 * config/i386/darwin.h (ASM_SPEC): Use -arch i386 not -arch i686.
2555 (SUBTARGET_EXTRA_SPECS): Always 'i386'.
2557 * dwarf2out.c (output_line_info): Don't try to dereference
2558 a NULL current_function_decl.
2560 * config/t-slibgcc-darwin: Don't put shared libraries in
2561 directories other than $(slibdir).
2562 * config/rs6000/darwin.h: Find -m64 libgcc under the name the
2565 2005-04-11 Diego Novillo <dnovillo@redhat.com>
2567 PR tree-optimization/20933
2568 * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Move
2569 logic to reject aliases between read-only and writable
2571 (may_alias_p): ... here.
2572 (get_tmt_for): Do not associate read-only tags to pointers
2573 whose pointed-to type is not read-only.
2574 * tree-ssa.c (verify_ssa): Check that memory stores have at
2575 least one V_MAY_DEF or V_MUST_DEF.
2577 2005-04-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2580 * configure.ac (gcc_UNLOCKED_FUNCS): New.
2581 (AC_CHECK_FUNCS, AC_CHECK_DECLS): Check for gcc_UNLOCKED_FUNCS.
2582 * system.h (putchar, getc, getchar, clearerr, feof, fileno,
2583 fflush, fgetc, fgets, ferror, fread): Redefine to the associated
2585 (fwrite_unlocked): Fix prototype.
2587 * configure, config.in: Regenerate.
2589 2005-04-11 David Edelsohn <edelsohn@gnu.org>
2591 * tree-ssa-loop-im.c: Include real.h.
2592 (determine_invariantness_stmt): If real division divisor is
2593 invariant and flag_unsafe_math_optimizations enabled, generate
2594 invariant reciprocal for hoisting.
2595 * Makefile.in (tree-ssa-loop-im.o): Add real.h dependency.
2597 2005-04-11 Daniel Berlin <dberlin@dberlin.org>
2599 Fix PR tree-optimization/20926
2601 * tree-ssa-alias.c (add_type_alias): Handle subvars.
2603 2005-04-11 Devang Patel <dpatel@apple.com>
2605 * config/rs6000.c (rs6000_emit_vector_select): Fix vector select
2608 2005-04-11 Andrew Pinski <pinskia@physics.uc.edu>
2610 * fold-const.c (fold_binary_op_with_conditional_arg):
2611 use fold_buildN instead of "fold (buildN" in some
2613 (fold_unary): Likewise.
2614 (fold_binary): Likewise.
2616 2005-04-11 Daniel Berlin <dberlin@dberlin.org>
2618 Fix PR tree-optimization/20612
2619 * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Fix increment
2621 (perfect_nestify): preheaderbb is *not* part of loop of the
2624 2005-04-11 Andrew Pinski <pinskia@physics.uc.edu>
2626 * tree-ssa-alias.c (may_alias_p): If the variable
2627 is a global variable and the pointer is parameter
2628 and -fargument-noalias-global is used, then
2629 the pointer cannot alias the variable.
2631 2005-04-11 James A. Morrison <phython@gcc.gnu.org>
2633 * config/sparc/sparc.c: Use gcc_assert and gcc_unreachable.
2634 * config/sparc/sparc.h: Likewise.
2635 * config/sparc/sparc.md: Likewise.
2637 2005-04-11 Kazu Hirata <kazu@cs.umass.edu>
2639 * tree-vrp.c (maybe_add_assert_expr): Move a comment.
2641 * tree-vrp.c: Fix a comment typo.
2643 2005-04-11 Diego Novillo <dnovillo@redhat.com>
2645 PR tree-optimization/20920
2646 * tree-pretty-print.c (dump_generic_node): Show '(ab)' if an
2647 SSA_NAME flows through an abnormal edge.
2648 * tree-vrp.c (infer_value_range): Ignore SSA names that flow
2649 through abnormal edges.
2650 (maybe_add_assert_expr): Likewise.
2652 2005-04-11 Richard Sandiford <rsandifo@redhat.com>
2654 * config/s390/s390.h (s390_tune_string, s390_arch_string)
2655 (s390_warn_framesize_string, s390_warn_dynamicstack_string)
2656 (s390_stack_size_string, s390_stack_guard_string, target_flags)
2657 (MASK_HARD_FLOAT, MASK_SMALL_EXEC, MASK_DEBUG_ARG, MASK_64BIT)
2658 (MASK_ZARCH, MASK_MVCLE, MASK_TPF_PROFILING, MASK_NO_FUSED_MADD)
2659 (MASK_BACKCHAIN, MASK_PACKED_STACK, TARGET_HARD_FLOAT)
2660 (TARGET_SOFT_FLOAT, TARGET_SMALL_EXEC, TARGET_DEBUG_ARG)
2661 (TARGET_64BIT, TARGET_ZARCH, TARGET_MVCLE, TARGET_TPF_PROFILING)
2662 (TARGET_NO_FUSED_MADD, TARGET_FUSED_MADD, TARGET_BACKCHAIN)
2663 (TARGET_PACKED_STACK, TARGET_SWITCHES, TARGET_OPTIONS): Delete.
2664 * config/s390/s390.c (TARGET_DEFAULT_TARGET_FLAGS): Override default.
2665 (TARGET_HANDLE_OPTION): Likewise.
2666 (s390_tune): Initialize to PROCESSOR_max.
2667 (s390_arch_string): Make static.
2668 (s390_tune_string, s390_warn_framesize_string): Delete.
2669 (s390_warn_dynamicstack_string, s390_stack_size_string): Delete.
2670 (s390_stack_guard_string, s390_warn_dynamicstack_p): Delete.
2671 (s390_handle_arch_option, s390_handle_option): New functions.
2672 (override_options): Remove parsing of option strings.
2673 * config/s390/s390.opt: New file.
2675 2005-04-11 Paolo Bonzini <bonzini@gnu.org>
2677 * tree-complex.c (expand_vector_operations): Call
2678 update_stmt_if_modified.
2680 2005-04-11 Paolo Bonzini <bonzini@gnu.org>
2682 * tree-vect-analyze (vect_determine_vectorization_factor):
2683 Do not use GET_MODE_NUNITS.
2684 * tree-vect-transform.c (vect_get_vec_def_for_operand,
2685 (vectorizable_load, vect_transform_loop): Likewise.
2687 2005-04-11 Uros Bizjak <uros@kss-loka.si>
2689 * builtins.def (BUILT_IN_LCEIL, BUILT_IN_LCEILF, BUILT_IN_LCEILL)
2690 (BUILT_IN_LLCEIL, BUILT_IN_LLCEILF, BUILT_IN_LLCEILL): New.
2691 * optabs.h (enum optab_index): Add new OTI_lceil.
2692 (lceil_optab): Define corresponding macro.
2693 * optabs.c (init_optabs): Initialize lceil_optab.
2694 * genopinit.c (optabs): Implement lceil_optab using lceilsi2
2695 and lceildi2 patterns.
2696 * builtins.c (expand_builtin_int_roundingfn): Handle
2697 BUILT_IN_LCEIL{,F,L} and BUILT_IN_LLCEIL{,F,L}.
2698 (fold_builtin_int_roundingfn): Handle BUILT_IN_LCEIL{,F,L} and
2699 BUILT_IN_LLCEIL{,F,L}.
2700 (fold_builtin_1): Fold BUILT_IN_LCEIL{,F,L} and
2701 BUILT_IN_LLCEIL{,F,L} using fold_builtin_int_roundingfn.
2702 (mathfn_built_in): Handle BUILT_IN LCEIL and BUILT_IN_LLCEIL.
2703 (expand_builtin): Expand BUILT_IN_LCEIL{,F,L} and
2704 BUILT_IN_LLCEIL{,F,L} using expand_builtin_int_roundingfn.
2705 * convert.c (convert_to_integer): Convert (long int)ceil{,f,l},
2706 into lceil built-in function and (long long int)ceil{,f,l} into
2707 llceil built-in function.
2708 * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LCEIL and
2711 2005-04-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2713 * pa/quadlib.c (_U_Qfneg): Toggle sign bit instead of subtracting from
2716 2005-04-10 Kazu Hirata <kazu@cs.umass.edu>
2718 * config/arm/arm.c: Fix a comment typo.
2719 * doc/tree-ssa.texi: Fix a typo.
2721 2005-04-10 Steven Bosscher <stevenb@suse.de>
2723 * cselib.c (clear_table): Rename to cselib_clear_table.
2724 * cselib.h (cselib_clear_table): Add prototype.
2725 * gcse.c (gcse_main): Make 'f' argument unused.
2726 (alloc_gcse_mem): Do not walk the insn chain, walk the contents
2727 of each basic block instead.
2728 (compute_sets, compute_hash_table_work): Likewise.
2729 (constprop_register): Change int 'alter_jumps' argument to bool.
2730 (do_local_cprop): Likewise.
2731 (local_cprop_pass): Likewise. Also walk basic blocks instead of
2732 the insn chain. Explicitly clear the cselib tables after finishing
2733 one basic block. Make sure there are no unterminated libcall blocks.
2734 Update compute_sets call.
2735 (cprop): Walk basic blocks instead of the insn chain.
2736 (one_cprop_pass, compute_ld_motion_mems, compute_store_table):
2738 (bypass_jumps): Update alloc_gcse_mem, compute_sets, and
2739 one_cprop_pass calls.
2741 2005-04-10 Richard Sandiford <rsandifo@redhat.com>
2743 * combine.c (combine_simplify_rtx): Remove a transformation that
2744 relies on an invalid assumption about rtl sign-extension semantics.
2746 2005-04-10 Richard Sandiford <rsandifo@redhat.com>
2748 * value-prof.c (tree_divmod_fixed_value_transform): Fix arguments
2749 to build_int_cst_wide.
2751 2005-04-09 Alexandre Oliva <aoliva@redhat.com>
2754 * loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
2755 set the original address pseudo to the correct value before the
2756 original insn, if possible, and leave the insn alone, otherwise
2757 create a new pseudo, set it and replace it in the insn.
2758 * recog.c (validate_change_maybe_volatile): New.
2759 * recog.h (validate_change_maybe_volatile): Declare.
2761 2005-04-09 Caroline Tice <ctice@apple.com>
2763 * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
2764 Remove targetm.have_named_sections test.
2765 (fix_edges_for_rarely_executed_code): Likewise.
2766 (insert_section_boundary_note): Likewise.
2767 (reorder_basic_blocks): Check partitioning flag before calling
2768 verify_hot_cold_block_grouping.
2769 * dbxout.c (dbxout_function_end): Get hot/cold section labels from
2770 the function struct rather than global variables.
2771 * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
2772 (COLD_END_LABEL): Likewise
2773 (cold_text_section_label): New static global variable.
2774 (cold_end_label): Likewise.
2775 (dwarf2out_switch_text_section): Get hot/cold section labels from
2776 the function struct rather than global variables.
2777 (output_aranges): Use cold_text_section_label and cold_end_label;
2778 check partitioning flag before putting out delta.
2779 (output_ranges): Remove incorrect code attempting to use
2781 (output_line_info): Get cold section label from function struct.
2782 (add_location_or_const_value_attribute): Likewise.
2783 (get_subprogram_die): Get hot/cold section labels from function struct.
2784 (dwarf2out_var_location): Likewise.
2785 (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
2786 write out cold_text_section_label if partition flag is set.
2787 (dwarf2out_finish): Write out cold_end_label if partition flag is set;
2788 * function.h (struct function): Add new fields to point to hot/cold
2789 section labels: hot_section_label, cold_section_label,
2790 hot_section_end_label and cold_section_end_label; also add new field
2791 for cold text section name, unlikely_text_section_name.
2792 * opts.c (decode_options): Turn off partitioning flag if
2793 !targetm.have_named_sections.
2794 * output.h (hot_section_label): Remove.
2795 (hot_section_end_label): Remove.
2796 (cold_section_end_label): Remove.
2797 (unlikely_section_label): Remove.
2798 (unlikely_text_section_name): Remove.
2799 * passes.c (rest_of_handle_final): Remove code that frees
2800 unlikely_text_section_name.
2801 * varasm.c (unlikely_section_label): Remove.
2802 (hot_section_label): Remove.
2803 (hot_section_end_label): Remove.
2804 (cold_section_end_label): Remove.
2805 (unlikely_text_section_name): Remove.
2806 (initialize_cold_section_name): Modify to call
2807 targetm.strip_name_encoding; to store cold section name in current
2808 function struct, if it exists; and to only use the decl_section_name
2809 if flag_named_sections is true.
2810 (unlikely_text_section): Modify to get section name out of current
2811 function struct, if there is one; otherwise build it from
2812 UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
2813 (in_unlikely_text_section): Likewise.
2814 (named_section): Modify to get/put cold section name in current function
2815 struct, if there is one.
2816 (function_section): Change 'bool unlikely' to 'int reloc'; check
2817 targetm.have_named_sections before calling named_section.
2818 (current_function_section): Likewise.
2819 (assemble_start_function): Modify to get/put unlikely_text_section_name
2820 in current function struct; modify to get hot/cold section labels
2821 from function struct; initialize labels using
2822 ASM_GENERATE_INTERNAL_LABEL;
2823 test partitioning flag before writing out hot section label.
2824 (assemble_end_function): Test partitioning flag before writing out
2825 hot/cold section labels.
2826 (default_section_type_flags_1): Modify to use array instead of
2827 char* for unlikely_text_section_name; set flags correctly for
2828 cold text section if there is not a current function decl.
2830 2005-04-09 Jakub Jelinek <jakub@redhat.com>
2832 * tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD
2833 and TI_VA_LIST_FPR_COUNTER_FIELD.
2834 (va_list_gpr_counter_field, va_list_fpr_counter_field): Define.
2835 * tree-pass.h (pass_stdarg): Add.
2836 * tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg.
2837 * tree-stdarg.c: New file.
2838 * tree-stdarg.h: New file.
2839 * Makefile.in (OBJS-common): Add tree-stdarg.o.
2840 (tree-stdarg.o): Add dependencies.
2841 * function.h (struct function): Add va_list_gpr_size and
2842 va_list_fpr_size fields.
2843 * function.c (allocate_struct_function): Initialize them.
2844 * target.h (struct gcc_target): Add stdarg_optimize_hook.
2845 * target-def.h (TARGET_STDARG_OPTIMIZE_HOOK): Define.
2846 (TARGET_INITIALIZER): Add it.
2848 * config/i386/i386.c (ix86_build_builtin_va_list): Initialize
2849 va_list_{g,f}pr_counter_field.
2850 (ix86_setup_incoming_varargs): Don't do anything if reg_save
2851 area will not be used. Only save registers that tree-stdarg.c
2852 detected they need saving.
2853 (ix86_va_start): Don't set up fields that won't be used.
2855 * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
2856 va_list_{g,f}pr_counter_field.
2857 (setup_incoming_varargs): Don't do anything if reg_save
2858 area will not be used. Only save registers that tree-stdarg.c
2859 detected they need saving.
2860 (rs6000_va_start): Don't set up fields that won't be used.
2862 * config/alpha/alpha.c: Include tree-flow.h and tree-stdarg.h.
2863 (alpha_build_builtin_va_list): Initialize va_list_gpr_counter_field.
2864 (va_list_skip_additions, alpha_stdarg_optimize_hook): New functions.
2865 (TARGET_STDARG_OPTIMIZE_HOOK): Define.
2867 2005-04-09 Jakub Jelinek <jakub@redhat.com>
2870 * config/i386/i386.c (construct_container): Pass empty aligned
2871 struct, union or class in memory.
2873 2005-04-09 Kazu Hirata <kazu@cs.umass.edu>
2875 * dominance.c, gthr-win32.h, reg-stack.c, tree-ssa-copy.c,
2876 tree-ssa-operands.c, tree-ssa.c, tree-vrp.c, varasm.c,
2877 config/alpha/alpha.c, config/arm/arm.c, config/m32r/m32r.h,
2878 config/rs6000/predicates.md: Fix comment typos.
2880 * sched-int.h (haifa_insn_data): Remove blockage and units.
2881 (INSN_UNIT, INSN_BLOCKAGE, UNIT_BITS, BLOCKAGE_MASK,
2882 ENCODE_BLOCKAGE, UNIT_BLOCKED, BLOCKAGE_RANGE,
2883 MIN_BLOCKAGE_COST, MAX_BLOCKAGE_COST): Remove.
2885 2005-04-09 Jan Hubicka <jh@suse.cz>
2886 Steven Bosscher <stevenb@suse.de>
2888 * cfglayout.c (copy_bbs): Rename n_edges to num_edges.
2889 * cfgloop.c (get_loop_exit_edges): Likewise.
2890 * cfgloopmanip.c (fix_irreducible_loops): Likewise.
2892 * loop-unroll.c (analyze_insns_in_loop): Likewise.
2893 * tree-cfg.c (dump_cfg_status): Likewise.
2895 2005-04-09 David Edelsohn <edelsohn@gnu.org>
2897 * config/rs6000/predicates.md (altivec_register_operand): Remove
2898 redundant match_code test.
2899 (gpc_reg_operand): Same.
2900 (cc_reg_operand): Same.
2901 (cc_reg_not_cr0_operand): Same.
2903 2005-04-09 Jan Hubicka <jh@suse.cz>
2905 Forgotten hunk from my last merge patch:
2906 * final.c (output_addr_const): Do not call mark_referenced.
2908 2005-04-09 Andrew MacLeod <amacleod@redhat.com>
2910 * doc/tree-ssa.texi: Add immediate use documentation.
2912 2005-04-09 Richard Earnshaw <richard.earnshaw@arm.com>
2914 * arm.c (FL_WBUF): Define.
2915 (arm_tune_strongarm): Renamed from arm_is_strong. All uses changed.
2916 (arm_is_6_or_7): Delete.
2917 (arm_tune_wbuf): New.
2918 (arm_override_options): Set arm_tune_wbuf.
2919 * arm.h (arm_tune_strongarm): Renamed from arm_is_strong.
2920 (arm_is_6_or_7): Delete declaration.
2921 (arm_tune_wbuf): New declartion.
2922 * arm.md (is_strongarm): Derive from arm_tune_strongarm.
2923 (model_wbuf): Derive from arm_tune_wbuf.
2924 * arm-cores.def (arm600, arm610, arm620, arm700, arm700i, arm710)
2925 (arm720, arm710c, arm7100, arm7500, arm7500fe, arm710t, arm720t)
2926 (arm740t): Mark CPUs as having a write buffer.
2928 2005-04-09 Uros Bizjak <uros@kss-loka.si>
2930 * config/i386/i386.md (*fp_jcc_7_387): Use 'const0_operand' instead
2931 of 'const_double_operand' in operand 2 constraints. Update enable
2934 2005-04-09 Uros Bizjak <uros@kss-loka.si>
2936 * builtins.def (BUILT_IN_LFLOOR, BUILT_IN_LFLOORF, BUILT_IN_LFLOORL)
2937 (BUILT_IN_LLFLOOR, BUILT_IN_LLFLOORF, BUILT_IN_LLFLOORL): New.
2938 * optabs.h (enum optab_index): Add new OTI_lfloor.
2939 (lfloor_optab): Define corresponding macro.
2940 * optabs.c (init_optabs): Initialize lfloor_optab.
2941 * genopinit.c (optabs): Implement lfloor_optab using lfloorsi2
2942 and lfloordi2 patterns.
2943 * builtins.c (expand_builtin_int_roundingfn): New prototype.
2944 (expand_builtin_int_roundingfn): New function.
2945 (fold_builtin_int_roundingfn): New prototype.
2946 (fold_builtin_int_roundingfn): New function, renamed from
2947 fold_builtin_lround.
2948 Handle BUILT_IN_LROUND{,F,L}, BUILT_IN_LLROUND{,F,L} and
2949 BUILT_IN_LFLOOR{,F,L}, BUILT_IN_LLFLOOR{,F,L}.
2950 (fold_builtin_1): Fold BUILT_IN_LFLOOR{,F,L} and
2951 BUILT_IN_LLFLOOR{,F,L} using fold_builtin_int_roundingfn.
2952 (mathfn_built_in): Handle BUILT_IN LFLOOR and BUILT_IN_LLFLOOR.
2953 (expand_builtin): Expand BUILT_IN_LFLOOR{,F,L} and
2954 BUILT_IN_LLFLOOR{,F,L} using expand_builtin_int_roundingfn.
2955 * convert.c (convert_to_integer): Convert (long int)floor{,f,l},
2956 into lfloor built-in function and (long long int)floor{,f,l} into
2957 llfloor built-in function.
2958 * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LFLOOR and
2961 2005-04-08 Ian Lance Taylor <ian@airs.com>
2963 * c-common.def: Move FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
2964 CONTINUE_STMT, and SWITCH_STMT to cp/cp-tree.def.
2965 * c-common.h (WHILE_COND, WHILE_BODY): Move to cp/cp-tree.h.
2966 (DO_COND, DO_BODY): Likewise.
2967 (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Likewise.
2968 (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Likewise.
2969 (c_common_stmt_codes): Remove FOR_STMT, WHILE_STMT, DO_STMT,
2970 BREAK_STMT, CONTINUE_STMT, and SWITCH_STMT.
2971 (build_continue_stmt, build_break_stmt): Don't declare.
2972 (c_do_switch_warnings): Update declaration.
2973 * c-gimplify.c (enum bc_t): Remove.
2974 (struct c_gimplify_ctx, ctxp): Remove.
2975 (push_context, pop_context): Remove static functions.
2976 (c_genericize): Don't call push_context or pop_context.
2977 (begin_bc_block, finish_bc_block): Remove static functions.
2978 (build_bc_goto): Likewise.
2979 (gimplify_c_loop): Likewise.
2980 (gimplify_for_stmt, gimplify_while_stmt): Likewise.
2981 (gimplify_do_stmt, gimplify_switch_stmt): Likewise.
2982 (c_gimplify_expr): Remove handling of FOR_STMT, WHILE_STMT,
2983 DO_STMT, SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
2984 * c-common.c (c_do_switch_warnings): Rename from
2985 c_do_switch_warnings_1.
2986 (c_do_switch_warnings) [old version]: Remove.
2987 (c_do_switch_expr_warnings): Remove.
2988 * c-typeck.c (c_finish_case): Call new c_do_switch_warnings
2989 function instead of c_do_switch_expr_warnings.
2990 * c-dump.c (c_dump_tree): Remove handling of BREAK_STMT,
2991 CONTINUE_STMT, DO_STMT, FOR_STMT, SWITCH_STMT, and WHILE_STMT.
2992 * c-pretty-print.c (pp_c_statement): Likewise.
2993 * c-semantics.c (build_break_stmt, build_continue_stmt): Remove.
2995 2005-04-08 Devang Patel <dpatel@apple.com>
2997 * tree-if-conv.c (find_phi_replacement_condition): New parameter, loop.
2998 While selecting replacement condition pay attention to loop header.
3000 2005-04-08 Diego Novillo <dnovillo@redhat.com>
3002 Merge from tree-cleanup-branch: VRP, store CCP, store
3003 copy-prop, incremental SSA updating of FUD chains and
3004 newly exposed symbols.
3006 * Makefile.in (tree-ssa-copy.o): Depend on tree-ssa-propagate.h.
3007 (OBJS-common): Add tree-vrp.o.
3008 (tree-vrp.o): New rule.
3009 * basic-block.h (nearest_common_dominator_for_set): Declare.
3010 * common.opt (ftree-store-ccp): New flag.
3011 (ftree-copy-prop): New flag.
3012 (ftree-vrp): New flag.
3013 (ftree-store-copy-prop): New flag.
3014 * dominance.c (nearest_common_dominator_for_set): New.
3015 * domwalk.c (walk_dominator_tree): Only traverse
3016 statements in blocks marked in walk_data->interesting_blocks.
3017 * domwalk.h (struct dom_walk_data): Add field interesting_blocks.
3018 * fold-const.c (fold): Handle ASSERT_EXPR.
3019 * opts.c (decode_options): Set flag_tree_copy_prop at -O1.
3020 Set flag_tree_store_ccp, flag_tree_store_copy_prop and
3021 flag_tree_vrp at -O2.
3022 * timevar.def (TV_TREE_VRP): Define.
3023 (TV_TREE_COPY_PROP): Define.
3024 (TV_TREE_STORE_COPY_PROP): Define.
3025 (TV_TREE_SSA_INCREMENTAL): Define.
3026 (TV_TREE_STORE_CCP): Define.
3027 * tree-cfg.c (tree_can_merge_blocks_p): Remove reference
3028 to kill_redundant_phi_nodes from comment.
3029 (verify_expr): Handle ASSERT_EXPR.
3030 * tree-dfa.c (mark_new_vars_to_rename): Remove second
3031 argument. Update all users.
3032 (mark_call_clobbered_vars_to_rename): Remove. Update all
3034 * tree-flow-inline.h (unmodifiable_var_p): New.
3035 * tree-flow.h (enum value_range_type): Declare.
3036 (struct value_range_def): Declare.
3037 (value_range): Declare.
3038 (remove_all_phi_nodes_for): Remove. Update all users.
3039 (find_phi_node_for): Declare.
3040 (add_type_alias): Declare.
3041 (count_uses_and_derefs): Declare.
3042 (kill_redundant_phi_nodes): Remove.
3043 (rewrite_into_ssa): Remove.
3044 (rewrite_def_def_chains): Remove.
3045 (update_ssa, register_new_name_mapping, create_new_def_for,
3046 need_ssa_update_p, name_registered_for_update_p,
3047 release_ssa_name_after_update_ssa, dump_repl_tbl,
3048 debug_repl_tbl, dump_names_replaced_by,
3049 debug_names_replaced_by, mark_sym_for_renaming,
3050 mark_set_for_renaming, get_current_def, set_current_def,
3051 get_value_range, dump_value_range, debug_value_range,
3052 dump_all_value_ranges, debug_all_value_ranges,
3053 expr_computes_nonzero, loop_depth_of_name,
3054 unmodifiable_var_p): Declare.
3055 * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle
3057 * tree-into-ssa.c (block_defs_stack): Update comment.
3058 (old_ssa_names, new_ssa_names, old_virtual_ssa_names,
3059 syms_to_rename, names_to_release, repl_tbl,
3060 need_to_initialize_update_ssa_p, need_to_update_vops_p,
3061 need_to_replace_names_p): New locals.
3062 (NAME_SETS_GROWTH_FACTOR): Define.
3063 (struct repl_map_d): Declare.
3064 (struct mark_def_sites_global_data): Add field
3066 (enum rewrite_mode): Declare.
3067 (REGISTER_DEFS_IN_THIS_STMT): Define.
3068 (compute_global_livein): Use last_basic_block instead of
3070 (set_def_block): Remove last argument. Update all callers.
3071 (prepare_use_operand_for_rename): Remove. Update all callers.
3072 (prepare_def_operand_for_rename): Remove. Update all callers.
3073 (symbol_marked_for_renaming): New.
3076 (repl_map_hash): New.
3078 (repl_map_free): New.
3079 (names_replaced_by): New.
3080 (add_to_repl_tbl): New.
3081 (add_new_name_mapping): New.
3082 (mark_def_sites): Assume that all the operands in the
3083 statement are in normal form.
3084 (find_idf): Assert that the block in the stack is valid.
3085 (get_default_def_for): New.
3086 (insert_phi_nodes_for): Add new argument 'update_p'.
3088 If update_p is true, add a new mapping between the LHS of
3089 each new PHI and the name that it replaces.
3090 (insert_phi_nodes_1): Only call find_idf if needed.
3091 (get_reaching_def): Call get_default_def_for.
3092 (rewrite_operand): Remove.
3093 (rewrite_stmt): Do nothing if REGISTER_DEFS_IN_THIS_STMT
3094 and REWRITE_THIS_STMT are false.
3095 Assume that all the operands in the statement are in
3097 (rewrite_add_phi_arguments): Don't use PHI_REWRITTEN.
3098 (rewrite_virtual_phi_arguments): Remove.
3099 (invalidate_name_tags): Remove.
3100 (register_new_update_single, register_new_update_set,
3101 rewrite_update_init_block, replace_use,
3102 rewrite_update_fini_block, rewrite_update_stmt,
3103 rewrite_update_phi_arguments): New.
3104 rewrite_blocks): Remove argument 'fix_virtual_phis'.
3105 Add arguments 'entry', 'what' and 'blocks'.
3106 Initialize the dominator walker according to 'what' and
3108 Start the dominator walk at 'entry'.
3109 (mark_def_site_blocks): Add argument 'interesting_blocks'.
3110 Use it to configure the dominator walker.
3111 (rewrite_into_ssa): Remove argument 'all'.
3113 (rewrite_all_into_ssa): Remove.
3114 (rewrite_def_def_chains): Remove.
3115 (mark_def_interesting, mark_use_interesting,
3116 prepare_phi_args_for_update, prepare_block_for_update,
3117 prepare_def_site_for, prepare_def_sites,
3118 dump_names_replaced_by, debug_names_replaced_by,
3119 dump_repl_tbl, debug_repl_tbl, init_update_ssa,
3120 delete_update_ssa, create_new_def_for,
3121 register_new_name_mapping, mark_sym_for_renaming,
3122 mark_set_for_renaming, need_ssa_update_p,
3123 name_registered_for_update_p, ssa_names_to_replace,
3124 release_ssa_name_after_update_ssa,
3125 insert_updated_phi_nodes_for, update_ssa): New.
3126 * tree-loop-linear.c (linear_transform_loops): Call
3127 update_ssa instead of rewrite_into_ssa.
3128 * tree-optimize.c (vars_to_rename): Remove.
3130 (init_tree_optimization_passes): Replace
3131 pass_redundant_phi with pass_copy_prop.
3133 Replace pass_ccp with pass_store_ccp.
3134 Add pass_store_copy_prop after pass_store_ccp.
3135 (execute_todo): If the TODO_ flags don't include updating
3136 the SSA form, assert that it does not need to be updated.
3137 Call update_ssa instead of rewrite_into_ssa and
3138 rewrite_def_def_chains.
3139 If TODO_verify_loops is set, call verify_loop_closed_ssa.
3140 (tree_rest_of_compilation):
3141 * tree-pass.h (TODO_dump_func, TODO_ggc_collect,
3142 TODO_verify_ssa, TODO_verify_flow, TODO_verify_stmts,
3143 TODO_cleanup_cfg): Renumber.
3144 (TODO_verify_loops, TODO_update_ssa,
3145 TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
3146 TODO_update_ssa_only_virtuals): Define.
3147 (pass_copy_prop, pass_store_ccp, pass_store_copy_prop, pass_vrp):
3149 * tree-phinodes.c (make_phi_node): Update documentation.
3150 (remove_all_phi_nodes_for): Remove.
3151 (find_phi_node_for): New.
3152 * tree-pretty-print.c (dump_generic_node): Handle ASSERT_EXPR.
3153 * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Likewise.
3154 (interpret_rhs_modify_expr): Likewise.
3155 * tree-sra.c (decide_instantiations): Mark all symbols in
3156 SRA_CANDIDATES for renaming.
3157 (mark_all_v_defs_1): Rename from mark_all_v_defs.
3158 (mark_all_v_defs): New function. Update all users to call it
3159 with the whole list of scalarized statements, not just the
3161 * tree-ssa-alias.c (count_ptr_derefs): Make extern.
3162 (compute_flow_insensitive_aliasing): If the tag is
3163 unmodifiable and the variable isn't or vice-versa, don't
3164 make them alias of each other.
3165 (setup_pointers_and_addressables): If the type tag for
3166 VAR is about to change, mark the old one for renaming.
3167 (add_type_alias): New.
3168 * tree-ssa-ccp.c: Document SSA-CCP and STORE-CCP.
3169 (ccp_lattice_t): Rename from latticevalue.
3170 (value): Remove. Update all users.
3171 (const_val): New local variable.
3172 (do_store_ccp): New local variable.
3173 (dump_lattice_value): Handle UNINITIALIZED.
3174 (debug_lattice_value): New.
3175 (get_default_value): Re-write.
3176 (set_lattice_value): Re-write.
3177 (def_to_varying): Remove. Update all users.
3178 (likely_value): Return VARYING for statements that make
3179 stores when STORE_CCP is false.
3180 Return VARYING for any statement other than MODIFY_EXPR,
3181 COND_EXPR and SWITCH_EXPR.
3182 (ccp_initialize): Re-write.
3183 (replace_uses_in, replace_vuse_in, substitute_and_fold):
3184 Move to tree-ssa-propagate.c.
3185 (ccp_lattice_meet): Handle memory stores when
3186 DO_STORE_CCP is true.
3187 (ccp_visit_phi_node): Likewise.
3188 (ccp_fold): Likewise.
3189 (evaluate_stmt): Likewise.
3190 (visit_assignment): Likewise.
3191 (ccp_visit_stmt): Likewise.
3192 (execute_ssa_ccp): Add argument 'store_ccp'. Copy it
3196 (do_ssa_store_ccp): New.
3197 (gate_store_ccp): New.
3198 (pass_store_ccp): Declare.
3199 * tree-ssa-copy.c: Include tree-ssa-propagate.h.
3200 (may_propagate_copy): Reformat.
3201 Don't abort if ORIG is a virtual and DEST isn't.
3202 If NEW does not have alias information but DEST does,
3204 (copy_of, cached_last_copy_of, do_store_copy_prop, enum
3205 copy_prop_kind, which_copy_prop): Declare.
3206 (stmt_may_generate_copy, get_copy_of_val,
3207 get_last_copy_of, set_copy_of_val, dump_copy_of,
3208 copy_prop_visit_assignment, copy_prop_visit_cond_stmt,
3209 copy_prop_visit_stmt, copy_prop_visit_phi_node,
3210 init_copy_prop, fini_copy_prop, execute_copy_prop,
3211 gate_copy_prop, do_copy_prop, gate_store_copy_prop,
3212 store_copy_prop): New.
3213 (pass_copy_prop, pass_store_copy_prop): Declare.
3214 * tree-ssa-dom.c (struct opt_stats_d): Add fields
3215 'num_const_prop' and 'num_copy_prop'.
3216 (cprop_operand): Update them.
3217 (dump_dominator_optimization_stats): Dump them.
3218 (tree_ssa_dominator_optimize): Call update_ssa instead of
3220 (loop_depth_of_name): Declare extern.
3221 (simplify_cond_and_lookup_avail_expr): Guard against NULL
3222 values for LOW or HIGH.
3223 (cprop_into_successor_phis): Only propagate if NEW != ORIG.
3224 (record_equivalences_from_stmt): Call expr_computes_nonzero.
3225 (cprop_operand): Only propagate if VAL != OP.
3226 * tree-ssa-dse.c (dse_optimize_stmt): Mark symbols in removed
3227 statement for renaming.
3228 * tree-ssa-loop-im.c (move_computations): Call update_ssa.
3229 * tree-ssa-loop-ivopts.c (rewrite_address_base): Call
3230 add_type_alias if necessary.
3231 Call mark_new_vars_to_rename.
3232 (tree_ssa_iv_optimize): If new symbols need to be renamed,
3233 mark every statement updated, call update_ssa and
3234 rewrite_into_loop_closed_ssa.
3235 * tree-ssa-loop-manip.c (add_exit_phis): Do not remove DEF_BB
3236 from LIVEIN if VAR is a virtual.
3237 * tree-ssa-loop.c (tree_loop_optimizer_init): Call update_ssa.
3238 * tree-ssa-operands.c (get_expr_operands): Handle ASSERT_EXPR.
3239 (get_call_expr_operands): Reformat statement.
3240 (add_stmt_operand): Don't create V_MAY_DEFs for read-only
3242 * tree-ssa-propagate.c (ssa_prop_init): Initialize
3243 SSA_NAME_VALUE for every name.
3244 (first_vdef, stmt_makes_single_load, stmt_makes_single_store,
3245 get_value_loaded_by): New.
3246 (replace_uses_in, replace_vuses_in, replace_phi_args_in,
3247 substitute_and_fold): Move from tree-ssa-ccp.c.
3248 * tree-ssa-propagate.h (struct prop_value_d, prop_value_t,
3249 first_vdef, stmt_makes_single_load, stmt_makes_single_store,
3250 get_value_loaded_by, replace_uses_in, substitute_and_fold):
3252 * tree-ssa.c (verify_use): Fix error message.
3253 (propagate_into_addr, replace_immediate_uses, get_eq_name,
3254 check_phi_redundancy, kill_redundant_phi_nodes,
3255 pass_redundant_phi): Remove. Update all users.
3256 * tree-vect-transform.c (vect_create_data_ref_ptr): Call
3257 add_type_alias, if necessary.
3258 * tree-vectorizer.h (struct _stmt_vect_info): Update
3259 documentation for field 'memtag'.
3260 * tree-vrp.c: New file.
3261 * tree.def (ASSERT_EXPR): Define.
3262 * tree.h (ASSERT_EXPR_VAR): Define.
3263 (ASSERT_EXPR_COND): Define.
3264 (SSA_NAME_VALUE_RANGE): Define.
3265 (struct tree_ssa_name): Add field 'value_range'.
3266 (PHI_REWRITTEN): Remove.
3267 (struct tree_phi_node): Remove field 'rewritten'.
3268 * doc/invoke.texi (-fdump-tree-storeccp, -ftree-copy-prop,
3269 -ftree-store-copy-prop): Document.
3270 * doc/tree-ssa.texi: Remove broken link to McCAT's compiler.
3271 Document usage of update_ssa.
3273 2005-04-08 David Edelsohn <edelsohn@gnu.org>
3276 * config/rs6000/predicates.md (altivec_register_operand): Accept
3278 (and64_operand): Do not limit CONST_INT to mask64_operand.
3279 (and64_2_operand): Do not limit CONST_INT to mask64_1or2_operand.
3280 (and_operand): Do not limit CONST_INT to mask_operand.
3282 2005-04-09 Hans-Peter Nilsson <hp@axis.com>
3284 PR rtl-optimization/20466
3285 * flow.c (invalidate_mems_from_set): Handle a MEM by checking it
3286 for overlap of the address of each list member.
3287 (mark_set_1): Call invalidate_mems_from_set for MEMs too.
3289 2005-04-08 Mike Stump <mrs@apple.com>
3291 * config/darwin.c (indirect_data): Fix typo in strncmp logic.
3293 * config/rs6000/rs6000.c (rs6000_emit_prologue): Use 5 nops,
3296 2005-04-08 Kazu Hirata <kazu@cs.umass.edu>
3298 * c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): Remove.
3300 * function.c (push_function_context_to): Don't set
3302 * function.h (function): Remove contains_functions.
3303 (current_function_contains_functions): Remove.
3305 * function.h (function): Remove instrument_entry_exit.
3306 (current_function_instrument_entry_exit): Remove.
3308 * function.h (nonlocal_labels): Remove.
3310 * tree.h (STRIP_MAIN_TYPE_NOPS): Remove.
3312 * genattrtab.c (attr_desc): Remove negative_ok and unsigned_p.
3313 (check_attr_value, write_attr_get, write_expr_attr_cache,
3314 find_attr, make_internal_attr): Don't reference negative_ok or
3316 * genattrtab.h (ATTR_NEGATIVE_OK, ATTR_UNSIGNED,
3317 ATTR_FUNC_UNITS, ATTR_BLOCKAGE): Remove.
3318 (ATTR_STATIC): Adjust the value.
3320 * c-common.h (C_ARTIFICIAL_STRING_P): Remove.
3322 2005-04-08 Ulrich Weigand <uweigand@de.ibm.com>
3324 * config/s390/tpf.h (ASM_SPEC): Define.
3326 2005-04-08 Kazu Hirata <kazu@cs.umass.edu>
3328 * tree-flow.h: Remove the prototype for
3329 redirect_immediate_uses.
3330 (TDFA_USE_OPS, TDFA_USE_VOPS): Remove.
3332 2005-04-08 Richard Earnshaw <richard.earnshaw@arm.com>
3334 * arm.c (arm_const_double_by_parts): New function.
3335 * arm-protos.h (arm_const_double_by_parts): Add prototype.
3336 * arm.md (define_split for 64-bit constants): Add another one.
3338 2005-04-08 Andrew MacLeod <amacleod@redhat.com>
3340 * tree-ssa-operands.c (correct_use_link): Remove linear scan.
3342 2005-04-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3344 * system.h: Revert last change.
3346 2005-04-08 Richard Sandiford <rsandifo@redhat.com>
3348 * config/xtensa/xtensa.h (target_flags, MASK_NO_FUSED_MADD)
3349 (MASK_CONST16, TARGET_NO_FUSED_MADD, TARGET_CONST16)
3350 (TARGET_SWITCHES): Delete.
3351 * config/xtensa/xtensa.c (TARGET_DEFAULT_TARGET_FLAGS): Define.
3352 * config/xtensa/xtensa.md (muladdsf3, mulsubsf3): Check
3353 TARGET_FUSED_MADD instead of !TARGET_NO_FUSED_MADD.
3354 * config/xtensa/xtensa.opt: New file.
3356 2005-04-08 Ben Elliston <bje@au.ibm.com>
3358 * config/fp-bit.c: Include L_mul_tf in #endif comment.
3359 * config/fp-bit.h: Tidy comments.
3361 2005-04-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3363 * system.h: Poison PARAMS.
3365 2005-04-07 Richard Sandiford <rsandifo@redhat.com>
3367 * config/vax/vax.h (target_flags, MASK_UNIX_ASM, MASK_VAXC_ALIGNMENT)
3368 (MASK_G_FLOAT, TARGET_UNIX_ASM, TARGET_VAXC_ALIGNMENT, TARGET_G_FLOAT)
3369 (TARGET_SWITCHES): Delete.
3370 * config/vax/vax.c (TARGET_DEFAULT_TARGET_FLAGS): Override default.
3371 * config/vax/vax.opt: New file.
3373 2005-04-07 Daniel Berlin <dberlin@dberlin.org>
3375 * tree-ssa-dse.c (dse_optimize_stmt): Fix incorrect comment.
3377 2005-04-07 Ian Lance Taylor <ian@airs.com>
3379 * config/iq2000/iq2000.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Don't
3381 * config/mips/mips.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise.
3382 * config/sparc/sparc.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE):
3385 2005-04-07 Kazu Hirata <kazu@cs.umass.edu>
3387 * tree-ssa-sink.c (nearest_common_dominator_of_uses): Consider
3388 all immediate uses in PHI nodes.
3390 2005-04-07 Richard Earnshaw <richard.earnshaw@arm.com>
3392 * arm.c (arm_const_double_inline_cost): Handle any constant by
3393 using gen_lowpart and gen_highpart_mode.
3394 (note_invalid_constants): All constants in an RTX with a constraint
3395 that permits memory are now pushed to the constant pool.
3396 (output_move_double): Delete code to handle reg to reg and
3397 constant to reg moves.
3398 (const_double_needs_minipool, output_mov_immediate): Delete.
3399 * arm.h (EXTRA_CONSTRAINT_STR_ARM): All 'D' variants now handle
3400 CONST_INT and CONST_VECTOR.
3401 * arm.md (ANY64): New mode macro.
3402 (arm_movdi): Split reg-reg and const-reg moves. Simplify constraints.
3403 (movdf_soft_insn): Split reg-reg and const-reg moves.
3404 (split patterns for 64-bit constant and register moves): New.
3405 * cirrus.md (cirrus_arm_movdi): Split reg-reg and const-reg moves.
3406 (cirrus_movdf_hard_insn): Likewise.
3407 * fpa.md (movdf_fpa): Likewise.
3408 * iwmmxt.md (iwmmxt_arm_movdi): Likewise.
3409 (movv8qi_internal, movv4hi_internal, movv2si_internal): Fix
3411 (movv2si_internal_2): Likewise.
3412 * vfp.md (arm_movdi_vfp): Split reg-reg and const-reg moves.
3413 (movdf_vfp): Likewise.
3414 * arm-protos.h (output_mov_immediate): Delete prototype.
3416 2005-04-07 Joseph S. Myers <joseph@codesourcery.com>
3419 * simplify-rtx.c (simplify_unary_operation_1): Check
3420 SUBREG_PROMOTED_UNSIGNED_P (op) > 0 for zero-extension.
3422 2005-04-06 James E Wilson <wilson@specifixinc.com>
3425 * cgraphunit.c (record_call_1, case FDESC_EXPR): Handle same as
3428 2004-04-06 Richard Sandiford <rsandifo@redhat.com>
3430 * coverage.h (GCOV_TYPE_NODE): Delete.
3431 * coverage.c (coverage_counter_alloc, tree_coverage_counter_ref)
3432 (build_ctr_info_type): Use get_gcov_type () instead of GCOV_TYPE_NODE.
3433 * tree-profile.c (tree_gen_edge_profiler, tree_gen_interval_profiler)
3434 (tree_gen_pow2_profiler, tree_gen_one_value_profiler): Likewise.
3435 * value-prof.c (tree_divmod_fixed_value_transform): Delete.
3437 2004-04-06 Richard Sandiford <rsandifo@redhat.com>
3440 * Makefile.in (gcc.pot): Remove options.c dependency.
3441 * optc-gen.awk: Don't quote help strings with N_().
3443 2005-04-06 James A. Morrison <phython@gcc.gnu.org>
3445 * c-common.c (handle_malloc_atttribute): Only set DECL_IS_MALLOC if
3446 the function returns a pointer type.
3448 2005-04-06 Daniel Berlin <dberlin@dberlin.org>
3450 * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): New
3451 * params.h (SALIAS_MAX_IMPLICIT_FIELDS): New
3452 * doc/invoke.texi: Documnet salias-max-implicit-fields.
3453 * tree-ssa-alias.c (struct used_part): Add implicit_uses and
3454 explicit_uses members.
3455 (get_or_create_used_part_for): Initialize new fields.
3456 (fieldoff_compare): New function.
3457 (create_overlap_variables_for): Count number of fields, use
3458 heuristic to determine whether to create subvars for vars with
3460 Sort the field list by offset and avoid creating duplicate SFT's.
3462 2005-04-06 Richard Sandiford <rsandifo@redhat.com>
3464 * c.opt (-F): Remove trailing whitespace from help string.
3465 (-finput-charset): Use a tab to separate the switch name and help
3467 * common.opt (-fsched-stalled-insns, -fsched-stalled-insns-dep)
3468 (-ftree-vectorizer-verbose): Likewise.
3470 2005-04-06 Kazu Hirata <kazu@cs.umass.edu>
3472 * tree-ssa-sink.c (nearest_common_dominator_of_uses): Look at
3473 a PHI argument where a use occurs instead of all PHI arguments.
3475 2005-04-06 Joseph S. Myers <joseph@codesourcery.com>
3477 * c-decl.c (finish_decl): Apply pending #pragma weak regardless of
3480 2005-04-06 Kazu Hirata <kazu@cs.umass.edu>
3482 * cse.c, tree-flow-inline.h, tree-flow.h, tree-ssa-operands.c,
3483 tree-ssa-sink.c, tree.h, config/bfin/bfin.c,
3484 config/bfin/bfin.h: Fix comment typos.
3486 2005-04-06 Ranjit Mathew <rmathew@hotmail.com>
3488 * doc/install.texi: Update the URL for Jacks.
3489 * doc/sourcebuild.texi: Likewise.
3491 2005-04-06 Eric Botcazou <ebotcazou@libertysurf.fr>
3494 * config/sparc/sparc.c (legitimate_address_p): Remove 'imm2'.
3495 Revert 2004-10-08 patch. Reject TFmode LO_SUM in 32-bit mode.
3497 2005-04-06 Kelley Cook <kcook@gcc.gnu.org>
3499 * Makefile.in (LIBGCC2_CFLAGS): Revert -pipe change.
3501 2005-04-06 Richard Sandiford <rsandifo@redhat.com>
3503 * config/v850/v850-protos.h (override_options): Delete.
3504 * config/v850/v850.h (target_flags, MASK_GHS, MASK_LONG_CALLS, MASK_EP)
3505 (MASK_PROLOG_FUNCTION, MASK_DEBUG, MASK_V850, MASK_V850E)
3506 (MASK_SMALL_SLD, MASK_BIG_SWITCH, MASK_NO_APP_REGS, MASK_DISABLE_CALLT)
3507 (MASK_STRICT_ALIGN, MASK_US_BIT_SET, MASK_US_MASK_SET, TARGET_GHS)
3508 (TARGET_LONG_CALLS, TARGET_EP, TARGET_PROLOG_FUNCTION, TARGET_V850)
3509 (TARGET_BIG_SWITCH, TARGET_DEBUG, TARGET_V850E, TARGET_US_BIT_SET)
3510 (TARGET_SMALL_SLD, TARGET_DISABLE_CALLT, TARGET_NO_APP_REGS)
3511 (TARGET_STRICT_ALIGN, TARGET_SWITCHES, TARGET_OPTIONS)
3512 (OVERRIDE_OPTIONS): Delete.
3513 (MASK_CPU): Redefine as MASK_V850 | MASK_V850E.
3514 (small_memory_info): Remove the value field.
3515 (CONDITIONAL_REGISTER_USAGE): Check !TARGET_APP_REGS rather than
3517 * config/v850/v850.c (small_memory): Remove the value field.
3518 (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
3519 (override_options): Delete.
3520 (v850_handle_memory_option, v850_handle_option): New functions.
3521 * config/v850/v850.opt: New file.
3523 2005-04-06 Geoffrey Keating <geoffk@apple.com>
3525 * config.host: Add a section for generic hosts, and a subsection
3526 for Darwin. Add a case for x86-darwin. Update ppc-darwin case.
3527 * config/host-darwin.c: New, split out of config/rs6000/host-darwin.c.
3528 * config/host-darwin.h: New.
3529 * config/x-darwin: New.
3530 * config/i386/host-i386-darwin.c: New.
3531 * config/i386/x-darwin: New.
3532 * config/rs6000/host-darwin.c: Include host-darwin.h.
3533 (darwin_rs6000_gt_pch_get_address): Move to config/host-darwin.c.
3534 (darwin_rs6000_gt_pch_use_address): Likewise.
3535 * config/rs6000/x-darwin: Change name of .o built, update
3536 dependencies for changes to rs6000/host-darwin.c.
3538 2005-04-06 Ralf Corsepius <ralf.corsepius@rtems.org>
3541 * config/c4x/c4x.h (ASM_PROG, LD_PROG): Remove.
3543 2005-04-06 Dorit Naishlos <dorit@il.ibm.com>
3545 * tree-vect-analyze.c (vect_analyze_loop_form): Call
3546 split_loop_exit_edge instead of loop_split_edge_with.
3548 2005-04-06 Paolo Bonzini <bonzini@gnu.org>
3550 * config/rs6000/altivec.md (UNSPEC_VSLW, UNSPEC_SUBS,
3551 UNSPEC_SET_VSCR): New constants, used throughout.
3553 (altivec_vspltisb, altivec_vsplitish, altivec_vsplitisw):
3555 (altivec_vspltis<VI_char>): ... this pattern, using
3556 a QImode const_int_operand for the immediate.
3557 (abs<mode>2, absv4sf2, altivec_abss_<mode>): Rewrite as
3560 2005-04-06 Ralf Corsepius <ralf.corsepius@rtems.org>
3563 * config/avr/t-avr (AR_FOR_TARGET,RANLIB_FOR_TARGET): Remove.
3565 2005-04-06 Kelley Cook <kcook@gcc.gnu.org>
3567 * Makefile.in (LIBGCC2_CFLAGS): Compile with -pipe.
3569 2005-04-06 Ben Elliston <bje@au.ibm.com>
3571 * gcc.c: Correct comment about DEFAULT_SWITCH_TAKES_ARG and
3572 DEFAULT_WORD_SWITCH_TAKES_ARG which incorrectly reported these
3573 macros as living in "this file" and not gcc.h.
3575 2005-04-06 Ben Elliston <bje@au.ibm.com>
3577 * doc/invoke.texi (Optimize Options): Mention -ftree-lrs, not
3578 -ftree-live_range_split. Perhaps renamed at some point?
3580 2005-04-06 Zdenek Dvorak <dvorakz@suse.cz>
3583 * tree-ssa-loop-ivopts.c (generic_type_for): New function.
3584 (add_candidate_1): Use generic_type_for instead of unsigned_type_for.
3586 2005-04-06 Zdenek Dvorak <dvorakz@suse.cz>
3588 * tree-flow.h (number_of_iterations_cond): Declaration removed.
3589 * tree-ssa-loop-niter.c (number_of_iterations_cond): Made static.
3590 (number_of_iterations_special): New function.
3591 (number_of_iterations_exit): Use number_of_iterations_special.
3592 Use simplify_using_outer_evolutions only at -O3.
3593 (number_of_iterations_cond, tree_simplify_using_condition,
3594 simplify_using_initial_conditions, loop_niter_by_eval,
3595 compare_trees, can_count_iv_in_wider_type_bound,
3596 simplify_using_outer_evolutions): Use fold_build.
3598 2005-04-05 Thomas Fitzsimmons <fitzsim@redhat.com>
3600 * doc/install.texi (Configuration): Document --with-java-home.
3602 2005-04-05 Richard Henderson <rth@redhat.com>
3606 * config/i386/i386.c (print_operand): Handle vector zeros.
3607 (ix86_split_to_parts): Handle CONST_VECTOR.
3608 (ix86_hard_regno_mode_ok): Allow MMX modes in general regs.
3609 (ix86_modes_tieable_p): Use ix86_hard_regno_mode_ok to decide
3610 what modes to tie for MMX and SSE registers.
3611 * config/i386/i386.h (MMX_REG_MODE_P): Remove.
3612 * config/i386/i386.md: Extend move 0 -> xor peephole to apply
3613 to vector modes as well.
3614 * config/i386/predicates.md (const0_operand): Handle VOIDmode
3615 properly as an input mode.
3617 2005-04-05 Andrew MacLeod <amacleod@redhat.com>
3619 * tree-ssa-operands.c (verify_abort): Use %p for pointers.
3621 2005-04-05 Andrew MacLeod <amacleod@redhat.com>
3623 * tree-pretty-print.c (dump_generic_node): Use %p for pointer.
3625 2005-04-05 Jakub Jelinek <jakub@redhat.com>
3627 * config/i386/i386.c (init_cumulative_args): For -m32 -mfpmath=sse
3628 and local functions, set sse_nregs to 8 and float_in_sse.
3629 (function_arg_advance, function_arg): If float_in_sse, pass
3630 SFmode and DFmode arguments in SSE registers.
3631 * config/i386/i386.h (CUMULATIVE_ARGS): Add float_in_sse field.
3633 * config/i386/i386.c (ix86_value_regno): Only optimize local functions
3634 of -funit-at-a-time.
3636 2005-04-05 Paolo Bonzini <bonzini@gnu.org>
3638 * config/i386/i386-protos.h (ix86_function_value): Accept two
3639 arguments, like the target macro.
3640 * config/i386/i386.h (FUNCTION_VALUE): Pass both arguments.
3641 * config/i386/i386.c (ix86_function_value): Accept the second
3642 argument of the target macro.
3643 (ix86_function_ok_for_sibcall): Pass a function pointer to
3644 ix86_function_value.
3645 (ix86_function_value, ix86_libcall_value) [!TARGET_64BIT]: Adjust
3646 call to ix86_value_regno).
3647 (ix86_value_regno): Add support for returning floating point values
3650 2005-04-05 Jakub Jelinek <jakub@redhat.com>
3652 PR tree-optimization/20076
3653 * tree-inline.c (inline_forbidden_p_1): Prevent inlining functions
3654 that call __builtin_return or __builtin_apply_args.
3656 2005-04-05 Andrew MacLeod <amacleod@redhat.com>
3658 * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use update_stmt.
3659 Use immediate use iterator.
3660 (stmt_is_bumper_for_loop): Use immediate use iterator.
3661 * predict.c (strip_builtin_expect): Use update_stmt.
3662 * tree-cfg.c (update_modified_stmts): New. Call update_stmt_if_modified
3663 on all elements of a STATEMENT_LIST.
3664 (bsi_insert_before, bsi_insert_after): Call update_modified_stmts.
3665 (bsi_remove): Remove imm_use links and mark the stmt as modified.
3666 (bsi_replace): Mark stmt as modified and the update it.
3667 * tree-complex.c (update_complex_assignment): Call mark_stmt_modified.
3668 (expand_complex_libcal): Call update_stmt.
3669 (expand_complex_comparison): Call mark_stmt_modified.
3670 (expand_complex_operations_1): Call update_stmt_if_modified.
3671 (expand_vector_operations_1): Call mark_stmt_modified.
3672 * tree-dfa.c (compute_immediate_uses, free_df_for_stmt, free_df,
3673 compute_immediate_uses_for_phi, compute_immediate_uses_for_stmt,
3674 add_immediate_use, redirect_immediate_use,
3675 redirect_immediate_uses, dump_immediate_uses, debug_immediate_uses,
3676 dump_immediate_uses_for, debug_immediate_uses_for): Delete.
3677 (mark_new_vars_to_rename): Call update_stmt.
3678 * tree-dump.c (dump_option_value_in): Add "stmtaddr".
3679 * tree-flow-inline.h (modify_stmt): Rename to mark_stmt_modified.
3681 (unmodify_stmt): Delete.
3682 (update_stmt): New. Force an update of a stmt.
3683 (update_stmt_if_modified): update a stmt if it is out of date.
3684 (get_stmt_operands): Verify stmt is NOT modified.
3685 (stmt_modified_p): Update comment.
3686 (delink_imm_use): Remove a use node from its immuse list.
3687 (link_imm_use_to_list): Link a use node to a specific list.
3688 (link_imm_use): Link a node to the correct list.
3689 (set_ssa_use_from_ptr): Set a use node to a specific value, and insert
3690 it in the correct list, if appropriate.
3691 (link_imm_use_stmt): Link a use node, and set the stmt pointer.
3692 (relink_imm_use): Link a use node in place of another node in a list.
3693 (relink_imm_use_stmt): LInk a node in place of another node, and set
3695 (end_safe_imm_use_traverse): New. Terminate a safe immuse iterator.
3696 (end_safe_imm_use_p): New. Check for the end of a safe immuse iterator.
3697 (first_safe_imm_use): New. Initialize a safe immuse iterator.
3698 (next_safe_imm_use): New. Proceed to next safe immuse iterator value.
3699 (end_readonly_imm_use_p): New. Check for end of a fast immuse iterator.
3700 (first_readonly_imm_use): New. Initialize a fast immuse iterator.
3701 (next_readonly_imm_use): New. Get the next fast immuse iterator value.
3702 (has_zero_uses): New. Return true if there are no uses of a var.
3703 (has_single_use): New. Return true if there is only a single use of a
3705 (single_imm_use): New. Return the simgle immediate use.
3706 (num_imm_uses): New. Return the number of immediate uses.
3707 (get_v_must_def_ops): Use is now a pointer.
3708 (use_operand_p, get_v_may_def_op_ptr, get_vuse_op_ptr,
3709 get_v_must_def_kill_ptr, get_phi_arg_def_ptr): Return the address of
3711 (get_immediate_uses, num_immediate_uses, immediate_use): Delete.
3712 (delink_stmt_imm_use): Delink all immuses from a stmt.
3713 (phi_arg_index_from_use): New. Return a phi arg index for a use.
3714 * tree-flow.h (struct dataflow_d): Delete.
3715 (immediate_use_iterator_d): New. Immediate use iterator struct.
3716 (FOR_EACH_IMM_USE_FAST): New. Macro for read only immuse iteration.
3717 (FOR_EACH_IMM_USE_SAFE): New. Macro for write-safe immuse iteration.
3718 (BREAK_FROM_SAFE_IMM_USE): New. Macro for earlyu exit from write-safe
3720 (struct stmt_ann_d): Remove dataflow_t from struct.
3721 * tree-if-conv.c (tree_if_conversion). Don't call free_df.
3722 (if_convertible_phi_p): Use FAST immuse iterator.
3723 (if_convertible_loop_p): Don't call compute_immediate_uses.
3724 (replace_phi_with_cond_modify_expr): Call update_stmt.
3725 * tree-into-ssa.c (mark_def_sites, ssa_mark_def_sites): Call
3726 update_stmt_if_modified.
3727 (rewrite_all_into_ssa): Initialize ssa operands.
3728 * tree-loop-linear.c (linear_transform_loops): Don't call free_df or
3729 compute_immediate_uses.
3730 * tree-optimize.c (execute_todo): Call verify_ssa whenever the
3731 ssa_property is available.
3732 (execute_one_pass): Change parameters passed to execute_todo.
3733 * tree-outof-ssa.c (rewrite_trees): Don't call modify_stmt.
3734 (remove_ssa_form): Call fini_ssa_operands.
3735 (insert_backedge_copies): Delete call to modify_stmt.
3736 * tree-phinodes.c (make_phi_node): Initialize use nodes.
3737 (release_phi_node): Delink any use nodes before releasing.
3738 (resize_phi_node): Relink any use nodes.
3739 (remove_phi_arg_num): Delink the use node.
3740 (remove_phi_node): Release the ssa_name AFTER releasing the phi node.
3741 (remove_all_phi_nodes_for): Release phi node first.
3742 * tree-pretty-print.c (dump_generic_node): Print stmt address.
3743 * tree-sra.c (mark_all_v_defs): Call update_stmt_if_modified.
3744 (scalarize_use, scalarize_copy): Call update_stmt.
3745 * tree-ssa-alias.c (compute_may_aliases): Update all modified stmts.
3746 (compute_points_to_and_addr_escape): Call mark_stmt_modified.
3747 * tree-ssa-cpp.c (need_imm_uses_for): Delete.
3748 (ccp_initialize): Remove call to compute_immediate_uses.
3749 (substitute_and_fold, execute_fold_all_builtins): Call update_stmt.
3750 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Update all modified
3752 (simplify_cond_and_lookup_avail_expr): Call mark_stmt_modified.
3753 (simplify_switch_and_lookup_avail_expr): Call mark_stmt_modified.
3754 (eliminate_redundant_computations): Call mark_stmt_modified.
3755 (cprop_operand): Call mark_stmt_modified.
3756 (optimize_stmt): Call update_stmt_if_modified and mark_stmt_modified.
3757 * tree-ssa-dse.c (fix_phi_uses, fix_stmt_v_may_defs): Delete.
3758 (dse_optimize_stmt): Use new immuse interface.
3759 (tree_ssa_dse): Remove calls to compute_immediate_uses and free_df.
3760 * tree-ssa-forwprop.c (need_imm_uses_for): Delete.
3761 (substitute_single_use_vars): Use new immuse interface.
3762 (tree_ssa_forward_propagate_single_use_vars): Remove calls to free_df
3763 and compute_immediate_uses.
3764 * tree-ssa-loop-im.c (single_reachable_address): Use new immuse
3766 (rewrite_mem_refs): Call update_stmt.
3767 (determine_lsm): Remove call to compute_imm_uses and free_df.
3768 * tree-ssa-loop-ivcanon.c (create_canonical_iv): Call update_stmt.
3769 (try_unroll_loop_completely): Call update_stmt.
3770 * tree-ssa-loop-ivopts.c (rewrite_address_base): Call update_stmt.
3771 (rewrite_use_compare): Call update_stmt.
3772 (compute_phi_arg_on_exit): Insert each stmt before trying to process.
3773 (rewrite_use) : Call update_stmt.
3774 * tree-ssa-loop-manip.c (verify_loop_closed_ssa): Add arg to call.
3775 * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Call
3777 * tree-ssa-operands.c (NULL_USE_OPERAND_P): Remove declaration.
3778 (allocate_use_optype, allocate_vuse_optype): Adjust allocation size.
3779 (free_uses, free_vuses, free_v_may_defs, free_v_must_defs): Delink
3781 (initialize_vuse_operand): New. Initialize a vuse operand.
3782 (initialize_v_may_def_operand): New. Initialize a maydef operand.
3783 (initialize_v_must_def_operand): New. Initialize a mustdef operand.
3784 (finalize_ssa_defs): Use stmt parameter.
3785 (correct_use_link): Ensure a use node is in the correct list, and has
3786 the correct stmt pointer.
3787 (finalize_ssa_uses, finalize_ssa_v_may_defs, finalize_ssa_vuses,
3788 finalize_ssa_v_must_defs): Also initialize use nodes.
3789 (finalize_ssa_stmt_operands): Pass extra stmt operands.
3790 (build_ssa_operands): Seperate parsing from final operand construction.
3791 (parse_ssa_operands): New. Parse entry point for operand building.
3792 (swap_tree_operands): New. Swap 2 tree operands.
3793 (update_stmt_operands): Ranamed from get_stmt_operands. Always builds
3795 (get_expr_operands): Call swap_tree_operands when needed.
3796 (copy_virtual_operands): Use initialize routines for virtual use ops.
3797 (create_ssa_artficial_load_stmt): Add extra stmt parameter.
3798 (verify_abort): New. Issue imm_use error.
3799 (verify_imm_links): New Verify imm_use links for a var.
3800 (dump_immediate_uses_for): New. Dump imm_uses for a var to file.
3801 (dump_immediate_uses): New. Dump imm_uses for all vars to file.
3802 (debug_immediate_uses): New. Dump imm_uses for all vars to stderr.
3803 (debug_immediate_uses_for): New. Dump imm_uses for a var to stderr.
3804 * tree-ssa-operands.h (struct use_operand_ptr): Delete.
3805 (NULL_USE_OPERAND_P) Define.
3806 (use_optype_d, v_def_use_operand_type, vuse_optype_d): Add immediate
3808 (struct vuse_operand_type): New struct.
3809 (SET_USE): Call set_ssa_use_from_ptr.
3811 (PHI_ARG_INDEX_FROM_USE): Define.
3812 * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Set the phi
3813 argument via SET_USE, not PHI_ARG_DEF_TREE.
3814 * tree-ssa-pre.c (eliminate): Call update_stmt.
3815 * tree-ssa-propagate.c (cfg_blocks_get): Use imm_use iterators. Don't
3817 * tree-ssa-sink.c (all_immediate_uses_same_place): Use imm_use iterator.
3818 (nearest_common_dominator_of_uses): Use imm_use iterator.
3819 (statement_sink_location): Use imm_use iterator and interface.
3820 (execute_sink_code): Don't call compute_immediate_uses or free-df.
3821 * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis): Use
3822 PHI_ARG_DEF, not PHI_ARG_DEF_TREE.
3823 * tree-ssa.c (verify_use, verify_phi_args): Verify some imm_use info.
3824 (verify_ssa): Ensure no stmt is marked modify after optimization pass
3825 if new parameter is true.
3826 (init_tree_ssa): Don't initialize operand cache here.
3827 (delete_tree_ssa): Don't destroy operand cache here.
3828 (propagate_into_addr): Pass in a use pointer, return true if anything
3830 (replace_immediate_uses): Use imm_use iterator, call update_stmt.
3831 (check_phi_redundancy): Use imm_use iterator.
3832 (kill_redundant_phi_nodes): Don't call compute_immediate_uses or
3834 * tree-ssanames.c (make_ssa_name): Initialize imm_use node.
3835 (release_ssa_name): Delink node and all elements in its imm_use list.
3836 * tree-tailcall.c (adjust_return_value): Call update_stmt.
3837 * tree-vect-analyze.c (vect_stmt_relevant_p): Use imm_use iterator.
3838 * tree-vectorizer.c (need_imm_uses_for): Delete.
3839 (vectorize_loops): Dont call compute_immediate_uses or free_df.
3840 * tree.h (struct ssa_imm_use_d): Define.
3841 (SSA_NAME_IMM_USE_NODE): Define.
3842 (struct tree_ssa_name): Add imm_use node.
3844 (PHI_ARG_IMM_USE_NODE): Define.
3845 (struct phi_arg_d): Add imm_use node.
3846 (struct tree_phi_node): Remove struct dataflow_d element.
3847 (TDF_STMTADDR): Define.
3849 2005-04-05 Dale Johannesen <dalej@apple.com>
3851 * doc/invoke.texi (Optimization Options): Remove
3852 duplicate -fcse-follow-jumps. Add -fweb.
3853 (-ftree-lim): Fix spelling (-ftree-loop-im, invariants).
3854 (-fivcanon): Fix spelling (-ftree-loop-ivcanon).
3856 2005-04-05 Per Bothner <per@bothner.com>
3858 * tree-ssa.c (execute_early_warn_uninitialized): Pass context node
3859 to talk_tree as 'data' parameter, rather than EXPR_LOCUS.
3860 (warn_uninit): Get EXPR_LOCUS from context now instead.
3861 This fixes a USE_MAPPED_LOCATION testsuite failure.
3863 * tree-ssa.c (warn_uninitialized_var): Remove useless local.
3865 2005-04-05 Per Bothner <per@bothner.com>
3867 * c-decl.c (finish_function): If USE_MAPPED_LOCATION set the location
3868 of the artification 'return 0' in main() to BUILTINS_LOCATION.
3869 * tree-cfg.c (remove_bb): Check that location isn't BUILTINS_LOCATION
3872 2004-04-05 Devang Patel <dpatel@apple.com>
3874 * config/rs600/altivec.md (altivec_vsr<VI_char>): Rename to ..
3875 (lhsr<mode>3): ... new name.
3876 (altivec_vsra<VI_char>): Rename to ..
3877 (ashr<mode>3): ... new name.
3878 * config/rs6000/rs6000.c (builtin_description): Rename shift
3881 2004-04-05 Paolo Bonzini <bonzini@gnu.org>
3883 * combine.c (RTL_HOOKS_GEN_LOWPART_NO_EMIT): Use
3884 gen_lowpart_for_combine.
3885 * cse.c (gen_lowpart_if_possible): Move...
3886 * rtlhooks.c (gen_lowpart_if_possible): ... here. Also try
3888 (gen_lowpart_no_emit_general): Use it.
3890 2005-04-05 Eric Botcazou <ebotcazou@libertysurf.fr>
3892 * config/sparc/sparc.c (TARGET_ASM_FILE_END): Undefine before
3895 2005-04-05 Paolo Bonzini <bonzini@gnu.org>
3897 * system.h: Fix typo.
3899 2005-04-05 Bernd Schmidt <bernd.schmidt@analog.com>
3901 * config/bfin/bfin-modes.def: New file.
3902 * config/bfin/bfin-protos.h: New file.
3903 * config/bfin/bfin.c: New file.
3904 * config/bfin/bfin.h: New file.
3905 * config/bfin/bfin.md: New file.
3906 * config/bfin/bfin.opt: New file.
3907 * config/bfin/crti.s: New file.
3908 * config/bfin/crtn.s: New file.
3909 * config/bfin/elf.h: New file.
3910 * config/bfin/lib1funcs.asm: New file.
3911 * config/bfin/predicates.md: New file.
3912 * config/bfin/t-bfin: New file.
3913 * config/bfin/t-bfin-elf: New file.
3914 * doc/extend.texi (exception_handler, kspisusp, nesting, nmi_handler):
3915 Document new attributes.
3916 (interrupt, interrupt_handler, saveall): Update documentation for
3918 * doc/install.texi (Specific): Add entry for the Blackfin.
3919 * doc/invoke.texi (Blackfin Options): New section.
3920 * doc/md.texi (Blackfin family): New section to document constraints.
3921 * config.gcc: Add bfin*-* and bfin*-elf configurations.
3923 2005-04-05 Olivier Hainque <hainque@adacore.com>
3925 * config/mips/iris6.h (DWARF_FRAME_RETURN_COLUMN): Redefine to
3926 match what the system unwinder expects.
3927 * config/mips/mips.c (mips_frame_set): If we're saving the return
3928 address register and the dwarf return address column number differs
3929 from the hard register number, adjust the note reg to refer to the
3932 2004-04-05 Richard Sandiford <rsandifo@redhat.com>