1 2004-05-19 Paolo Bonzini <bonzini@gnu.org>
3 * fold-const.c: Remove non-printable character 160.
5 2004-05-19 Nick Clifton <nickc@redhat.com>
7 * doc/invoke.texi (ARM Options): Fix typo.
8 Remove descrption of -mshort-load-bytes and
11 * config/ip2k/ip2k.c (ip2k_composite_xexp_not_uses_reg_p): Add
13 * config/ip2k/ip2k.c (ip2k_unary_operator): Likewise.
14 * config/ip2k/ip2k.c (ip2k_binary_operator): Likewise.
16 2004-05-19 Steven Bosscher <stevenb@suse.de>
18 * expr.c (store_constructor): Build loop start and end by hand
19 instead of via loop functions from stmt.c.
20 (expand_expr_real_1): Abort if we see an EXIT_EXPR or a LOOP_EXPR.
21 Remove the code to expand them.
23 * stmt.c (loop_stack): Remove this and everything related.
24 (struct nesting, enum nesting_desc): Update.
25 (expand_fixup): Likewise.
26 (expand_loop_start, expand_start_loop_continue_elsewhere,
27 expand_start_null_loop, expand_loop_continue_here, expand_end_loop,
28 expand_end_null_loop, expand_continue_loop, expand_exit_loop,
29 expand_exit_loop_if_false, expand_exit_loop_top_cond,
30 expand_exit_something): Remove.
31 * tree.h: Remove prototypes.
33 2004-05-18 Mike Stump <mrs@apple.com>
34 Devang Patel <dpatel@apple.com>
36 * doc/tm.texi (TARGET_ASM_EMIT_UNWIND_LABEL): Add argument to indicate
37 if this label is for eh.
38 * config/darwin-protos.h (darwin_emit_unwind_label): Likewise.
39 * config/darwin.c (darwin_emit_unwind_label): Likewise.
40 * dwarf2out.c (output_call_frame_info): Likewise.
41 * output.h (default_emit_unwind_label): Likewise.
42 * target.h (unwind_label): Likewise.
43 * varasm.c (default_emit_unwind_label): Likewise.
45 * config/darwin.h (DWARF2_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE,
46 DEBUG_FRAME_SECTION, DEBUG_INFO_SECTION, DEBUG_ABBREV_SECTION,
47 DEBUG_ARANGES_SECTION, DEBUG_MACINFO_SECTION, DEBUG_LINE_SECTION,
48 DEBUG_LOC_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_STR_SECTION,
49 DEBUG_RANGES_SECTION): Define.
51 2004-05-18 Zack Weinberg <zack@codesourcery.com>
53 * cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
54 (cgraph_varpool_hash_node, eq_cgraph_varpool_node)
55 (cgraph_varpool_node):
56 Use DECL_UID for the key, not DECL_ASSEMBLER_NAME.
57 (cgraph_function_possibly_inlined_p): Use the decl itself for
58 the key, not DECL_ASSEMBLER_NAME.
59 (change_decl_assembler_name): No need to muck with the hash tables.
60 (cgraph_node_for_identifier, cgraph_varpool_node_for_identifier):
62 * cgraphunit.c (cgraph_mark_inline_edge): Use the decl itself
63 for the key, not DECL_ASSEMBLER_NAME.
64 * cgraph.h: Remove prototypes of deleted functions.
65 * varasm.c (mark_referenced): Just set TREE_SYMBOL_REFERENCED.
66 (mark_decl_referenced): New function.
67 * tree.h: Prototype mark_decl_referenced.
68 * final.c (output_addr_const) <case SYMBOL_REF>: Call
69 mark_decl_referenced before assemble_name.
70 * c-decl.c (finish_decl): Use mark_decl_referenced.
72 2004-05-18 Andrew Pinski <pinskia@physics.uc.edu>
73 Jeff Law <law@redhat.com>
75 * tree-ssa-phiopt.c (abs_replacement): New function.
76 (empty_block_p): New function extracted from...
77 (candidate_bb_for_phi_optimization): Break out empty block test.
78 (conditional_replacement): Use empty_block_p.
79 (value_replacement): Similarly.
81 * Makefile.in (tree-ssa-phiopt.o): Depends on flags.h.
82 * tree-ssa-phiopt.c: Include flags.h.
83 (conditional_replacement): Remove argument names from prototype.
84 Minor formatting and comment fixes.
85 (tree_ssa_phiopt): If conditional_replacement returns false, then
86 call value_replacement.
87 (value_replacement): New function.
89 2004-05-18 Jeff Law <law@redhat.com>
91 * tree-ssa-phiopt.c (replace_phi_with_stmt): New function extracted
92 from conditional_replacement.
93 (candidate_bb_for_phi_optimization): Similarly.
94 (conditional_replacement): Use replace_phi_with_stmt and
95 candidate_bb_for_phi_optimization.
97 * tree-ssa-phiopt.c: Fix various formatting issues.
99 2004-05-18 Steven Bosscher <stevenb@suse.de>
101 * config/s390/s390.c (s390_expand_movstr, s390_expand_clrstr,
102 s390_expand_cmpmem): Do not use expand_start_loop and
103 expand_end_loop, instead build the loop manually.
105 2004-05-18 Alan Modra <amodra@bigpond.net.au>
107 * config/rs6000/rs6000.md (ctrsi_internal3): Delete.
108 (ctrsi_internal4, ctrdi_internal3, ctrdi_internal4): Delete.
110 2004-05-17 Jeff Law <law@redhat.com>
112 * toplev.h (flag_delete_null_pointer_checks): Move from here to...
113 * flags.h (flag_delete_null_pointer_checks): Here.
114 * tree-flow.h (cprop_into_successor_phis): Add argument to prototype.
115 * tree-phinodes.c (resize_phi_node): Initialize PHI_ARG_NONZERO.
116 (add_phi_arg, remove_phi_arg_num): Similarly.
117 * tree-ssa-copy.c (cprop_into_successor_phis): Propagate nonzero
118 property into PHI nodes.
119 * tree-ssa-dom.c: Remove redundant inclusion of flags.h.
120 (record_equivalences_from_phis): If all PHI arguments are known to be
121 nonzero, then the result must be nonzero as well.
122 (cprop_into_phis): Pass nonzero_vars bitmap to cprop_into_successor_phis.
123 (record_equivalences_from_stmt): Check flag_delete_null_pointer_checks
124 appropriately. Walk the USE-DEF chains and propagate nonzero property
126 * tree.h (PHI_ARG_NONZERO): Define.
127 (phi_arg_d): Add nonzero flag.
129 2004-05-17 Zack Weinberg <zack@codesourcery.com>
131 * f: Entire directory removed
133 * c-common.h (CTI_G77_INTEGER_TYPE, CTI_G77_UINTEGER_TYPE)
134 (CTI_G77_LONGINT_TYPE, CTI_G77_ULONGINT_TYPE)
135 (g77_integer_type_node, g77_uinteger_type_node)
136 (g77_longint_type_node, or g77_ulongint_type_node): Delete.
137 * c-common.c (c_common_nodes_and_builtins): Do not initialize
138 the above set of variables.
140 * config/i386/uwin.h: No need to define WIN32_UWIN_TARGET.
141 * doc/invoke.texi, doc/standards.texi: Remove cross-references
144 2004-05-17 Steven Bosscher <stevenb@suse.de>
146 PR tree-optimization/15438
147 * tree-ssa-operands.c (get_expr_operands): Do not treat malloc
148 attributed functions as pure or const.
150 2004-05-17 Frank Ch. Eigler <fche@redhat.com>
152 * tree-mudflap.c (mx_register_decls): Tolerate decl trees resulting
153 from source code with errors.
155 2004-05-17 Ranjit Mathew <rmathew@hotmail.com>
157 Enable tree browser for all front ends.
158 * Makefile.in (cc1): Moved @TREEBROWSER@ from here...
159 (BACKEND): ...to here.
161 2004-05-17 Jan Hubicka <jh@suse.cz>
163 * i386.c (construct_container): Do not produce BLKmode registers.
164 (classify_argument): Properly compute alignment of complex types.
166 2004-05-17 H.J. Lu <hongjiu.lu@intel.com>
169 * config/i386/i386.md (*movsi_insv_1_rex64): Changed to DImode
170 and renamed to movdi_insv_1_rex64.
171 (insv): Support SImode for 32bit and DImode for 64bit.
173 2004-05-17 Richard Sandiford <rsandifo@redhat.com>
175 * config/mips/mips.h (MASK_DEBUG_G, TARGET_DEBUG_G_MODE): Delete.
176 (TARGET_SWITCHES): Remove debugg.
177 * config/mips/mips.md (adddi3, ashldi3, ashrdi3, lshrdi3): Only handle
179 (subdi3): Replace the define_expand with a define_insn, the latter
180 renamed from subdi3_internal_3.
181 (negdi2): Likewise negdi2_internal_2.
182 (adddi3_internal_[12], subdi3_internal, ashldi3_internal{,2,3})
183 (ashrdi3_internal{,2,3}, lshrdi3_internal{,2,3}): Remove patterns
184 and associated define_splits.
185 (adddi3_internal): Renamed from adddi3_internal_3.
186 (ashldi3_internal): Likewise ashldi3_internal4.
187 (ashrdi3_internal): Likewise ashrdi3_internal4.
188 (lshrdi3_internal): Likewise lshrdi3_internal4.
190 2004-05-17 Richard Sandiford <rsandifo@redhat.com>
192 * optabs.c (expand_unop): Try implementing negation using subtraction
195 2004-05-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
197 * pa.md: Fix typo from last change. Remove DFmode move to and from
200 2004-05-16 Richard Earnshaw <rearnsha@arm.com>
203 * arm.md (ne_zeroextractsi): Convert to insn-and-split.
204 (ne_zeroextractsi_shifted): New pattern.
205 (ite_ne_zeroextractsi): New pattern.
206 (ite_ne_zeroextractsi_shifted): New pattern.
208 2004-05-15 Steven Bosscher <stevenb@suse.de>
210 * c-gimplify.c (c_genericize):
211 Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
212 * c-parse.in <expr_no_commas>: Likewise.
213 <if_prefix>: Likewise.
214 <select_or_iter_stmt>: Likewise.
215 * expr.c (expand_var, expand_expr_real_1): Likewise.
216 * expr.h (expand_expr): Make it a static inline function.
217 Move prototype for expand_expr_real up before this.
218 * fold-const.c (fold_relational_hi_lo, fold_relational_const):
220 * gimplify.c (gimple_boolify, gimplify_addr_expr,
221 gimplify_asm_expr, gimplify_expr): Likewise.
222 * tree-cfg.c (dump_tree_cfg, dump_cfg_stats, tree_cfg2vcg,
223 dump_function_to_file): Likewise.
224 * tree-dfa.c (dump_immediate_uses, dump_dfa_stats): Likewise.
225 * tree-inline.c (remap_block, save_body, walk_tree): Likewise.
226 * tree-into-ssa.c (dump_tree_ssa): Likewise.
227 * tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
229 * tree-optimize.c (execute_one_pass): Likewise.
230 * tree-pretty-print.c (dump_generic_bb_buff): Likewise.
231 * tree-ssa-alias.c (dump_alias_stats, dump_alias_info): Likewise.
233 * objc/objc-act.c (objc_build_try_enter_fragment,
234 objc_build_try_epilogue, objc_build_catch_stmt,
235 objc_build_finally_prologue): Replace calls via (*lang_hooks.foo)
236 with lang_hooks.foo ().
238 2004-05-15 Roger Sayle <roger@eyesopen.com>
240 * builtins.c (simplify_builtin_strcpy): Avoid use of chainon, so
241 that simplify_builtin doesn't destructively modify its argument.
243 2004-05-15 Richard Earnshaw <reanrsha@arm.com>
245 * arm/lib1funcs.asm (_lshrdi3, _ashrdi3, _ashldi3): Add ASM
246 implementations for ARM and Thumb.
247 * arm/t-arm-elf (LIB1ASMFUNCS): Use them.
249 2004-05-15 Thomas Quinot <quinot@act-europe.fr>
251 * prefix.c (update_path): Replace PREFIX with KEY only
252 when it matches a full directory name in PATH.
254 2004-05-15 Richard Earnshaw <reanrsha@arm.com>
256 * arm.h (TARGET_APCS_32): Delete.
257 (TARGET_MMU_TRAPS): Delete.
258 (TARGET_CPU_CPP_BUILTINS): Unconditionally define __APCS_32__. Never
260 (CPP_SPEC): Remove checking of -mapcs-{26,32}.
261 (ARM_FLAG_APCS_32, ARM_FLAG_MMU_TRAPS): Delete.
262 (TARGET_SWITCHES): Remove alignment_traps and apcs-{26,32} switches.
263 (prog_mode_type): Delete.
264 (PROMOTE_MODE): Always promote unsigned for HImode.
265 (SECONDARY_INPUT_RELOAD_CLASS): Simplify.
266 (MASK_RETURN_ADDR): Simplify.
267 * arm.c (arm_prgmode): Delete.
268 (arm_override_options, arm_gen_rotated_half_load): Simplify.
269 (print_multi_reg, output_return_instruction): Simplify.
270 (arm_output_epilogue, arm_final_prescan_insn): Simplify.
271 (arm_return_addr): Simplify.
272 * arm.md (prog_mode): Delete.
274 (zero_extendhisi2, extendhisi2, movhi, movhi_bytes): Simplify.
275 (rotated_loadsi, movhi_insn_littleend, movhi_insn_bigend): Delete.
276 (loadhi_si_bigend, loadhi_preinc, loadhi_shiftpreinc): Delete.
277 (loadhi_shiftpredec): Delete.
278 (peephole for post-increment on HImode load): Delete.
279 * arm/crtn.asm: (FUNC_END): Simplify.
280 * arm/lib1funcs.asm: Remove APCS-26 return macros.
281 * arm/aof.h, arm/coff.h arm/elf.h arm/linux-elf.h arm/netbsd-elf.h
282 * arm/netbsd.h arm/pe.h arm/semi.h arm/semiaof.h arm/unknown-elf.h
283 * arm/vxworks.h arm/wince-pe.h: Tidy TARGET_DEFAULTS and
284 MULTILIB_DEFAULTS as required.
285 * arm/t-arm-elf arm/t-linux arm/t-pe arm/t-semi arm/t-wince-pe
286 * arm/t-xscale-coff arm/t-xscale-elf arm/uclinux-elf: Tidy MULTILIB
287 variables as required.
288 * doc/invoke.texi (ARM Options): Remove obsolete flags.
290 2004-05-15 Alan Modra <amodra@bigpond.net.au>
292 * config/rs6000/rs6000.c (rs6000_va_arg <ABI_V4>): Don't use
293 UNITS_PER_WORD to calculate gpr size. Re-instate code to set reg
294 count to 8 to handle n_reg > 2.
296 2004-05-15 Joseph S. Myers <jsm@polyomino.org.uk>
298 * doc/extend.texi: Update WG14 URL.
300 2004-05-15 Steven Bosscher <stevenb@suse.de>
302 * basic-block.h (life_analysis, delete_noop_moves):
304 * bt-load.c (branch_target_load_optimize): Don't take the
305 insns stream as an argument. Update the life_analysis calls.
306 * combine.c (combine_instructions): Update delete_noop_moves
308 * flow.c (notice_stack_pointer_modification): Don't take the
309 insns stream as an argument. Work on the flow graph.
310 (life_analysis): Likewise.
311 (delete_noop_moves): Likewise.
312 * passes.c (rest_of_handle_stack_regs): Update reg_to_stack call.
313 (rest_of_handle_life): Update life_analysis call.
314 (rest_of_compilation): Likewise, and also update
315 branch_target_load_optimize call.
316 * ra.c (reg_alloc): Update life_analysis call.
317 * reg-stack.c (reg_to_stack): Likewise. Also, don't take
318 the insns stream as an argument.
319 * regrename.c (copyprop_hardreg_forward): Update delete_noop_moves
321 * rtl.c (branch_target_load_optimize, reg_to_stack): Update
323 * value-profile.c (branch_prob): Update life_analysis call.
324 * web.c (web_main): Work on the CFG, not on the insns stream.
326 * config/ip2k/ip2k.c (ip2k_reorg): Update life_analysis calls.
327 * config/m68hc11/m68hc11.c (m68hc11_reorg): Likewise.
328 * config/sh/sh.c (sh_output_mi_thunk): Likewise.
330 2004-05-15 Joseph S. Myers <jsm@polyomino.org.uk>
333 * c-format.c (avoid_dollar_number): New function.
334 (check_format_info_main): Call avoid_dollar_number when operand
335 numbers might occur but has_operand_number == 0.
337 2004-05-14 Richard Earnshaw <rearnsha@arm.com>
339 * arm.md (all peephole2 patterns): Use predicates that validate
340 register classes as appropriate.
342 2004-05-14 Steven Bosscher <stevenb@suse.de>
345 * tree-tailcall.c (process_assignment): Use STRIP_NOPS to
346 ignore type conversions that do not inhibit tail calling.
347 (find_tail_calls): Likewise.
349 2004-05-14 Jeff Law <law@redhat.com>
351 * tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Don't even
352 bother marking bypassed virtuals for out-of-ssa. Instead merge
353 bypassed virtuals into vars_to_rename just before into-ssa pass.
355 * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Reorganize
356 so that it picks up more opportunities to eliminate ABS expressions
357 or turn them into negations.
359 2004-05-14 Steven Bosscher <stevenb@suse.de>
361 * passes.c (rest_of_handle_null_pointer): Remove.
362 (rest_of_handle_cse): Don't call rest_of_handle_null_pointer.
363 (rest_of_compilation): Likewise.
364 * rtl.h (delete_null_pointer_checks): Remove prototype.
365 * gcse.c (rd_kill, rd_gen, reaching_defs, rd_out, ae_in, ae_out):
367 (get_bitmap_width, alloc_rd_mem, free_rd_mem, handle_rd_kill_set,
368 compute_kill_rd, compute_rd, alloc_avail_expr_mem,
369 free_avail_expr_mem, compute_ae_gen, expr_killed_p, compute_ae_kill,
370 expr_reaches_here_p, computing_insn, def_reaches_here_p,
371 can_disregard_other_sets, handle_avail_expr, classic_gcse,
372 one_classic_gcse_pass, invalidate_nonnull_info,
373 delete_null_pointer_checks_1, delete_null_pointer_checks,
374 expr_reached_here_p_work): Remove.
375 (gcse_main): Do not perform classic GCSE when optimizing for size.
376 (alloc_pre_mem, free_pre_mem): Don't touch ae_in and ae_out, they
379 2004-05-14 Andrew Pinski <pinskia@physics.uc.edu>
381 PR optimization/14466
382 * tree-complex.c (make_temp): Remove.
383 (gimplify_val): Replace make_temp with make_rename_temp
384 and add NULL as the second argument.
385 (expand_complex_div_wide): Likewise.
386 * tree-dfa.c (make_rename_temp): New function.
387 * tree-flow.h (make_rename_temp): Declare.
388 * tree-sra.c (make_temp): Remove.
389 (lookup_scalar): Replace make_temp with make_rename_temp.
390 (create_scalar_copies): Likewise.
391 * tree-ssa-phiopt.c (conditional_replacement): When we
392 get non gimple create a temporary variable to hold the
395 2004-05-14 Paul Brook <paul@codesourcery.com>
397 * stor-layout.c (update_alignment_for_field): Use
398 targetm.align_anon_bitfield.
399 * target-def.h (TARGET_ALIGN_ANON_BITFIELD): Define.
400 (TARGET_INITIALIZER): Use it.
401 * target.h (struct gcc_target): Add align_anon_bitfield.
402 * config/arm/arm.c (arm_align_anon_bitfield): New function.
403 (TARGET_ALIGN_ANON_BITFIELD): Define.
404 * doc/tm.texi: Document TARGET_ALIGN_ANON_BITFIELD.
406 2004-05-13 Zack Weinberg <zack@codesourcery.com>
408 * tree.def (documentation): Remove mention of class 'b'.
409 (BLOCK): Now in class 'x'.
410 * c-common.c (verify_tree): Remove case 'b'.
411 * c-typeck.c (same_translation_unit_p): Change 'b' to 'x'.
412 * calls.c (calls_function_1): Control cannot get past the switch
414 * print-tree.c (print_node): Move code for class 'b' to the class
415 'c'/'x' switch, as case BLOCK.
416 * tree.c (tree_size, make_node_stat, tree_node_structure): Likewise.
417 (unsafe_for_reeval, substitute_placeholder_in_expr)
418 (stabilize_reference_1): Remove case 'b'.
419 * tree-browser.c (browse_tree): Change all tests for TREE_CODE_CLASS
420 of something being 'b' to tests for TREE_CODE of something being
422 * tree-ssa-operands.c (get_expr_operands): Likewise.
424 2004-05-13 Diego Novillo <dnovillo@redhat.com>
426 * tree-gimple.c: Rename from tree-simple.c.
427 * tree-gimple.h: Rename from tree-simple.h.
428 * c-gimplify.c: Rename from c-simplify.c
429 * Makefile.in, c-decl.c, gimple-low.c, gimplify.c,
430 langhooks.c, tree-alias-ander.c, tree-alias-common.c,
431 tree-complex.c, tree-dfa.c, tree-flow.h, tree-inline.c,
432 tree-into-ssa.c, tree-iterator.c, tree-mudflap.c,
433 tree-nested.c, tree-nomudflap.c, tree-outof-ssa.c, tree-sra.c,
434 tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-copyrename.c,
435 tree-ssa-dce.c, tree-ssa-live.c, tree-ssa-pre.c, tree-ssa.c:
438 2004-05-14 Ranjit Mathew <rmathew@hotmail.com>
440 * doc/sourcebuild.texi: Mention libbanshee and libmudflap.
442 2004-05-13 Andrew Pinski <pinskia@physics.uc.edu>
444 * tree-ssa.c (delete_tree_ssa): XFREE
445 bitmaps allocated with BITMAP_XMALLOC.
447 * tree-ssa-pre.c (execute_pre): Free ephi_use_pool and
448 idfs_cache at the end of the function.
450 * tree-ssa-live.c (calculate_live_on_entry): Free saw_def
451 at the end of the function.
453 * tree-ssa-dce.c (perform_tree_ssa_dce): Free
454 el at the end of the function.
456 * tree-into-ssa.c (insert_phi_nodes_for): XFREE
457 bitmaps allocated with BITMAP_XMALLOC.
459 * loop-unswitch.c (unswitch_single_loop): Free bbs at
462 * final.c (shorten_branches): Free uid_shuid before
465 * bb-reoder.c (connect_traces): Free cold_traces at the end.
467 2004-05-13 Jeff Law <law@redhat.com>
469 * tree-ssa-live.c (calculate_live_on_entry): Ignore virtual
470 variables. Simplify slightly by using USE_OP/DEF_OP instead
471 of USE_OP_PTR/DEF_OP_PTR and dereferencing the result.
473 * tree-into-ssa.c (compute_global_livein): Use EXECUTE_IF_SET_IN_BITMAP
474 rather than iterating through the blocks testing each bit in
475 livein to initialize the worklist.
476 (mark_def_sites): Remove useless checks of KILLS for virtual
479 * tree-ssa-forwprop.c (record_single_argument_cond_exprs): Accept
480 new parameters for the statement and variable worklist as well
481 as a bitmap of interesting SSA_NAMEs. Walk over the statement
482 worklist recording interesting variables in the variable worklist
483 and bitmap. Handle casts between integral and boolean types.
484 (substitute_single_use_vars): Accept new parameters for the statement
485 and variable worklist. When a substitution is made add a new
486 entry to the statement worklist. Handle casts between integral
488 (tree_ssa_forward_propagate_single_use_vars): Rework to pass
489 worklists to children. Iterate until the statement worklist
492 2004-05-13 Andrew Pinski <pinskia@physics.uc.edu>
494 * tree-outof-ssa.c (rewrite_vars_out_of_ssa): Free map at
495 the end of the block.
497 * tree-into-ssa.c (def_blocks_free): XFREE bitmaps allocated
500 * tree-ssa-alias.c (delete_alias_info): XFREE bitmaps allocated
503 * tree-ssa-dom.c (tree_ssa_dominator_optimize):
504 Free nonzero_vars at the end of the function.
506 * convert.c (convert_to_integer): Make a CONVERT_EXPR when there is a
507 need to generate code instead of a NOP_EXPR.
509 2004-05-13 Ian Lance Taylor <ian@wasabisystems.com>
511 * gcc.c (default_compilers): Fill out initializers for new Fortran
514 2004-05-13 Paul Brook <paul@codesourcery.com>
516 * config/arm/arm.h (PCC_BITFIELD_TYPE_MATTERS): Define.
518 2004-05-13 Paul Brook <paul@codesourcery.com>
520 * config/arm/arm.c (arm_default_short_enums): New function.
521 (TARGET_DEFAULT_SHORT_ENUMS): Define.
523 2004-05-13 Diego Novillo <dnovillo@redhat.com>
525 Merge from tree-ssa-20020619-branch.
527 * Makefile.in (reload1.o-warn): Add.
528 (tree-alias-ander.o-warn): Add.
531 (BANSHEELIB): Define.
532 (BANSHEEINC): Define.
533 (TREE_DUMP_H): Define.
534 (TREE_SIMPLE_H): Define.
535 (TREE_FLOW_H): Define.
536 (LIBDEPS): Add BANSHEELIB.
537 (INCLUDES): Add BANSHEEINC and GMPINC.
538 (C_AND_OBJC_OBJS): Add c-simplify.o, tree-mudflap.o,
539 c-mudflap.o and c-pretty-print.o.
540 (C_OBJS): Remove c-pretty-print.o.
541 (OBJS-common): Remove sibcall.o.
542 Add tree-cfg.o, tree-dfa.o, tree-eh.o,
543 tree-ssa.o, tree-optimize.o, tree-simple.o,
544 tree-alias-type.o, gimplify.o, tree-pretty-print.o,
545 tree-into-ssa.o, tree-outof-ssa.o, tree-alias-common.o,
546 tree-ssa-ccp.o, @ANDER@, tree-ssa-dce.o, tree-ssa-copy.o,
547 tree-nrv.o, tree-ssa-copyrename.o, tree-ssa-pre.o,
548 tree-ssa-live.o, tree-ssa-operands.o, tree-ssa-alias.o,
549 tree-ssa-phiopt.o, tree-ssa-forwprop.o, tree-nested.o,
550 tree-ssa-dse.o, tree-ssa-dom.o, domwalk.o,
551 tree-tailcall.o, gimple-low.o, tree-iterator.o,
552 tree-phinodes.o, tree-ssanames.o, tree-sra.o,
553 tree-complex.o, tree-ssa-loop.o, rtl-profile.o and
555 (OBJC-archive): Add tree-nomudflap.o.
556 (cc1): Add dependency on @TREEBROWSER@.
557 (c-decl.o): Add dependency on TREE_DUMP_H.
558 (c-dump.o): Likewise.
559 (c-common.o): Add dependency on tree-iterator.h
560 (c-pretty-print.o): Add dependency on DIAGNOSTIC_H.
561 (gtype-desc.o): Add dependency on TREE_FLOW_H.
562 (tree.o): Add dependency on tree-iterator.h,
563 BASIC_BLOCK_H and TREE_FLOW_H.
564 (tree-dump.o): Depend on TREE_DUMP_H instead of tree-dump.h.
565 (langhooks.o): Add dependency on TREE_SIMPLE_H.
566 (tree-alias-type.o, tree-alias-ander.o,
567 tree-alias-common.o, tree-ssa.o, tree-into-ssa.o,
568 tree-outof-ssa.o, tree-ssa-dse.o, tree-ssa-forwprop.o,
569 tree-ssa-phiopt.o, tree-nrv.o, tree-ssa-copy.o,
570 tree-ssa-dom.o, tree-ssanames.o, tree-phinodes.o,
571 domwalk.o, tree-ssa-live.o, tree-ssa-copyrename.o,
572 tree-ssa-pre.o, tree-cfg.o, tree-tailcall.o,
573 tree-nested.o, tree-iterator.o, tree-dfa.o,
574 tree-ssa-operands.o, tree-eh.o, tree-ssa-loop.o,
575 tree-ssa-alias.o, tree-optimize.o, c-simplify.o,
576 gimplify.o, gimple-low.o, tree-browser.o, tree-simple.o,
577 tree-mudflap.o, c-mudflap.o, tree-nomudflap.o,
578 tree-pretty-print.o, tree-ssa-dce.o, tree-ssa-ccp.o,
579 tree-sra.o, tree-complex.o, tree-profile.o,
580 rtl-profile.o): New rules.
581 (function.o): Add dependency on basic-block.h
582 (expr.o): Add dependency on tree-iterator.h.
584 (profile.o): Depend on TREE_FLOW_H instead of TREE_H.
585 (cfg.o): Add dependency on TIMEVAR_H.
586 (cfghooks.o): Add dependency on TREE_FLOW_H.
587 (reg-stack.o): Add dependency on basic-block.h.
588 (GTFILES): Add hwint.h, tree-mudflaph.c, tree-flow.h,
589 c-objc-common.c, c-common.c, c-parse.in, tree-ssanames.c,
590 tree-eh.c, tree-phinodes.c, tree-cfg.c, tree-dfa.c,
591 tree-ssa-ccp.c, tree-iterator.c, gimplify.c,
592 tree-alias-type.h, tree-alias-common.h,
593 tree-alias-type.c, tree-alias-common.c,
594 tree-ssa-operands.h, tree-ssa-operands.c, tree-profile.c,
595 rtl-profile.c and tree-nested.c.
596 (gt-tree-alias-common.h, gt-tree-mudflap.h,
597 gt-tree-ssa-ccp.h, gt-tree-eh.h, gt-tree-ssanames.h,
598 gt-tree-iterator.h, gt-gimplify.h, gt-tree-phinodes.h,
599 gt-tree-cfg.h, gt-tree-nested.h): New rules.
600 (TEXI_GCCINT_FILES): Add cfg.texi and tree-ssa.texi.
601 * basic-block.h: Include predict.h
602 (struct edge_def): Add GTY marker.
603 Change field 'insns' to be a union of tree and rtx.
604 (EDGE_TRUE_VALUE): Define.
605 (EDGE_FALSE_VALUE): Define.
606 (EDGE_EXECUTABLE): Define.
607 (struct bb_ann_d): Forward declare.
608 (struct basic_block_def): Add GTY marker.
609 Remove fields head_tree and end_tree.
610 Add fields stmt_list, rbi and tree_annotations.
611 (struct reorder_block_def): Define.
612 (basic_block_info): Add GTY marker.
613 (ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Change to global
614 variables instead of macros.
615 (flow_call_edges_add): Remove declaration.
616 (make_eh_edge): Remove declaration.
617 (brief_dump_cfg, find_edge, tree_predicted_by_p,
618 rtl_predicted_by_p, tree_predict_edge, rtl_predict_edge,
619 predict_edge_def, rtl_make_eh_edge, find_basic_blocks,
620 cleanup_cfg, delete_unreachable_blocks, merge_seq_blocks,
621 alloc_rbi_pool, initialize_bb_rbi, free_rbi_pool): Declare.
622 (try_redirect_by_replacing_jump): Modfiy return type to
623 edge instead of bool.
624 * bb-reorder.c (copy_bb): Call duplicate_block
625 instead of cfg_layout_duplicate_bb.
626 (copy_bb_p): Call can_duplicate_block_p instead of
627 cfg_layout_can_duplicate_bb_p.
628 * bitmap.c (bitmap_first_set_bit): Abort if word
630 (bitmap_last_set_bit): Likewise.
631 * builtin-types.def (DEF_FUNCTION_TYPE_2): Add
632 (DEF_FUNCTION_TYPE_3): Add.
633 * builtins.c (c_strlen): Make extern.
634 (builtin_save_expr): New.
635 (expand_builtin_nonlocal_goto): New.
636 (expand_builtin_constant_p): Remove.
637 (expand_builtin_mathfn): Call builtin_save_expr instead
639 (expand_builtin_mathfn_2): Likewise.
640 (expand_builtin_strcmp): Likewise.
641 (expand_builtin_strncmp): Likewise.
642 (expand_builtin_strcat): Likewise.
643 (fold_builtin_cabs): Likewise.
644 (expand_builtin_alloca): Don't trigger if -fmudflap is
646 (build_string_literal): Set TREE_INVARIANT on new node.
647 (expand_builtin_profile_fun): New.
648 (round_trampoline_addr): New.
649 (expand_builtin_init_trampoline): New.
650 (expand_builtin_adjust_trampoline): New.
651 (expand_builtin) <BUILT_IN_NEXT_ARG>: Call simplify_builtin_next_arg.
652 <BUILT_IN_CONSTANT_P>: Return const0_rtx;
653 <BUILT_IN_STACK_ALLOC, BUILT_IN_STACK_SAVE,
654 BUILT_IN_STACK_RESTORE, BUILT_IN_NONLOCAL_GOTO,
655 BUILT_IN_PROFILE_FUNC_ENTER, BUILT_IN_PROFILE_FUNC_EXIT,
656 BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE>:
658 (fold_builtin_expect): New.
659 (fold_builtin_isascii): Don't return non-constant results
661 (fold_builtin_isdigit): Likewise.
662 (fold_builtin_1): New.
663 (fold_builtin): Call it.
664 (build_function_call_expr): Update call to build a new
666 (purge_builtin_constant_p): Remove.
667 (simplify_builtin, simplify_builtin_memcmp,
668 simplify_builtin_strcmp, simplify_builtin_strncmp,
669 simplify_builtin_strpbrk, simplify_builtin_strstr,
670 simplify_builtin_strchr, simplify_builtin_strrchr,
671 simplify_builtin_strcat, simplify_builtin_strncat,
672 simplify_builtin_strspn, simplify_builtin_strcspn,
673 simplify_builtin_next_arg, simplify_builtin_va_start,
674 simplify_builtin_sprintf): New.
675 * builtins.def (BUILT_IN_STACK_ALLOC,
676 BUILT_IN_STACK_SAVE, BUILT_IN_STACK_RESTORE,
677 BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE,
678 BUILT_IN_NONLOCAL_GOTO, BUILT_IN_PROFILE_FUNC_ENTER,
679 BUILT_IN_PROFILE_FUNC_EXIT): Define.
680 * c-common.c: Include tree-iterator.h and hashtab.h.
681 (lang_statement_code_p): Declare.
682 (lang_gimplify_stmt): Declare.
683 (fix_string_type): Set TREE_INVARIANT for value.
684 (pointer_int_sum): Rely on build to set TREE_CONSTANT.
686 (c_common_get_alias_set): Handle multiple type nodes
687 referring to "the same" type, currently for C90 only.
688 (c_add_case_label): Use create_artificial_label.
689 (finish_label_address_expr): Don't set TREE_CONSTANT on
691 (c_expand_expr): Don't handle STMT_EXPR.
692 (handle_alias_attribute): Marke aliased variables to be
694 (handle_nonnull_attribute): Initialize arg_num.
695 (check_function_nonnull): Likewise.
696 (c_walk_subtrees): New.
697 (c_estimate_num_insns_1): Don't handle
698 EXPR_WITH_FILE_LOCATION nor FILE_STMT.
699 (c_decl_uninit_1): Remove.
700 (c_decl_uninit): Remove.
701 (c_warn_unused_result): New.
702 * c-common.def (ASM_STMT): Change number of operands
705 * c-common.h (lang_expand_stmt, lang_expand_decl_stmt):
707 (lang_gimplify_stmt): Add.
708 (expand_stmt): Remove.
709 (ASM_CV_QUAL, ASM_STRING, ASM_OUTPUTS, ASM_INPUTS,
710 ASM_CLOBBERS, STMT_EXPR_WARN_UNUSED_RESULT,
711 ASM_VOLATILE_P, FILE_STMT_FILENAME_NODE,
712 FILE_STMT_FILENAME, STMT_LINENO, STMT_LINENO_FOR_FN_P,
713 ASM_INPUT_P, DECL_C_HARD_REGISTER): Remove.
714 (genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt,
715 genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
716 genrtl_while_stmt, genrtl_do_stmt, genrtl_return_stmt,
717 genrtl_for_stmt, genrtl_break_stmt, genrtl_continue_stmt,
718 genrtl_scope_stmt, genrtl_switch_stmt, genrtl_case_label,
719 genrtl_compound_stmt, genrtl_asm_stmt,
720 genrtl_cleanup_stmt, c_decl_uninit): Remove.
721 (c_do_switch_warnings, c_gimplify_expr, c_walk_subtrees,
722 c_tree_chain_matters_p, c_warn_unused_result,
723 c_genericize, c_gimplify_stmt, stmt_expr_last_stmt):
725 * c-convert.c (convert): Make convert work when
726 converting to compatible types across translation unit.
727 * c-decl.c: Include langhooks.h, tree-mudflap.h,
728 tree-simple.h, diagnostic.h and tree-dump.h
729 (merge_decls): Initialize oldtype to NULL.
730 (finish_decl): Use DECL_HARD_REGISTER instead of
731 DECL_C_HARD_REGISTER.
732 (check_bitfield_type_and_width): Check for null
733 lang_type_specific when check the precision of an enum.
734 (grokdeclarator): Immediately layout an ARRAY_TYPE used
735 in a pointer-to-array declarator.
736 (finish_struct): Clear allocated struct lang_type.
737 (finish_enum): Set enum_min and enum_max. Set
738 TYPE_MIN/MAX_VALUE to the limits of the compatible type,
739 not to the enumerators.
740 (set_decl_nonlocal): New.
741 (store_parm_decls): Use it via walk_tree.
743 (finish_function): When !targetm.have_ctors_dtors,
744 record static constructors and destructors here...
745 (c_expand_body_1): ... not here.
746 (c_expand_decl): Rename from c_expand_decl_stmt.
747 Handle all C-specific expansion semantics.
748 * c-dump.c (dump_stmt): Use EXPR_LOCUS instead of
750 * c-format.c (handle_format_arg_attribute): Initialize
752 * c-lang.c: Include tree-inline.h
753 (LANG_HOOKS_EXPAND_DECL,
754 LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
755 LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
756 LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P,
757 LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_TYPES_COMPATIBLE_P): Define.
758 (LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_STMT,
759 LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Remove.
760 (c_types_compatible_p): New.
761 * c-mudflap.c: New file.
762 * c-objc-common.c: Include tree-mudflap.h
763 (start_cdtor, finish_cdtor): Collapse
765 (build_cdtor): ...here. Update to construct a complete tree
766 for the function. No need to call push_scope, pop_scope, or
767 clear_last_expr, or set current_function_cannot_inline.
768 (c_missing_noreturn_ok_p): Change prototype to return
770 (c_objc_common_init): Don't set lang_missing_noreturn_ok_p.
771 * c-opts.c (c_common_handle_option): Move handling of -fdump- to
773 (c_common_post_options): Don't ever use rtl inlining.
774 * c-parse.in: Use EXPR_LOCUS instead of STMT_LINENO.
775 * c-pragma.c (handle_pragma_redefine_extname): Define
777 (init_pragma): Activate #pragma redefine_extname for mudflap.
778 * c-pretty-print.c (pp_c_statement): Remove FILE_STMT.
779 (pp_c_initializer): Accept any type CONSTRUCTOR.
780 (pp_c_initializer_list): Fix code expectations for VECTOR_TYPE and
782 (decl_name_str): New local function.
783 (pp_c_direct_declarator): Call it.
784 (pp_c_primary_expression): Call it.
785 (pp_c_id_expression): Call it.
786 (pp_c_statement): Call it.
787 (print_c_tree): Create new pp object.
788 * c-pretty-print.h (pp_c_tree_decl_identifier,
789 print_c_tree): Declare.
790 * c-semantics.c: Include langhooks.h
791 (lang_expand_stmt, lang_expand_decl_stmt,
792 find_reachable_label_1, find_reachable_label,
793 expand_unreachable_if_stmt, expand_unreachable_stmt,
794 genrtl_do_stmt_1): Remove.
795 (begin_stmt_tree): Don't check for changed filename.
796 Call annotate_with_locus.
797 (finish_stmt_tree): Don't set line for end of function.
798 (build_stmt): Don't check type nodes for
800 (build_stmt): Set TREE_SIDE_EFFECTS.
801 Set EXPR_LOCUS instead of STMT_LINENO.
802 (lang_expand_stmt, lang_expand_decl_stmt,
803 expand_cond, genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt,
804 genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
805 genrtl_while_stmt, genrtl_do_stmt_1, genrtl_do_stmt,
806 genrtl_return_stmt, genrtl_for_stmt, genrtl_break_stmt,
807 genrtl_continue_stmt, genrtl_scope_stmt, genrtl_switch_stmt,
808 genrtl_case_label, genrtl_compound_stmt, genrtl_asm_stmt,
809 genrtl_cleanup_stmt, expand_stmt, find_reachable_label,
810 find_reachable_label_1, expand_unreachable_if_stmt,
811 expand_unreachable_stmt): Remove.
812 (prep_stmt): Use EXPR_LOCUS instead of STMT_LINENO.
813 * c-simplify.c: New file.
814 * c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): Define.
815 (struct lang_type): Add fields enum_min and enum_max.
816 (c_expand_decl_stmt, c_missing_noreturn_ok_p): Remove.
817 (c_expand_decl, c_missing_noreturn_ok_p,
818 c_types_compatible_p): Declare.
819 * c-typeck.c (tagged_types_tu_compatible_p): Allow for
820 compiler-generated TYPE_DECLs without a DECL_ORIGINAL_TYPE.
821 (default_function_array_conversion): Rely on build to
823 (parser_build_binary_op, pointer_diff): Likewise.
824 (build_unary_op, build_binary_op): Likewise.
826 (build_external_ref): Set TREE_INVARIANT.
827 (build_c_cast, pop_init_level): Likewise.
828 (process_init_element): Use ASM_VOLATILE_P.
829 (build_asm_expr): Adapt to GENERIC/GIMPLE syntax.
830 (c_finish_case): Call c_do_switch_warnings.
831 * c.opt (fdump-): Remove.
832 * calls.c (try_to_integrate): Remove.
833 (prepare_call_address): Replace fndecl arg with a
834 precomputed static chain value.
835 (emit_call_1): New argument for full call expr.
836 (flags_from_decl_or_type): Call special_function_p.
837 (initialize_argument_information): Add argument
839 (purge_reg_equiv_notes): New.
840 (expand_call): Do not try to expand calls inline.
841 (fixup_tail_calls): New.
842 * cfg.c: Include timevar.h and ggc.h.
843 (bb_pool, edge_pool): Remove.
844 (ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Declare.
845 (entry_exit_blocks): Remove.
847 (init_flow): Do not create pools.
848 Allocate entry/exit block.
849 (free_edge, alloc_block, expunge_block, unchecked_make_edge): Use GGC.
850 (alloc_rbi_pool, free_rbi_pool, initialize_bb_rbi): New.
851 (unlink_block): Clear b->prev_bb and b->next_bb.
852 (compact_blocks): Clear all slots of BASIC_BLOCK array.
853 (dump_flow_info): Work on trees too.
854 (dump_cfg_bb_info): New.
855 (brief_dump_cfg): New.
856 * cfganal.c (need_fake_edge_p, flow_call_edges_add): Remove.
858 * cfgbuild.c (rtl_make_eh_edge): Rename from
859 make_eh_edge. Update all users.
860 (find_basic_blocks): Don't call VARRAY_FREE on
862 * cfgcleanup.c (outgoing_edges_match): Initialize newpos1
864 (delete_unreachable_blocks): Return changed status.
865 (merge_seq_blocks): New.
866 * cfghooks.c: Include tree-flow.h
867 (tree_register_cfg_hooks, ir_type): New.
868 (redirect_edge_and_branch): Change return type to edge.
869 (predict_edge, predicted_by_p, can_duplicate_block_p,
870 duplicate_block, block_ends_with_call_p,
871 block_ends_with_condjump_p, flow_call_edges_add): New.
872 * cfghooks.h (redirect_edge_and_branch): Change return
874 (predict_edge, predicted_by_p, can_duplicate_block_p,
875 duplicate_block, block_ends_with_call_p,
876 block_ends_with_condjump_p, flow_call_edges_add): Declare.
877 (redirect_edge_and_branch): Change return type to edge.
878 (struct cfg_hooks): Add fields block_ends_with_call_p,
879 block_ends_with_condjump_p, flow_call_edges_add,
880 predict_edge, predicted_by_p, can_duplicate_block_p and
882 (tree_cfg_hooks, ir_type, tree_register_cfg_hooks): Declare.
883 * cfglayout.c (cfg_layout_pool, cfg_layout_initialize_rbi): Removed.
884 (fixup_reorder_chain): Use initialize_bb_rbi.
885 (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Hookized.
886 (cfg_layout_initialize): Use cfg.c rbi pool manipulation functions.
887 (can_copy_bbs_p, copy_bbs): Use cfghooks for bb duplication.
888 (insn_locators_initialize): Use new info about blocks.
889 * cfglayout.h (typedef struct reorder_block_def): Moved to
891 (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Declaration
893 * cfgloop.c: Include tree.h and tree-flow.h.
894 * cfgloop.h (create_loop_notes): Declare.
895 * cfgloopmanip.c (create_loop_notes): New.
896 * cfgrtl.c (cfg_layout_create_basic_block): Use initialize_bb_rbi.
897 (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Fill in can_duplicate_block_p
898 and duplicate_block fields.
899 (create_basic_block_structure): Don't look at
901 (rtl_block_ends_with_call_p): New.
902 (rtl_block_ends_with_condjump_p): New.
903 (need_fake_edge_p): Moved from cfganal.c.
904 (rtl_flow_call_edges_add): Moved from cfganal.c (flow_call_edges_add).
905 (rtl_cfg_hooks): Add rtl_block_ends_with_call_p,
906 rtl_block_ends_with_condjump_p, rtl_flow_call_edges_add.
907 (cfg_layout_rtl_cfg_hooks): Ditto.
908 * cgraph.c (cgraph_mark_reachable_node): Don't force nested
909 functions to be reachable.
910 * cgraphunit.c (decide_is_function_needed):
911 * cgraphunit.c (decide_is_function_needed): Nested functions of extern
912 inline functions don't need to be output.
913 (cgraph_assemble_pending_functions): Don't do anything
914 special for nested functions.
915 (cgraph_mark_functions_to_output): Likewise.
916 (cgraph_finalize_function): Don't zap DECL_STRUCT_FUNCTION.
917 (cgraph_analyze_function): Use estimate_num_insns.
918 (cgraph_mark_functions_to_output): Likewise.
919 (cgraph_estimate_growth, cgraph_clone_inlined_nodes): Likewise.
920 (cgraph_expand_function): Allow functions to not be
922 (cgraph_remove_unreachable_nodes):
923 (cgraph_recursive_inlining_p): Simplify.
924 (lookup_recursive_calls,
925 cgraph_decide_recursive_inlining): New.
926 (cgraph_decide_inlining_*): Update calls of
928 * combine.c (get_pos_from_mask): Always set *plen.
929 * common.opt (fdump-, fmudflap, fmudflapth, fmudflapir,
930 ftree-based-profiling, ftree-ccp, ftree-ch,
931 ftree-combine-temps, ftree-copyrename, ftree-dce,
932 ftree-dominator-opts, ftree-dse, ftree-loop-optimize,
933 ftree-points-to, ftree-pre, ftree-sra, ftree-ter,
935 * config.in (HAVE_LD_PIE, HAVE_BANSHEE, PREFIX_INCLUDE_DIR):
937 * configure.ac: Add --enable-tree-browser option.
938 Add --with-libbanshee option.
939 Add GMPLIBS and GMPINC.
940 * configure: Regenerate.
941 * coverage.c (tree_ctr_tables): New.
942 (coverage_counter_alloc): Use it.
943 (build_ctr_info_value): Ditto.
944 (coverage_counter_ref): Ditto. Rename to rtl_coverage_counter_ref.
945 (tree_coverage_counter_ref): New.
946 * coverage.h (coverage_counter_ref): Remove declaration.
947 (rtl_coverage_counter_ref): Declare.
948 (tree_coverage_counter_ref): Declare.
949 * cppexp.c (append_digit): Rearrange unsignedp/overflow setting.
950 (eval_token, num_binary_op, num_part_mul, num_div_op): Likewise.
951 * cse.c (fold_rtx): Do not handle CONSTANT_P_RTX.
952 (struct cse_basic_block_data): Rename enum values to not
953 conflict with profile.h; update all uses.
954 * dbxout.c (dbxout_symbol_location): Don't mention integrate.c
956 * defaults.h (TRAMPOLINE_ALIGNMENT): Move from function.c.
957 * diagnostic.h (debug_output_buffer, dump_generic_node,
958 print_generic_stmt, print_generic_stmt_indented,
959 print_generic_expr, print_generic_decl,
960 debug_generic_expr, debug_generic_stmt, debug_c_tree):
962 * dominance.c: Cache immediate dominators.
963 * domwalk.c: New file.
964 * domwalk.h: New file.
965 * dwarf2out.c (is_fortran): Support DW_LANG_Fortran95.
966 (gen_subprogram_die): Generate a DIE for a named
968 (loc_descriptor_from_tree): Treat RESULT_DECL like VAR_DECL.
969 (add_location_or_const_value_attribute): Likewise.
970 (add_bound_info): Likewise.
971 (gen_decl_die): Likewise.
972 * emit-rtl.c (maybe_set_first_label_num): New.
973 (copy_most_rtx): Don't copy the integrated flag.
974 Copy the new return_val flag.
975 * et-forest.c (MAX_NODES): Define.
976 (record_path_before_1): Abort if len is greater than
978 * except.c (gen_eh_region, gen_eh_region_cleanup, gen_eh_region_try,
979 gen_eh_region_catch, gen_eh_region_allowed,
980 gen_eh_region_must_not_throw, get_eh_region_number,
981 get_eh_region_may_contain_throw, get_eh_region_tree_label,
982 set_eh_region_tree_label, expand_resx_expr): New.
983 (expand_eh_region_start, expand_start_catch): Use them.
984 (expand_end_catch): Tidy.
985 (note_eh_region_may_contain_throw): Take region argument.
986 (note_current_region_may_contain_throw): New.
987 (get_exception_filter): Export.
988 (collect_eh_region_array): Export.
989 (remove_unreachable_regions): Check ERT_TRY based on reachability
990 of catches, not reachability of continue_label. Never remove
991 ERT_MUST_NOT_THROW regions.
992 (collect_rtl_labels_from_trees): New.
993 (convert_from_eh_region_ranges): Use it.
994 (connect_post_landing_pads): Handle dying cleanups.
995 (struct reachable_info): Add callback data.
996 (add_reachable_handler): Invoke the callback.
997 (foreach_reachable_handler): New.
998 (reachable_handlers): Use it.
999 (arh_to_landing_pad, arh_to_label): New.
1000 (can_throw_internal_1): Split out from can_throw_internal.
1001 (can_throw_external_1): Similarly.
1003 * explow.c (emit_stack_save): Remove savearea mode check.
1004 (update_nonlocal_goto_save_area): New.
1005 (allocate_dynamic_stack_space): Use it.
1006 (probe_stack_range): Never emit loop notes.
1007 * expmed.c (extract_fixed_bit_field): Always propagate the
1008 target for the shift if it is a REG.
1009 * expr.c: Include tree-iterator.h
1010 (is_zeros_p): Remove.
1011 (categorize_ctor_elements_1, categorize_ctor_elements): New.
1012 (count_type_elements): New.
1013 (mostly_zeros_p): Use them.
1014 (expr_wfl_stack): Remove.
1015 (convert_move): Do nothing if to and from are the same.
1016 (emit_block_move_via_loop): Don't emit LOOP notes.
1017 (emit_move_insn): Don't handle CONSTANT_P_RTX.
1018 (emit_move_insn_1): Don't generate inline warnings.
1019 (expand_vars, expand_var): Split from ...
1020 (expand_expr_1): ... here.
1021 (expand_expr_real, expand_expr_real_1): Use new macros
1022 EXPR_LOCATION and EXPR_HAS_LOCATION.
1023 * expr.h (simplify_builtin_fputs,
1024 simplify_builtin_strcpy, simplify_builtin_strncpy,
1025 expand_var, fixup_tail_calls,
1026 update_nonlocal_goto_save_area): Declare.
1027 (lookup_static_chain, expand_inline_function,
1028 mark_seen_cases): Remove.
1029 (prepare_call_address): Change type of 2nd argument to
1031 * final.c (profile_function): Update static chain test.
1032 (final): Don't look at RTX_INTEGRATED_P.
1033 * flags.h (flag_mudflap, flag_mudflap_threads,
1034 flag_mudflap_ignore_reads, flag_tree_pre, flag_tree_ccp,
1035 flag_tree_dce, flag_tree_combine_temps,
1036 flag_tree_live_range_split, flag_tree_dom, flag_tree_ch,
1037 flag_tree_dse, flag_tree_sra, flag_tree_copyrename,
1038 flag_tree_points_to): Declare.
1039 (enum pta_type): Declare.
1040 * flow.c (lang_missing_noreturn_ok_p): Remove.
1041 (check_function_return_warnings): Remove.
1042 (update_life_info): Update comments.
1043 (free_basic_block_vars): Don't call VARRAY_FREE for
1045 (regno_uninitialized): Remove.
1046 * fold-const.c (int_const_binop): Make extern.
1047 (non_lvalue): Rely on build to set TREE_CONSTANT.
1048 (operand_equal_p): Replace only_const argument with
1049 flags. Allow pure functions if OEP_PURE_SAME.
1050 (fold): Use OEP_ONLY_CONST.
1051 (invert_truthvalue) <NOP_EXPR> Break if argument is of
1053 (fold_relational_hi_lo,
1054 nondestructive_fold_binary_to_constant,
1055 nondestructive_fold_unary_to_constant,
1056 fold_read_from_constant_string): New.
1057 * function.c (struct function): Remove calls_constant_p.
1058 (current_function_calls_constant_p): Remove.
1059 (inline_function_decl): Remove.
1060 (put_var_into_stack): Don't use it.
1061 (fix_lexical_addr): Likewise.
1062 (inline_function_decl): Remove extern declaration.
1063 (TRAMPOLINE_ALIGNMENT): Move to defaults.h.
1064 (trampolines_created): Move to varasm.c.
1065 (free_after_compilation): Update for removed fields.
1066 (allocate_struct_function): Likewise.
1067 (delete_handlers, lookup_static_chain): Remove.
1068 (fix_lexical_addr): Don't consider non-local variable refs.
1069 (trampoline_address): Remove.
1070 (round_trampoline_addr): Move to builtins.c.
1071 (adjust_trampoline_addr): Remove.
1072 (expand_function_start): Update for changes to static chain
1073 and nonlocal goto handling.
1074 (initial_trampoline): Move to varasm.c.
1075 (expand_function_end): Don't build trampolines or kill
1076 unreferenced nonlocal goto labels.
1077 (free_after_compilation): Don't set it.
1078 (expand_function_end): Likewise.
1079 (setjmp_vars_warning): Rename from
1080 uninitialized_vars_warning, remove uninitialized vars warning.
1081 (uninitialized_vars_warning): Remove old comment
1082 and check for DECL_INITIAL, replace with a check of TREE_NO_WARNING
1083 and do not call the langhook.
1084 (expand_function_start, expand_function_end): Don't do
1085 function instrumentation here.
1086 (clear_block_marks): Rename from reorder_blocks_0, export.
1087 (blocks_nreverse): Export.
1088 (uninitialized_vars_warning): Use DECL_RTL_SET_P to test for presence
1090 (reset_block_changes, record_block_change, finalize_block_changes,
1091 check_block_change, free_block_changes): New functions.
1092 (assign_parms): Setting of current_function_stdarg
1094 (allocate_struct_function): ... here.
1095 * function.h (struct function): Remove x_nonlocal_labels,
1096 x_nonlocal_goto_handler_slots, x_nonlocal_goto_stack_level,
1097 x_context_display, x_trampoline_list, needs_context.
1098 Add static_chain_decl, nonlocal_goto_save_area.
1099 (struct function): Remove x_clobber_return_insn.
1100 Add tail_call_emit field, last_label_uid,
1101 unexpanded_var_list, dont_emit_block_notes,
1102 ib_boundaries_block, function_end_locus and saved_tree/saved_args.
1103 (clear_block_marks): Declare.
1104 * gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Add -fmudflapth support.
1105 (mfwrap_spec, mflib_spec): Declare.
1106 (cpp_unique_options, cc1_options): Ditto.
1107 (default_compilers): Add .F and .f90.
1108 (static_specs): Add mfwrap and mflib.
1109 * gcse.c (want_to_gcse_p, gcse_constant_p): Don't handle
1111 (reg_used_on_edge, reg_killed_on_edge, bypass_block):
1112 Update to match insns field in struct edge_def.
1113 * gdbinit.in (pgs, pge): Define.
1114 * genattrtab.c (ATTR_PERMANENT_P): Use the return_val flag
1115 instead of the integrated flag.
1116 * gengtype-lex.l (IWOrD): Add HOST_WIDEST_INT
1117 * gengtype-yacc.y (bitfieldlen): Add empty action.
1118 (struct_fields): Accept unnamed bitfields.
1119 (bitfieldlen): Split from ...
1120 (bitfieldopt): ... here.
1121 * gengtype.c (ifiles): Add tree-alias-type.h and
1123 * genrecog.c (validate_pattern): Do not handle
1125 * gimple-low.c: New file.
1126 * gimplify.c: New file.
1127 * haifa-sched.c (priority): Do not handle CONSTANT_P_RTX.
1128 (restore_line_notes): Do not set RTX_INTEGRATED_P.
1129 * ifcvt.c (dead_or_predicable): Initialize local variable
1131 * input.h (expr_wfl_stack): Remove.
1132 * integrate.c (INTEGRATE_THRESHOLD): Remove.
1133 (setup_initial_hard_reg_value_integration): Likewise.
1134 (initialize_for_inline): Likewise.
1135 (note_modified_parmregs): Likewise.
1136 (integrate_parm_decls): Likewise.
1137 (process_reg_param): Likewise.
1138 (save_parm_insns): Likewise.
1139 (copy_insn_list): Likewise.
1140 (copy_insn_notes): Likewise.
1141 (compare_blocks): Likewise.
1142 (find_block): Likewise.
1143 (inlining): Likewise.
1144 (function_cannot_inline_p): Likewise.
1145 (parmdecl_map): Likewise.
1146 (in_nonparam_insns): Likewise.
1147 (save_for_inline): Likewise.
1148 (FIXED_BASE_PLUS): Likewise.
1149 (expand_inline_function): Likewise.
1150 (copy_rtx_and_substitute): Don't look at map->integrating,
1151 map->inline_target, and inlining, since we are never copying
1153 Don't abort on RTX_INTEGRATED_P.
1155 (output_inline_function): Remove.
1156 * integrate.h (struct inline_map): Remove fields integrating,
1157 block_map, leaf_reg_map, inline_target, and local_return_label.
1158 * jump.c (next_nonnote_insn_in_loop, duplicate_loop_exit_test,
1159 copy_loop_headers, never_reached_warning): Removed.
1160 (any_uncondjump_p): Reject nonlocal goto.
1161 * langhooks-def.h (lhd_types_compatible_p,
1162 lhd_expand_decl, lhd_gimplify_expr): Declare.
1163 (LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_TYPES_COMPATIBLE_P,
1164 LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
1165 LANG_HOOKS_FUNCTION_LEAVE_NESTED,
1166 LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
1167 LANG_HOOKS_GIMPLIFY_EXPR,
1168 LANG_HOOKS_GIMPLE_BEFORE_INLINING,
1169 LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_TYPES_COMPATIBLE_P,
1170 LANG_HOOKS_GIMPLIFY_EXPR,
1171 LANG_HOOKS_GIMPLE_BEFORE_INLINING): Define.
1172 (LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_START,
1173 LANG_HOOKS_RTL_EXPAND_STMT, LANG_HOOKS_RTL_EXPAND_END,
1174 LANG_HOOKS_FUNCTION_LEAVE_NESTED,
1175 LANG_HOOKS_RTL_EXPAND_INITIALIZER,
1176 LANG_HOOKS_DECL_UNINIT,
1177 LANG_HOOKS_RTL_EXPAND_INITIALIZER): Remove.
1178 * langhooks.c: Include tree-simple.h.
1179 (lhd_expand_decl): New.
1180 (lhd_types_compatible_p): New.
1181 (lhd_decl_uninit): Remove.
1182 (lhd_gimplify_expr): New.
1183 * langhooks.h (struct lang_hooks_for_rtl_expansion):
1185 (struct lang_hooks_for_functions): Add field
1186 missing_noreturn_ok_p.
1187 (struct lang_hooks): Add field expand_decl,
1188 types_compatible_p, gimplify_expr and
1189 gimple_before_inlining.
1190 Remove fields decl_uninit and rtl_expand
1191 * opts.c (decode_options): Set flag_tree_ccp,
1192 flag_tree_dce, flag_tree_dom, flag_tree_dse,
1193 flag_tree_pre, flag_tree_ter,
1194 flag_tree_live_range_split, flag_tree_sra,
1195 flag_tree_copyrename and flag_tree_ch at -O1 and higher.
1196 (common_handle_option): Handle OPT_fdump_, OPT_fmudflap,
1197 OPT_fmudflapth, OPT_fmudflapir,
1198 OPT_ftree_based_profiling, OPT_ftree_ccp, OPT_ftree_dce,
1199 OPT_ftree_combine_temps, OPT_ftree_ter, OPT_ftree_lrs,
1200 OPT_ftree_dominator_opts, OPT_ftree_copyrename,
1201 OPT_ftree_ch, OPT_ftree_dse, OPT_ftree_sra,
1202 OPT_ftree_points_to_ and OPT_ftree_pre.
1203 * output.h (regno_uninitialized, find_basic_blocks,
1204 cleanup_cfg, delete_unreachable_blocks,
1205 check_function_return_warnings): Remove.
1206 * params.def (PARAM_MAX_INLINE_INSNS_RECURSIVE,
1207 PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO,
1208 PARAM_MAX_INLINE_RECURSIVE_DEPTH,
1209 PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO,
1210 PARAM_GLOBAL_VAR_THRESHOLD, PARAM_MAX_ALIASED_VOPS):
1211 * params.h (GLOBAL_VAR_THRESHOLD, MAX_ALIASED_VOPS):
1213 * passes.c (rest_of_decl_compilation):
1214 (rest_of_handle_sibling_calls): Remove.
1215 (rest_of_handle_inlining): Remove.
1216 (rest_of_handle_gcse): Do not run
1217 purge_builtin_constant_p.
1218 (rest_of_compilation): Update.
1219 Do not call copy_loop_headers.
1220 Do rtl-based profiling only when
1221 !flag_tree_based_profiling. Register rtl-based profiling
1223 * predict.c: Include tree-flow.h, ggc.h, tree-dump.h
1224 (predicted_by_p): Rename to ...
1225 (rtl_predicted_by_p): .. this one; make global
1226 (tree_predicted_by_p): New.
1227 (dump_prediction): Add FILE argument.
1228 (predict_edge): Rename to ...
1229 (rtl_predict_edge): .. this one.
1230 (tree_predict_edge): New.
1231 (combine_predictions_for_insn): Update calls of predict_edge.
1232 (predict_loops): Break out from ...
1233 (estimate_probability): ... here; update comments; move updating
1234 of unknown probabilities from ...
1235 (estimate_bb_frequencies): ... here.
1236 (combine_predictions_for_bb): New.
1237 (tree_predict_by_opcode): New.
1238 (tree_estimate_probability): New.
1239 * predict.def (PRED_TREE_POINTER, PRED_TREE_OPCODE_POSITIVE,
1240 PRED_TREE_OPCODE_NONEQUAL, PRED_TREE_FPOPCODE): New predictors.
1241 * predict.h: Add include guard.
1242 (predict_edge, predict_edge_def): Move prototypes to basic_block.h
1243 * pretty-print.c (pp_write_text_to_stream): Make extern.
1244 * pretty-print.h (pp_write_text_to_stream): Declare.
1245 * print-rtl.c (print_rtx): Don't print the integrated flag.
1246 Print the return_val flag.
1247 * print-tree.c: Use TREE_FILENAME and TREE_LINENO instead
1248 of DECL_SOURCE_FILE and DECL_SOURCE_LINE respectively.
1249 Remove support for EXPR_WITH_FILE_LOCATION nodes.
1250 (print_node): Print TREE_INVARIANT and TREE_VISITED.
1251 * profile.c: Include cfghooks.h, tree-flow.h.
1252 (profile_hooks): New.
1253 (profile_dump_file): New.
1254 (instrument_edges): Use hooks instead of RTL-specific code.
1255 (instrument_values): Ditto.
1256 (get_exec_counts): Ditto.
1257 (compute_branch_probabilities): Ditto.
1258 (compute_value_histograms): Ditto.
1259 (branch_prob): Ditto.
1260 (find_spanning_tree): Ditto.
1261 (end_branch_prob): Ditto.
1262 (gen_edge_profiler): Move to rtl-profile.c (rtl_gen_edge_profiler).
1263 (gen_interval_profiler): Ditto (rtl_gen_interval_profiler).
1264 (gen_pow2_profiler): Ditto (rtl_gen_pow2_profiler).
1265 (gen_one_value_profiler): Ditto (rtl_gen_one_value_profiler).
1266 (tree_register_profile_hooks): New.
1267 (rtl_register_profile_hooks): New.
1268 * ra-rewrite.c (rewrite_program): Clear variable info.
1269 * recog.c (immediate_operand): Do not handle CONSTANT_P_RTX.
1270 * regs.h: Add include guards.
1271 * reload.c (decompose): Clear val using memset.
1272 * rtl.def (CONSTANT_P_RTX): Remove.
1273 * rtl.h (CONSTANT_P): Do not handle CONSTANT_P_RTX.
1274 (copy_loop_headers): Remove.
1275 (struct rtx_def): Replace the integrated flag with the
1277 (maybe_set_first_label_num): Declare.
1278 (init_branch_prob): Move declaration to value-prof.h.
1279 (end_branch_prob): Ditto.
1280 (branch_prob): Ditto.
1281 (never_reached_warning): Don't declare it.
1282 * rtlanal.c (get_related_value): Initialize get_jump_table_offset
1283 (hoist_insn_to_edge): Update to match field insns in
1285 * sbitmap.c (sbitmap_realloc): New.
1286 * sbitmap.h (sbitmap_realloc): Declare.
1287 * sibcall.c: Remove file.
1288 * simplify-rtx.c (simplify_rtx): Do not handle
1290 * stmt.c (parse_output_constraint): Don't warn for read-write
1292 (tail_recursion_args): Use types_compatible_p langhook.
1293 (force_label_rtx): Don't look at inline_function_decl.
1294 (label_rtx): Set LABEL_PRESERVE_P appropriately.
1295 (expand_label): Handle DECL_NONLOCAL and FORCED_LABEL.
1296 (declare_nonlocal_label): Remove.
1297 (expand_goto): Don't handle nonlocal gotos.
1298 (expand_nl_handler_label): Remove.
1299 (expand_nl_goto_receivers): Remove.
1300 (expand_end_bindings): Don't expand_nl_goto_receivers. Use
1301 update_nonlocal_goto_save_area.
1302 (expand_expr_stmt_value): Check TREE_NO_WARNING.
1303 (warn_if_unused_value): Likewise.
1304 (expand_start_loop, expand_loop_continue_here,
1305 expand_end_loop): Don't create loop notes.
1306 (all_cases_count, BITARRAY_TEST, BITARRAY_SET,
1307 mark_seen_cases, check_for_full_enumeration_handling): Remove.
1308 (expand_end_case_type): Don't do warn_switch handling.
1309 (pushcase, pushcase_range) Update add_case_node calls.
1310 (add_case_node): Add dont_expand_label argument.
1311 (same_case_target_p): Don't search rtl.
1312 (expand_start_bindings_and_block, expand_end_bindings):
1313 Don't emit block notes when dont_emit_block_notes.
1314 (using_eh_for_cleanups_p): Export.
1315 (expand_return): Allow any typed rhs.
1316 (expand_stack_alloc): New.
1317 (expand_stack_save, expand_stack_restore): New.
1318 (containing_blocks_have_cleanups_or_stack_level): New
1320 (asm_op_is_mem_input): New fn.
1321 (expand_asm_expr): New fn.
1322 (warn_if_unused_value): Check operand 0 of SAVE_EXPR
1324 * stor-layout.c (layout_type): Just return if type is
1326 (update_alignment_for_field): Export.
1327 (variable_size): We don't care about global_bindings_p if
1328 the frontend doesn't want a list of the expressions.
1329 * system.h: Poison INTEGRATE_THRESHOLD.
1330 * timevar.def (TV_TREE_GIMPLIFY, TV_TREE_EH, TV_TREE_CFG,
1331 TV_TREE_CLEANUP_CFG, TV_TREE_PTA, TV_TREE_MAY_ALIAS,
1332 TV_TREE_INSERT_PHI_NODES, TV_TREE_SSA_REWRITE_BLOCKS,
1333 TV_TREE_SSA_OTHER, TV_TREE_OPS,
1334 TV_TREE_SSA_DOMINATOR_OPTS, TV_TREE_SRA, TV_TREE_CCP,
1335 TV_TREE_SPLIT_EDGES, TV_TREE_PRE, TV_TREE_PHIOPT,
1336 TV_TREE_FORWPROP, TV_TREE_DCE, TV_TREE_CD_DCE,
1337 TV_TREE_DSE, TV_TREE_LOOP, TV_TREE_CH,
1338 TV_TREE_SSA_TO_NORMAL, TV_TREE_SSA_TO_NORMAL,
1339 TV_TREE_NRV, TV_TREE_COPY_RENAME, TV_TREE_SSA_VERIFY,
1340 TV_TREE_STMT_VERIFY, TV_DOM_FRONTIERS,
1341 TV_CONTROL_DEPENDENCES): Define.
1342 * toplev.c: Include tree-alias-common.h
1343 (current_file_decl, flag_mudflap, flag_mudflap_threads,
1344 flag_mudflap_ignore_reads, flag_tree_based_profiling,
1345 flag_tree_gvn, flag_tree_points_to, flag_tree_ccp,
1346 flag_tree_dce, flag_tree_ch, flag_tree_sra,
1347 flag_tree_combine_temps, flag_tree_ter,
1348 flag_tree_live_range_split, flag_tree_dom,
1349 flag_tree_copyrename, flag_tree_dse): Declare.
1350 (f_options): Add tree-based-profiling, tree-gvn,
1351 tree-pre, tree-ccp, tree-dce,
1352 tree-dominator-opts, tree-copyrename, tree-dse,
1353 tree-combine-temps, tree-ter, tree-lrs and tree-ch.
1354 (wrapup_global_declarations): Don't output nested inlined functions.
1355 (general_init): Call init_tree_optimization_passes.
1356 (process_options): Sorry for -ftree-based-profiling plus
1357 -ftest-coverage or -fprofile-values.
1358 * toplev.h (init_tree_optimization_passes,
1359 flag_tree_based_profiling): Declare.
1360 * tracer.c (tail_duplicate): Use cfghooks for bb duplication.
1361 * tree-alias-ander.c: New file.
1362 * tree-alias-ander.h: New file.
1363 * tree-alias-common.c: New file.
1364 * tree-alias-common.h: New file.
1365 * tree-alias-type.c: New file.
1366 * tree-alias-type.h: New file.
1367 * tree-browser.c: New file.
1368 * tree-browser.def: New file.
1369 * tree-cfg.c: New file.
1370 * tree-complex.c: New file.
1371 * tree-dfa.c: New file.
1372 * tree-dump.c (dump_enable_all): New.
1373 (dequeue_and_dump): Do not handle EXPR_WITH_FILE_LOCATION.
1374 (dump_node): Remove const from field suffix and swtch.
1375 (dump_files): Add null entry, .generic, .nested, .vcg,
1376 .xml and a match-all entry.
1377 (extra_dump_files, extra_dump_files_in_use,
1378 extra_dump_files_alloced): Declare
1379 (dump_option_value_info): Add raw, details, stats,
1380 blocks, vops, lineno, uid and all.
1381 (dump_register): New.
1382 (get_dump_file_info): New.
1383 (dump_begin): Call it.
1384 Do nothing for TDI_none.
1385 (dump_begin): Include phase number in dump filename.
1386 (dump_enable_all): New.
1387 (dump_switch_p_1): Split out from dump_switch_p.
1388 (dump_switch_p): Handle extra_dump_files.
1389 Start our scan at TDI_none + 1.
1390 If -fdump-tree-all was given, call dump_enable_all.
1391 * tree-dump.h: Include splay-tree.h.
1392 (dump_function, dump_function_to_file, dump_register):
1394 * tree-eh.c: New file.
1395 * tree-flow-inline.h: New file.
1396 * tree-flow.h: New file.
1397 * tree-inline.c: Re-write to handle inlining on GIMPLE.
1398 * tree-inline.h (walk_tree,
1399 walk_tree_without_duplicates): Move to tree.h.
1400 (estimate_num_insns): Declare.
1401 * tree-into-ssa.c: New file.
1402 * tree-iterator.c: New file.
1403 * tree-iterator.h: New file.
1404 * tree-mudflap.c: New file.
1405 * tree-mudflap.h: New file.
1406 * tree-nested.c: New file.
1407 * tree-nomudflap.c: New file.
1408 * tree-nrv.c: New file.
1409 * tree-optimize.c (dump_flags, vars_to_rename,
1410 in_gimple_form, all_passes, pass_gimple,
1411 pass_rebuild_bind, pass_all_optimizations, pass_del_cfg): Declare.
1412 (execute_gimple, execute_rebuild_bind,
1413 gate_all_optimizations, execute_del_cfg,
1414 register_one_dump_file, register_dump_files, dup_pass_1,
1415 init_tree_optimization_passes, execute_todo,
1416 execute_one_pass, execute_pass_list): New.
1417 (clear_decl_rtl): Remove.
1418 (tree_rest_of_compilation): Update to use tree
1420 * tree-outof-ssa.c: New file.
1421 * tree-pass.h: New file.
1422 * tree-phinodes.c: New file.
1423 * tree-pretty-print.c: New file.
1424 * tree-profile.c: New file.
1425 * tree-simple.c: New file.
1426 * tree-simple.h: New file.
1427 * tree-sra.c: New file.
1428 * tree-ssa-alias.c: New file.
1429 * tree-ssa-ccp.c: New file.
1430 * tree-ssa-copy.c: New file.
1431 * tree-ssa-copyrename.c: New file.
1432 * tree-ssa-dce.c: New file.
1433 * tree-ssa-dom.c: New file.
1434 * tree-ssa-dse.c: New file.
1435 * tree-ssa-forwprop.c: New file.
1436 * tree-ssa-live.c: New file.
1437 * tree-ssa-live.h: New file.
1438 * tree-ssa-loop.c: New file.
1439 * tree-ssa-operands.c: New file.
1440 * tree-ssa-operands.h: New file.
1441 * tree-ssa-phiopt.c: New file.
1442 * tree-ssa-pre.c: New file.
1443 * tree-ssa.c: New file.
1444 * tree-ssanames.c: New file.
1445 * tree-tailcall.c: New file.
1446 * tree.c: Include tree-iterator.h, basic-block.h and
1448 (tree_node_kind): Add phi_nodes and ssa names.
1449 (tree_size): Handle PHI_NODE, EPHI_NODE, SSA_NAME,
1450 EUSE_NODE, EKILL_NODE, EEXIT_NODE and STATEMENT_LIST.
1451 (make_node_stat): Handle PHI_NODE and SSA_NAME.
1452 <'c'> Set TREE_INVARIANT.
1453 (copy_node_stat): Abort if trying to copy a
1456 Clear annotation field.
1457 (build_constructor): Copy TREE_INVARIANT from vals.
1458 Don't clear TREE_CONSTANT.
1459 (expr_first, expr_last, expr_length): Remove.
1460 (staticp): Pass unknown component references to the language.
1461 (save_expr): Check TREE_INVARIANT instead of TREE_CONSTANT.
1462 (skip_simple_arithmetic): Likewise.
1463 (stabilize_reference_1): Likewise.
1464 (tree_node_structure): Handle PHI_NODE, EPHI_NODE,
1465 EUSE_NODE, EKILL_NODE, EEXIT_NODE, SSA_NAME and
1467 (lhd_unsave_expr_now): Remove.
1468 (unsafe_for_reeval): Handle LABEL_EXPR and BIND_EXPR.
1469 (recompute_tree_invarant_for_addr_expr): New.
1470 (build1_stat): Clear EXPR_LOCUS and TREE_BLOCK.
1471 Call recompute_tree_invarant_for_addr_expr.
1472 Set TREE_INVARIANT accordingly.
1473 (build2_stat): Don't handle CALL_EXPR.
1474 (build3_stat): Don't call build2_stat for CALL_EXPRs.
1475 (build_expr_wfl): Remove.
1476 (annotate_with_file_line, annotate_with_locus): New.
1477 (simple_cst_equal): Call simple_cst_list_equal to compare
1478 CONSTRUCTOR_ELTS pointers.
1479 (iterative_hash_expr): Don't hash types associated
1480 with conversions. Instead hash on the signedness of the
1481 toplevel object and the operand of the conversion.
1482 (dump_tree_statistics): Call ssanames_print_statistics
1483 and phinodes_print_statistics.
1484 (ephi_node_elt_check_failed, phi_node_elt_check_failed,
1485 add_var_to_bind_expr, build_empty_stmt, is_essa_node,
1486 needs_to_live_in_memory): New.
1487 (initializer_zerop): Handle VECTOR_CST. Don't check
1488 AGGREGATE_TYPE_P for CONSTRUCTOR.
1489 * tree.def (FILTER_EXPR, CASE_LABEL_EXPR, RESX_EXPR,
1490 SSA_NAME, EUSE_NODE, EKILL_NODE, EPHI_NODE, EEXIT_NODE,
1491 PHI_NODE, CATCH_EXPR, EH_FILTER_EXPR, STATEMENT_LIST): Define.
1492 (GOTO_SUBROUTINE_EXPR): Change type to 's'.
1493 (CALL_EXPR): Add another operand.
1494 (EXPR_WITH_FILE_LOCATION): Remove.
1495 (SWITCH_EXPR): Add another operand.
1496 * tree.h: Update various comments.
1497 (union tree_ann_d): Forward declare.
1498 (struct tree_common): Add fields nowarning_flag,
1499 invariant_flag and visited.
1500 (EREF_NODE_CHECK, EPHI_NODE_ELT_CHECK,
1501 PHI_NODE_ELT_CHECK, EREF_NODE_CHECK, PHI_NODE_ELT_CHECK,
1502 EPHI_NODE_ELT_CHECK, TREE_BLOCK,
1503 STRIP_USELESS_TYPE_CONVERSION, CALL_EXPR_TAILCALL,
1504 TREE_NO_WARNING, FORCED_LABEL, TREE_INVARIANT,
1505 IS_EMPTY_STMT, EXPR_LOCUS, SET_EXPR_LOCUS, EXPR_FILENAME,
1506 EXPR_LINENO, EXPR_LOCATION, EXPR_HAS_LOCATION,
1507 EXIT_EXPR_COND, SWITCH_COND, SWITCH_BODY, SWITCH_LABELS,
1508 CASE_LOW, CASE_HIGH, CASE_LABEL, BIND_EXPR_VARS,
1509 BIND_EXPR_BODY, BIND_EXPR_BLOCK, GOTO_DESTINATION,
1510 ASM_STRING, ASM_OUTPUTS, ASM_INPUTS, ASM_CLOBBERS,
1511 ASM_INPUT_P, ASM_VOLATILE_P, COND_EXPR_COND,
1512 COND_EXPR_THEN, COND_EXPR_ELSE, LABEL_EXPR_LABEL,
1513 CATCH_TYPES, CATCH_BODY, EH_FILTER_TYPES,
1514 EH_FILTER_FAILURE, EH_FILTER_MUST_NOT_THROW,
1515 SSA_NAME_VAR, SSA_NAME_DEF_STMT, SSA_NAME_VERSION,
1516 SSA_NAME_OCCURS_IN_ABNORMAL_PHI, SSA_NAME_IN_FREE_LIST,
1517 PHI_RESULT, PHI_REWRITTEN, PHI_NUM_ARGS,
1518 PHI_ARG_CAPACITY, PHI_ARG_ELT, PHI_ARG_EDGE, PHI_ARG_DEF,
1519 EREF_PROCESSED, EREF_ID, EREF_NAME, EREF_STMT,
1520 EREF_RELOAD, EREF_SAVE, EREF_CLASS, EREF_INJURED,
1521 EREF_TEMP, EUSE_DEF, EUSE_PHIOP, EUSE_INSERTED,
1522 EUSE_LVAL, EPHI_NUM_ARGS, EPHI_ARG_CAPACITY,
1523 EPHI_ARG_ELT, EPHI_ARG_EDGE, EPHI_ARG_PRED, EPHI_ARG_DEF,
1524 EPHI_ARG_INJURED, EPHI_ARG_DELAYED_RENAME,
1525 EPHI_ARG_HAS_REAL_USE, EPHI_ARG_STOPS,
1526 EPHI_ARG_PROCESSED2, EPHI_IDENTITY, EPHI_IDENT_INJURED,
1527 EPHI_REP_OCCUR_KNOWN, EPHI_IDENTICAL_TO, EPHI_DOWNSAFE,
1528 EPHI_CANT_BE_AVAIL, EPHI_DEAD, EPHI_USES, EPHI_STOPS,
1529 TREE_VISITED, SSA_VAR_P, DECL_NUM_STMTS,
1530 DECL_HARD_REGISTER, DECL_PTA_ALIASVAR, LABEL_DECL_UID,
1531 DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL,
1532 STATEMENT_LIST_HEAD, STATEMENT_LIST_TAIL, TDF_RAW,
1533 TDF_DETAILS, TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO,
1535 (TREE_NO_UNUSED_WARNING, EXPR_WFL_EMIT_LINE_NOTE,
1536 EXPR_WFL_NODE, EXPR_WFL_FILENAME_NODE, EXPR_WFL_FILENAME,
1537 EXPR_WFL_LINECOL, EXPR_WFL_LINENO, EXPR_WFL_COLNO,
1538 EXPR_WFL_SET_LINECOL): Remove.
1539 (phi_node_elt_check_failed, ephi_node_elt_check_failed,
1540 make_phi_node, init_phinodes, fini_phinodes,
1541 release_phi_node, phinodes_print_statistics,
1542 init_ssanames, fini_ssanames, make_ssa_name,
1543 release_ssa_name, ssanames_print_statistics,
1544 annotate_with_file_line, build_empty_stmt,
1545 annotate_with_locus, expr_only, categorize_ctor_elements,
1546 count_type_elements, add_var_to_bind_expr, is_essa_node,
1547 expand_stack_alloc, expand_stack_save,
1548 expand_stack_restore, add_case_node, operand_equal_p,
1549 nondestructive_fold_unary_to_constant,
1550 nondestructive_fold_binary_to_constant,
1551 fold_read_from_constant_string, int_const_binop,
1552 strip_float_extensions, simplify_builtin, c_strlen,
1553 recompute_tree_invarant_for_addr_expr,
1554 needs_to_live_in_memory, make_vector,
1555 setjmp_vars_warning, update_alignment_for_field,
1556 expand_asm_expr, asm_op_is_mem_input,
1557 containing_blocks_have_cleanups_or_stack_level,
1558 create_artificial_label, gimplify_function_tree,
1559 get_name, unshare_expr, walk_tree,
1560 walk_tree_without_duplicates, in_gimple_form): Declare.
1561 (struct tree_exp): Add fields locus and block.
1562 (struct tree_ssa_name, struct edge_def, struct
1563 tree_phi_node, struct tree_eref_common, struct
1564 tree_euse_node, struct ephi_arg_d, struct tree_ephi_node,
1565 union alias_var_def, struct tree_statement_list_node,
1566 struct tree_statement_list, enum operand_equal_flag): Declare.
1567 (enum tree_node_structure_enum): Add TS_SSA_NAME,
1568 TS_PHI_NODE, TS_EPHI_NODE, TS_EUSE_NODE, TS_EREF_NODE,
1570 (union tree_node): Add fields ssa_name, phi, eref, ephi,
1572 (function_cannot_inline_p, uninitialized_vars_warning,
1573 save_for_inline, output_inline_function, all_cases_count,
1574 check_for_full_enumeration_handling,
1575 declare_nonlocal_label): Remove.
1576 (enum tree_dump_index): Add TDI_none, TDI_tu,
1577 TDI_generic, TDI_nested, TDI_vcg, TDI_xml.
1578 * unroll.c (unroll_loop): Don't clear map->inline_target.
1579 * unwind-sjlj.c (uw_install_context): Make a proper static inline
1581 * value-prof.c (value_prof_hooks): New.
1582 (find_values_to_profile): Rename to rtl_find_values_to_profile.
1583 Move rtl-specific bits in from branch_prob.
1584 (value_profile_transformations): Rename to
1585 rtl_value_profile_transformations.
1586 (struct value_prof_hooks): New.
1587 (rtl_value_prof_hooks): New.
1588 (rtl_register_value_prof_hooks): New.
1589 (tree_find_values_to_profile): New stub.
1590 (tree_value_profile_transformations): New stub.
1591 (tree_value_prof_hooks): New stub.
1592 (tree_register_value_prof_hooks): New stub.
1593 (find_values_to_profile): New.
1594 (value_profile_transformations): New.
1595 * value-prof.h: Add multiple inclusion guard.
1596 (struct histogram_value): Change rtx fields to void *.
1597 (rtl_register_value_prof_hooks): New declaration.
1598 (tree_register_value_prof_hooks): New declaration.
1599 (find_values_to_profile): New declaration.
1600 (free_profiled_values): New declaration.
1601 (value_profile_transformations): New declaration.
1602 (struct profile_hooks): New declaration.
1603 (init_branch_prob): Declaration moved from rtl.h.
1604 (branch_prob): Declaration moved from rtl.h.
1605 (end_branch_prob): Declaration mooved from rtl.h.
1606 (tree_register_profile_hooks): New declaration.
1607 (rtl_register_profile_hooks): New declaration.
1608 (tree_profile_hooks): New declaration.
1609 (rtl_profile_hooks): New declaration.
1610 * varasm.c: Include tree-mudflap.h.
1611 (TRAMPOLINE_ALIGNMENT): Remove.
1612 (make_decl_rtl): Call mudflap_enqueue_decl.
1613 (assemble_static_space):
1614 (assemble_trampoline_template): Set and return
1615 TRAMPOLINE_ALIGNMENT.
1616 * varray.c (element): Add GENERIC_PTR_NOGC entry.
1617 Add entry for 'tree *'.
1618 Add entry for struct edge_def *.
1620 * varray.h (enum varray_data_enum): Add
1621 VARRAY_DATA_GENERIC_NOGC, VARRAY_DATA_EDGE and
1622 VARRAY_DATA_TREE_PTR.
1623 (union varray_data_tag): Corresponding changes.
1624 (VARRAY_GENERIC_PTR_NOGC_INIT, VARRAY_EDGE_INIT,
1625 VARRAY_TREE_PTR_INIT, VARRAY_GENERIC_PTR_NOGC,
1626 VARRAY_EDGE, VARRAY_TREE_PTR,
1627 VARRAY_PUSH_GENERIC_PTR_NOGC, VARRAY_PUSH_EDGE,
1628 VARRAY_PUSH_TREE_PTR, VARRAY_TOP_GENERIC_PTR_NOGC,
1629 VARRAY_TOP_EDGE, VARRAY_TOP_TREE_PTR): Define.
1631 * config/*/*: Various updates for changed macros, tree
1632 codes, etc. Check ChangeLog.tree-ssa.
1634 * doc/cfg.texi: New file.
1635 * doc/tree-ssa.texi: New file.
1636 * doc/c-tree.texi: Document new codes.
1637 * doc/gccint.texi: Include new files.
1638 * doc/install.texi: Document new features.
1639 * doc/invoke.texi: Document new switches.
1640 * doc/passes.texi: Document new passes.
1641 * doc/rtl.texi: Update changed RTL codes.
1642 * doc/sourcebuild.texi: Update build instructions.
1643 * doc/standards.texi: Document Fortran changes.
1644 * doc/tm.texi: Update.
1646 2004-05-12 Paolo Bonzini <bonzini@gnu.org>
1648 Replace several arrays with a struct of arrays.
1649 * combine.c (struct reg_stat): New.
1650 (init_reg_last_arrays): Renamed to...
1651 (init_reg_last): ...this. Callers adjusted.
1653 (combine_instructions): Allocate it and use it.
1654 (reg_last_death, reg_last_set, reg_last_set_value,
1655 reg_last_set_label, reg_last_set_table_tick,
1656 reg_last_set_invalid, reg_nonzero_bits, reg_sign_bit_copies,
1657 reg_last_set_mode, reg_last_set_nonzero_bits,
1658 reg_last_set_sign_bit_copies): Replace throughout
1659 with items of reg_stat.
1661 2004-05-11 Kaz Kojima <kkojima@gcc.gnu.org>
1663 PR optimization/15100
1664 * combine.c (distribute_notes): Don't create a dangling
1665 REG_LIBCALL/REG_RETVAL note.
1667 2004-05-11 Aldy Hernandez <aldyh@redhat.com>
1669 * config/rs6000/spe.md (spe_evneg): Rename to negv2si2.
1671 * config/rs6000/rs6000.c (bdesc_1arg): Change spe_evneg to
1674 2004-05-11 Aldy Hernandez <aldyh@redhat.com>
1676 * doc/md.texi (Standard Names): Fix typo in vec_init description.
1678 2004-05-11 Geoffrey Keating <geoffk@apple.com>
1680 * doc/gty.texi (GTY Options): Clarify example.
1682 2004-05-11 Fariborz Jahanian <fjahanian@apple.com>
1684 * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute):
1685 Add const qualifier to altivec vector type if one is needed.
1687 2004-05-11 Paul Brook <paul@codesourcery.com>
1689 * flags.h (flag_short_enums): Update comment.
1690 * opts.c (decode_options): Set flag_short_enums to 2.
1691 * toplev.c (flag_short_enums): Update comment.
1692 (process_options): Call default_short_enums target hook.
1694 2004-05-11 Andrew Pinski <pinskia@gcc.gnu.org>
1697 * config/rs6000/altivec.md (altivec_dssall):
1698 Change to unspec_volatile.
1699 (altivec_dss): Likewise.
1701 2004-05-10 Aldy Hernandez <aldyh@redhat.com>
1703 * config/rs6000/altivec.md ("one_cmplv16qi2"): Change vnot to
1705 ("one_cmplv8hi2"): Same.
1706 ("one_cmplv4si2"): Same.
1708 2004-05-10 Kaz Kojima <kkojima@gcc.gnu.org>
1711 * config/sh/sh-protos.h (sh_expand_epilogue): Change prototype.
1712 * config/sh/sh.c (output_stack_adjust): Take the sibcall epilogue
1713 into account. Compute the correct number of general registers
1714 for the return value. Generate a special push/pop sequence when
1715 failing to get a temporary register for non SHmedia epilogue.
1716 (sh_expand_epilogue): Add an argument to show whether it's for
1717 sibcall or not. Set the 3rd argument of output_stack_adjust to
1719 (sh_need_epilogue): Call sh_expand_epilogue with 0.
1720 * config/sh/sh.md (sibcall_epilogue): Call sh_expand_epilogue
1722 (epilogue): Call sh_expand_epilogue with 0.
1724 2004-05-10 Andrew Pinski <pinskia@physics.uc.edu>
1726 * gcse.c (eliminate_partially_redundant_loads): Instead of returning early,
1727 goto a cleanup label. After the cleanup, free the allocated memory.
1729 2004-05-10 Ziemowit Laski <zlaski@apple.com>
1731 * config/rs6000/altivec.h (vec_sld): Add overloads for
1732 argument/return types of 'vector bool int', 'vector bool short'
1733 and 'vector bool char'.
1735 2004-05-10 Zack Weinberg <zack@codesourcery.com>
1737 * c-decl.c (store_parm_decls_newstyle): Correct test for a
1740 2004-05-10 Richard Sandiford <rsandifo@redhat.com>
1742 * read-rtl.c (read_rtx): Allow 's' and 'T' strings to be omitted,
1743 treating missing ones as "".
1744 * config/mips/mips.md: Remove constraints from match_operands and
1745 match_scratches if they appear in define_expands (except reload*),
1746 define_peephole2s, define_splits or attribute specifications.
1747 * config/mips/7000.md, config/mips/sb1.md: Remove match_operand
1750 2004-05-10 Alan Modra <amodra@bigpond.net.au>
1752 * config/rs6000/rs6000.c (function_arg_boundary): Always align
1754 (function_arg_advance): Pass TARGET_32BIT -mabi=no-altivec AltiVec
1755 vectors by refererence. Align the same for TARGET_64BIT to a 16
1756 byte boundary. Remove useless code. Add function comment.
1757 (function_arg): Similarly. Move gpr rs6000_mixed_function_arg
1758 call to where it belongs.
1759 (function_arg_partial_nregs): Return true for all TARGET_32BIT
1760 -mabi=no-altivec AltiVec vectors. Fix debug output.
1761 (rs6000_va_arg): Adjust for AltiVec change.
1763 2004-05-10 Paul Brook <paul@codesourcery.com>
1765 * config/arm/arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
1766 * config/arm/arm.h (TARGET_AAPCS_BASED): Define.
1767 (TARGET_DOUBLEWORD_ALIGN): Use it.
1768 (WCHAR_TYPE): Define.
1769 (WCHAR_SIZE_TYPE): Define.
1770 (SIZE_TYPE): Define.
1772 2004-05-10 Alan Modra <amodra@bigpond.net.au>
1774 * config/rs6000/rs6000.c (function_arg_boundary): Align for ABI_V4
1775 when size is 8 bytes.
1776 (function_arg_advance): Account for stack space used by AltiVec
1777 args when -mabi=altivec. Simplify alignment calculations. For
1778 ABI_V4, pass AltiVec vectors by reference when -mabi=no-altivec.
1779 (function_arg): Similarly.
1780 (function_arg_pass_by_reference): True for ABI_V4 AltiVec when
1782 (rs6000_va_arg): Correct fp arg test. Adjust for AltiVec change.
1783 Correct alignment, and align before testing reg count. Remove
1784 TREE_THIS_VOLATILE from reg. Don't emit unused labels.
1785 (rs6000_complex_function_value): Check TARGET_HARD_FLOAT and
1787 (rs6000_function_value): .. not here before call.
1789 2004-05-09 Aldy Hernandez <aldyh@redhat.com>
1791 * config/rs6000/spe.md ("tstsflt_gpr"): Fix typo in unspec.
1793 2004-05-09 Zack Weinberg <zack@codesourcery.com>
1796 * c-decl.c (current_file_decl): Rename to all_translation_units,
1798 (pop_scope): If popping file_scope, construct a
1799 TRANSLATION_UNIT_DECL and make it the context of all the
1800 symbols in the scope.
1801 (push_file_scope): Don't construct a TRANSLATION_UNIT_DECL here.
1802 (pushdecl): Clarify comment. Do not set DECL_CONTEXT of
1803 anything to current_file_decl.
1804 (pushdecl_top_level): Likewise.
1805 (store_parm_decls_newstyle): Adjust check for nested function.
1806 (c_write_global_declarations): Update for renamed variable.
1808 2004-05-09 Aldy Hernandez <aldyh@redhat.com>
1810 * config/rs6000/rs6000-protos.h
1811 (rs6000_conditional_register_usage): Protoize.
1813 * config/rs6000/rs6000.c (rs6000_conditional_register_usage): New.
1815 * config/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Call
1818 2004-05-08 Roger Sayle <roger@eyesopen.com>
1820 * fold-const.c (fold_div_compare): New function to optimize X/C1 op C2
1821 where op is a comparison operator and C1 and C2 are integer constants
1823 (fold): Call fold_div_compare.
1825 2004-05-08 Eric Botcazou <ebotcazou@libertysurf.fr>
1827 * doc/install.texi (sparc-sun-solaris2*): Document bootstrap
1828 problems with earlier versions of the GNU compiler.
1830 2004-05-07 Aldy Hernandez <aldyh@redhat.com>
1832 * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
1835 * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): New.
1836 (rs6000_hard_regno_mode_ok): New.
1837 (rs6000_init_hard_regno_mode_ok): New.
1838 (rs6000_override_options): Call rs6000_init_hard_regno_mode_ok.
1840 * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Use precomputed
1843 2004-05-07 Ziemowit Laski <zlaski@apple.com>
1845 * config/rs6000/altivec.h (vector, pixel, bool): Do not
1846 define as macros #ifdef __APPLE_ALTIVEC__.
1848 2004-05-07 Fariborz Jahanian <fjahanian@apple.com>
1850 * config/rs6000/rs6000.c (rs6000_mixed_function_arg):
1851 Generate appropriate parallels for vector arguments
1852 passed to vararg functions. (function_arg): make the call
1853 to rs6000_mixed_function_arg for vector args as needed.
1855 2004-05-07 Richard Sandiford <rsandifo@redhat.com>
1857 * config/mips/mips.c (mips_va_arg): Fix calculation of osize for
1858 EABI_FLOAT_VARARGS_P.
1860 2004-05-07 Richard Sandiford <rsandifo@redhat.com>
1862 * config/mips/mips.h (ISA_HAS_BRANCHLIKELY): Remove TARGET_MIPS5500.
1863 * config/mips/mips.c (override_options): Disable branch likely
1864 instructions if TUNE_MIPS5500.
1866 2004-05-07 Richard Sandiford <rsandifo@redhat.com>
1868 * config/mips/mips.c (override_options): Allow the hi and lo registers
1869 to store any integral mode, not just MODE_INTs.
1871 2004-05-07 Paul Brook <paul@codesourcery.com>
1873 * config/arm/arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
1874 * config/arm/arm.h (TARGET_AAPCS_BASED): Define.
1875 (TARGET_DOUBLEWORD_ALIGN): Use it.
1876 (WCHAR_TYPE): Define.
1877 (WCHAR_SIZE_TYPE): Define.
1878 (SIZE_TYPE): Define.
1880 2004-05-07 Uros Bizjak <uros@kss-loka.si>
1882 * config/i386/i386.c (ix86_emit_fp_unordered_jump): Use
1883 testb $4, %ah insn instead of sahf insn if !TARGET_USE_SAHF.
1885 2004-05-07 Andrew Pinski <pinskia@physics.uc.edu>
1887 * loop-doloop.c (doloop_valid_p): Make sure that body
1890 2004-05-07 Eric Botcazou <ebotcazou@act-europe.fr>
1892 * config/sparc/sparc-protos.h (sparc_skip_caller_unimp): New
1894 * config/sparc/sparc.c (SKIP_CALLERS_UNIMP_P): Delete.
1895 (sparc_skip_caller_unimp): New global variable.
1896 (sparc_function_epilogue): Set 'sparc_skip_caller_unimp'.
1897 Use it instead of SKIP_CALLERS_UNIMP_P.
1898 * config/sparc/sparc.md (call expander): Add sanity check.
1899 (call_address_struct_value_sp32): Re-sync with expander.
1900 (call_symbolic_struct_value_sp32): Likewise.
1901 (return peepholes): Use 'sparc_skip_caller_unimp' instead
1902 of custom predicate.
1904 2004-05-07 Eric Botcazou <ebotcazou@libertysurf.fr>
1907 * c-pragma.c (handle_pragma_redefine_extname): Only change
1908 the assembler name of FUNCTION_DECLs and VAR_DECLs.
1910 2004-05-07 Uros Bizjak <uros@kss-loka.si>
1912 * optabs.h (enum optab_index): Add new OTI_log1p.
1913 (log1p_optab): Define corresponding macro.
1914 * optabs.c (init_optabs): Initialize log1p_optab.
1915 * genopinit.c (optabs): Implement log1p_optab using log1p?f2
1917 * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOG1P{,F,L}
1919 (expand_builtin): Expand BUILT_IN_LOG1P{,F,L} using
1920 expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
1922 * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FYL2XP1.
1924 * config/i386/i386.c (ix86_emit_i387_log1p): New function.
1925 * config/i386/i386-protos.h (ix86_emit_i387_log1p):
1927 * config/i386/i386.md (UNSPEC_FYL2XP1): New unspec to represent
1928 x87's fyl2xp1 instruction.
1929 (*fyl2x_xf3): Rename insn definition to fyl2x_xf3.
1930 (fyl2xp1_xf3): New pattern to implement fyl2xp1 x87 instruction.
1931 (log1psf2, log1pdf2, log1pxf2): New expanders to implement log1pf,
1932 log1p and log1pl built-ins as inline x87 intrinsics.
1934 2004-05-07 Loren James Rittle <ljrittle@acm.org>
1936 * config/alpha/freebsd.h (SUBTARGET_EXTRA_SPECS): Proper redefinition.
1937 * config/arm/freebsd.h: Likewise.
1938 * config/ia64/freebsd.h: Likewise.
1939 * config/sparc/freebsd.h: Likewise.
1941 2004-05-07 Hans-Peter Nilsson <hp@axis.com>
1943 PR optimization/15296
1944 * reorg.c (fill_simple_delay_slots): Use next_real_insn when
1945 getting last consecutive label at a branch.
1946 (relax_delay_slots): Similar, near top of loop.
1948 2004-05-06 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1951 * pa.md (movdi, movsi, movhi, movqi): Support move from shift amount
1952 register to general register.
1954 2004-05-07 Alan Modra <amodra@bigpond.net.au>
1956 * config/rs6000/rs6000.h (STACK_BOUNDARY): Use 128 bit for either
1957 TARGET_ALTIVEC or TARGET_ALTIVEC_ABI.
1958 * config/rs6000/sysv4.h (ABI_STACK_BOUNDARY): Likewise.
1959 (STACK_BOUNDARY): Delete.
1961 2004-05-06 Stuart Hastings <stuart@apple.com>
1963 * gcc/doc/invoke.texi: Restore -fgcse-after-reload doc from 1.421,
1964 mistakenly clobbered by 1.423.
1966 2004-05-06 Richard Sandiford <rsandifo@redhat.com>
1968 * doc/invoke.texi: Document -mvr4130-align.
1969 * config/mips/mips.h (MASK_VR4130_ALIGN, TARGET_VR4130_ALIGN)
1970 (TUNE_MIPS4120, TUNE_MIPS4130): New macros.
1971 (TUNE_MACC_CHAINS): Include TUNE_MIPS4120 and TUNE_MIPS4130.
1972 (TARGET_SWITCHES): Add -mvr4130-align and -mno-vr4130-align.
1973 * config/mips/mips.md: Include sched-int.h.
1974 (USEFUL_INSN_P, SEQ_BEGIN, SEQ_END, FOR_EACH_SUBINSN): New macros.
1975 (mips_rtx_costs): Set integer multiplication costs for TUNE_MIPS4130.
1976 (override_options): Enable -mvr4130-align at -O3 and above.
1977 (mips_sim_insn): New variable.
1978 (mips_sim): New structure.
1979 (mips_sim_reset, mips_sim_init, mips_sim_next_cycle, mips_sim_wait_reg)
1980 (mips_sim_wait_regs_2, mips_sim_wait_regs_1, mips_sim_wait_regs)
1981 (mips_sim_wait_units, mips_sim_wait_insn, mips_sim_record_set)
1982 (mips_sim_issue_insn, mips_sim_issue_nop, mips_sim_finish_insn)
1983 (vr4130_avoid_branch_rt_conflict, vr4130_align_insns): New functions.
1984 (mips_reorg): Call vr4130_align_insns.
1985 (vr4130_last_insn): New variable.
1986 (vr4130_true_reg_dependence_p_1, vr4130_true_reg_dependence_p)
1987 (vr4130_swap_insns_p, vr4130_reorder): New functions.
1988 (mips_sched_reorder, mips_variable_issue): Hook in vr4130 code.
1989 (mips_issue_rate): Return 2 for PROCESSOR_R4130.
1990 (mips_use_dfa_pipeline_interface): Return true for the same.
1991 * config/mips/4130.md: New file.
1992 * config/mips/mips.md: Include it. Add a peephole2 to convert
1993 "mult;mflo" into "mtlo;macc".
1994 (*macc, *umul_acc_di, *smul_acc_di): Use $1 rather than $0 as the
1996 (*msac_using_macc): New pattern.
1998 2004-05-06 Richard Sandiford <rsandifo@redhat.com>
2000 * config/mips/5500.md (ir_vr55_store): Set latency to 0.
2001 (ir_vr55_hilo): Split into...
2002 (ir_vr55_mfhilo, ir_vr55_mthilo): ...these new reservations.
2003 (ir_vr55_imul_si, ir_vr55_imadd): Change latency to 5.
2004 (ir_vr55_imul_di): Change latency to 9. Reserve vr55_mac for 4 cycles.
2005 Add various multiplication bypasses.
2006 * config/mips/mips.c (mips_rtx_costs): Adjust VR5500 costs for integer
2009 2004-05-06 Uros Bizjak <uros@kss-loka.si>
2011 * config/i386/i386.md (*fscalexf4): Correct insn "mode"
2014 2004-05-05 Uros Bizjak <uros@kss-loka.si>
2016 * optabs.h (enum optab_index): Add new OTI_fmod and OTI_drem.
2017 (fmod_optab, drem_optab): Define corresponding macros.
2018 * optabs.c (init_optabs): Initialize fmod_optab and drem_optab.
2019 * genopinit.c (optabs): Implement fmod_optab and drem_optab
2020 using fmod?f3 and drem?f3 patterns.
2021 * builtins.c (expand_builtin_mathfn_2): Handle BUILT_IN_FMOD{,F,L}
2022 using fmod_optab and BUILT_IN_DREM{,F,L} using drem_optab.
2023 (expand_builtin): Expand BUILT_IN_FMOD{,F,L} and
2024 BUILT_IN_DREM{,F,L} using expand_builtin_mathfn_2 if
2025 flag_unsafe_math_optimizations is set.
2027 * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FPREM_F,
2028 UNSPEC_FPREM_U, UNSPEC_FPREM1_F and UNSPEC_FPREM1_U.
2030 * config/i386/i386.c (ix86_emit_fp_unordered_jump): New function.
2031 * config/i386/i386-protos.h (ix86_emit_fp_unordered_jump):
2033 * config/i386/i386.md (UNSPEC_FPREM_F, UNSPEC_FPREM_U,
2034 UNSPEC_FPREM1_F, UNSPEC_FPREM1_U): New unspecs to represent x87's
2035 fprem and fprem1 instructions.
2036 (*x86_fnstsw_1): Change input parameter to (reg:CCFP 18).
2037 Rename insn definition to x86_fnstsw_1.
2038 (fpremxf4, fprem1xf4): New patterns to implement fprem and fprem1
2040 (fmodsf3, fmoddf3, fmodxf3): New expanders to implement fmodf, fmod
2041 and fmodl built-ins as inline x87 intrinsics.
2042 (dremsf3, dremdf3, dremxf3): New expanders to implement dremf, drem
2043 and dreml built-ins as inline x87 intrinsics.
2045 2004-05-05 Roger Sayle <roger@eyesopen.com>
2047 * reload1.c (inherit_piecemeal_p): Mark parameters potentially unused.
2049 2004-05-05 Ian Lance Taylor <ian@wasabisystems.com>
2052 * doc/invoke.texi (Spec Files): Remove documentation of %c.
2054 2004-05-05 Chris Demetriou <cgd@broadcom.com>
2056 * config/mips/mips.md: Update the msub define_split for new mflo/mfhi
2059 2004-05-06 Paul Brook <paul@codesourcery.com>
2061 * config/arm/arm-protots.h (vfp_mem_operand): Rename ...
2062 (arm_coproc_mem_operand): ... To this.
2063 * config/arm/arm.c (arm_legitimate_address_p): Allow ldrd modes.
2064 (arm_legitimate_index_p): Ditto.
2065 (vfp_mem_operand): Rename ...
2066 (arm_coproc_mem_operand): ... To this. Handle writeback modes.
2067 (vfp_secondary_reload_class): Use it.
2068 (output_move_double): Use doubleword load/store instructions.
2069 (arm_hard_regno_mode_ok): Only allow even reg pairs for ldrd.
2070 * config/arm/arm.h (TARGET_LDRD): Define.
2071 (EXTRA_CONSTRAINT_STR_ARM): Add 'Uy'.
2072 * config/gcc/arm/arm.md (arm_movdi): Allow all valid memory operands.
2073 New splitter for invalid doubleword loads.
2074 * config/arm/iwmmxt.md (iwmmxt_arm_movdi): Use Uy constraint.
2075 * config/arm/vfp.md (arm_movdi_vfp): Allow all valid memory operands.
2076 * doc/md.texi: Document Uy constraint.
2078 2004-05-05 Jan Hubicka <jh@suse.cz>
2081 * cgraphunit.c (cgraph_remove_unreachable_nodes): Deal properly with
2084 2004-05-05 H.J. Lu <hongjiu.lu@intel.com>
2087 * config/i386/i386.c (ix86_split_to_parts): Use real_to_target
2088 instead of REAL_VALUE_TO_TARGET_LONG_DOUBLE.
2090 2004-05-05 Mike Stump <mrs@apple.com>
2092 * config/darwin-c.c (add_framework): Copy the directory name as it
2093 can be freed later. Also, ensure we always allocate enough room
2094 for the cached framework information.
2095 (find_subframework_header): Keep track of the directory where the
2096 subframework header was found.
2097 (framework_construct_pathname): Speed up by not trying to re-add a
2099 * cppfiles.c (search_path_exhausted): Arrange for the missing
2100 header callback to be able to set the directory where the header
2103 * cpplib.h (missing_header_cb): Add a parameter.
2106 2004-05-03 Mike Stump <mrs@apple.com>
2108 * doc/invoke.texi (Directory Options): Document -iquote.
2109 * doc/cpp.texi: Likewise.
2110 * doc/cppopts.texi: Likewise.
2111 * c-opts.c (c_common_missing_argument): Add -iquote processing.
2112 (c_common_handle_option): Likewise.
2113 * c.opt (iquote): Add.
2114 * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -iquote.
2115 * c-incpath.c (merge_include_chains): Update comment to use -iquote.
2117 * c-opts.c (case OPT_I): Deprecate -I- support.
2118 * doc/invoke.texi: Likewise.
2119 * doc/cpp.texi: Likewise.
2120 * doc/cppopts.texi: Likewise.
2122 2004-05-05 Steven Bosscher <stevenb@suse.de>
2124 * basic-block.h (free_basic_block_vars): Update prototype.
2125 * flow.c (free_basic_block_vars): Remove the keep_head_end_p
2127 (life_analysis): Update call.
2128 * ifcvt.c (if_convert): Likewise.
2129 * sibcall.c (optimize_sibling_and_tail_recursive_call): Likewise.
2130 * passes.c (rest_of_handle_final): Likewise.
2131 (rest_of_compilation): Likewise.
2132 * config/sh/sh.c (sh_output_mi_thunk): Likewise.
2134 * emit-rtl.c (next_real_insn): Use INSN_P.
2135 (prev_real_insn): Likewise.
2137 2004-05-05 Eric Christopher <echristo@redhat.com>
2139 * config/mips/mips.md: Update the madd define_split for new mflo/mfhi
2142 2004-05-05 Paolo Bonzini <bonzini@gnu.org>
2144 * config/rs6000/rs6000.c (build_opaque_vector_type):
2146 (rs6000_init_builtins): Use it.
2148 2004-05-04 Bernard Giroud <bgiroud2@free.fr>
2150 * gcc/gcc/vmsdbgout.c (vms_func_node, vms_func_ref): New.
2151 (func_table): Change type from char ** to vms_func_ref.
2152 (write_rtnbeg): Update to reflect func_table change. Use
2153 fde->funcdef_number instead of rtnnum in output.
2154 (write_rtnend, vmxdbgout_begin_function, vmsdbgout_init): Likewise.
2156 2004-05-04 Paolo Bonzini <bonzini@gnu.org>
2157 Richard Henderson <rth@redhat.com>
2161 * c-common.c (vector_types_convertible_p): New function.
2162 * c-typeck.c (comptypes): Recurse on vector types.
2163 (convert_for_assignment): Use vector_types_convertible_p.
2164 (digest_init): Use vector_types_convertible_p to check
2165 validness of constant vector initializers; otherwise treat
2167 * tree.c (make_or_reuse_type): New.
2168 (build_common_tree_nodes): Use it.
2169 * cp/call.c (standard_conversion): Likewise.
2170 * cp/typeck.c (comptypes): Recurse on vector types.
2171 (convert_for_assignment): Use vector_types_convertible_p.
2173 2004-05-04 Chris Demetriou <cgd@broadcom.com>
2175 * config/mips/mips.c (override_options): Default to no
2176 generation of branch-likely operations when tuning for
2177 CPUs where they tend to have a negative performance impact
2180 2004-05-04 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2182 * expr.c (store_constructor_field): Don't call store_constructor
2183 if bitsize is not a multiple of a byte.
2185 2004-05-04 Richard Sandiford <rsandifo@redhat.com>
2187 * reload1.c (inherit_piecemeal_p): New function.
2188 (emit_reload_insns): When reloading a group of hard registers, use
2189 inherit_piecemeal_p to decide whether the values of individual hard
2190 registers can be inherited.
2192 2004-05-04 H.J. Lu <hongjiu.lu@intel.com>
2194 * config/ia64/t-ia64 (LIB2ADDEH): Remove gthr-gnat.c.
2195 * config/s390/t-tpf (LIB2ADDEHDEP): Likewise.
2196 * config/t-linux (LIB2ADDEHDEP): Likewise.
2198 2004-05-04 Paul Brook <paul@codesourcery.com>
2200 * config/arm/crti.asm: Push an even number of registers.
2201 * config/arm/crtn.asm: And restore them. Load via sp.
2203 2004-05-04 Paolo Bonzini <bonzini@gnu.org>
2205 * ggc-zone.c (ggc_alloc_zone_1): Add MEM_STAT_DECL parameter.
2206 Collect overhead information.
2207 (ggc_alloc_stat): New name of ggc_alloc. Add MEM_STAT_DECL
2208 parameter and pass it through.
2209 (ggc_alloc_typed_stat): New name of ggc_alloc_typed. Add
2210 MEM_STAT_DECL parameter and pass it through.
2211 (ggc_alloc_zone_stat): New name of ggc_alloc_zone. Add
2212 MEM_STAT_DECL parameter and pass it through.
2214 2004-05-03 Aldy Hernandez <aldyh@redhat.com>
2216 * config/rs6000/rs6000-protos.h: Protoize rs6000_hard_regno_nregs.
2218 * config/rs6000/rs6000.c (rs6000_hard_regno_nregs): New.
2220 * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Call
2221 rs6000_hard_regno_nregs.
2223 2004-05-03 Eric Christopher <echristo@redhat.com>
2225 * config/s390/s390.c (s390_emit_prologue): Call unspec tpf
2226 prologue insn instead of setting up call.
2227 (s390_emit_epilogue): Ditto.
2228 * config/s390/s390.md (prologue_tpf, epilogue_tpf): New patterns.
2229 (define_constants): Add numbers for above patterns.
2231 2004-05-03 Eric Christopher <echristo@redhat.com>
2233 * config/s390/s390.h (CONDITIONAL_REGISTER_USAGE): Move body...
2234 * config/s390/s390.c (s390_conditional_register_usage): ...here.
2235 * config/s390/s390-protos.h: Prototype.
2237 2004-05-03 Joe Buck <jbuck@welsh-buck.org>
2239 * cppfiles.c (pchf_adder): Eliminate use of |= in d->have_once_only
2242 2004-05-03 Eric Christopher <echristo@redhat.com>
2244 * config/mips/mips.md: Fix branch length attribute definition.
2246 2004-05-03 Aldy Hernandez <aldyh@redhat.com>
2248 * config.gcc: Remove --enable-altivec support.
2250 * config/rs6000/altivec-defs.h: Remove.
2252 2004-05-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2254 * fixinc/inclhack.def (svr4_profil): Don't apply on IRIX 5/6.
2255 * fixinc/fixincl.x: Regenerate.
2257 2004-05-03 Uros Bizjak <uros@kss-loka.si>
2259 * config/i386/i386.md (*fyl2x_sfxf3, *fyl2x_dfxf3): Remove insn
2261 (log?f2, log10?f2, log2?f2): Reimplement expanders with
2262 float_truncate insn.
2263 (*fxtractsf3, *fxtractdf3): Remove insn definition.
2264 (logb?f2): Reimplement expanders with float_truncate insn.
2266 2004-05-03 Graham Stott <graham.stott@btinternet.com>
2269 * dwarf2out.c (dwarf2out_imported_module_or_decl): Use
2270 force_type_die for CONST_DECL.
2272 2004-05-03 Eric Botcazou <ebotcazou@libertysurf.fr>
2273 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2275 * config.gcc (sparc64-*-solaris2*, sparcv9-*-solaris2*): Add
2276 tm-dwarf2.h to tm_file.
2277 (sparc-*-solaris2*): Add tm-dwarf2.h to tm_file for Solaris 7+.
2278 * config/sparc/sol2-bi.h (PREFERRED_DEBUGGING_TYPE): Delete.
2279 (ASM_DEBUG_SPEC): Delete.
2281 2004-05-03 Uros Bizjak <uros@kss-loka.si>
2283 * optabs.h (enum optab_index): Add new OTI_expm1.
2284 (expm1_optab): Define corresponding macro.
2285 * optabs.c (init_optabs): Initialize expm1_optab.
2286 * genopinit.c (optabs): Implement expm1_optab using expm1?f2
2288 * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_EXPM1{,F,L}
2290 (expand_builtin): Expand BUILT_IN_EXPM1{,F,L} using
2291 expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
2293 * config/i386/i386.md (expm1df2, expm1sf2, expm1xf2): New expanders
2294 to implement expm1, expm1f and expm1l built-ins as inline x87
2297 2004-05-02 Alexandre Oliva <aoliva@redhat.com>
2299 2003-11-19 Richard Sandiford <rsandifo@redhat.com>
2300 * config/frv/frv.md (*return_true, *return_false): New patterns.
2302 2004-05-02 Kazu Hirata <kazu@cs.umass.edu>
2304 * rtl.h (PHI_NODE_P): Remove.
2306 2004-05-02 Eric Botcazou <ebotcazou@act-europe.fr>
2309 * function.c (assign_stack_local_1): Use BITS_PER_UNIT alignment
2310 when passed -2 as 'align'.
2311 (put_var_into_stack): Use 'bool' as the type for the three local
2312 predicates. Adjust calls to put_reg_into_stack.
2313 When passed a CONCAT, instruct put_reg_into_stack to use
2314 a consecutive stack slot for the second part.
2315 (put_reg_into_stack): Remove 'promoted_mode' parameter, add
2316 'consecutive_p' parameter. Turn the three predicates into 'bool'
2317 parameters. Retrieve the register mode from 'reg'.
2318 When consecutive_p is true, instruct assign_stack_local_1 to use
2319 BITS_PER_UNIT alignment.
2320 (put_addressof_into_stack): Use 'bool' as the type for the two
2321 local predicates. Adjust call to put_reg_into_stack.
2323 2004-05-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2325 * fold-const.c (fold_convert_const, fold): Add missing
2326 FIX_ROUND_EXPR case.
2328 2004-05-02 Alexandre Oliva <aoliva@redhat.com>
2330 * configure.ac (FLEX, BISON): Only use tools from the build tree
2331 if build equals host.
2332 * configure: Rebuilt.
2334 * config/frv/frv-protos.h (frv_expand_epilogue,
2335 frv_expand_fdpic_call): Add bool argument.
2336 * config/frv/frv.c (frv_function_ok_for_sibcall): New.
2337 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define to it.
2338 (frv_expand_epilogue): Use new argument to decide whether to emit
2339 return instruction or copy the return address to LR.
2340 (frv_expand_fdpic_call): Inline PLT entry when emitting direct
2342 (sibcall_operand): New.
2343 * config/frv/frv.h (PREDICATE_CODES): call_operand doesn't match
2344 PLUS nor LABEL_REF. Add sibcall_operand.
2345 * config/frv/frv.md (call, call_value): Pass false to
2346 frv_expand_fdpic_call.
2347 (call_fdpicdi, call_value_fdpicdi): Insert %i0 in calll.
2348 (sibcall, sibcall_internal, sibcall_fdpicdi, sibcall_value,
2349 sibcall_value_internal, sibcall_value_fdpicdi): New.
2350 (return_unsigned_true, return_unsigned_false): New.
2351 (epilogue): Adjust call to frv_expand_epilogue.
2352 (sibcall_epilogue): New.
2354 * config/frv/frv.h (ASM_SPEC): Pass -mno-fdpic as -mnopic.
2355 (CPP_SPEC, CPP_SIMPLE_SPEC): Undefine __FRV_ACC__ and __FRV_FPR__
2356 before redefining them.
2358 2004-05-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2360 * builtins.c (fold_fixed_mathfn): New function.
2361 (fold_builtin_lround, fold_builtin): Use it.
2363 2004-05-01 Jakub Jelinek <jakub@redhat.com>
2365 * config/sparc/linux64.h (TARGET_DEFAULT): Make 64-bit by default
2366 also for TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3.
2368 2004-05-01 Kazu Hirata <kazu@cs.umass.edu>
2370 * config/cris/cris.h: Revert my "fix comment typos" patch.
2372 2004-05-01 Richard Sandiford <rsandifo@redhat.com>
2374 * config/mips/mips.h (TUNE_MACC_CHAINS): Fix comment.
2376 2004-05-01 Falk Hueffner <falk@debian.org>
2378 * config/alpha/alpha.md (builtin_insbl, builtin_inswl,
2379 builtin_insll): Disallow 0 as first input operand.
2381 2004-05-01 Falk Hueffner <falk@debian.org>
2383 * config/alpha/alpha.c (alpha_rtx_costs): Fix shiftadd costs.
2385 2004-05-01 Ulrich Weigand <uweigand@de.ibm.com>
2388 * expr.c (expand_expr_real): Do not call preserve_temp_slots
2389 on a TARGET_EXPR temp.
2390 * function.c (assign_stack_temp_for_type): Set 'keep' flag for
2391 TARGET_EXPR temp slots.
2393 2004-05-01 Paolo Bonzini <bonzini@gnu.org>
2395 * simplify-rtx.c (simplify_ternary_operation): When
2396 converting an IF_THEN_ELSE to a relational op, return
2399 2004-04-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2401 * builtins.c (fold_builtin_round): Fix comment typo.
2402 (fold_builtin_lround): New function.
2403 (fold_builtin): Use it.
2405 2004-04-20 Andrew Pinski <pinskia@physics.uc.edu>
2408 * config/sh/elf.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Update and make it
2409 more like the one in config/dbxelf.h.
2411 2004-04-30 Zack Weinberg <zack@codesourcery.com>
2413 * tree.h (SET_ARRAY_OR_VECTOR_CHECK): Rename to SET_OR_ARRAY_CHECK
2414 and adjust definition accordingly.
2415 (TYPE_DOMAIN): Allow only SET_TYPE and ARRAY_TYPE.
2416 (TYPE_DEBUG_REPRESENTATION_TYPE): Allow only VECTOR_TYPE.
2417 * expr.c (store_constructor): Do not access TYPE_DOMAIN of a
2420 2004-04-30 Jason Merrill <jason@redhat.com>
2423 * config/i386/winnt.c (associated_type): Look for attributes on
2424 the TYPE_MAIN_VARIANT of *this.
2425 * attribs.c (decl_attributes): If ATTR_FLAG_TYPE_IN_PLACE, also
2426 apply the attributes to the variants.
2428 2004-04-30 Paul Brook <paul@codesourcery.com>
2430 * config.gcc: Simplify arm --with-{cpu,tune} test.
2431 * config/arm/arm-cores.def: Document whitespace restrictions.
2433 2004-04-30 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2436 * config/alpha/osf.h (SWITCHES_NEED_SPACES): Define.
2438 2004-04-30 Brian Ford <ford@vss.fsi.com>
2439 DJ Delorie <dj@redhat.com>
2441 * config/i386/cygming.h [HAVE_GAS_PE_SECREL32_RELOC]
2442 (DWARF2_DEBUGGING_INFO): Define to enable.
2443 (DBX_REGISTER_NUMBER): Define to use the svr4 register map for
2445 * configure.ac (Target-specific assembler checks)
2446 <i[34567]86-*-[cygwin*|pe|mingw32*]>: New test for .secrel32
2448 * configure: Regenerate.
2449 * config.in: Likewise.
2451 * config/i386/cygming.h [HAVE_GAS_PE_SECREL32_RELOC]
2452 (ASM_OUPUT_DWARF_OFFSET): Define.
2454 2004-04-29 Andreas Krebbel <krebbel1@de.ibm.com>
2456 * config/s390/s390-protos.h (s390_emit_epilogue): Parameter added.
2457 (s390_emit_call): New function prototype added.
2458 (s390_tls_get_offset): Function removed.
2459 * config/s390/s390.c (s390_function_ok_for_sibcall,
2460 s390_call_saved_register_used_p): New functions.
2461 (TARGET_FUNCTION_OK_FOR_SIBCALL): Definition of target macro added.
2462 (s390_tls_get_offset): Function merged into s390_emit_tls_call_insn.
2463 (s390_emit_tls_call_insn): New function.
2464 (legitimize_tls_address): Call s390_emit_tls_call_insn instead of
2466 (s390_emit_prologue): Use s390_emit_call instead of emit_call_insn.
2467 (s390_emit_epilogue): Like s390_emit_prologue. Parameter for sibcalls
2469 * config/s390/s390.h (SIBCALL_REGNUM): New macro representing the
2470 register number used to hold the target address for sibcalls.
2471 * config/s390/s390.md ("sibcall", "sibcall_value", "sibcall_epilogue"):
2473 ("*sibcall_br", "*sibcall_brc", "*sibcall_brcl", "*sibcall_value_br",
2474 "*sibcall_value_brc", "*sibcall_value_brcl"): New insns.
2475 ("call_exp", "call_value_exp", "call_value_tls", "call_value_tls_exp"):
2477 ("call", "call_value"): Call s390_emit_call to emit the call patterns.
2478 ("*bras", "*brasl", "*bras_r", "*brasl_r", "*bras_tls", "*brasl_tls",
2479 "*basr", "*basr_r", "*basr_tls"): Added constraint: !SIBLING_CALL_P.
2480 ("epilogue"): Changed the call to s390_emit_epilogue to use the
2483 2004-04-30 Kazu Hirata <kazu@cs.umass.edu>
2485 * bb-reorder.c, c-opts.c, cfglayout.c, cgraph.c, cgraphunit.c,
2486 cppfiles.c, fold-const.c, ggc-zone.c, loop-doloop.c, optabs.c,
2487 reg-stack.c, varasm.c, config/alpha/ev4.md,
2488 config/alpha/ev5.md, config/alpha/ev6.md, config/arm/arm.c,
2489 config/c4x/c4x.c, config/c4x/c4x.md, config/cris/cris.c,
2490 config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c,
2491 config/frv/frv.h, config/frv/frv.md, config/h8300/h8300.c,
2492 config/i386/i386.c, config/i386/i386.md, config/i386/winnt.c,
2493 config/ia64/itanium2.md, config/ip2k/ip2k.c,
2494 config/mips/mips.c, config/mips/mips.h, config/mips/sr71k.md,
2495 config/pa/pa.c, config/s390/s390.c, config/sh/sh.c: Fix
2498 2004-04-30 Paul Brook <paul@codesourcery.com>
2500 * config.gcc: Default ep9312 to hard-float.
2501 * config/arm/arm-cores.def: Add ARCH field.
2502 * config/arm/arm.c (FL_FOR_ARCH*): Define.
2503 (arm_arch_cirrus): New variable.
2504 (all_cores): Set and use arch.
2505 (all_architectures): Ditto.
2506 (arm_arch_name): New variable.
2507 (arm_override_options): Set it. Use [SUB]TARGET_CPU_DEFAULT.
2508 Set and use arm_arch_cirrus.
2509 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Set arch defines.
2510 (enum processor_type): Update ARM_CORE define.
2511 (enum target_cpus): Add. Replaces TARGET_CPU_* defines.
2512 (CPP_SPEC): Remove %(cpp_cpu_arch).
2513 (CPP_ARCH_DEFAULT_SPEC): Remove.
2514 (CPP_CPU_ARCH_SPEC): Remove.
2515 (EXTRA_SPECS): Don't use CPP_*ARCH*_SPEC.
2516 (FPUTYPE_DEFAULT): Don't define here.
2518 2004-04-30 J"orn Rennecke <joern.rennecke@superh.com>
2520 * flow.c (propagate_one_insn): Call mark_set_regs for stack pointer
2523 2004-04-30 Paul Brook <paul@codesourcery.com>
2525 * arm.c (arm_needs_doubleword_align): Use mode alignment.
2527 2004-04-30 Paolo Bonzini <bonzini@gnu.org>
2529 * config/altivec/altivec.h [__cplusplus] (vec_subsubs): Rename to
2531 [__cplusplus] (vec_subsuhs): Rename to vec_subuhs, without
2534 2004-04-30 Uros Bizjak <uros@kss-loka.si>
2536 * config/i386/i386.md (atansf2, atandf2, atanxf2): Move near
2539 2004-04-29 Nick Clifton <nickc@redhat.com>
2542 * config/sh/sh-protos.h (sh_promote_prototypes): Declare.
2543 * config/sh/sh.c (sh_promote_prototypes): Remove declaration.
2544 Delete static from definition.
2545 * config/sh/sh.h (FUNCTION_VALUE): Add sh_promote_prototypes call.
2547 2004-04-30 Uros Bizjak <uros@kss-loka.si>
2549 * reg-stack.c (subst_stack_regs_pat): <UNSPEC_SIN, UNSPEC_COS,
2550 UNSPEC_FRNDINT, UNSPEC_F2XM1>: abort() if src1 dies.
2551 <UNSPEC_SINCOS_COS, UNSPEC_TAN_ONE, UNSPEC_XTRACT_FRACT>: Same.
2552 <UNSPEC_SINCOS_SIN, UNSPEC_TAN_TAN, UNSPEC_XTRACT_EXP>: Same.
2554 2004-04-29 Richard Guenther <richard.guenther@uni-tuebingen.de>
2556 * commom.opt (Wfatal-errors): Add it.
2557 * diagnostic.c (flag_fatal_errors): Define it.
2558 (diagnostic_action_after_output): Check for flag_fatal_errors.
2559 * flags.h (flag_fatal_errors): Declare it.
2560 * opts.c (common_handle_option): Add OPT_Wfatal_errors.
2561 * doc/invoke.texi (Warning Options): Document -Wfatal-errors.
2563 2004-04-30 Josef Zlomek <zlomekj@suse.cz>
2565 * gcse.c (remove_reachable_equiv_notes): Delete notes also in
2566 blocks which have kill flag set.
2568 2004-04-29 Ben Elliston <bje@au.ibm.com>
2570 * configure.ac (--with-as): Abort if user-supplied assembler
2572 (--with-ld): Likewise for the linker.
2573 * configure: Regenerate.
2575 2004-04-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2577 * convert.c (convert_to_integer): Ensure `long_integer_type_node'
2578 isn't NULL before using it.
2580 2004-04-29 Richard Sandiford <rsandifo@redhat.com>
2583 * config/mips/mips.md (load_df_low): Use default length.
2584 (load_df_high, store_df_high): Likewise.
2586 2004-04-29 Kazu Hirata <kazu@cs.umass.edu>
2588 * config/mips/mips.md, config/mips/sb1.md,
2589 config/rs6000/rs6000.c: Fix comment typos.
2591 2004-04-29 Kazu Hirata <kazu@cs.umass.edu>
2593 * builtins.c, cgraph.c, cgraphunit.c, final.c, fold-const.c:
2596 2004-04-29 Douglas B Rupp <rupp@gnat.com>
2598 * gcc.c (DELETE_IF_ORDINARY): New macro default definition.
2599 (delete_if_ordinary): Use above macro.
2600 * config/alpha/xm-vms.h (DELETE_IF_ORDINARY): New macro VMS definition.
2602 * doc/hostconfig.texi (DELETE_IF_ORDINARY): Document new macro.
2604 2004-04-29 Richard Earnshaw <rearnsha@arm.com>
2606 * c-decl.c (get_parm_info): Use the correct tag keywords when
2607 warning about type declarations in prototypes.
2609 2004-04-29 Paul Brook <paul@codesourcery.com>
2611 * config.gcc: Pull list of cores from arm-cores.def.
2613 2004-04-29 Paolo Bonzini <bonzini@gnu.org>
2615 * combine.c (combine_simplify_rtx): Adjust call to use
2616 simplify_relational_operation. Do not use SELECT_CC_MODE
2617 when a comparison already has a MODE_CC mode.
2619 2004-04-29 Paolo Bonzini <bonzini@gnu.org>
2621 (simplify_set): simplify_relational_operation may now
2622 return another relational expression.
2623 * cse.c (fold_rtx): simplify_relational_operation now
2624 takes of computing the comparison mode.
2625 * dojump.c (compare_from_rtx): Use simplify_relational_operation,
2627 (do_compare_rtx_and_jump): Likewise.
2628 * integrate.c (subst_constants): simplify_relational_operation
2629 may now return another relational expression.
2630 * simplify-rtx.c (simplify_gen_relational): Move most code to
2631 the new simplify_relational_operation and
2632 simplify_relational_operation_1 functions.
2633 (simplify_relational_operation): Rewritten.
2634 (simplify_relational_operation_1): New function.
2635 (simplify_ternary_operation): simplify_relational_operation
2636 may now return another relational expression.
2637 (simplify_rtx): Remove unnecessary temp variable.
2639 2004-04-29 Uros Bizjak <uros@kss-loka.si>
2641 * reg-stack.c (swap_to_top): New function.
2642 (subst_stack_regs_pat): UNSPEC_FPATAN, UNSPEC_FYL2X: Use
2644 (subst_stack_regs_pat): UNSPEC_FSCALE: Remove.
2645 (subst_stack_regs_pat): Handle UNSPEC_FSCALE_FRACT and
2648 * config/i386/i386.md (UNSPEC_FSCALE): Remove.
2649 (*fscale_sfxf3, *fscale_dfxf3, *fscale_xf3): Remove insn pattern.
2650 (UNSPEC_FSCALE_FRACT, UNSPEC_FSCALE_EXP): New unspecs to represent
2652 (*fscalexf4: Define new insn pattern to implement x87 fscale insn.
2653 (exp?f2, exp10?f2, exp2?f2): Use *fscalexf4 and float_truncate
2656 2004-04-28 Serge Belyshev <1319@bot.ru>
2659 * coverage.c (read_counts_file): Fix usage of warning () call.
2660 * pretty-print.c (pp_base_format_text): Fix typo in the comment.
2662 2004-04-28 Ben Elliston <bje@au.ibm.com>
2664 * doc/invoke.texi (Objective-C Dialect Options): Don't prefix
2665 options with "-" in the option index.
2666 (SPARC Options): Likewise.
2667 (M32R/D Options): Likewise.
2669 2004-04-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2671 * convert.c (convert_to_integer): Convert (long)round -> lround,
2674 2004-04-28 Andrew Pinski <pinskia@physics.uc.edu>
2676 * config/rs6000/rs6000.c (registers_ok_for_quad_peep):
2677 Return false if we do not have fp register.
2678 (addrs_ok_for_quad_peep): Rename to ...
2679 (mems_ok_for_quad_peep): this.
2680 Add check for volatile memory.
2681 * config/rs6000/rs6000-protos.h (addrs_ok_for_quad_peep):
2683 (mems_ok_for_quad_peep): this.
2684 * config/rs6000/rs6000.md: Change peephole's for lfq/stq
2686 (lfq_power2): New instruction.
2687 (stfq_power2): Likewise.
2689 2004-04-28 Jan Hubicka <jh@suse.cz>
2692 * function.c (do_warn_unused_parameter): Break out form ...
2693 (expand_function_end): ... here; warn only when not using cgraphunit.
2694 * function.h (do_warn_unused_parameter): Declare.
2695 * cgraphunit.c: Include function.h.
2696 (cgraph_finalize_function): Do unused parameter warning.
2697 * Makefile.in (cgraphunit.o): Depend on function.h
2699 2004-04-28 Joseph S. Myers <jsm@polyomino.org.uk>
2701 * Makefile.in ($(DESTDIR)$(infodir)/%.info): Don't condition
2702 calling install-info on $(DESTDIR)$(infodir)/dir already being
2705 2004-04-28 Paul Brook <paul@codesourcery.com>
2707 * dwarf2out.c (mem_loc_descriptor): Handle shifts.
2709 2004-04-28 Ulrich Weigand <uweigand@de.ibm.com>
2711 * gcse.c (find_moveable_store): Do not accept store insns with
2714 2004-04-28 Paul Brook <paul@codesourcery.com>
2716 * calls.c (precompute_arguments): Remove PROMOTE_FOR_CALL_ONLY.
2717 * function.c (assign_temp): Ditto.
2718 * system.h (PROMOTE_FOR_CALL_ONLY): Poison.
2720 2004-04-28 Paul Brook <paul@codesourcery.com>
2722 * config/arm/lib1funcs.asm: Recognize armv5tej and armv6.
2724 2004-04-28 Josef Zlomek <zlomekj@suse.cz>
2726 * var-tracking.c (variable_different_p): Add a parameter
2727 compare_current_location, compare current location of variable parts
2729 (dataflow_set_different_1): Pass compare_current_location == false.
2730 (dataflow_set_different_2): Pass compare_current_location == false.
2731 (emit_notes_for_differences_1): Pass compare_current_location == true.
2733 2004-04-28 Ulrich Weigand <uweigand@de.ibm.com>
2735 * config/s390/s390.md ("casesi"): Mark jump table access as
2736 non-trapping and unchanging.
2738 2004-04-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2741 * dwarf2out.c (reg_number): Rename to dbx_reg_number. Adjust all
2743 (multiple_reg_loc_descriptor, reg_loc_descriptor): Use gcc register
2744 number for indexing hard_regno_nregs array.
2746 2004-04-27 Geoffrey Keating <geoffk@apple.com>
2748 * config/darwin.h (STARTFILE_SPEC): Use %s to find crt2.o.
2749 * config/darwin-crt2.c: Only have contents on __ppc__.
2751 2004-04-27 Bob Wilson <bob.wilson@acm.org>
2753 * config/xtensa/xtensa.c (call_insn_operand): Check
2754 SYMBOL_REF_EXTERNAL_P in addition to SYMBOL_REF_LOCAL_P.
2755 * config/xtensa/xtensa.h (LEGITIMATE_PIC_OPERAND): Likewise.
2756 * config/xtensa/xtensa.md (call, call_value): Likewise.
2758 2004-04-27 Wu Yongwei <adah@sh163.net>
2760 * gthr-win32.h (__gthread_mutex_t): Change typedef to new structure.
2761 (__GTHREAD_MUTEX_INIT_DEFAULT): Adjust.
2762 (__gthread_mutex_init_function): Replace CreateMutex with
2763 initialization of custom mutex using CreateSemaphore.
2764 (__gthread_mutex_lock): Use InterlockedIncrement.
2765 (__gthread_mutex_trylock): Use InterlockedCompareExchange.
2766 (__gthread_mutex_unlock): Use InterlockedDecrement and
2767 ReleaseSemaphore to unlock
2768 * config/i386/gthr-win32.c (__gthread_mutex_init_function,
2769 __gthread_mutex_lock, __gthread_mutex_trylock,
2770 __gthread_mutex_unlock): Adjust to match inline versions in
2773 2004-04-27 Paul Brook <paul@codesourcery.com>
2775 * config/arm/arm.c (arm_promote_prototypes): New function.
2776 (TARGET_PROMOTE_PROTOTYPES): Use it.
2778 2004-04-27 Paul Brook <paul@codesourcery.com>
2780 * config/arm/arm.c (arm_expand_epilogue): Count blocks of 4 regs.
2782 2004-04-26 Bernard Giroud <bgiroud@free.fr>
2784 * config/alpha.c (alpha_end_function): For OpenVMS gas,
2785 correctly output .pdesc directive before .end.
2787 2004-04-26 James E Wilson <wilson@specifixinc.com>
2790 * config/ia64/ia64.md (movxf): New local op0. Handle case where
2791 operands[0] is a SUBREG. Handle case where operands[1] is a GR reg.
2793 2004-04-26 Zack Weinberg <zack@codesourcery.com>
2795 * config/ia64/hpux.h: Predefine __STDCPP__ when compiling C++.
2796 * config/pa/pa-hpux10.h: Likewise.
2797 * config/pa/pa-hpux11.h: Likewise.
2799 2004-04-26 Geoffrey Keating <geoffk@apple.com>
2801 * doc/invoke.texi (Overall Options): Document default for -o
2804 2004-04-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2806 * builtins.c (expand_builtin_update_setjmp_buf): New function.
2807 (expand_builtin, case BUILT_IN_UPDATE_SETJMP_BUF): New case.
2808 * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): New code.
2810 2004-04-26 Paul Brook <paul@codesourcery.com>
2812 * config/arm/arm.c (arm_legitimate_index_p): Correct iwmmxt offsets.
2814 2004-04-26 Paul Brook <paul@codesourcery.com>
2816 * config/arm/arm.c (arm_legitimate_index_p): Correct maverick offsets.
2818 2004-04-25 Roger Sayle <roger@eyesopen.com>
2820 * fold-const.c (fold): Prefer fold_convert (negate_expr (...)) to
2821 fold (build1 (NEGATE_EXPR, ...)). Optimize X / -1 as -X and
2824 2004-04-26 Hans-Peter Nilsson <hp@bitrange.com>
2827 * except.c (connect_post_landing_pads): Delete insns after the
2828 barrier when generating a unwind_resume_libfunc call.
2830 2004-04-25 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2833 * tree.c (substitute_placeholder_in_expr, case 4): New case,
2836 2004-04-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
2838 * gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
2839 __gcov_execv, __gcov_execvp, __gcov_execve): Do not declare when
2840 inhibit_libc is defined.
2842 2004-04-25 Richard Sandiford <rsandifo@redhat.com>
2844 * config/mips/mips-protos.h (mips_linked_macc_p): Declare.
2845 * config/mips/mips.h (TUNE_MACC_CHAINS): New macro.
2846 * config/mips/mips.c (TARGET_SCHED_REORDER): Define.
2847 (TARGET_SCHED_VARIABLE_ISSUE): Define.
2848 (mips_adjust_cost): Move later in file, next to other sched hooks.
2849 (mips_macc_chains_last_hilo): New variable.
2850 (mips_linked_madd_p, mips_macc_chains_record, mips_macc_chains_reorder)
2851 (mips_promote_ready, mips_sched_reorder, mips_variable_issue): New.
2852 * config/mips/mips.md (may_clobber_hilo): New attribute.
2854 2004-04-24 Roger Sayle <roger@eyesopen.com>
2855 Bruce Korb <bkorb@gnu.org>
2857 * fixinc/inclhack.def (aix_syswait_2): New fix.
2858 * fixinc/fixincl.x: Regenerate.
2859 * fixinc/tests/base/sys/wait.h: Update for new test.
2861 2004-04-24 Alan Modra <amodra@bigpond.net.au>
2864 * config/rs6000/rs6000.c (rs6000_stack_info): Rename total_raw_size
2865 to non_fixed_size, and leave out fixed_size from the sum.
2866 (generate_set_vrsave): Correct clobbers.
2867 (rs6000_emit_epilogue): Test TARGET_ALTIVEC with TARGET_ALTIVEC_SAVE.
2868 (rs6000_function_value): Test TARGET_ALTIVEC and TARGET_ALTIVEC_ABI.
2869 (rs6000_libcall_value): Likewise.
2870 * config/rs6000/rs6000.h (FUNCTION_VALUE_REGNO_P): Likewise.
2871 (FUNCTION_ARG_REGNO_P): Likewise.
2873 2004-04-24 Ulrich Weigand <uweigand@de.ibm.com>
2875 * expmed.c (expand_mult_highpart_adjust): Do not assume OP1
2877 (expand_mult_highpart_optab): Call expand_mult_highpart_adjust
2878 with NARROW_OP1 instead of OP1.
2880 2004-04-24 Ulrich Weigand <uweigand@de.ibm.com>
2882 * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __s390__
2883 and __s390x__ hosts.
2885 2004-03-23 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
2887 * Makefile.in (LIBGCOV): Add _gcov_fork, _gcov_execl, _gcov_execlp,
2888 _gcov_execle, _gcov_execv, _gcov_execvp, _gcov_execve.
2889 * builtin-types.def (BT_PID, BT_PTR_CONST_STRING, BT_FN_PID,
2890 BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
2891 BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING): New.
2892 * builtins.c (expand_builtin_fork_or_exec): New.
2893 (expand_builtin): Call it.
2894 * builtins.def (BUILT_IN_EXECL, BUILT_IN_EXECLP,BUILT_IN_EXECLE,
2895 BUILT_IN_EXECV, BUILT_IN_EXECVP, BUILT_IN_EXECVE, BUILT_IN_FORK): New.
2896 * c-common.c (PID_TYPE): New macro.
2897 (c_common_nodes_and_builtins): Initialize pid_type_node.
2898 * calls.c (special_function_p): Do not handle fork and exec.
2899 (expand_call): Do not handle ECF_FORK_OR_EXEC.
2900 * gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
2901 __gcov_execv, __gcov_execvp, __gcov_execve): Declare.
2902 * libgcov.c (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
2903 __gcov_execv, __gcov_execvp, __gcov_execve): New.
2904 * tree.h (enum tree_index): Add TI_PID_TYPE.
2905 (pid_type_node): New macro.
2906 (ECF_FORK_OR_EXEC): Removed.
2908 2004-04-23 Eric Botcazou <ebotcazou@libertysurf.fr>
2910 PR optimization/13985
2911 * cfgloopmanip.c (fix_loop_placements): New prototype.
2912 Call fix_bb_placements on the preheader of loops that have
2914 (remove_path): Adjust call to fix_loop_placements.
2916 2004-04-23 Andrew Pinski <pinskia@physics.uc.edu>
2918 * config/darwin7.h: New file.
2919 * config.gcc (*-*-darwin*): Add darwin7.h if the
2920 version is greater than 6.
2921 * config/darwin.h (TARGET_C99_FUNCTIONS): Define.
2922 (MATH_LIBRARY): Wrap in ifdefs.
2924 2004-04-23 Daniel Jacobowitz <drow@mvista.com>
2926 * config/arm/arm.c (arm_output_epilogue): Reverse the order of
2927 loading iWMMXt registers with a frame pointer. Use post-increment
2928 without a frame pointer.
2929 (arm_expand_prologue): Reverse the order of saving iWMMXt registers.
2931 2004-04-23 Paolo Bonzini <bonzini@gnu.org>
2933 * doc/invoke.texi (Optimize Options): Refer to "unit-at-a-time
2934 mode" rather than "-funit-at-a-time" since -O2 enables it
2935 without requiring -f* options. Refer to -fprofile-generate and
2936 -fprofile-use correctly. Move -funit-at-a-time among options
2937 enabled by -O. Add information about unit-at-a-time caveats.
2939 2004-04-22 Per Bothner <per@bothner.com>
2941 * line-map.h (struct line_maps): New field highest_line.
2942 (linemap_position_for_column): Make non-inline function.
2943 (LINEMAP_POSITION_FOR_COLUMN): New macro.
2944 * line-map.c (linemap_init): Clear highest_line field.
2945 (linemap_add): Set highest_line field.
2946 (linemap_line_start): Minor optimization - use highest_line field.
2947 Reduce maximum column hint to 10000. Update highest_line field.
2948 (linemap_position_for_column): Moved from line-map.h. Optimize a bit.
2949 * cpphash.h (struct cpp_reader): Remove line field - instead use
2950 line_table->highest_line.
2951 (saved_line): Remove unused field.
2952 (CPP_INCREMENT_FILE): Don't do linemap_lookup - just use newest map.
2953 Use line_table's highest_line field instead of cpp_reader's line.
2954 * cpplib.c (start_directive): Likewise use highest_line field.
2955 (do_line, do_linemarker): Likewise just use newest map.
2956 (_cpp_do_file_change): Don't need to set cpp_reader's line field.
2957 * cpperror.c (cpp_error): Likewise use highest_line field.
2958 * cppfiles.c (open_file_failed: Likewise.
2959 (cpp_make_system_header): Likewise use newest map and highest_line.
2960 * cppinit.c (cpp_create_reader): Don't initialize removed field.
2961 * cpplex.c (_cpp_process_line_notes, _cpp_skip_block_comment,
2962 skip_line_comment, skip_whitespace, _cpp_get_fresh_line,
2963 _cpp_lex_direct): Likewise use highest_line.
2964 (_cpp_lex_direct): Use new LINEMAP_POSITION_FOR_COLUMN macro.
2965 * cppmacro.c (_cpp_builtin_macro_text): Likewise use highest_line,
2967 * cpppch.c (cpp_read_state): Don't save+restore cpp_reader's line.
2968 * cpptrad.c (_cpp_overlay_buffer): Don't save cpp_reader's line.
2969 (copy_comment, _cpp_scan_out_logical_line): Likewise use highest_line.
2971 2004-04-23 Alan Modra <amodra@bigpond.net.au>
2974 * gcc.c (init_gcc_specs): Test USE_LD_AS_NEEDED, not HAVE_LD_AS_NEEDED.
2975 * config/linux.h (USE_LD_AS_NEEDED): Define.
2976 * gcc/config/alpha/linux.h (USE_LD_AS_NEEDED): Define.
2977 * gcc/config/arm/linux-elf.h (USE_LD_AS_NEEDED): Define.
2978 * gcc/config/rs6000/linux.h (USE_LD_AS_NEEDED): Define.
2979 * gcc/config/rs6000/linux64.h (USE_LD_AS_NEEDED): Define.
2980 * gcc/config/sh/linux.h (USE_LD_AS_NEEDED): Define.
2981 * gcc/config/sparc/linux.h (USE_LD_AS_NEEDED): Define.
2982 * gcc/config/sparc/linux64.h (USE_LD_AS_NEEDED): Define.
2984 2004-04-22 Per Bothner <per@bothner.com>
2986 * cppinit.c (cpp_read_main_file): Return NULL rather than false.
2987 Fixes PR preprocessor/15067.
2989 2004-04-23 Andreas Schwab <schwab@suse.de>
2991 * config/ia64/ia64intrin.h: Add intermediate cast to void * to
2992 avoid aliasing warning.
2994 2004-04-22 Jan Hubicka <jh@suse.cz>
2995 Mostafa Hagog <mustafa@il.ibm.com>
2997 * cfgloopmanip.c (scale_bbs_frequencies): Use RDIV macro
2998 * cfgloopanal.c (expected_loop_iterations): Change the return value
3000 2004-04-22 Jakub Jelinek <jakub@redhat.com>
3002 * cselib.h (struct elt_loc_list): Remove canon_loc field.
3003 * cselib.c (new_elt_loc_list): Remove canon_loc initialization.
3004 (cselib_invalidate_mem): Remove all canon_loc and canon_x
3007 2004-04-22 Josef Zlomek <zlomekj@suse.cz>
3010 2004-04-20 Josef Zlomek <zlomekj@suse.cz>
3012 * var-tracking.c (variable_part_different_p): Variable parts
3013 differ when the most recent locations differ.
3015 2004-04-22 Richard Sandiford <rsandifo@redhat.com>
3017 * doc/invoke.texi: Remove the MIPS -membedded-pic option.
3018 * config/mips/mips-protos.h (embedded_pic_fnaddr_reg): Delete.
3019 (embedded_pic_offset): Delete.
3020 * config/mips/mips.h (MASK_EMBEDDED_PIC): Delete. Shuffle other
3022 (TARGET_EMBEDDED_PIC): Delete.
3023 (TARGET_SWITCHES): Remove -m{no-,}embedded-pic.
3024 (ASM_SPEC): Remove -membedded-pic.
3025 (ASM_OUTPUT_ADDR_DIFF_ELT): Remove embedded-pic handling.
3026 (ASM_OUTPUT_CASE_LABEL): Likewise.
3027 * config/mips/vxworks.h (ASM_SPEC): Remove -membedded-pic.
3028 * config/mips/windiss.h (ASM_SPEC): Likewise.
3029 * config/mips/mips.c (struct machine_function): Remove
3030 embedded_pic_fnaddr_rtx.
3031 (TARGET_ENCODE_SECTION_INFO): Remove override.
3032 (embedded_pic_fnaddr_reg, embedded_pic_offset): Delete.
3033 (override_options): Remove -membedded-pic handling.
3034 (print_operand): Remove handling of '%S'.
3035 (mips_select_section: Remove -membedded-pic handling.
3036 (mips_encode_section_info): Delete.
3037 (mips_output_conditional_branch): Remove mention of -membedded-pic.
3038 * config/mips/mips.md (define_attr length, movsi, movdi, jump): Remove
3039 -membedded-pic handling.
3040 (casesi, casesi_internal, casesi_internal_di, get_fnaddr): Delete.
3042 2004-04-22 Alan Modra <amodra@bigpond.net.au>
3044 * var-tracking.c (frame_base_decl): Remove useless GTY.
3046 2004-04-21 Aldy Hernandez <aldyh@redhat.com>
3048 * config/rs6000/rs6000.c (rs6000_override_options): Error when
3049 user wants altivec and e500 instructions.
3051 2004-04-21 H.J. Lu <hongjiu.lu@intel.com>
3054 * config/ia64/crtend.asm: Move pointer to __do_global_ctors_aux
3055 in .init_array section to ...
3056 * config/ia64/crtbegin.asm: Here.
3058 * config/ia64/crtend.asm: Mark __do_global_ctors_aux global
3059 and hidden if HAVE_INITFINI_ARRAY is defined.
3061 2004-04-21 James E Wilson <wilson@specifixinc.com>
3063 * config/mips/mips-protos.h (fp_register_operand, lo_operand): Declare.
3064 * config/mips/mips.c (mips_multipass_dfa_lookahead): Declare.
3065 (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): New.
3066 (fp_register_operand, lo_operand): New.
3067 (mips_rtx_costs): Add TUNE_SB1 support.
3068 (mips_issue_rate): Add comment. Add PROCESSOR_SB1 support.
3069 (mips_use_dfa_pipeline_interface): Add PROCESSOR_SB1 support.
3070 (mips_multipass_dfa_lookahead): New.
3071 * config/mips/mips.h (MASK_FP_EXCEPTIONS, TARGET_FP_EXCEPTIONS,
3073 (TARGET_SWITCHES): Add -mfp-exceptions support.
3074 (TARGET_FP_EXCEPTIONS_DEFAULT): New.
3075 (BRANCH_COST): Fix whitespace.
3076 * config/mips/mips.md: Include sb1.md.
3077 * config/mips/sb1.md: New file.
3078 * doc/invoke.texi: Document -mfp-exceptions.
3080 * Makefile.in (fixinc.sh): Don't set or export WARN_CFLAGS. Fix
3082 * fixinc/Makefile.in (FL_LIST): Don't mention WARN_CFLAGS.
3083 (fixincl.o-warn): Delete.
3085 2004-04-21 Andrew Pinski <pinskia@physics.uc.edu>
3087 * config/rs6000/rs6000 (print_operand) ['z']:
3088 Change ifdef of TARGET_MACHO to if TARGET_MACHO.
3090 2004-04-21 Daniel Jacobowitz <drow@mvista.com>
3092 * config.gcc: Support --with-arch=iwmmxt for ARM.
3094 2004-04-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3096 * expmed.c (expand_mult_highpart_optab): Use narrower version of OP1
3097 in two more places; remove unneeded force_reg
3099 2004-04-21 Andrew Pinski <pinskia@physics.uc.edu>
3101 * config/rs6000/rs6000.c (symbol_ref_operand): Remove hack
3103 (print_operand): For TARGET_MACHO check to see if we need a stub
3104 and output one if we need it.
3107 * dwarf2out.c (rtl_for_decl_location): Check for NULL
3110 2004-04-20 James E Wilson <wilson@specifixinc.com>
3112 * config/ia64/ia64.md (call_value_nogp): Add constraints for op0.
3113 (vall_value_gp): Likewise.
3115 2004-04-20 DJ Delorie <dj@redhat.com>
3117 * dwarf2out.c (rtl_for_decl_location): Adjust rtl for byte
3118 variables stored in word registers, then in memory.
3120 2004-04-20 Eric Christopher <echristo@redhat.com>
3122 * cp/parser.c (cp_parser_declaration): Move translate
3123 up before tokens are lexed.
3125 2004-04-20 Uros Bizjak <uros@kss-loka.si>
3127 * optabs.h (enum optab_index): Add new OTI_asin and OTI_acos.
3128 (asin_optab, acos_optab): Define corresponding macros.
3129 * optabs.c (init_optabs): Initialize asin_optab and acos_optab.
3130 * genopinit.c (optabs): Implement asin_optab and acos_optab
3131 using asin?f2 and acos?f2 patterns.
3132 * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_ASIN{,F,L}
3133 using asin_optab, and BUILT_IN_ACOS{,F,L} using acos_optab.
3134 (expand_builtin): Expand BUILT_IN_ASIN{,F,L} and BUILT_IN_ACOS{,F,L}
3135 using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
3137 * config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2,
3138 acossf2, acosxf2): New expanders to implement asin, asinf, asinl,
3139 acos, acosf and acosl built-ins as inline x87 intrinsics.
3141 2004-04-20 Paul Brook <paul@codesourcery.com>
3143 * config/arm/arm.c (arm_legitimate_address_p): Use rtx_equal_p.
3145 2004-04-20 Paul Brook <paul@codesourcery.com>
3147 * config/arm/arm.c (arm_expand_prologue): Fix size calculation.
3149 2004-04-20 Paolo Bonzini <bonzini@gnu.org>
3151 Revert part of 2004-04-17 change that moved -frename-registers
3152 to -O1. -frename-registers is buggy.
3154 * toplev.c (flag_rename_registers): Initialize to 0.
3155 * doc/invoke.texi (Optimize options): Move -frename-registers
3156 to "Not triggered by any -O level" section. Adjust commentary
3159 2004-04-20 Anil Paranjpe <anilp1@kpitcummins.com>
3161 * toplev.c (compile_file): Move targetm.asm_out.file_end call to end.
3163 2004-04-20 Richard Sandiford <rsandifo@redhat.com>
3165 * config/mips/mips.c (mips_legitimize_move): Generate special patterns
3166 for mflo and mfhi instructions.
3167 (mips_output_move): Remove mflo and mfhi handling.
3168 * config/mips/mips.md (UNSPEC_MFHILO): New unspec.
3169 (*mulsidi3_64bit): Update for new mfhi/mflo representation.
3170 Likewise various define_peephole2s.
3171 (*movdi_32bit, *movdi_64bit, *movsi_internal): Merge x<-J and x<-d
3173 (*movdi_64bit, *movdi_64bit_mips16, *mov[shq]i_internal)
3174 (*mov[shq]i_mips16): Remove mflo and mfhi alternatives.
3175 (mfhilo_di, mfhilo_si): New patterns.
3177 2004-04-20 Josef Zlomek <zlomekj@suse.cz>
3179 * function.c (assign_parms): Force
3180 MEM_EXPR (DECL_INCOMING_RTL (parm)) == parm.
3182 2004-04-20 Josef Zlomek <zlomekj@suse.cz>
3184 * var-tracking.c (variable_part_different_p): Variable parts differ
3185 when the most recent locations differ.
3187 2004-04-19 James E Wilson <wilson@specifixinc.com>
3189 * rtl.h (reg_set_last): Delete declaration.
3190 * rtlanal.c (reg_set_last): Delete.
3192 2004-04-19 Roger Sayle <roger@eyesopen.com>
3194 * fold-const.c (fold_convert): Make function extern/public.
3195 * tree.h (fold_convert): Prototype here.
3196 * builtins.c (expand_builtin_strstr, expand_builtin_strchr,
3197 expand_builtin_strrchr, expand_builtin_strpbrk,
3198 expand_builtin_mempcpy, expand_builtin_bcopy,
3199 expand_builtin_bzero, expand_builtin_memcmp,
3200 expand_builtin_strcmp, expand_builtin_strncmp,
3201 stabilize_va_list, expand_builtin_sprintf,
3202 fold_trunc_transparent_mathfn, fold_builtin_logarithm,
3203 fold_builtin_exponent, fold_builtin_mempcpy,
3204 fold_builtin_strcpy, fold_builtin_strcmp, fold_builtin_strncmp,
3205 fold_builtin_signbit, fold_builtin_isdigit, fold_builtin): Prefer
3206 fold_convert to "convert" or "fold (build1 (NOP_EXPR, ...))".
3208 2004-04-19 Aldy Hernandez <aldyh@redhat.com>
3210 * config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): New constant.
3211 (move_from_CR_gt_bit): New.
3212 (cceq_ior_compare): Name previously unnamed pattern. Disable for
3214 (cceq_rev_compare): Name previously unnamed pattern. Allow for
3217 * config/rs6000/spe.md (cmpsfeq_gpr): Rewrite as unspec.
3218 (tstsfeq_gpr): Same.
3219 (cmpsfgt_gpr): Same.
3220 (tstsfgt_gpr): Same.
3221 (cmpsflt_gpr): Same.
3222 (tstsflt_gpr): Same.
3223 (e500_cceq_ior_compare): New.
3224 (e500_flip_gt_bit): New.
3226 * config/rs6000/rs6000.c (ccr_bit): Remove E500 specific code.
3227 (print_operand): Add 'c' and 'D'.
3228 (rs6000_generate_compare): Rewrite to generate correct rtl.
3229 (rs6000_emit_sCOND): Handle E500.
3230 (output_cbranch): Adjust for changes in rs6000_generate_compare.
3231 (output_e500_flip_gt_bit): New.
3233 * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit):
3236 2004-04-19 Eric Christopher <echristo@redhat.com>
3238 * config/mips/mips.h (DWARF2_ADDR_SIZE): New.
3240 2004-04-19 David Edelsohn <edelsohn@gnu.org>
3242 * doc/install.texi (*-ibm-aix*): Add AIX 5.1 assembler and archiver
3245 2004-04-19 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
3247 * doc/install.texi (Specific, mips-sgi-irix5): Fix IRIX 5.3 IDO
3250 2004-04-19 Daniel Jacobowitz <drow@mvista.com>
3252 * stor-layout.c (layout_decl): Check DECL_PACKED before calling
3253 ADJUST_FIELD_ALIGN. Check maximum_field_alignment after.
3255 2004-04-19 Andrew PInski <pinskia@physics.uc.edu>
3257 * builtins.c (fold_builtin_cabs): Remove fndecl parameter.
3258 (fold_builtin): Update caller to match.
3261 * bb-reorder.c (fix_up_fall_thru_edges): Init cond_jump.
3264 * builtins.c (fold_builtin_cabs): Mark fndecl as unused.
3266 2004-04-19 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3268 * varasm.c (compare_constant, case VIEW_CONVERT_EXPR): Add case.
3270 * expmed.c (expand_mult_highpart_adjust): Make OP1 valid for MODE.
3271 (expand_mult_highpart_optab): Likewise.
3272 (expand_mult_highpart): Make OP1 valid for WIDER_MODE, not MODE.
3274 2004-04-19 Paul Brook <paul@codesourcery.com>
3276 * config/arm/arm.md (fixuns_truncsfsi2, fixuns_truncdfsi2,
3277 floatunssisf2, floatunssidf2): New patterns.
3279 2004-04-18 Mark Mitchell <mark@codesourcery.com>
3282 * doc/invoke.texi (-fprofile-generate): Document requirement to
3283 use -fprofile-generate when linking.
3285 * doc/extend.texi (Strong Using): Warn users against using this
3288 2004-04-18 Richard Sandiford <rsandifo@redhat.com>
3290 * config/mips/mips-protos.h (m16_usym8_4, m16_usym5_4): Delete.
3291 * config/mips/mips.h (mips_entry, mips_string_length): Delete.
3292 (CONSTANT_POOL_BEFORE_FUNCTION, ASM_OUTPUT_POOL_EPILOGUE): Undefine.
3293 * config/mips/mips.c (struct mips16_constant): Renamed from struct
3294 constant. Propogate change throughout file.
3295 (struct machine_function): Remove insns_len.
3296 (mips_string_length, mips16_strings, string_constants): Delete.
3297 (mips_classify_symbol): Return SYMBOL_CONSTANT_POOL for LABEL_REFs
3298 when generating mips16 code. Remove special mips16 treatment of
3300 (mips_symbolic_constant_p): Allow mips16 constant pool accesses
3301 to have the form LABEL+CONSTANT.
3302 (mips_symbolic_address_p): Fix comment.
3303 (m16_usym8_4, m16_usym5_4): Delete.
3304 (mips_output_function_epilogue): Remove mips16 string handling.
3305 (mips_output_mi_thunk): Call mips16_lay_out_constants.
3306 (mips_select_section, mips_encode_section_info): Remove mips16
3308 (struct mips16_constant_pool): New.
3309 (add_constant): Take a mips16_constant_pool structure. Keep pool
3310 sorted into order of ascending mode size. Keep track of the highest
3311 possible start address, taking padding and the masking of the base PC
3313 (dump_constants_1): New function, split out from dump_constants.
3314 Handle vector constants. Use gen_consttable_{int,float} rather than
3315 separate functions for each mode.
3316 (dump_constants): Simplify. Use GET_MODE_ALIGNMENT. Use gen_align
3317 rather than separate functions for each alignment.
3318 (mips_find_symbol): Delete.
3319 (mips16_insn_length): New function, split out from
3320 mips16_lay_out_constants.
3321 (mips16_rewrite_pool_refs): New function.
3322 (mips16_lay_out_constants): Rework. Remove string handling.
3323 Always create an inline constant pool.
3324 * config/mips/mips.md (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT)
3325 (UNSPEC_ALIGN): New constants.
3326 (UNSPEC_CONSTTABLE_[QHSD]I, UNSPEC_CONSTTABLE_[SD]F): Delete.
3327 (UNSPEC_ALIGN_[248]): Delete.
3328 (consttable_int, consttable_float, align): New patterns.
3329 (consttable_[qhsd]i, consttable_[sd]f, align_[248]): Delete.
3331 2004-04-17 Aldy Hernandez <aldyh@redhat.com>
3333 * config/rs6000/altivec.h (vec_any_numeric): Correct typo in
3336 2004-04-17 Alan Modra <amodra@bigpond.net.au>
3339 * config/rs6000/rs6000.c (rs6000_stack_info): Make parm_size agree
3340 with STARTING_FRAME_OFFSET.
3342 2004-04-17 Richard Sandiford <rsandifo@redhat.com>
3344 * config/mips/mips.h (PREDICATE_CODES): Add macc_msac_operand.
3345 * config/mips/mips.c (macc_msac_operand): New function.
3346 * config/mips/mips.md (*msac): Move after *macc.
3347 (*msac2): New. Generalize macc-related peepholes so that they apply
3350 2004-04-17 Paolo Bonzini <bonzini@gnu.org>
3352 * opts.c (decode_options): Do not enable flag_rename_registers
3353 and flag_web at -O3.
3354 * toplev.c (flag_rename_registers): Initialize
3355 flag_rename_registers and flag_web to
3356 AUTODETECT_FLAG_VAR_TRACKING.
3357 (default_debug_hooks): New global.
3358 (process_options): Initialize default_debug_hooks. Warn if
3359 -fvar-tracking specified but not supported by the current
3360 debug format. Do not run var tracking at -O0 or if not
3361 supported by the current debug format, even if
3362 -fvar-tracking was given. If -fno-rename-registers
3363 is not specified, always run register renaming if var
3364 tracking is supported by the default debugging information
3365 format for the target, and we are at -O1 or higher; similarly
3366 for -fweb, but only at -O2 or higher.
3367 * doc/invoke.texi (Optimize Options): Document this.
3369 2004-04-17 Richard Sandiford <rsandifo@redhat.com>
3371 * configure.ac (gcc_cv_ld_as_needed): Use AC_CACHE_CHECK.
3372 * configure: Regenerate.
3374 2004-04-17 Richard Sandiford <rsandifo@redhat.com>
3376 * gcc.c (used_arg): Check whether an option has been removed.
3378 2004-04-17 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
3380 * config.gcc (i[34567]86-*-solaris2*): Default to DWARF-2
3381 debugging on Solaris 7 and up.
3383 2004-04-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
3385 * doc/install.texi (Specific, mips-sgi-irix5): Reflect working
3387 Remove -save-temps workaround, handled automatically.
3388 Require GNU binutils 2.15 for debugging.
3389 Remove SGI make warnings since GNU make is now required.
3390 (Specific, mips-sgi-irix6): Some markup fixes.
3391 Describe MIPSpro C problems and workarounds.
3392 Mention working O32 ABI support.
3393 Recommend GNU as 2.15 for O32 with debugging.
3394 Remove description of fixed structure pass/return bug.
3396 2004-04-16 DJ Delorie <dj@redhat.com>
3398 * sdbout.c (sdbout_one_type): Use TYPE_VALUES for enums, not
3400 (sdbout_finish): Don't free deferred_global_decls; it's GC'd.
3402 2004-04-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
3404 * pa.md: Remove unnecessary declarations for asm_out_file.
3406 * pa64-regs.h (DBX_REGISTER_NUMBER): Simplify and correct mapping of
3407 SAR register. Fix comment.
3408 (ADDITIONAL_REGISTER_NAMES): Correct register number of SAR register
3411 * pa64-hpux.h (LIB_SPEC): Fix library specification used with GNU ld.
3413 2004-04-16 Nick Clifton <nickc@redhat.com>
3415 * config/arm/arm.c (arm_override_options): Revert previous patch.
3416 * config/arm/t-xscale-elf: Disable iwmmxt multilibs until they can
3419 2004-04-16 Kazuhiro Inaoka <inaoka dot kazuhiro at renesas dot com>
3421 * config/m32r/m32r.h (BIG_ENDIAN_BIT): Deleted to fix endian
3423 (TARGET_LITTLE_ENDIAN, TARGET_BIG_ENDIAN,
3424 TARGET_DEFAULT): Changed. Ditto.
3425 (LITTLE_ENDIAN_BIT, TARGET_CPU_DEFAULT,
3426 TARGET_ENDIAN_DEFAULT): Added. Ditto.
3427 * config/m32r/little.h (TARGET_LITTLE_ENDIAN): Deleted.
3428 (TARGET_ENDIAN_DEFAULT): Added.
3430 2004-04-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3432 * builtins.def (BUILT_IN_ISDIGIT, BUILT_IN_ISXDIGIT): Mark with
3433 ATTR_CONST_NOTHROW_LIST.
3435 2004-04-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3438 * builtins.c (expand_builtin_signbit): Test BYTES_BIG_ENDIAN, not
3441 2004-04-15 Pat Haugen <pthaugen@us.ibm.com>
3443 * ra-debug.c (ra_print_rtx): Add break's to case legs.
3445 2004-04-14 James E Wilson <wilson@specifixinc.com>
3447 * Makefile.in (fixinc.sh): Set WARN_CFLAGS to empty string.
3449 2004-04-14 Nathanael Nerode <neroden@gcc.gnu.org>
3451 * libada-mk.in: New file.
3452 * configure.ac: Create libada-mk from libada-mk.in.
3453 * configure: Regenerate.
3455 2004-04-14 Uros Bizjak <uros@kss-loka.si>
3457 * optabs.h (enum optab_index): Add new OTI_logb and OTI_ilogb.
3458 (logb_optab, ilogb_optab): Define corresponding macros.
3459 * optabs.c (init_optabs): Initialize logb_optab and ilogb_optab.
3460 * genopinit.c (optabs): Implement logb_optab and ilogb_optab
3461 using logb?f2 and ilogb?i2 patterns.
3462 * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOGB{,F,L}
3463 using logb_optab, and BUILT_IN_ILOGB{,F,L} using ilogb_optab.
3464 (expand_builtin): Expand BUILT_IN_LOGB{,F,L} and BUILT_IN_ILOGB{,F,L}
3465 using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
3467 * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_XTRACT_FRACT
3468 and UNSPEC_XTRACT_EXP.
3470 * config/i386/i386.md (*fxtractdf3, *fxtractsf3, *fxtractxf3): New
3471 patterns to implement fxtract x87 instruction.
3472 (logbdf2, logbsf2, logbxf2, ilogbsi2): New expanders to implement
3473 logb, logbf, logbl, ilogb, ilogbf and ilogbl built-ins as inline x87
3475 (UNSPEC_XTRACT_FRACT, UNSPEC_XTRACT_EXP): New unspecs to represent
3478 2004-04-14 Eric Christopher <echristo@redhat.com>
3480 * config/mips/t-elf: Enable multilibs by default.
3482 2004-04-14 Andreas Tobler <a.tobler@schweiz.ch>
3484 * bb-reorder.c (fix_crossing_conditional_branches): Adjust the
3485 previous fix to check HAVE_return at runtime too.
3487 2004-04-14 Nick Clifton <nickc@redhat.com>
3489 * config/arm/arm.c (arm_override_options): If the user has not
3490 specified an ABI, then default to AAPCS for the iWMMXt processor.
3491 * config/arm/t-xscale-elf: Remove redundant multilib specifications.
3492 * config/arm/t-xscale-coff: Likewise.
3494 2004-04-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3496 * builtins.c (fold_builtin_isdigit): New.
3497 (fold_builtin): Handle BUILT_IN_ISDIGIT.
3498 * defaults.h: Add TARGET_DIGIT0 and sort.
3499 * doc/tm.texi: Add TARGET_BS and TARGET_DIGIT0.
3501 2004-04-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3503 * builtins.c (fold_builtin_cabs, fold_builtin): Use
3504 `mathfn_built_in' to determine the new builtin.
3505 * fold-const.c (fold): Likewise.
3507 2004-04-14 Richard Sandiford <rsandifo@redhat.com>
3509 * doc/invoke.texi: Rename MIPS's -mfix-vr4122-bugs to -mfix-vr4120.
3510 * config/mips/mips.h (MASK_FIX_VR4120): Renamed from MASK_FIX_VR4122.
3511 (TARGET_FIX_VR4120): Likewise TARGET_FIX_VR4122.
3512 (TARGET_SWITCHES): Replace -mfix-vr4122-bugs with -mfix-vr4120.
3513 (ASM_SPEC): Update accordingly.
3514 * config/mips/mips.c: Update after above renaming.
3515 * config/mips/mips.md, config/mips/t-vr, config/mips/vr.h: Likewise.
3516 * config/mips/vr4120-div.S: Renamed from vr4122-div.S.
3518 2004-04-13 James E Wilson <wilson@specifixinc.com>
3520 * c-opt.c (c_common_post_options): If this_input_filename is NULL,
3521 increment errorcount and return false instead of true.
3523 2004-04-13 Uros Bizjak <uros@kss-loka.si>:
3525 * optabs.c (expand_twoval_unop): Reorder function arguments.
3526 * builtins.c (expand_builtin_mathfn_3): Update calls to
3529 * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_TAN_ONE
3530 and UNSPEC_TAN_TAN. Add missing comment.
3532 * config/i386/i386.md (*tandf3_1, *tansf3_1, *tanxf3_1): New
3533 patterns to implement fptan x87 instruction.
3534 (tandf2, tansf2, tanxf2): New expanders to implement tan, tanf
3535 and tanl built-ins as inline x87 intrinsics. Define corresponding
3536 peephole2 optimizers for 'fptan; fstp %st(0); fld1' sequence.
3537 (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): New unspecs to represent
3540 2004-03-13 Richard Henderson <rth@redhat.com>
3542 * bb-reorder.c (fix_crossing_unconditional_branches): Use Pmode
3545 * defaults.h (HOT_TEXT_SECTION_NAME): Add leading dot.
3546 (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Likewise.
3547 * doc/invoke.texi: Update to match.
3549 * varasm.c (unlikely_text_section): Use assemble_align instead of
3550 ASM_OUTPUT_ALIGN. Use it in the correct place with an approximately
3551 correct alignment argument.
3553 2004-04-13 Ulrich Weigand <uweigand@de.ibm.com>
3555 * reload1.c (emit_reload_insns): Set reg_has_output_reload to one
3556 after setting reg_last_reload_reg for optional output reloads.
3558 2004-04-12 Fariborz Jahanian <fjahanian@apple.com>
3560 * config/rs6000/altivec.h (vec_mergeh, vec_mergel):
3561 Definition of these two macros are corrected by adding
3562 matchine right paren.
3564 2004-04-12 Jonathan Larmour <jifl@eCosCentric.com>
3566 * fix-header.c: kill(), putenv() and tzset() are POSIX not ANSI.
3568 2004-04-12 Roger Sayle <roger@eyesopen.com>
3570 * config/i386/i386.c (output_387_reg_move): New function.
3571 * config/i386/i386-protos.h (output_387_reg_move): Prototype here.
3572 * config/i386/i386.md (*movsf_1, *movsf1_nointerunit,
3573 *movdf_nointeger, *movdf_integer, *movxf_nointeger, *movxf_integer,
3574 *extendsfdf2_1, *extendsfxf2_1, *extenddfxf2_1, truncdfsf2_noop,
3575 truncxfsf2_noop, truncxfdf2_noop): Call output_387_reg_move.
3577 2004-04-12 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3579 * c-decl.c (finish_decl): Make a decl_stmt for a variable-sized
3581 * c-semantics.c (genrtl_decl_stmt): Handle TYPE_DECL.
3582 * stmt.c (expand_decl): Remove redundant expansion of TYPE_DOMAIN.
3583 * stor-layout.c (variable_size): Don't check for MINUS_EXPR.
3584 Use skip_simple_arithmetic to find SAVE_EXPR.
3585 (force_type_save_exprs, force_type_save_exprs_1): New functions.
3586 * tree-inline.c (remap_type, case POINTER_TYPE, case REFERENCE_TYPE):
3587 Properly chain multiple pointers.
3588 (copy_tree_r): Copy a TYPE_DECL.
3589 * tree.c (variably_modified_type_p): Add some missing tests and
3590 make some other minor changes.
3591 * tree.h (force_type_save_exprs): New declaration.
3593 2004-04-12 Roger Sayle <roger@eyesopen.com>
3595 * simplify-rtx.c (simplify_binary_operation) <UDIV, DIV, UMOD, MOD>:
3596 Remove fall throughs. Convert 0/x and 0%x into x&0 when x has
3597 side-effects. Don't convert x/1.0 into x if we honor signaling NaNs.
3598 Convert x/-1.0 into -x if we don't honor signaling NaNs. Convert
3599 x/-1 into -x. Optimize x%1 into x&0 if x has side-effects. Optimize
3600 x%-1 into 0 (or x&0 if x has side-effects).
3602 2004-04-11 Aldy Hernandez <aldyh@redhat.com>
3604 * config/rs6000/rs6000.md: Document why a pattern is not
3607 * config/rs6000/rs6000.c (rs6000_emit_cmove): Disable comparisons
3608 of floats on the E500.
3609 (branch_positive_comparison_operator): Do not allow NE even on the
3612 2004-04-11 Aldy Hernandez <aldyh@redhat.com>
3614 * config/rs6000/rs6000.c (rs6000_assemble_integer): Change
3615 in_text_unlikely_section to in_unlikely_text_section.
3617 2004-04-11 Roger Sayle <roger@eyesopen.com>
3619 * fold-const.c (fold_binary_op_with_conditional_arg): Tweak
3620 calling convention to allow a NULL_TREE to be returned. Factor
3621 sanity checks from callers, return NULL_TREE when appropriate.
3622 (fold): Handle COMPOUND_EXPR operands of binary expressions
3623 before COND_EXPR operands. Use reorder_operands_p(a,b) to check
3624 whether a op (b,c) can be rewritten as (b, a op c). Simplify
3625 calls to fold_binary_op_with_conditional_arg.
3627 2004-04-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3629 * config/mips/iris5.h (current_section_flags): Add
3630 in_unlikely_executed_text and default case.
3632 2004-04-11 Andreas Tobler <a.tobler@schweiz.ch>
3634 * bb-reorder.c (fix_crossing_conditional_branches): Fix bootstrap
3635 failure on solaris. Place ifdef HAVE_return around gen_ret call.
3636 * cfgrtl.c (force_nonfallthru_and_redirect): Remove ifdef
3637 HAVE_return and place it around the place where it is needed.
3639 2004-04-11 Andrew Pinski <pinskia@physics.uc.edu>
3641 * varasm.c (text_section): Use TEXT_SECTION_ASM_OP and
3642 ASM_OUTPUT_ALIGN instead of SECTION_FORMAT_STRING
3643 and NORMAL_TEXT_SECTION_NAME.
3644 (unlikely_text_section): Check targetm.have_named_sections
3645 instead of TARGET_ASM_NAMED_SECTION and use TEXT_SECTION_ASM_OP
3646 instead of SECTION_FORMAT_STRING.
3647 * config/mips/iris5.h (current_section_name): Add
3648 in_unlikely_executed_text case and move the abort into the switch.
3649 * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME): Remove.
3650 (NORMAL_TEXT_SECTION_NAME): Remove.
3651 (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove.
3652 (SECTION_FORMAT_STRING): Remove.
3653 * defaults.h (SECTION_FORMAT_STRING): Remove.
3654 * tm.texi (NORMAL_TEXT_SECTION_NAME): Remove.
3655 (SECTION_FORMAT_STRING): Remove.
3657 2004-04-10 Joseph S. Myers <jsm@polyomino.org.uk>
3659 * c-typeck.c (common_type): Prefer long long to long when same
3662 2004-04-09 Zack Weinberg <zack@codesourcery.com>
3665 * config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Look only at
3667 * config/ia64/ia64.c (ia64_hpux_file_end): Check
3668 TREE_SYMBOL_REFERENCED on DECL_ASSEMBLER_NAME, not DECL_NAME.
3670 2004-04-09 Roger Sayle <roger@eyesopen.com>
3672 * simplify-rtx.c (mode_signbit_p): New function to check whether
3673 an RTX is an immediate constant that represents the most significant
3674 bit of a given machine mode.
3675 (simplify_unary_operation) <NOT>: Optimize ~(X+C) as X ^ ~C, where
3677 (simplify_binary_operation) <PLUS>: Optimize (X^C1) + C2 as X^(C1^C2)
3678 when C2 is the sign bit.
3679 (simplify_binary_operation) <XOR>: Canonicalize X^C as X+C when C
3680 is the sign bit. Optimize (X+C1) ^ C2 as X^(C1^C2) when C1 is the
3683 2004-04-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3685 * builtins.c (mathfn_built_in): Check TYPE_MAIN_VARIANT, not
3688 2004-04-09 Andrew Pinski <pinskia@physics.uc.edu>
3690 * c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead
3691 of TREE_READONLY for types.
3693 2004-04-09 Caroline Tice <ctice@apple.com>
3695 * basic-block.h (struct edge_def): Add new field, crossing_edge.
3696 (struct basic_block_def): Add new field, partition.
3697 (UNPARTITIONED, HOT_PARTITION, COLD_PARTITION): New constant macro
3699 (partition_hot_cold_basic_blocks): Add extern function
3701 * bb-reorder.c (function.h, obstack.h, expr.h, regs.h): Add four new
3703 (N_ROUNDS): Increase the maximum number of rounds by 1.
3704 (branch_threshold): Add array value for new round.
3705 (exec_threshold): Add array value for new round.
3706 (push_to_next_round_p): New function.
3707 (add_unlikely_executed_notes): New function.
3708 (find_rarely_executed_basic_blocks_and_crossing_edges): New function.
3709 (mark_bb_for_unlikely_executed_section): New function.
3710 (add_labels_and_missing_jumps): New function.
3711 (add_reg_crossing_jump_notes): New function.
3712 (fix_up_fall_thru_edges): New function.
3713 (find_jump_block): New function.
3714 (fix_crossing_conditional_branches): New function.
3715 (fix_crossing_unconditional_branches): New function.
3716 (fix_edges_for_rarely_executed_code): New function.
3717 (partition_hot_cold_basic_blocks): New function.
3718 (find_traces): Add an extra round for partitioning hot/cold
3720 (find_traces_1_round): Add a parameter. Modify to push all cold blocks,
3721 and only cold blocks, into the last (extra) round of collecting traces.
3722 (better_edge_p): Add a parameter. Modify to favor non-crossing edges
3723 over crossing edges.
3724 (bb_to_key): Add code to correctly identify cold blocks when
3726 (connect_traces): Modify to connect all the non-cold traces first, then
3727 go back and connect up all the cold traces.
3728 (reorder_basic_blocks): Add call to add_unlikely_executed_notes.
3729 * cfg.c (entry_exit_blocks): Add initialization for partition field in
3730 entry and exit blocks.
3731 * cfgbuild.c (make_edges): Update current_function_has_computed_jump
3732 if we are doing hot/cold partitioning.
3733 * cfgcleanup.c (cfglayout.h): Add new include statement.
3734 (try_simplify_condjump): Modify to not attempt on blocks with jumps
3735 that cross section boundaries.
3736 (try_forward_edges): Likewise.
3737 (merge_blocks_move_predecessor_nojumps): Likewise.
3738 (merge_blocks_move_successor_nojumps): Likewise.
3739 (merge_blocks_move): Likewise.
3740 (try_crossjump_to_edge): Modify to not attempt after we have done
3741 the block partitioning.
3742 (try_crossjump_bb): Modify to not attempt on blocks with jumps that
3743 cross section boundaries.
3744 (try_optimize_cfg): Likewise.
3745 * cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect
3746 jumps that cross section boundaries.
3747 * cfglayout.c (flags.h): Add new include statement.
3748 (update_unlikely_executed_notes): New function.
3749 (fixup_reorder_chain): Add code so when a new jumping basic block is
3750 added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are
3751 updated appropriately.
3752 (duplicate_insn_chain): Add code to duplicate the new NOTE insn
3753 introduced by this optimization.
3754 * cfglayout.h (scan_ahead_for_unlikely_executed_note): Add new
3755 extern function declaration.
3756 * cfgrtl.c (can_delete_note_p): Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to
3757 list of notes that can be deleted.
3758 (create_basic_block_structure): Add initialization for partition field.
3759 (rtl_can_merge_blocks): Modify to test blocks for jumps that cross
3761 (try_redirect_by_replacing_jump): Modify to not attempt on jumps that
3762 cross section boundaries.
3763 (commit_one_edge_insertion): Add code so newly created basic block
3764 ends up in correct (hot or cold) section. Modify to disallow
3765 insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
3766 (rtl_verify_flow_info_1): Add code to verify that no fall_thru edge
3767 crosses section boundaries.
3768 (cfg_layout_can_merge_blocks_p): Modify to test blocks for jumps that
3769 cross section boundaries.
3770 (force_nonfallthru_and_redirect): Modify to make sure new basic block
3771 ends up in correct section, with correct notes attached.
3772 * common.opt (freorder-blocks-and-partition): Add new flag for this
3774 * dbxout.c (dbx_function_end): Add code to make sure scope labels at
3775 the end of functions are written into the correct (hot or cold)
3777 (dbx_source_file): Add code so writing debug file information
3778 doesn't incorrectly change sections.
3779 * defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use
3780 in partitioning hot/cold basic blocks into separate sections.
3781 (SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold
3782 section partitioning.
3783 (HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not
3784 conditional branches can span all of memory.
3785 (HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not
3786 unconditional branches can span all of memory.
3787 * final.c (scan_ahead_for_unlikely_executed_note): New function.
3788 (final_scan_insn): Add code to check for NOTE instruction indicating
3789 whether basic block belongs in hot or cold section, and to make sure
3790 the current basic block is being written to the appropriate section.
3791 Also added code to ensure that jump table basic blocks end up in the
3793 * flags.h (flag_reorder_blocks_and_partition): New flag.
3794 * ifcvt.c (find_if_case_1): Modify to not attempt if conversion if
3795 one of the branches has a jump that crosses between sections.
3796 (find_if_case_2): Likewise.
3797 (ifcvt): Modify to not attempt to mark loop exit edges after
3798 hot/cold partitioning has occurred.
3799 * opts.c (decode_options): Code to handle new flag,
3800 flag_reorder_blocks_and_partition; also to turn it off if
3801 flag_exceptions is on.
3802 (common_handle_option): Code to handle new flag,
3803 flag_reorder_blocks_and_partition.
3804 * output.h (unlikely_text_section): New extern function declaration.
3805 (in_unlikely_text_section): New extern function declaration.
3806 * passes.c (rest_of_handle_stack_regs): Add
3807 flag_reorder_blocks_and_partition as an 'or' condition for calling
3808 reorder_basic_blocks.
3809 (rest_of_handle_reorder_blocks): Add flag_reorder_blocks_and_partition
3810 as an 'or' condition for calling reorder_basic_blocks.
3811 (rest_of_compilation): Add call to partition_hot_cold_basic_blocks.
3812 * print-rtl.c (print_rtx): Add code for handling new note,
3813 NOTE_INSN_UNLIKELY_EXECUTED_CODE
3814 * rtl.c (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below).
3815 (REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that
3816 cross between section boundaries.
3817 * rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note instruction,
3818 indicating the basic block containing it belongs in the cold section.
3819 (REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross
3820 between hot and cold sections.
3821 * toplev.c (flag_reorder_blocks_and_partition): Add code to
3822 initialize this flag, and to tie it to the command-line option
3823 freorder-blocks-and-partition.
3824 * varasm.c (cfglayout.h): Add new include statement.
3825 (unlikely_section_label_printed): New global variable, used for
3826 determining when to output section name labels for cold sections.
3827 (in_section): Add in_unlikely_executed_text to enum data structure.
3828 (text_section): Modify code to use SECTION_FORMAT_STRING and
3829 NORMAL_TEXT_SECTION_NAME macros.
3830 (unlikely_text_section): New function.
3831 (in_unlikely_text_section): New function.
3832 (function_section): Add code to make sure beginning of function is
3833 written into correct section (hot or cold).
3834 (assemble_start_function): Add code to make sure stuff is written to
3835 the correct section.
3836 (assemble_zeros): Add in_unlikely_text_section as an 'or' condition
3837 to an if statement that was checking 'in_text_section'.
3838 (assemble_variable): Add 'in_unlikely_text_section' as an 'or'
3839 condition to an if statement that was checking 'in_text_section'.
3840 (default_section_type_flags_1): Add check: if in cold section
3841 flags = SECTION_CODE.
3842 * config/darwin.c (darwin_asm_named_section): Modify to use
3843 SECTION_FORMAT_STRING if we are partitioning hot/cold blocks.
3844 * config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro
3845 specifically for the i386.
3846 (HAS_LONG_UNCOND_BRANCH): Defined this macro specifically for the i386.
3847 * config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change
3848 text string to something more informative.
3849 (NORMAL_TEXT_SECTION_NAME): Add new definition.
3850 (SECTION_FORMAT_STRING): Add new definition.
3851 * config/rs6000/rs6000.c (rs6000_assemble_integer): Add
3852 '!in_unlikely_text_section' as an 'and' condition to an if statement
3853 that was already checking '!in_text_section'.
3854 * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME,
3855 UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make
3856 sure these are properly defined for linux on ppc.
3857 * doc/invoke.texi (freorder-blocks-and-partition): Add documentation
3859 * doc/rtl.texi (REG_CROSSING_JUMP): Add documentation for new
3861 * doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING,
3862 HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for
3865 2004-04-08 Roger Sayle <roger@eyesopen.com>
3867 * function.c (gen_mem_addressof): When changing the RTX from a REG
3868 to a MEM, clear MEM_VOLATILE_P which was formerly REG_USERVAR_P.
3870 2004-04-08 Roger Sayle <roger@eyesopen.com>
3873 * config/i386/i386.md (truncdfsf2_noop, truncxfsf2_noop,
3874 truncxfdf2_noop): Provide dummy "fmov" implementations.
3876 2004-04-08 Ian Lance Taylor <ian@wasabisystems.com>
3878 * gcc.c (default_compilers): Add missing initializers.
3880 * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
3881 Return 1 if file was successfully mapped.
3883 2004-04-08 Geoffrey Keating <geoffk@apple.com>
3888 * doc/invoke.texi (Precompiled Headers): Suggest -o
3889 to put an output file in a particular place. Be more detailed
3890 about which options affect PCH validity and which options
3892 * c-pch.c (pch_matching): New.
3894 (struct c_pch_validity): New field 'match'.
3895 (pch_init): Handle pch_matching.
3896 (c_common_valid_pch): Check pch_matching.
3898 * explow.c: Fix typo defining default of PROMOTE_FUNCTION_MODE.
3900 2004-04-08 Mark Mitchell <mark@codesourcery.com>
3902 * doc/invoke.texi (Precompiled Headers): Warn about known
3905 2004-04-08 Danny Smith <dannysmith@users.sourceforge.net>
3908 * defaults.h (TARGET_USE_LOCAL_THUNK_ALIAS_P): New macro. Default
3909 to 1 if ASM_OUTPUT_DEF is defined.
3910 * doc/tm.texi (TARGET_USE_LOCAL_THUNK_ALIAS_P): Document.
3911 * config/i386/cygming.h (TARGET_USE_LOCAL_THUNK_ALIAS_P): Define.
3912 Set to non-zero iff not a one_only decl.
3914 2004-04-08 Paul Brook <paul@codesourcery.com>
3916 * arm.h (CLASS_LIKELY_SPILLED_P): Define.
3918 2004-04-08 Paul Brook <paul@codesourcery.com>
3920 * explow.c (promote_mode): Use PROMOTE_FUNCTION_MODE instead of
3921 PROMOTE_FOR_CALL_ONLY.
3922 * config/arm/arm-protos.h (arm_function_value): Declare.
3923 * config/arm/arm.h (TARGET_PROMOTE_FUNCTION_ARGS): Define.
3924 (TARGET_PROMOTE_PROTOTYPES): Return false.
3925 (arm_function_value): New function.
3926 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Define.
3927 (FUNCTION_VALUE): Call arm_function_value.
3928 * config/cris/cris.h (PROMOTE_MODE): Rename ...
3929 (PROMOTE_FUNCTION_MODE): ... to this.
3930 (PROMOTE_FOR_CALL_ONLY): Remove.
3931 * config/mmix/mmix.h: Likewise.
3932 * config/s390/s390.h: Likewise.
3933 * config/sparc/sparc.h: Likewise.
3934 * config/sparc/sparc.c: Update comments about PROMOTE_MODE.
3935 * doc/tm.texi (PROMOTE_FUNCTION_MODE): Document.
3936 (TARGET_PROMOTE_FUNCTION_MODE, TARGET_PROMOTE_FUNCTION_RETURN): Update.
3937 (PROMOTE_FOR_CALL_ONLY): Remove.
3939 2004-04-08 Joel Sherrill <joel@oarcorp.com>
3942 * ada/5rosinte.adb: Remove fake mprotect() body.
3943 * ada/5rosinte.ads: Add SA_SIGINFO.
3944 * ada/5rtpopsp.adb: Rewrite to use new interface.
3945 * ada/init.c: Reorder so the simple single OS conditional __rtems__
3946 is tested before more complex ones which mix UNIX and embedded
3947 systems in the conditional.
3949 2004-04-08 Joel Sherrill <joel@oarcorp.com>
3952 * ada/osint.adb (Find_Program_Name): Rework to properly handle
3953 filenames which end in .exe or have versioning suffixes like VMS.
3955 2004-04-08 Andrew Pinski <pinskia@physics.uc.edu>
3958 * config/darwin.c (darwin_encode_section_info): When the decl has
3959 a DECL_INITIAL, it is only defined also when it is not a common.
3961 2004-04-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3963 * builtins.c (fold_builtin_isascii, fold_builtin_toascii): New.
3964 (fold_builtin): Handle BUILT_IN_ISASCII and BUILT_IN_TOASCII.
3966 2004-04-07 H.J. Lu <hongjiu.lu@intel.com>
3968 * config/ia64/ia64.c (ia64_encode_section_info): Don't prod
3969 global register variables.
3971 2004-04-07 Joseph S. Myers <jsm@polyomino.org.uk>
3973 * fixinc/inclhack.def (rpc_xdr_lvalue_cast_a,
3974 rpc_xdr_lvalue_cast_b): New fixes.
3975 * fixinc/fixincl.x: Regenerate.
3976 * fixinc/tests/base/rpc/xdr.h: Add new tests.
3978 2004-04-07 David Edelsohn <edelsohn@gnu.org>
3980 * config/rs6000/rs6000.c (processor_target_table): Add MASK_MFCRF