OSDN Git Service

bdbbe42e418fcee9b5db99905d8a5fd4bfa7409b
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-06-28  Jan Hubicka  <jh@suse.cz>
2
3         * tree-optimize.c (exercute_free_datastructures):
4         Do not disband implicit edges; do not attempt to build insn list;
5         do not free cfg annotations.
6         (execute_free_cfg_annotations); Disband implicit edges here;
7         free cfg annotations here too.
8         (pass_free_cfg_annotations); New pass.
9         (init_tree_optimization_passes); Add pass_free_cfg_annotations.
10         * tree-ssa-operands.c (free_ssa_operands); Recover; export.
11         * tree-ssa-operands.h (free_ssa_operands); declare.
12         * tree-ssa.c (delete_tree_ssa); Free SSA operand; mark stmt modified;
13         kill PHI nodes.
14         * tree-ssanames.c (release_defs): Kill addresses_taken.
15
16         * basic-block.h (basic_block_def): Kill rbi.
17         (reorder_block_def): Kill; Remove next field (replaced by aux);
18         move other fields to ...
19         (rtl_bb_info): ... here.
20         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
21         copy_bb, connect_traces, add_labels_and_missing_jumps
22         fix_up_fall_thru_edges, fix_crossing_conditional_branches,
23         duplicate_computed_gotos, partition_hot_cold_basic-blocks):
24         Update to new fields.
25         * cfg.c (initialize_bb_rbi): Kill.
26         * cfglayout.c (record_effective_endpoints, fixup_reorder_chain,
27         fixup_fallthru_exit_predecessor, cfg_layout_duplicate_bb): Update.
28         * cfgrtl.c (cfg_layout_create_basic_block): Do not initialize rbi.
29         (try_redirect_by_replacing_jump): Update rbi references.
30         (cfg_layout_split_block): Likewise.
31         (cfg_layout_delete_block): Likewise.
32         (cfg_layout_merge_blocks): Likewise.
33         * function.c (thread_prologue_and_epilogue_insns): Likewise.
34         * passes.c (rest_of_handle_sms): Likewise.
35         * tracer.c (seen, tail_duplicate, layout_superblocks): Likewise.
36
37 2005-06-27  David Edelsohn  <edelsohn@gnu.org>
38
39         * config/rs6000/rs6000.c (rs6000_file_start): Note PPC405 erratum
40         in verbose_asm output.
41         * config/rs6000/rs6000.h (PPC405_ERRATUM77): Bracket with
42         CONFIG_PPC405CR.
43         * config.gcc (powerpc with_which): Define CONFIG_PPC405CR for
44         405cr.
45
46 2005-06-27  Jakub Jelinek  <jakub@redhat.com>
47
48         * builtin-attrs.def (DEF_ATTR_FOR_INT): Add for 5 and 6.
49         (DEF_LIST_INT_INT): Add for 4,0, 4,5, 5,0, 5,6.
50         (ATTR_NOTHROW_NONNULL_4, ATTR_NOTHROW_NONNULL_5): Define.
51         (ATTR_FORMAT_PRINTF_4_0, ATTR_FORMAT_PRINTF_4_5,
52         ATTR_FORMAT_PRINTF_5_0, ATTR_FORMAT_PRINTF_5_6): Define.
53         * builtins.c: Include tree-flow.h.
54         (expand_builtin_mempcpy, expand_builtin_memmove): Comment fixes.
55         (expand_builtin_object_size, expand_builtin_memory_chk,
56         maybe_emit_chk_warning, maybe_emit_sprintf_chk_warning,
57         compute_object_offset, compute_builtin_object_size,
58         fold_builtin_object_size): New functions.
59         (expand_builtin): Handle BUILT_IN_OBJECT_SIZE and BUILT_IN_*_CHK.
60         (fold_builtin_1): Likewise.  Handle BUILT_IN_{,V}{,F}PRINTF
61         and BUILT_IN_{,F}PRINTF_UNLOCKED.
62         (fold_builtin_memory_chk, fold_builtin_stxcpy_chk,
63         fold_builtin_strncpy_chk, fold_builtin_strcat_chk,
64         fold_builtin_strncat_chk, fold_builtin_sprintf_chk,
65         fold_builtin_snprintf_chk, fold_builtin_printf, fold_builtin_fprintf):
66         New functions.
67         * builtins.def (BUILT_IN_OBJECT_SIZE, BUILT_IN_MEMCPY_CHK,
68         BUILT_IN_MEMMOVE_CHK, BUILT_IN_MEMPCPY_CHK, BUILT_IN_MEMSET_CHK,
69         BUILT_IN_STPCPY_CHK, BUILT_IN_STRCAT_CHK, BUILT_IN_STRCPY_CHK,
70         BUILT_IN_STRNCAT_CHK, BUILT_IN_STRNCPY_CHK, BUILT_IN_SNPRINTF_CHK,
71         BUILT_IN_SPRINTF_CHK, BUILT_IN_VSNPRINTF_CHK, BUILT_IN_VSPRINTF_CHK,
72         BUILT_IN_FPRINTF_CHK, BUILT_IN_PRINTF_CHK, BUILT_IN_VFPRINTF_CHK,
73         BUILT_IN_VPRINTF_CHK): New builtins.
74         * builtin-types.def (DEF_FUNCTION_TYPE_5, DEF_FUNCTION_TYPE_VAR_4):
75         Document.
76         (BT_FN_SIZE_CONST_PTR_INT, BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
77         BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, BT_FN_PTR_PTR_INT_SIZE_SIZE,
78         BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
79         BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
80         BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
81         BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
82         BT_FN_INT_INT_CONST_STRING_VAR, BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
83         BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
84         BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR): New types.
85         * c-common.c (DEF_FUNCTION_TYPE_5, DEF_FUNCTION_TYPE_6,
86         DEF_FUNCTION_TYPE_VAR_4, DEF_FUNCTION_TYPE_VAR_5): Define.
87         * Makefile.in (OBJS-common): Add tree-object-size.o.
88         (tree-object-size.o): Add dependencies.
89         * tree-pass.h (pass_object_sizes): Add.
90         * tree-optimize.c (init_tree_optimization_passes): Add
91         pass_object_sizes.
92         * tree-object-size.c: New file.
93         * tree.h (fold_builtin_memory_chk, fold_builtin_stxcpy_chk,
94         fold_builtin_strncpy_chk, fold_builtin_snprintf_chk,
95         compute_builtin_object_size, init_object_sizes, fini_object_sizes):
96         New prototypes.
97         * tree-ssa-ccp.c (get_strlen): Rename to ...
98         (get_maxval_strlen): ...this function.  Handle also computing of maximum
99         string length and maximum integral value.
100         (ccp_fold_builtin): Handle BUILT_IN_*_CHK.  Use get_maxval_strlen
101         instead of get_strlen.  Pass CALLEE and ARGLIST variables to the
102         folding functions instead of computing them again.
103         (execute_fold_all_builtins): Retry ccp_fold_builtin if a builtin changed
104         into some other builtin.
105         * doc/extend.texi (Object Size Checking): Document.
106
107         * regrename.c (copy_value): Fix comment.
108
109         * toplev.c (process_options): Use if (FRAME_GROWS_DOWNWARD)
110         instead of preprocessor conditionals.
111
112         * targhooks.c (default_hidden_stack_protect_fail): Fall back to
113         default_external_stack_protect_fail if visibility is not supported
114         or not flag_pic.
115         * config/i386/i386.c (ix86_stack_protect_fail): New function.
116         (TARGET_STACK_PROTECT_FAIL): Define.
117         * config/i386/i386.md (stack_protect_si): Change CLOBBER into
118         SET to zero.
119         (stack_protect_di): Likewise.  Use %k2 instead of %2 to avoid
120         invalid instruction xorl %rax, %rax.
121
122 2005-06-27  Richard Henderson  <rth@redhat.com>
123
124         * c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__.
125         * cfgexpand.c: Include params.h.
126         (has_protected_decls, has_short_buffer): New.
127         (expand_stack_vars): Take a predicate to determine what to expand.
128         (defer_stack_allocation): True when flag_stack_protect on.
129         (SPCT_HAS_LARGE_CHAR_ARRAY, SPCT_HAS_SMALL_CHAR_ARRAY): New.
130         (SPCT_HAS_ARRAY, SPCT_HAS_AGGREGATE): New.
131         (stack_protect_classify_type, stack_protect_decl_phase): New.
132         (stack_protect_decl_phase_1, stack_protect_decl_phase_2): New.
133         (add_stack_protection_conflicts, create_stack_guard): New.
134         (expand_used_vars): Add stack protection logic.
135         (tree_expand_cfg): Likewise.
136         * common.opt (Wstack-protector): New.
137         (fstack-protector, fstack-protector-all): New.
138         * function.c: Include predict.h.
139         (assign_parm_adjust_stack_rtl): Zap stack_parm when stack protect
140         wants to copy the parameter into the stack frame.
141         (stack_protect_prologue, stack_protect_epilogue): New.
142         (expand_function_end): Call stack_protect_epilogue.  Do 
143         sjlj_emit_function_exit_after after naked_return_label.
144         * function.h (struct function): Add stack_protect_guard.
145         * params.def (PARAM_SSP_BUFFER_SIZE): New.
146         * toplev.c (process_options): Disable flag_stack_protect and/or
147         warn_stack_protect based on FRAME_GROWS_DOWNWARD.
148         * tree.h (stack_protect_prologue): Declare.
149
150         * target-def.h (TARGET_STACK_PROTECT_GUARD): New.
151         (TARGET_STACK_PROTECT_FAIL): New.
152         (TARGET_INITIALIZER): Add them.
153         * target.h (struct gcc_target): Add stack_protect_guard and
154         stack_protect_fail.
155         * targhooks.c: Include ggc.h, gty header.
156         (stack_chk_guard_decl, default_stack_protect_guard): New.
157         (stack_chk_fail_decl, default_external_stack_protect_fail): New.
158         (default_hidden_stack_protect_fail): New.
159         * targhooks.h (default_stack_protect_guard): Declare.
160         (default_external_stack_protect_fail): Declare.
161         (default_hidden_stack_protect_fail): Declare.
162         * config/i386/i386.c (TARGET_STACK_PROTECT_FAIL): New.
163         * config/i386/i386.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): New.
164         (trap): Use ud2.
165         (conditional_trap, conditional_trap_1): Remove.
166         (stack_protect_set, stack_protect_set_si, stack_protect_set_di): New.
167         (stack_protect_test, stack_protect_test_si, stack_protect_test_di): New.
168         * doc/md.texi (stack_protect_set, stack_protect_test): New.
169         * doc/tm.texi (TARGET_STACK_PROTECT_GUARD): New.
170         (TARGET_STACK_PROTECT_FAIL): New.
171
172         * libgcc-std.ver (GCC_4.1.0): New.
173         * libgcc.h (__stack_chk_guard): Declare.
174         (__stack_chk_fail, __stack_chk_fail_local): Declare.
175         * libgcc2.c (L_stack_chk, L_stack_chk_local): New.
176         * mklibgcc.in (lib2funcs): Add them.
177
178 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
179
180         PR c/21911
181         * c-common.c (check_function_sentinel): Pass in named argument
182         list, skip over named arguments before looking for a sentinel.
183         (check_function_arguments): Pass in named argument list.
184         * c-common.h (check_function_arguments): Likewise.
185         * c-typeck.c (build_function_call): Likewise.
186
187 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
188
189         * genautomata.c (decl_mode_check_failed,
190         regexp_mode_check_failed): Add noreturn attribute.
191
192 2005-06-26  Kazu Hirata  <kazu@codesourcery.com>
193
194         * cfg.c, tree-vect-transform.c, tree.def: Fix comment typos.
195         * doc/invoke.texi: Fix typos.
196
197         * builtins.c, c-common.c, c-convert.c, c-decl.c, c-typeck.c,
198         convert.c, lambda-code.c, predict.c, tree-cfg.c,
199         tree-complex.c, tree-data-ref.c, tree-if-conv.c,
200         tree-mudflap.c, tree-scalar-evolution.c, tree-ssa-ccp.c,
201         tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c,
202         tree-ssa-loop-manip.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
203         tree-vect-analyze.c, tree-vect-transform.c, tree-vectorizer.c,
204         tree.c: Use fold_buildN instead of fold (buildN (...)).
205
206 2005-06-26  Gerald Pfeifer  <gerald@pfeifer.com>
207
208         * doc/install.texi (Specific): Do not specify the concrete
209         versions of GCC provided by Cygwin.  Simplify the part on
210         building on Cygwin.
211
212 2005-06-26  Kazu Hirata  <kazu@codesourcery.com>
213
214         * config/arc/arc-protos.c: Remove the prototype for
215         arc_finalize_pic.
216         * config/arc/arc.c (arc_finalize_pic): Remove.
217         * config/arc/arc.h (FINALIZE_PIC): Likewise.
218         * config/bfin/bfin.h (FINALIZE_PIC): Likewise.
219         * config/rs6000/rs6000.h (FINALIZE_PIC): Likewise.
220
221 2005-06-26  Jakub Jelinek  <jakub@redhat.com>
222
223         PR middle-end/17965
224         * calls.c (expand_call, emit_library_call_value_1): Use xmalloc/free
225         instead of alloca for really big argument sizes.
226
227         PR middle-end/22028
228         * gimplify.c (gimplify_type_sizes): Check for type == error_mark_node
229         earlier in the function.
230
231         * regrename.c (copy_value): Don't replace fixed or global
232         regs with older regs.
233
234         * defaults.h (FRAME_GROWS_DOWNWARD): Define to 0 if not defined.
235         * function.c (get_func_frame_size): Use if (FRAME_GROWS_DOWNWARD)
236         instead of preprocessor conditionals.
237         (assign_stack_local_1, assign_stack_temp_for_type): Likewise.
238         * cfgexpand.c (FRAME_GROWS_DOWNWARD): Don't redefine to 1 or 0
239         depending on if it was or was not defined previously.
240         * doc/rtl.texi (VIRTUAL_STACK_VARS_REGNUM): Mention that only non-zero
241         definition of FRAME_GROWS_DOWNWARD means frame grows downward.
242         * doc/tm.texi (FRAME_GROWS_DOWNWARD): Likewise.
243         * config/m68hc11/m68hc11.h (FRAME_GROWS_DOWNWARD): Define to 0.  Update
244         comment.
245         * config/pa/pa.h (FRAME_GROWS_DOWNWARD): Likewise.
246         * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Likewise.
247         * config/stormy16/stormy16.h (FRAME_GROWS_DOWNWARD): Define to 0.
248         * config/c4x/c4x.h (FRAME_GROWS_DOWNWARD): Likewise.
249         * config/sh/sh.h (FRAME_GROWS_DOWNWARD): Likewise.
250         * config/ia64/ia64.h (FRAME_GROWS_DOWNWARD): Likewise.
251         * config/iq2000/iq2000.h (FRAME_GROWS_DOWNWARD): Likewise.
252         * config/pdp11/pdp11.h (FRAME_GROWS_DOWNWARD): Define to 1.  Update
253         comment.
254         * config/i860/i860.h (FRAME_GROWS_DOWNWARD): Likewise.
255         * config/h8300/h8300.h (FRAME_GROWS_DOWNWARD): Likewise.
256         * config/arc/arc.h (FRAME_GROWS_DOWNWARD): Likewise.
257         * config/vax/vax.h (FRAME_GROWS_DOWNWARD): Likewise.
258         * config/sparc/sparc.h (FRAME_GROWS_DOWNWARD): Likewise.
259         * config/i386/i386.h (FRAME_GROWS_DOWNWARD): Likewise.
260         * config/fr30/fr30.h (FRAME_GROWS_DOWNWARD): Likewise.
261         * config/frv/frv.h (FRAME_GROWS_DOWNWARD): Likewise.
262         * config/mn10300/mn10300.h (FRAME_GROWS_DOWNWARD): Likewise.
263         * config/bfin/bfin.h (FRAME_GROWS_DOWNWARD): Likewise.
264         * config/ns32k/ns32k.h (FRAME_GROWS_DOWNWARD): Likewise.
265         * config/v850/v850.h (FRAME_GROWS_DOWNWARD): Likewise.
266         * config/alpha/alpha.h (FRAME_GROWS_DOWNWARD): Update comment.
267         * config/s390/s390.h (FRAME_GROWS_DOWNWARD): Likewise.
268         * config/arm/arm.h (FRAME_GROWS_DOWNWARD): Likewise.
269         * config/alpha/unicosmk.h (FRAME_GROWS_DOWNWARD): Define to 1.
270         * config/cris/cris.h (FRAME_GROWS_DOWNWARD): Likewise.
271         * config/m68k/m68k.h (FRAME_GROWS_DOWNWARD): Likewise.
272         * config/mmix/mmix.h (FRAME_GROWS_DOWNWARD): Likewise.
273
274 2005-06-26  Kazu Hirata  <kazu@codesourcery.com>
275
276         PR tree-optimization/22026
277         * tree-vrp.c (extract_range_from_binary_expr): Drop to
278         VR_VARYING if a binary expression involving VR_ANTI_RANGE is
279         PLUS_EXPR, MINUS_EXPR, or unsigned MULT_EXPR.
280
281 2005-06-26  Kazu Hirata  <kazu@codesourcery.com>
282
283         * Makefile.in (OBJS-common): Remove duplicate object file
284         names.
285
286 2005-06-25  Jan Hubicka  <jh@suse.cz>
287
288         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update profile.
289         * cfg.c (update_bb_profile_for_threading): Fix rescaling.
290
291         * passes.c (rest_of_handle_branch_prob): Do not rebuild profiling info
292         when not neecesary
293         (rest_of_compilation): Fix conditional on branch prob pass.
294         * predict.c (tree_estimate_probability): Enable strip_builtin_expect
295         when not loop optimizing.
296
297 2005-06-25  Bernd Schmidt  <bernd.schmidt@analog.com>
298
299         * config/bfin/bfin.md (ror_one, rol_one, ashrdi3, ashldi3, lshrdi3):
300         New patterns.
301         (movbi): Add alternative to set CC to zero.
302         (compare_eq, compare_ne, compare_le, compare_lt, compare_leu,
303         compare_ltu): Now named patterns.
304
305 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
306
307         * all files: Update FSF address in copyright headers.
308
309 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
310
311         * gengtype.c: Update FSF address in copyright header.
312         (create_file): Update FSF in outputed copyright header.
313
314 2005-06-24  Kazu Hirata  <kazu@codesourcery.com>
315
316         * cfglayout.c (block_locators_locs, line_locators_locs,
317         line_locators_lines, file_locators_locs): Change the type to
318         VEC(int,heap)*.
319         (insn_locators_initialize, change_scope, insn_scope,
320         locator_line, insn_line, locator_file): Use VEC instead of
321         VARRAY.
322
323 2005-06-24  Jason Merrill  <jason@redhat.com>
324
325         * tree-nrv.c (tree_nrv): Fix to check assignments to the
326         RESULT_DECL rather than just RETURN_EXPRs.
327         (finalize_nrv_r): Adjust.
328
329 2005-06-24  Jan Hubicka  <jh@suse.cz>
330
331         * tree-optimize.c (init_tree_optimization_passes): Fix flags of
332         all_passes and all_ipa_passes.
333
334         * c-common.c: Include cgraph.h
335         (handle_externally_visible_attribute): New function.
336         (c_common_att): Add "externally_visible" attribute.
337         * cgraph.c (decide_is_variable_needed): Obey externally
338         visible flag.
339         (cgraph_varpool_finalize_decl): Avoid redundant checking.
340         * cgraph.h (struct cgraph_node): New flag externally_visible.
341         (decide_is_function_needed): Obey externally visible flag.
342         (cgraph_finalize_function): Avoid redundant checks.
343         (cgraph_function_and_variable_visibility): Bring symbols local
344         when asked for.
345         * common.opt (fwhole-program): New flag.
346
347         * doc/invoke.texi (-fwhole-program): Document.
348
349 2005-06-24  Mark Mitchell  <mark@codesourcery.com>
350
351         PR 22171
352         * tree-ssa-operands.c (get_expr_operands): Check s_ann for NULL
353         before use.
354
355 2005-06-23  Mark Mitchell  <mark@codesourcery.com>
356
357         PR 22000
358         * tree-ssa-operands.c (get_expr_operands): Check the volatility of
359         the FIELD_DECL and set s_ann->has_volatile_ops accordingly.
360
361 2005-06-24  Jan Hubicka  <jh@suse.cz>
362
363         * opts.c (decode_options): Enable unit-at-a-time by default at -O1.
364
365 2005-06-23  Jeff Law  <law@redhat.com>
366
367         * tree-optimize.c (init_tree_optimization_passes): Move
368         copy prop pass to run just before VRP.
369         * tree-vrp.c (remove_range_assertions): Remove copies created
370         by ASSERT_EXPR removal.
371
372 2005-06-23  Kazu Hirata  <kazu@codesourcery.com>
373
374         PR tree-optimization/22117
375         * tree-vrp.c (extract_range_from_binary_expr): Compute a
376         correct range when adding two pointers.
377
378 2005-06-23  Jason Merrill  <jason@redhat.com>
379
380         PR c++/19317
381         Leave the return slot target in the MODIFY_EXPR rather than making
382         it an argument, but only use it if the CALL_EXPR has a flag set.
383         * tree.h (CALL_EXPR_HAS_RETURN_SLOT_ADDR): Rename to
384         CALL_EXPR_RETURN_SLOT_OPT.
385         * calls.c (expand_call): Adjust.
386         * tree-inline.c (expand_call_inline): Adjust.
387         * tree-pretty-print.c (dump_generic_node): Adjust.
388
389         And set the flag as appropriate.
390         * gimplify.c (gimplify_modify_expr_rhs): Set
391         CALL_EXPR_HAS_RETURN_SLOT_ADDR where the LHS is obviously safe.
392         * tree-nrv.c (execute_return_slot_opt): Set
393         CALL_EXPR_HAS_RETURN_SLOT_ADDR based on escape analysis.
394         * tree-pass.h: Declare pass_return_slot.
395         * tree-optimize.c (init_tree_optimization_passes): Add it.
396         
397 2005-06-23  David Edelsohn  <edelsohn@gnu.org>
398
399         PR target/21760
400         * config/rs6000/rs6000.h (PPC405_ERRATUM77): New.
401         * config/rs6000/rs6000.md: Move atomic instructions to ...
402         * config/rs6000/sync.md: Here.
403         Change sync_compare_and_swap<mode> to define_expand.  All stwcx
404         patterns test PPC405_ERRATUM77.
405
406 2005-06-23  Jan Hubicka  <jh@suse.cz>
407         
408         * tree-inline.c (copy_body_r): Remap labels correctly.
409
410 2005-06-22  Alan Modra  <amodra@bigpond.net.au>
411
412         * config/rs6000/sysv4.h (TARGET_ASM_EXCEPTION_SECTION): Delete.
413
414 2005-06-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
415
416         PR middle-end/20593
417         * varasm.c (compute_reloc_for_constant): Treat VIEW_CONVER_EXPR
418         the same as the other cast operands.
419         (output_addressed_constants): Likewise.
420
421 2005-06-21  Jeff Law  <law@redhat.com>
422
423         * tree-vrp.c (extract_range_from_unary_expr): Handle type
424         conversions better.
425
426 2005-06-21  Dorit Nuzman  <dorit@il.ibm.com>
427
428         * genopinit.c (vec_shl_optab, vec_shr_optab): Initialize new optabs.
429         (reduc_plus_optab): Removed.  Replcaed with...
430         (reduc_splus_optab, reduc_uplus_optab): Initialize new optabs.
431         * optabs.c (optab_for_tree_code): Return reduc_splus_optab or
432         reduc_uplus_optab instead of reduc_plus_optab.
433         (expand_vec_shift_expr): New function.
434         (init_optabs): Initialize new optabs. Remove initialization of
435         reduc_plus_optab.
436         (optab_for_tree_code): Return vec_shl_optab/vec_shr_optab
437         for VEC_LSHIFT_EXPR/VEC_RSHIFT_EXPR.
438         * optabs.h (OTI_reduc_plus): Removed. Replaced with...
439         (OTI_reduc_splus, OTI_reduc_uplus): New.
440         (reduc_plus_optab): Removed.  Replcaed with...
441         (reduc_splus_optab, reduc_uplus_optab): New optabs.
442         (vec_shl_optab, vec_shr_optab): New optabs.
443         (expand_vec_shift_expr): New function declaration.
444
445         * tree.def (VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR): New tree-codes.
446         * tree-inline.c (estimate_num_insns_1): Handle new tree-codes.
447         * expr.c (expand_expr_real_1): Handle new tree-codes.
448         * tree-pretty-print.c (dump_generic_node, op_symbol, op_prio): Likewise.
449         * tree-vect-generic.c (expand_vector_operations_1): Add assert.
450
451         * tree-vect-transform.c (vect_create_epilog_for_reduction): Add two
452         alternatives for generating reduction epilog code.
453         (vectorizable_reduction): Don't fail of direct reduction support is
454         not available.
455         (vectorizable_target_reduction_pattern): Likewise.
456
457         * config/rs6000/altivec.md (reduc_smax_v4si, reduc_smax_v4sf,
458         reduc_umax_v4si, reduc_smin_v4si, reduc_smin_v4sf, reduc_umin_v4si,
459         reduc_plus_v4si, reduc_plus_v4sf): Removed.
460         (vec_shl_<mode>, vec_shr_<mode>, altivec_vsumsws_nomode,
461         reduc_splus_<mode>, reduc_uplus_v16qi): New.
462
463 2005-06-20  Daniel Berlin  <dberlin@dberlin.org>
464
465         * c-typeck.c (build_function_call): Set fundecl = function again.
466         * tree-ssa-alias.c (find_used_portions): Address taking causes the
467         entire variable to be used.
468         * tree-ssa-structalias.c (do_structure_copy): Fix handling of
469         unknown size variables, and structure copies from addressof
470         operations.  Simplify how we do *a = *b type structure copies.
471         (init_base_vars): Add ANYTHING = &ANYTHING constraint the right
472         way.  READONLY's address is not taken by default.
473         INTEGER dereference should point to anything.
474         (create_variable_info_for): It's okay for the first field to not start
475         at 0.
476
477 2005-06-20  Kaz Kojima  <kkojima@gcc.gnu.org>
478
479         config/sh/linux.h (FUNCTION_PROFILER): Constify a char*.
480
481 2005-06-20  Roger Sayle  <roger@eyesopen.com>
482 2005-06-20  Fariborz Jahanian <fjahanian@apple.com>
483
484         * combine.c (simplify_set): Simplify setting of CC register
485         by removing redundant compare with 0 on RHS.
486
487 2005-06-20  Jan Beulich  <jbeulich@novell.com>
488
489         * config/i386/netware-libgcc.def: Update copyright.
490         * config/i386/netware-libgcc.exp (__divdc3, __divsc3, __divxc3,
491         __muldc3, __mulsc3, __mulxc3, __powidf2, __powisf2, __powixf2): Add.
492         * config/i386/netware.c (gen_stdcall_decoration,
493         gen_fastd_decoration): Merge into ...
494         (gen_stdcall_or_fastcall_decoration): ... this. Adjust to match
495         WinNT's changes.
496         (gen_regparm_prefix): Adjust to match i386_nlm_encode_section_info.
497         (i386_nlm_encode_section_info): Adjust to match WinNT's changes.
498         * config/i386/t-nwld (SHLIB_LINK): Also create libgcc.imp alias of
499         libgcc_s.imp. Use 'expr' rather than $(()) shell expressions.
500         * gthr-nks.h (__gthread_objc_mutex_allocate): Kill another dubious
501         use of NX_MUTEX_RECURSIVE.
502
503 2005-06-19  Roger Sayle  <roger@eyesopen.com>
504
505         * fold-const.c (swap_tree_comparison): Add support for unordered
506         floating point comparisons.
507         * tree-vrp.c (opposite_comparison): Delete.
508         (extract_range_from_assert): Replace calls to opposite_comparison
509         with calls to swap_tree_comparison.
510         (register_edge_assert_for): Likewise.
511         (vrp_evaluate_conditional): Likewise.
512
513 2005-06-20  Kaz Kojima  <kkojima@gcc.gnu.org>
514
515         * integrate.c (allocate_initial_values): Update the references
516         to global_live_at_start and global_live_at_end.
517
518 2005-06-20  Jan Hubicka  <jh@suse.cz>
519
520         * cfgloop.h (DLTHE_RECORD_COPY_NUMBER): New flag.
521         * cfgloopmanip.c (duplicate_loop_to_header_edge): Set aux flags only
522         when asked for.
523         * loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
524         unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
525         Update call of duplicate_loop_to_header_edge.
526         (apply_opt_in_copies): Clear out aux pointers.
527
528 2005-06-19  Joseph S. Myers  <joseph@codesourcery.com>
529
530         * config/i386/i386.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
531         (ix86_mangle_fundamental_type): New.
532         * config/ia64/ia64.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
533         (ia64_mangle_fundamental_type): New.
534
535 2005-06-19  Roger Sayle  <roger@eyesopen.com>
536
537         * c-decl.c (grokdeclarator): Only check TREE_OVERFLOW on
538         INTEGER_CST nodes.
539         * c-typeck.c (build_c_cast): Only preserve TREE_OVERFLOW on
540         CONSTANT_CLASS_P nodes.
541
542 2005-06-19  Richard Henderson  <rth@redhat.com>
543
544         * config/ia64/vect.md (vec_extractv2sf_1): Fix cut-and-paste error;
545         the shift is always required.
546
547 2005-06-19  Richard Henderson  <rth@redhat.com>
548
549         * config/ia64/ia64-modes.def (V4SF): Add.
550         * config/ia64/ia64.c (ia64_legitimate_constant_p): Handle CONST_VECTOR.
551         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Allow vector to 
552         integer mode changes in fp regs.
553         * config/ia64/ia64.md (UNSPEC_VECT_EXTR): New.
554         * config/ia64/vect.md (smaxv2sf3, sminv2sf3): Fix typos in names.
555         (reduc_plus_v2sf, reduc_smax_v2sf, reduc_smin_v2sf): New.
556         (vcondv2sf): Use gen_fpack
557         (fpack): Remove * from name.
558         (fswap, fmix_l, fmix_r, fmix_lr): New.
559         (vec_setv2sf, vec_extractv2sf_0_le, vec_extractv2sf_0_be): New.
560         (vec_extractv2sf_1, vec_extractv2sf): New.
561
562 2005-06-19  Andreas Krebbel  <krebbel1@de.ibm.com>
563
564         * combine.c (make_compound_operation): Use simplify_subreg.  Delete
565         a optimization already done by simplify_subreg.
566
567 2005-06-19  Ulrich Weigand  <uweigand@de.ibm.com>
568
569         * loop.c (scan_loop): Do not consider insns setting the frame
570         pointer to be candidates for hoisting.
571
572 2005-06-19  Uros Bizjak  <uros@kss-loka.si>
573
574         * config/i386/i386.md (*cmpfp_0_sf, *cmpfp_0_df, cmpfp_0_xf):
575         Remove instruction patterns.
576         (*cmpfp_0): New instruction pattern. Set "unit" attribute to "i387".
577         (*cmpfp_sf, *cmpfp_df, *cmpfp_xf, *cmpfp_u, *_cmpfp_<mode>):
578         Set "unit" attribute to "i387".
579         (*pushsf, *pushsf_rex64, *pushdf_nointeger, *pushdf_integer)
580         (*pushxf_nointeger, *pushxf_integer): Set "unit" attribute to "i387"
581         for alternative 0.
582         (*truncdfsf_mixed, *truncdfsf_i387, *truncxfsf2_mixed)
583         (*truncxfsf2_i387, *truncxfdf2_mixed, *truncxfdf2_i387): Set "unit"
584         attribute to "i387" when "type" attribute equals "multi".
585         (*floathisf2_i387, *floatsisf2_mixed, *floatsisf2_i387)
586         (*floatdisf2_mixed, *floatdisf2_i387, *floathidf2_i387)
587         (*floatsidf2_mixed, *floatsidf2_i387, *floatdidf2_mixed)
588         (*floatdidf2_i387, floathixf2, floatsixf2, floatdixf2): Set "unit"
589         attribute to "i387" when "type" attribute equals "multi".
590         * config/i386/mmx.md (*mov<mode>_internal_rex64)
591         (*mov<mode>_internal, *movv2sf_internal_rex64, *movv2sf_internal):
592         Set "unit" attribute to "mmx" when "type" attribute equals "ssecvt".
593         (mmx_pmovmskb): Correct wrong "type" and "mode" attributes.
594         * config/i386/sse.md (sse_cvtps2pi, sse_cvttps2pi, sse_cvtpd2di)
595         (sse_cvttpd2pi): Set "unit" attribute to "mmx".
596         (sse2_cvtpi2pd): Split register constraints. Set "unit" attribute
597         to "mmx" for "y" operand 1.
598
599 2005-06-19  Uros Bizjak  <uros@kss-loka.si>
600
601         * config/i386/i386.c (ix86_function_arg_regno_p): Add MMX_REGNO_P
602         for TARGET_MMX.  Use MMX_REGPARM_MAX and SSE_REGPARM_MAX for MMX
603         and SSE registers to determine if regno is valid.
604         (ix86_function_value_regno_p): Depend FIRST_FLOAT_REG on
605         TARGET_FLOAT_RETURNS_IN_80387 also for TARGET_64BIT. Clean up.
606
607 2005-06-18  Richard Henderson  <rth@redhat.com>
608
609         * tree-complex.c (init_dont_simulate_again): Clear DONT_SIMULATE_AGAIN
610         for control-altering statements; set it again for returns.
611         (complex_visit_stmt): Return SSA_PROP_VARYING for stmts that are
612         not MODIFY_EXPR.
613
614 2005-06-18  Richard Henderson  <rth@redhat.com>
615
616         PR tree-opt/22116
617         * tree-ssa-pre.c (create_expression_by_pieces): Set
618         DECL_COMPLEX_GIMPLE_REG_P.
619         (insert_into_preds_of_block): Likewise.
620
621 2005-06-18  Steven Bosscher  <stevenb@suse.de>
622
623         * Makefile.in: Fix tree-cfgcleanup.c dependencies.
624
625 2005-06-18  Richard Henderson  <rth@redhat.com>
626
627         * expr.c (store_constructor): Use store of 0 to indicate value
628         death instead of a clobber.
629
630         * config/i386/i386.c (ix86_expand_reduc_v4sf): New.
631         * config/i386/i386-protos.h (ix86_expand_reduc_v4sf): Declare.
632         * config/i386/sse.md (reduc_plus_v4sf): New.
633         (reduc_smax_v4sf, reduc_smin_v4sf): New.
634
635 2005-06-18  James A. Morrison  <phython@gcc.gnu.org>
636
637         * fold_const (fold_binary): Fold X % (2**N) to X & (2**N - 1) for
638         nonnegative values of X.
639
640 2005-06-18  Uros Bizjak  <uros@kss-loka.si>
641
642         * doc/md.texi (Standard Names): Change insn pattern name
643         from truncM2 to btruncM2 for 'trunc' built-in description.
644         Add rintM2 insn pattern description.
645
646 2005-06-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
647
648         * c-decl.c (locate_old_decl): Add format attribute.
649         (implicit_decl_warning): Likewise.
650
651         * diagnostic.h (verbatim): Move ...
652         * toplev.h (verbatim): ... here.  Add ATTRIBUTE_GCC_DIAG.
653         * pretty-print.h (pp_verbatim): Add ATTRIBUTE_GCC_PPDIAG.
654
655 2005-06-18  Roger Sayle  <roger@eyesopen.com>
656
657         PR target/22083
658         * config/rs6000/aix51.h (TARGET_C99_FUNCTIONS): Remove definition.
659
660 2005-06-18  Dorit Nuzman  <dorit@il.ibm.com>
661
662         * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): New
663         tree-codes.
664         * optabs.h (OTI_reduc_smax, OTI_reduc_umax, OTI_reduc_smin,
665         OTI_reduc_umin, OTI_reduc_plus): New optabs for reduction. 
666         (reduc_smax_optab, reduc_umax_optab, reduc_smin_optab, reduc_umin_optab,
667         reduc_plus_optab): New optabs for reduction.
668         * expr.c (expand_expr_real_1): Handle new tree-codes.
669         * tree-inline.c (estimate_num_insns_1): Handle new tree-codes.
670         * tree-pretty-print.c (dump_generic_node, op_prio, op_symbol): Handle
671         new tree-codes.
672         * optabs.c (optab_for_tree_code): Handle new tree-codes.
673         (init_optabs): Initialize new optabs.
674         * genopinit.c (optabs): Define handlers for new optabs. 
675
676         * tree-vect-analyze.c (vect_analyze_operations): Fail vectorization in
677         case of a phi that is marked as relevant. Call vectorizable_reduction.
678         (vect_mark_relevant): Phis may be marked as relevant.
679         (vect_mark_stmts_to_be_vectorized): The use corresponding to the 
680         reduction variable in a reduction stmt does not mark its defining phi
681         as relevant. Update documentation accordingly.
682         (vect_can_advance_ivs_p): Skip reduction phis.
683         * tree-vect-transform.c (vect_get_vec_def_for_operand): Takes
684         additional argument. Handle reduction.
685         (vect_create_destination_var): Update call to vect_get_new_vect_var.
686         Handle non-vector argument.
687         (get_initial_def_for_reduction): New function.
688         (vect_create_epilog_for_reduction): New function. 
689         (vectorizable_reduction): New function.
690         (vect_get_new_vect_var): Handle new vect_var_kind.       
691         (vectorizable_assignment, vectorizable_operation, vectorizable_store,
692         vectorizable_condition): Update call to vect_get_new_vect_var.
693         (vect_transform_stmt): Call vectorizable_reduction.
694         (vect_update_ivs_after_vectorizer): Skip reduction phis.
695         (vect_transform_loop): Skip if stmt is both not relevant and not live.
696         * tree-vectorizer.c (reduction_code_for_scalar_code): New function.
697         (vect_is_simple_reduction): Was empty - added implementation.
698         * tree-vectorizer.h (vect_scalar_var): New enum vect_var_kind value.
699         (reduc_vec_info_type): New enum vect_def_type value.
700         * config/rs6000/altivec.md (reduc_smax_v4si, reduc_smax_v4sf,
701         reduc_umax_v4si, reduc_smin_v4si, reduc_umin_v4sf, reduc_smin_v4sf,
702         reduc_plus_v4si, reduc_plus_v4sf): New define_expands.
703
704         * tree-vect-analyze.c (vect_determine_vectorization_factor): Remove
705         ENABLE_CHECKING around gcc_assert.
706         * tree-vect-transform.c (vect_do_peeling_for_loop_bound,
707         (vect_do_peeling_for_alignment, vect_transform_loop, 
708         vect_get_vec_def_for_operand): Likewise.
709
710 2005-06-18  Joseph S. Myers  <joseph@codesourcery.com>
711
712         * config/ia64/ia64.c (ia64_function_arg): Set up a PARALLEL for a
713         big-endian unnamed __float80 value.
714
715 2005-06-18  Richard Henderson  <rth@redhat.com>
716
717         PR tree-opt/22103
718         * tree-sra.c (generate_copy_inout): Handle SSA_NAME complex
719         destinations.
720
721 2005-06-17  Richard Henderson  <rth@redhat.com>
722
723         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Use
724         initialize_original_copy_tables and free_original_copy_tables.
725         (vect_do_peeling_for_alignment): Likewise.
726
727 2005-06-17  Pat Haugen  <pthaugen@us.ibm.com>
728
729         * bb-reorder.c (find_traces_1_round): Use succ block frequency
730         instead of edge frequency for calls to better_edge_p.
731
732 2005-06-17  Andrew Pinski  <pinskia@physics.uc.edu>
733
734         PR tree-opt/22105
735         * tree-ssa-loop-im.c (for_each_index): Handle COMPLEX_CST.
736
737 2005-06-17  Steve Ellcey  <sje@cup.hp.com>
738
739         PR target/19889
740         * config/ia64/hpux.h (FUNCTION_PROFILER): New (dummy).
741         (PROFILE_HOOK): New.
742         (PROFILE_BEFORE_PROLOGUE): Undef.
743         (NO_PROFILE_COUNTERS): New.
744         * config/ia64/ia64-protos.h (ia64_profile_hook): New.
745         * config/ia64/ia64.c (ia64_compute_frame_size): Add ifdef.
746         (gen_mcount_func_rtx): New.
747         (ia64_profile_hook): New.
748         * config/ia64/ia64.md (ip_value): New.
749
750 2005-06-17  Devang Patel  <dpatel@apple.com>
751
752         * config/rs6000/predicates.md (s5bit_cint_operand,
753         u5bit_cint_operand): New.
754         * config/rs6000/altivec.md (altivec_vspltb, altivec_vsplth,
755         altivec_vspltisw_v4sf): Use new 5 bit constant operand predicates.
756         * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Fix signed
757         5 bit constant check.
758         
759 2005-06-17  Richard Henderson  <rth@redhat.com>
760
761         * local-alloc.c (update_equiv_regs): Update reg_equiv_init
762         properly when moving an initialization insn.
763
764 2005-06-17  Paolo Bonzini  <bonzini@gnu.org>
765
766         * aclocal.m4 (gcc_AC_CHECK_TOOL): Do not overwrite the
767         passed variable.
768         * configure.ac: Regenerate.
769
770 2005-06-17  Jan Hubicka  <jh@suse.cz>
771
772         * tree-optimize.c (execute_ipa_pass_list): New.
773         (ipa_passes): Use it.
774
775 2005-06-16  Richard Henderson  <rth@redhat.com>
776
777         PR tree-opt/22022
778         * tree-complex.c (update_phi_components): Avoid no-op moves.
779
780 2005-06-16  Joseph S. Myers  <joseph@codesourcery.com>
781
782         * Makefile.in (cc1-checksum.c): Use
783         build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
784
785 2005-06-16  Geoffrey Keating  <geoffk@apple.com>
786
787         * gengtype.c (adjust_field_rtx_def): Don't add a skip to
788         basic_block types.
789
790         * config/t-slibgcc-darwin (SHLIB_SOVERSION): Rename from
791         SHLIB_MINOR.
792         (SHLIB_REVISION): Delete.
793         (SHLIB_VERSTRING): Update to compensate.
794         (SHLIB_SONAME): Just use one '.' in the name.
795
796 2005-06-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
797
798         PR tree-optimization/22018
799         * tree-vrp.c (vrp_int_const_binop): Overhaul handling of overflow.
800
801 2005-06-16  Richard Henderson  <rth@redhat.com>
802
803         PR tree-opt/22035
804         * builtins.c (fold_builtin_complex_mul): Remove.
805         (fold_builtin_complex_div): Remove.
806         (fold_builtin_1): Don't call them.
807         * fold-const.c (fold_complex_add, fold_complex_mult_parts,
808         fold_complex_mult, fold_complex_div_parts, fold_complex_div): Remove.
809         (fold_binary): Don't call them.  Don't expand complex comparisons to
810         elementary comparisons.
811         * tree-complex.c (init_dont_simulate_again): Enhance search for 
812         stmts that require decomposition.
813         (complex_visit_stmt): Handle RETURN_EXPR properly.
814         (create_components): Handle no referenced variables properly.
815         * tree.h (fold_complex_mult_parts): Remove.
816         (fold_complex_div_parts): Remove.
817
818 2005-06-16  Richard Guenther  <rguenth@gcc.gnu.org>
819
820         * doc/extend.texi: Document sseregparm target attribute.
821         Clarify fastcall and regparm documentation.
822         * config/i386/i386.h: Adjust float_in_sse documentation.
823         * config/i386/i386.c: Add new target attribute sseregparm.
824         (ix86_handle_cdecl_attribute, ix86_handle_regparm_attribute):
825         Merge into ...
826         (ix86_handle_cconv_attribute): ... here.  Also handle
827         sseregparm attribute.
828         (ix86_comp_type_attributes): Compare sseregparm attributes.
829         (ix86_function_sseregparm): New function, split out from ...
830         (init_cumulative_args): ... here.  Use to decide use
831         of SSE registers and error in case of missing support.
832         (ix86_value_regno): Likewise.
833         (function_arg_advance): Do not bail out for DFmode if we need
834         to pass doubles in registers.
835         (function_arg): Likewise.
836
837 2005-06-16  Paolo Bonzini  <bonzini@gnu.org>
838             Daniel Jacobowitz  <dan@codesourcery.com>
839             Alan Modra <amodra.bigpond.net.au>
840
841         * configure.ac (gcc_version): Set near the beginning.
842         (as, ld, nm): Do not link in-tree tools.  Set gcc_cv_* if tools are
843         found in the tree.  Use gcc_AC_PROG to find the tools in the system.
844         (objdump): Do not look for it.
845         * Makefile.in (NM_FOR_TARGET): Point to ./nm
846         (ORIGINAL_AS_FOR_TARGET, ORIGINAL_LD_FOR_TARGET,
847         ORIGINAL_NM_FOR_TARGET): Substitute from autoconf.
848         (as, ld, nm): New rules.
849         (libgcc.mk): Depend on them.
850         * aclocal.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL,
851         gcc_AC_BUILD_EXEEXT): New.
852         (gcc_AC_CHECK_PROG_VER): Use gcc_AC_BUILD_EXEEXT.
853         * configure: Regenerate.
854
855 2005-06-16  Jan Hubicka  <jh@suse.cz>
856
857         * basic-block.h (rtl_bb_info): Break out head_, end_,
858         global_live_at_start, global_live_at_end from ...
859         (basic_block_def): ... here; update all references
860         (BB_RTL): New flag.
861         (init_rtl_bb_info): Declare.
862         * cfgexpand.c (expand_gimple_basic_block): Init bb info, set BB_RTL
863         flag.
864         * cfgrtl.c: Include ggc.h
865         (create_basic_block_structure): Init bb info.
866         (rtl_verify_flow_info_1): Check BB_RTL flag and rtl_bb_info pointer.
867         (init_rtl_bb_info): New function.
868         (rtl_merge_block, cfglayout_merge_block): Copy global_live_at_end here.
869         * cfghooks.c (merge_block): Do not copy global_live_at_end here.
870         * cfg.c (clear_bb_flags): Skip BB_RTL flag.
871         (dump_flow_info): Gueard global_live_* dumping.
872
873         * Makefile.in (cfg.o): Add new dependencies.
874         * basic-block.h (reorder_block_def): Kill
875         original/copy/duplicated/copy_number fields.
876         (BB_DUPLICATED): New flag.
877         (initialize_original_copy_tables, free_original_copy_tables,
878         set_bb_original, get_bb_original, set_bb_copy, get_bb_copy): New.
879         * cfg.c: Include hashtab.h and alloc-pool.h
880         (bb_original, bb_copy, original_copy_bb_pool): New static vars.
881         (htab_bb_copy_original_entry): New struct.
882         (bb_copy_original_hash, bb_copy_original_eq): New static functions.
883         (initialize_original_copy_tables, free_original_copy_tables,
884         set_bb_original, get_bb_original, set_bb_copy, get_bb_copy): New
885         global functions.
886         * cfghooks.c (duplicate_block): Update original/copy handling.
887         * cfglayout.c (fixup_reorder_chain): Likewise.
888         (cfg_layout_initialize): Initialize orignal_copy tables.
889         (cfg_layout_finalize): FInalize original_copy tables.
890         (can_copy_bbs_p): Use BB_DUPLICATED flag.
891         (copy_bbs): Likewise.
892         * cfgloopmanip.c (update-single_exits_after_duplication): Likewise.
893         (duplicate_loop_to_header_edge): Likewise; update handling of
894         copy_number.
895         (loop_version): Likewise.
896         * dominance.c (get_dominated_by_region): Use BB_DUPLICATED_FLAG.
897         * except.c (expand_resx_expr): Check that reg->resume is not set.
898         * loop-unroll.c (unroll_loop_constant_iterations,
899         unroll_loop_runtime_iterations, apply_opt_in_copies): Update
900         copy/original handling.
901         * loop-unwitch.c (unswitch_loop): Likewise.
902         * tree-cfg.c (create_bb): Do not initialize RBI.
903         (disband_implicit_edges): Do not kill RBI.
904         (add_phi_args_after_copy_bb): Use new original/copy mapping.
905         (add_phi_args_after_copy): Use BB_DUPLICATED flag.
906         (tree_duplicate_sese_region): Update original/copy handling.
907         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
908         * tree-ssa-loop-manip.c (copy_phi_node_args): Likewise.
909         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Likewise.
910
911 2005-06-15  Andrew Pinski  <pinskia@physics.uc.edu>
912
913         PR tree-opt/21923
914         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Conversions between
915         integer types whos ranges are different are not useless.
916
917 2005-06-15  Andrew Pinski  <pinskia@physics.uc.edu>
918
919         PR tree-opt/22024
920         * tree-ssa-reassoc.c (init_reassoc): Also give chain decl a distint
921         rank.
922
923 2005-06-15  Diego Novillo  <dnovillo@redhat.com>
924
925         * tree-ssa-structalias.c (dump_solution_for_var): Reformat
926         output.
927         (dump_sa_points_to_info): Make extern.
928         (debug_sa_points_to_info): New.
929         * tree-ssa-structalias.h (TREE_SSA_STRUCTALIAS_H): Rename from
930         TREE_ALIAS_COMMON.
931         (dump_sa_points_to_info): Declare.
932         (debug_sa_points_to_info): Declare.
933
934 2005-06-15  Joseph S. Myers  <joseph@codesourcery.com>
935
936         * c-tree.h (default_function_array_conversion): Declare.
937         * c-typeck.c (default_function_array_conversion): Export.  Correct
938         comment.
939         (default_conversion): Do not call
940         default_function_array_conversion.  Do not allow FUNCTION_TYPE.
941         (build_function_call): Call default_function_array_conversion on
942         the function.
943         (convert_arguments): Do not call it on the function arguments.
944         (build_unary_op): Do not allow ARRAY_TYPE or FUNCTION_TYPE for
945         TRUTH_NOT_EXPR.  Call default_function_array_conversion for taking
946         address of ARRAY_REF.
947         (build_compound_expr): Do not call
948         default_function_array_conversion.
949         (build_c_cast): Do not call default_function_array_conversion.
950         (convert_for_assignment): Do not call default_conversion.
951         (digest_init): Call default_function_array_conversion to convert
952         string constants and compound literals to pointers, but not
953         otherwise.
954         (output_init_element): Likewise.
955         (build_asm_expr): Do not call default_function_array_conversion.
956         (c_process_expr_stmt): Likewise.
957         (c_objc_common_truthvalue_conversion): Likewise.  Do not allow
958         FUNCTION_TYPE.
959         * c-parser.c (c_parser_expression_conv): New.
960         (c_parser_asm_operands, c_parser_expr_list): Add convert_p
961         argument.  All callers changed.  Call
962         default_function_array_conversion if convert_p.
963         (c_parser_initializer, c_parser_initval): Call
964         default_function_array_conversion except for string constants and
965         compound literals.
966         (c_parser_initelt): Call default_function_array_conversion for
967         ObjC expression received.
968         (c_parser_statement_after_labels): Call c_parser_expression_conv
969         for return and expression statements.
970         (c_parser_paren_condition, c_parser_for_statement,
971         c_parser_conditional_expression): Call c_parser_expression_conv.
972         (c_parser_expr_no_commas, c_parser_conditional_expression,
973         c_parser_binary_expression, c_parser_cast_expression,
974         c_parser_unary_expression): Call
975         default_function_array_conversion.
976
977 2005-06-15  Diego Novillo  <dnovillo@redhat.com>
978
979         * tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR
980         when the result overflows.
981
982 2005-06-15  David Ung  <davidu@mips.com>
983
984         * config/mips/mips.c (mips_rtx_cost_data): Add cost for 4kc, 4kp,
985         24k and 24kx.
986         
987 2005-06-15  Richard Sandiford  <richard@codesourcery.com>
988
989         * doc/invoke.texi (-mips16): Fix typo.
990
991 2005-06-15  David Ung  <davidu@mips.com>
992
993         * config/mips/mips.h (GENERATE_MIPS16E): New definition.
994         * config/mips/mips.md (zero_extend<SHORT:mode><GPR:mode>2):
995         Changed expand condition to exclude generating of "and" if
996         GENERATE_MIPS16E is true.
997         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): New pattern for
998         matching mips16e zeb/zeh.
999         (*extend<SHORT:mode><GPR:mode>2_mips16e): New pattern for matching
1000         mips16e seb/seh. 
1001         (*extend<SHORT:mode><GPR:mode>2): Disable this pattern for
1002         GENERATE_MIPS16E. 
1003         * doc/invoke.texi (MIPS Options): Add comment to -mips16
1004         indicating MIPS16e ASE is used if targetting for MIPS32 or MIPS64.
1005         
1006 2005-06-15  Diego Novillo  <dnovillo@redhat.com>
1007
1008         PR 22018
1009         * tree-vrp.c (vrp_int_const_binop): New.
1010         (extract_range_from_binary_expr): Call it.
1011         Unify handling division and multiplication.
1012
1013 2005-06-15  Aldy Hernandez  <aldyh@redhat.com>
1014
1015         * c-common.h (same_scalar_type_ignoring_signedness): Protoize.
1016
1017         * c-common.c (same_scalar_type_ignoring_signedness): New.
1018
1019         * c-typeck.c (build_binary_op): Check compatability of vector
1020         types.  Move error report after switch.
1021         Do not clobber code[01] on *_DIV_EXPR case.
1022
1023         * testsuite/gcc.dg/simd-1.c: Update error messages.
1024         * testsuite/gcc.dg/simd-1b.c: Re-enable tests.  Update error
1025         messages.
1026         * testsuite/gcc.dg/simd-2.c: Update error messages.
1027         * testsuite/gcc.dg/simd-4.c: New.
1028
1029 2005-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1030
1031         * Makefile.in (local-alloc.o): Depend on $(GGC_H) and reload.h.
1032         * local-alloc.c: Include "ggc.h" and "reload.h".
1033         (struct equivalence): New member is_arg_equivalence.
1034         (local_alloc): Always call update_equiv_regs.
1035         (update_equiv_regs): Allocate reg_equiv_init; set reg_equiv_init_size.
1036         Detect equivalences made by stores to memory in a second pass.
1037         Return early if not optimizing.
1038         Initialize reg_equiv_init for all equivalences; treat equivalences for
1039         REG_EQUIV notes existing before this pass specially.
1040         (no_equiv): Don't clear reg_equiv_init or remove notes if the
1041         is_arg_equivalence field is set.
1042         * reload.h (reg_equiv_init, reg_equiv_init_size): Declare.
1043         * reload1.c (reg_equiv_init): No longer static.
1044         (reg_equiv_init_size): New variable.
1045         (reload): Don't allocate reg_equiv_init; don't free it when done but
1046         clear it.
1047         Restructure equivalence set up code not to set reg_equiv_init, but to
1048         clear it when we can't use an equivalence.
1049         Undo change disabling equivalences for MEM_READONLY_P memrefs.
1050         Dump equivalencing insns to dump_file.
1051
1052 2005-06-14  Richard Sandiford  <richard@codesourcery.com>
1053
1054         * config/mips/mips.c (machine_function): Add varargs_size field.
1055         (mips_setup_incoming_varargs): Store the amount of extra stack space
1056         there rather than in *pretend_size.  When saving registers, always
1057         expect virtual_incoming_args_rtx to point to the start of the
1058         pretend arguments.
1059         (mips_va_start): Remove alignment hack.  Handle all
1060         !EABI_FLOAT_VARARGS_P cases in the same way.
1061         (compute_frame_size): Handle varargs_size.  Remove the redundant
1062         !TARGET_OLDABI condition in the handling of pretend_args_size.
1063         (mips_initial_elimination_offset): Remove the now-redundant check
1064         of TARGET_NEWABI.
1065
1066 2005-06-14  Jeff Law  <law@redhat.com>
1067
1068         * tree-vrp.c (local_fold): Remove.
1069         (simplify_using_ranges): Use fold_convert, not local_fold.  Tweak
1070         DIV/MOD case slightly for readability.
1071
1072 2005-06-14  Frank Ch. Eigler  <fche@redhat.com>
1073
1074         PR mudflap/21023
1075         * tree-mudflap.c (mudflap_finish_file): Exclude non-public
1076         rather than static objects (!) from libmudflap registration.
1077
1078 2005-06-14  Richard Sandiford  <richard@codesourcery.com>
1079
1080         * opt-functions.awk (global_state_p, needs_state_p, static_var): New.
1081         (var_ref): Take the option's flags as a second parameter.  Check
1082         static_var.
1083         * optc-gen.awk: Declare local state variables.  Pass flags to var_ref.
1084
1085 2005-06-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
1086
1087         PR target/20301
1088         * config/sparc/sol2.h (ASM_GENERATE_INTERNAL_LABEL): Emit
1089         unsigned index numbers.
1090
1091 2005-06-13  Geoffrey Keating  <geoffk@apple.com>
1092
1093         * Makefile.in (install-man): Doesn't really depend on installdirs.
1094         (various rules for installing manpages): Do depend on installdirs.
1095
1096 2005-06-14  Nathan Sidwell  <nathan@codesourcery.com>
1097
1098         * unwind-dw2-fde-darwin.c (examine_objects): Fix aliasing in
1099         read_encoded_value_with_base call.
1100         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Likewise.
1101         * unwind-dw2-fde.c (_Unwind_Find_FDE): Likewise.
1102         * unwind-dw2.c (extract_cie_info): Fix aliasing in
1103         read_encoded_value call.
1104         (execute_cfa_program, uw_frame_state_for): Likewise.
1105
1106 2005-06-13  Roger Sayle  <roger@eyesopen.com>
1107
1108         PR rtl-optimization/22053
1109         * reg-stack.c (compensate_edge): Correct mistake in the assertion
1110         checking of EDGE_ABNORMAL_CALL edges; complex return values can
1111         result in the top two stack slots, st(0) and st(1), being live.
1112
1113 2005-06-13  Jeff Law  <law@redhat.com>
1114
1115         * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): No longer
1116         simplify DIV, MOD or ABS expressions using VRP information.
1117         Remove WALK_DATA parameter.  Prototype and all callers updated.
1118         (eliminate_redundant_computations): Remove WALK_DATA parameter.
1119         Prototype and all callers updated.
1120         (optimize_stmt): WALK_DATA parameter is now unused.
1121
1122         * tree-vrp.c (local_fold): New function.  Like fold, but
1123         strips useless type conversions in the result.
1124         (simplify_using_ranges): New function, largely cribbed from
1125         tree-ssa-dom.c::simplify_rhs_and_lookup_avail_expr.
1126         (vrp_finalize): Call simplify_using_ranges.
1127
1128 2005-06-13  Mark Mitchell  <mark@codesourcery.com>
1129
1130         * config/i386/x86-64.h (ASM_SPEC): Explicitly pass --64 to the
1131         assembler in 64-bit mode.
1132
1133 2005-06-13  David Edelsohn  <edelsohn@gnu.org>
1134
1135         Revert scc_operand patch.
1136         * config/rs6000/predicates.md (scc_operand): Delete.
1137         * config/rs6000/rs6000.md (scc_operand): Change to scc_eq_operand.
1138
1139 2005-06-13  Zdenek Dvorak  <dvorakz@suse.cz>
1140
1141         PR middle-end/21985
1142         * fold-const.c (split_address_to_core_and_offset): Always return
1143         the address of the base object.
1144
1145 2005-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1146
1147         * doc/invoke.texi (Blackfin Options): Document -mlong-calls.
1148
1149 2005-06-12  Richard Henderson  <rth@redhat.com>
1150
1151         PR tree-opt/21994
1152         * tree-complex.c (update_complex_components_on_edge): New.
1153         (update_parameter_components): Use it.
1154         (update_phi_components): Likewise.
1155         (expand_complex_move): Likewise for is_ctrl_altering_stmt.
1156
1157 2005-06-12  James A. Morrison  <phython@gcc.gnu.org>
1158
1159         PR tree-optimization/14796
1160         * fold-const (fold_binary): Transform (X << C) >> C into X & (-1>>C)
1161         for unsigned types.
1162
1163 2005-06-12  Kazu Hirata  <kazu@codesourcery.com>
1164
1165         * cgraphunit.c, tree-ssa-loop-ivopts.c,
1166         tree-ssa-structalias.c, tree-vectorizer.c, tree-vectorizer.h,
1167         config/sparc/sparc.c: Fix comment typos.
1168
1169 2005-06-12  Richard Earnshaw  <richard.earnshaw@arm.com>
1170
1171         * arm/ieee754-df.s (aeabi_dcmpeq, aeabi_dcmplt, aeabi_dcmple)
1172         (aeabi_dcmpge, aeabi_dcmpgt): Maintain 8-byte stack alignment.
1173         * arm/ieee754-sf.s (aeabi_l2f, aeabi_fcmpeq, aeabi_fcmplt)
1174         (aeabi_fcmple, aeabi_fcmpge, aeabi_fcmpgt): Likewise.
1175
1176 2005-06-12  James A. Morrison  <phython@gcc.gnu.org>
1177
1178         PR tree-optimization/14796
1179         * fold-const.c (fold_binary): Transform (A >> C) << C into
1180         one BIT_AND_EXPR.
1181         <shift>: Transform (A OP c1) OP c2 into A OP (c1 + c2).
1182
1183 2005-06-11  Geoffrey Keating  <geoffk@apple.com>
1184
1185         * config/rs6000/predicates.md (reg_or_arith_cint_operand): Delete.
1186         (reg_or_add_cint_operand): Rename from reg_or_add_cint64_operand.
1187         Handle SImode.
1188         (reg_or_sub_cint_operand): Likewise.
1189         (mask_operand): Handle DImode.
1190         (mask64_operand): Delete.
1191         (and64_operand): Delete.
1192         * config/rs6000/rs6000.c (num_insns_constant): Use mask_operand
1193         instead of mask64_operand.
1194         (print_operand): Likewise.
1195         (rs6000_rtx_costs): Use mask_operand and reg_or_add_cint_operand and
1196         reg_or_sub_cint_operand instead of *64_* variants.
1197         * config/rs6000/rs6000.h (EXTRA_CONSTRAINT): Use mask_operand
1198         instead of mask64_operand.
1199         * config/rs6000/rs6000.md: Use mask_operand and and_operand instead
1200         of *64_* variants.
1201         (FP): New.
1202         (add_op2): Delete.
1203         (add<mode>3): Use reg_or_add_cint_operand.
1204         (sub_op2): Delete.
1205         (sub<mode>3): Use reg_or_sub_cint_operand.
1206         (udiv<mode>3, div<mode>3, div<mode>3_no_mq, mod<mode>3,
1207         mov<mode>_internal2, mov<mode>, cmp<mode>, cmp<mode>,
1208         cmp<mode>_internal1, indirect_jump<mode>, ctr<mode>,
1209         ctr<mode>_internal1, ctr<mode>_internal2, ctr<mode>_internal5,
1210         ctr<mode>_internal6, save_fpregs_<mode>, return_internal_<mode>,
1211         return_and_restore_fpregs_<mode>, eh_set_lr_<mode>,
1212         various unnamed patterns): New.
1213         (udivsi3, divsi3, divsi3_no_mq, modsi3, movsi_internal2, movsi,
1214         cmpsi, cmpsi_internal1, indirect_jumpsi, ctrsi, ctrsi_internal1,
1215         ctrsi_internal2, ctrsi_internal5, ctrsi_internal6, save_fpregs_si,
1216         return_internal_si, return_and_restore_fpregs_si, eh_set_lr_si,
1217         udivdi3, divdi3, divdi3_no_mq, moddi3, movdi_internal2, movdi,
1218         cmpdi, cmpdi_internal1, indirect_jumpdi, ctrdi, ctrdi_internal1,
1219         ctrdi_internal2, ctrdi_internal5, ctrdi_internal6, save_fpregs_di,
1220         return_internal_di, return_and_restore_fpregs_di, eh_set_lr_di,
1221         movhi, movqi, cmpsf, cmpdf, cmptf, various unnamed patterns):
1222         Delete.
1223
1224 2005-06-11  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1225
1226         * rtl.h (to_rtx_code): Remove.
1227         * machmode.h (to_machine_mode): Likewise.
1228         * read-rtl.c (apply_mode_macro): Replace to_machine_mode with
1229         explicit cast.
1230         (apply_mode_maps): Likewise.
1231         (read_rtx_1): Likewise.
1232         (apply_code_macro): Replace to to_rtx_code with explicit cast.
1233         (check_code_macro): Likewise.
1234         (read_rtx_1): Likewise.
1235
1236 2005-06-11  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1237
1238         * c-typeck.c (convert_for_assignment): Avoid checking
1239         OPT_Wc___compat, as it is always true.
1240
1241 2005-06-11  David Edelsohn  <edelsohn@gnu.org>
1242
1243         * config/rs6000/rs6000.md (eq<mode>_compare): Restrict to Pmode.
1244
1245 2005-06-11  Daniel Berlin  <dberlin@dberlin.org>
1246
1247         Fix PR tree-optimization/22005
1248         Fix PR tree-optimization/22025
1249         
1250         * tree-ssa-structalias.c (struct variable_info): Add has_union
1251         member.
1252         (create_variable_info_for):  Mark variables containing unions.
1253         Don't sort the field stack if notokay is true.
1254         (find_what_p_points_to): Convert variables containing unions back
1255         to their SFT's if necessary.
1256         
1257 2005-06-11  Daniel Berlin  <dberlin@dberlin.org>
1258
1259         * lambda-code.c (replace_uses_equiv_to_x_with_y): Verify the step
1260         is an INTEGER_CST before calling int_cst_value.
1261
1262 2005-06-10  Uros Bizjak  <uros@kss-loka.si>
1263
1264         PR target/21981
1265         * config/i386/i386.c (ix86_function_value_regno_p): Return true
1266         for FIRST_MMX_REG if TARGET_MMX.
1267         (ix86_return_in_memory): Return 1 for MMX/3dNow vectors. Delete
1268         wrong comment.
1269         (ix86_struct_value_rtx): Emit warning for MMX ABI violations.
1270         (ix86_value_regno): Return FIRST_MMX_REG for MMX vector modes.
1271
1272 2005-06-10  Daniel Berlin  <dberlin@dberlin.org>
1273
1274         * lambda-code.c (replace_uses_equiv_to_x_with_y): Check step
1275         and access function against chrec_dont_know.
1276           
1277 2005-06-10  Daniel Berlin  <dberlin@dberlin.org>
1278
1279         * lambda-code.c (replace_uses_of_x_with_y): Renamed and rewritten
1280         slightly.
1281         (exit_phi_for_loop_p): New function.
1282         (can_put_in_inner_loop): Ditto.
1283         (can_convert_to_perfect_nest): Ditto.
1284         (perfect_nestify): Create iv with right type.
1285         Rewrite statements in correct order.    
1286
1287 2005-06-10  Keith Besaw  <kbesaw@us.ibm.com>
1288
1289         * tree-ssa-alias.c (new_type_alias): Use existing type
1290         tag if VAR has just one in its may_aliases list.
1291
1292 2005-06-10  Fariborz Jahanian <fjahanian@apple.com>
1293
1294         * rs6000/predicates.md (scc_operand): New.
1295         * rs6000/rs6000.md : Use scc_operand for eq:SI compares.
1296
1297 2005-06-10  Dorit Nuzman  <dorit@il.ibm.com>
1298
1299         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): DRs whose
1300         dependence-distance modulo VF is 0 are recorded in the 
1301         SAME_ALIGN_REFs VEC in each DR.
1302         (vect_enhance_data_refs_alignment): Avoid 80 column overflow. The
1303         alignment information of DRs that are in the SAME_ALIGN_REFs VEC of the
1304         DR we want to peel for, is set to 0.
1305         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Fix printout.
1306         * tree-vectorizer.c (destroy_loop_vec_info): Free the SAME_ALIGN_REFs
1307         VEC.
1308         * tree-vectorizer.h (dr_p): New type. Defined to use the VEC API.
1309         (_stmt_vec_info): Added new field same_align_refs.
1310         (STMT_VINFO_SAME_ALIGN_REFS): New macro.
1311
1312 2005-06-10  Nathan Sidwell  <nathan@codesourcery.com>
1313
1314         * vec.h (VEC_safe_grow): Append MEM_STAT_INFO.
1315
1316 2005-06-10  Alan Modra  <amodra@bigpond.net.au>
1317
1318         * config/rs6000/linux.h (NO_PROFILE_COUNTERS): Define.
1319         * config/rs6000/linux64.h (NO_PROFILE_COUNTERS): Define as 1.
1320         * config/rs6000/rs6000.c (output_function_profiler): Obey
1321         NO_PROFILE_COUNTERS.  Handle TARGET_SECURE_PLT.  Use "bcl 20,31"
1322         for -fPIC.  Delete save_lr and substitute its value into strings.
1323
1324 2005-06-09  Dale Johannesen  <dalej@apple.com>
1325
1326         * config/i386/i386.c (optimization_options):  Make -fno-math-errno
1327         the default on Darwin.
1328         * config/rs6000/rs6000.c (optimization_options):  Ditto.
1329         * doc/invoke.texi (-fno-math-errno): Document.
1330
1331 2005-06-09  Dale Johannesen  <dalej@apple.com>
1332
1333         * config/rs6000/rs6000.c (TARGET_INSN_VALID_WITHIN_DOLOOP):
1334         Change to TARGET_INVALID_WITHIN_DOLOOP.
1335
1336 2005-06-09  David Edelsohn  <edelsohn@gnu.org>
1337
1338         * config/rs6000/rs6000.md (eq): Convert to define_insn_and_split.
1339         * config/rs6000/predicates.md (scc_eq_operand): New.
1340
1341 2005-06-09  Kaz Kojima  <kkojima@gcc.gnu.org>
1342
1343         * config/sh/sh.md (mextr_rl): Set buffer size properly.
1344         (*mextr_lr): Likewise.
1345
1346 2005-06-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1347
1348         PR c/21759
1349         * c.opt (Wc++-compat): New.
1350         * doc/invoke.texi (-Wc++-compat): Document.
1351         * c-typeck.c (convert_for_assignment): Check for implicit
1352         conversion void* -> T*.
1353
1354 2005-06-09  Gabriel Dos Reis  <gdr@integrable-solutions.edu>
1355
1356         * machmode.h (to_machine_mode): New.
1357         * rtl.h (to_rtx_code): Likewise.
1358         * read-rtl.c (apply_mode_macro): Convert mode to machine_mode.
1359         (print_c_condition): Convert return value of htab_find().
1360         (apply_code_macro): Add explicit cast when convertin to enums.
1361         (apply_mode_maps): Likewise.
1362         (check_code_macro): Likewise.
1363         (read_rtx_1): Likewise.
1364
1365 2005-06-09  Richard Henderson  <rth@redhat.com>
1366
1367         * config/ia64/ia64.c (update_set_flags): Just return for IF_THEN_ELSE.
1368         Use SCALAR_FLOAT_MODE_P.
1369         * config/ia64/vect.md (vcondv2sf): Remove code check on comparison.
1370         (fselect): Rename from fpcmp; use %F.
1371         (fpcmp): New.
1372
1373 2005-06-09  Jan Hubicka  <jh@suse.cz>
1374
1375         * cgraphunit.c (cgraph_create_edges): Do not walk BLOCK; finalize
1376         local statics when doing unit-at-a-time.
1377         (cgraph_varpool_assemble_pending_decls): Output debug info.
1378         * dwarf2out.c (decls_for_scope): Skip local statics.
1379         (dwarf2out_decl): Handle local statics.
1380         * passes.c (rest_of_decl_compilation): Do not differentiate
1381         local and global statics in unit-at-a-time.
1382         * tree-inline.c (remap_decls): Put local static into
1383         unexpanded_vars_list rather than introducing duplicated VAR_DECL
1384         node.
1385
1386 2005-06-09  Daniel Berlin  <dberlin@dberlin.org>
1387
1388         * config/rs6000/rs6000.c: (rs6000_insn_valid_within_doloop): Fix
1389         prototype.
1390
1391 2005-06-08  Daniel Berlin  <dberlin@dberlin.org>
1392
1393         * Makefile.in (OBJS-common): Add tree-ssa-structalias.o.
1394         * tree-flow.h (find_what_p_points_to): Add prototype.
1395         (push_fields_onto_fieldstack): Ditto.
1396         (sort_fieldstack): Ditto.
1397         * tree-optimize.c (init_tree_optimization_passes): Add
1398         pass_build_pta and pass_del_pta.
1399         * tree-pass.h (pass_build_pta): New structure.
1400         (pass_del_pta): Ditto.
1401         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Disambiguate
1402         using new alias analyzer.
1403         (push_fields_onto_fieldstack): Removed from here.
1404         (bitpos_of_field): Ditto.
1405         (fieldoff_compare): Ditto.
1406         * tree-ssa-structalias.c: New file.
1407         * tree-ssa-structalias.h: Ditto.
1408
1409 2005-06-09  Nathan Sidwell  <nathan@codesourcery.com>
1410
1411         * c-typeck.c (build_c_cast): Check type punning on COMPONENT_REF
1412         too.
1413
1414 2005-06-09  Bernd Schmidt  <bernd.schmidt@analog.com>
1415
1416         * config/bfin/bfin.c (enum bfin_builtins): Moved here from...
1417         * config/bfin/bfin.h (enum bfin_builtins): ... here.
1418
1419 2005-06-09  Adrian Straetling  <straetling@de.ibm.com>
1420
1421         * target.h (insn_valid_within_doloop): Rename into
1422         "invalid_within_doloop".  Change return type to "const char *".
1423         Update Comment.
1424         * targhooks.h (default_insn_valid_within_doloop): Rename into
1425         "default_invalid_within_doloop". 
1426         * targhooks.c (default_insn_valid_within_doloop): Likewise.
1427         Update Comment.
1428         * target-def.h (TARGET_INSN_VALID_WITHIN_DOLOOP): Rename target hook
1429         into "TARGET_INVALID_WITHIN_DOLOOP". Default it to
1430         "default_invalid_within_doloop".
1431         * hooks.c (hook_constcharptr_rtx_null): New function.
1432         (hook_bool_rtx_true): Remove.
1433         * hooks.h (hook_constcharptr_rtx_null): Declare.
1434         (hook_bool_rtx_true): Remove.
1435         * loop-doloop.c (doloop_valid_p): Temporarily store return value of
1436         "invalid_within_doloop" and print error message if non-null.
1437         Update Comment.
1438         * doc/tm.texi: Update documentation.
1439         * config/s390/s390.c: Adjust to new hook name and new default hook.
1440         * config/rs6000/rs6000.c: (rs6000_insn_valid_within_doloop): Rename
1441         into "rs6000_invalid_within_doloop".
1442         (rs6000_invalid_within_doloop): Change return type to "static const
1443         char *" and replace return values.  Update Comment.
1444
1445 2005-06-09  Bernd Schmidt  <bernd.schmidt@analog.com>
1446
1447         * config/bfin/bfin.opt (mlong-calls): New.
1448         * config/bfin/predicates.md (call_insn_operand): Disallow SYMBOL_REF
1449         if TARGET_LONG_CALLS.
1450
1451 2005-06-09  Richard Henderson  <rth@redhat.com>
1452
1453         PR tree-opt/20610
1454         * tree.h (DECL_COMPLEX_GIMPLE_REG_P): New.
1455         (struct tree_decl): Add gimple_reg_flag.
1456         * integrate.c (copy_decl_for_inlining): Copy it.
1457         * gimplify.c (internal_get_tmp_var): Set it.
1458         (gimplify_bind_expr): Likewise.
1459         (gimplify_function_tree): Likewise.
1460         (gimplify_modify_expr_complex_part): New.
1461         (gimplify_modify_expr): Use it.
1462         * tree-gimple.c (is_gimple_reg_type): Allow complex.
1463         (is_gimple_reg): Allow complex with DECL_COMPLEX_GIMPLE_REG_P set.
1464
1465         * tree-complex.c (complex_lattice_t): New.
1466         (complex_lattice_values, complex_variable_components): New.
1467         (some_nonzerop, find_lattice_value, is_complex_reg,
1468         init_parameter_lattice_values, init_dont_simulate_again, 
1469         complex_visit_stmt, complex_visit_phi, create_components,
1470         update_complex_components, update_parameter_components, 
1471         update_phi_components, update_all_vops, expand_complex_move): New.
1472         (extract_component): Handle INDIRECT_REF, COMPONENT_REF, ARRAY_REF,
1473         SSA_NAME.
1474         (update_complex_assignment): Use update_complex_components;
1475         handle updates of return_expr properly.
1476         (expand_complex_addition): Use complex lattice values.
1477         (expand_complex_multiplication): Likewise.
1478         (expand_complex_division): Likewise.
1479         (expand_complex_libcall): Use update_complex_components.
1480         (expand_complex_comparison): Use update_stmt.
1481         (expand_complex_operations_1): Use expand_complex_move, retrieve
1482         lattice values.
1483         (tree_lower_complex): Compute lattice values.
1484         (tree_lower_complex_O0): Duplicate from tree_lower_complex.
1485         (pass_lower_complex_O0): Rename from pass_lower_complex.
1486         (pass_lower_complex, gate_no_optimization): New.
1487         * tree-optimize.c (init_tree_optimization_passes): Update for
1488         complex pass changes.
1489         * tree-pass.h (pass_lower_complex_O0): Declare.
1490
1491 2005-06-08  Dale Johannesen  <dalej@apple.com>
1492
1493         * config/darwin.c (darwin_binds_local_p):  New.
1494         * config/darwin-protos.h (darwin_binds_local_p):  Declare it.
1495         * config/i386/i386.c (TARGET_BINDS_LOCAL_P):  Use it for TARGET_MACHO.
1496         * config/rs6000/rs6000.c (rs6000_binds_local_p):  Remove.
1497         (TARGET_BINDS_LOCAL_P):  Change it to darwin_binds_local_p.
1498
1499 2005-06-08  Aldy Hernandez  <aldyh@redhat.com>
1500
1501         * config/rs6000/rs6000.h: Remove rs6000_long_double_size_string,
1502         rs6000_isel, rs6000_spe, rs6000_alignment_string,
1503         rs6000_sched_restricted_insns_priority_str,
1504         rs6000_sched_restricted_insns_priority, rs6000_abi_string.
1505
1506 2005-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
1507
1508         * tree-ssa-address.c (addr_for_mem_ref): Use LAST_VIRTUAL_REGISTER
1509         instead of FIRST_PSEUDO_REGISTER for creating pseudoregisters.
1510         * tree-ssa-loop-ivopts.c (add_cost, multiply_by_cost,
1511         multiplier_allowed_in_address_p, get_address_cost): Ditto.
1512
1513 2005-06-08  Richard Henderson  <rth@redhat.com>
1514
1515         * config/ia64/ia64.h (NO_PROFILE_COUNTERS): New.
1516         * config/ia64/ia64.c (ia64_output_function_profiler): Honor it.
1517         Emit out3 load right after alloc.
1518
1519 2005-06-08  Aldy Hernandez  <aldyh@redhat.com>
1520
1521         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
1522         rs6000_explicit_options.
1523
1524 2005-06-08  Richard Henderson  <rth@redhat.com>
1525
1526         * config/ia64/ia64.h (FUNCTION_PROFILER): Move implementation ...
1527         * config/ia64/ia64.c (ia64_output_function_profiler): ... here; add
1528         unwind markup.
1529         * config/ia64/ia64-protos.h (ia64_output_function_profiler): Declare.
1530
1531 2005-06-08  Joseph S. Myers  <joseph@codesourcery.com>
1532
1533         * config/sol2-c.c (cmn_err_char_table): Allow width for %b
1534         formats.
1535
1536 2005-06-08  James A. Morrison  <phython@gcc.gnu.org>
1537
1538         PR target/20666
1539         * config/sparc/sparc.c (sparc_fold_builtin): New function
1540         (sparc_vis_mul8x16): New function.
1541         (sparc_handle_vis_mul8x16): New function.
1542         (TARGET_FOLD_BUILTIN): Define to sparc_fold_builtin.
1543
1544 2005-06-08  David Edelsohn  <edelsohn@gnu.org>
1545
1546         * config/rs6000/rs6000.md (call_indirect_nonlocal_aix32): Prefer
1547         CTR to LR.
1548         (call_indirect_nonlocal_aix64): Same.
1549         (call_value_indirect_nonlocal_aix32): Same.
1550         (call_value_indirect_nonlocal_aix64): Same.
1551
1552         PR target/10588
1553         (eq): Use CLZ splitter for compare with zero.
1554
1555 2005-06-08  Bernd Schmidt  <bernd.schmidt@analog.com>
1556
1557         * config/bfin/bfin.c (bfin_return_in_memory): Simplify; return
1558         everything larger than 8 bytes in memory.
1559
1560         * config/bfin/bfin.h (enum bfin_builtins): New.
1561         * config/bfin/bfin.md (UNSPEC_VOLATILE_CSYNC, UNSPEC_VOLATILE_SSYNC):
1562         New constants.
1563         (csync, ssync): New insn patterns.
1564         * config/bfin/bfin.c (bfin_init_builtins, bfin_expand_builtin):
1565         New functions.
1566         (def_builtin): New macro.
1567         (TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.
1568
1569         From Jie Zhang  <jie.zhang@analog.com>
1570         * config/bfin/bfin.h (ASM_OUTPUT_ALIGN): Gas now emulates the
1571         behavior of the native assembler in VDSP. So change accordingly.
1572         
1573 2005-06-08  Sebastian Pop  <pop@cri.ensmp.fr>
1574
1575         * tree-data-ref.c (compute_estimated_nb_iterations,
1576         analyze_array_indexes, compute_overlap_steps_for_affine_1_2,
1577         analyze_subscript_affine_affine, find_data_references_in_loop):
1578         Fixed to use chrec_contains_undetermined to test the values of
1579         loop->estimated_nb_iterations.
1580         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
1581         Compute the estimation only when loop->estimated_nb_iterations
1582         has not yet been initialized.
1583         (convert_step_widening, scev_probably_wraps_p): Add a call to
1584         estimate_numbers_of_iterations_loop.
1585         * tree-vrp.c (execute_vrp): Don't call estimate_numbers_of_iterations.
1586
1587 2005-06-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
1588
1589         PR debug/21946
1590         * dwarf2out.c (add_loc_descr_op_piece): Move to the
1591         DWARF2_DEBUGGING_INFO section.
1592
1593 2005-06-08  Richard Henderson  <rth@redhat.com>
1594
1595         PR target/21721
1596         * config/ia64/ia64.c (emit_predicate_relation_info): Skip p0.
1597
1598 2005-06-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
1599
1600         PR target/21889
1601         * target.h (gcc_target) <asm_out>: New field output_dwarf_dtprel.
1602         * target-def.h (TARGET_ASM_OUTPUT_DWARF_DTPREL): New macro.
1603         (TARGET_ASM_OUT): Add it.
1604         * doc/tm.texi (Debugging Info): Document it.
1605         * dwarf2out.c (output_loc_operands) <INTERNAL_DW_OP_tls_addr>:
1606         Test it instead of ASM_OUTPUT_DWARF_DTPREL.
1607         (loc_descriptor_from_tree_1) <VAR_DECL>: Likewise.
1608         * system.h: Poison ASM_OUTPUT_DWARF_DTPREL.
1609         * config/frv/frv-protos.h (frv_output_dwarf_dtprel): Delete.
1610         * config/frv/frv.c (frv_output_dwarf_dtprel): Make static and unused.
1611         (gen_inlined_tls_plt): Remove unused variable MEM.
1612         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to frv_output_dwarf_dtprel.
1613         * config/frv/frv.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
1614         * config/i386/i386-protos.h (i386_output_dwarf_dtprel): Delete.
1615         * config/i386/i386.c (i386_output_dwarf_dtprel): Make static and
1616         unused.
1617         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to i386_output_dwarf_dtprel.
1618         * config/i386/i386.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
1619         * config/ia64/ia64-protos.h (ia64_output_dwarf_dtprel): Delete.
1620         * config/ia64/ia64.c (ia64_output_dwarf_dtprel): Make static and
1621         unused.
1622         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to ia64_output_dwarf_dtprel.
1623         * config/ia64/ia64.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
1624         * config/rs6000/rs6000-protos.h (rs6000_output_dwarf_dtprel): Delete.
1625         * config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): Make static and
1626         unused.
1627         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to rs6000_output_dwarf_dtprel
1628         * config/rs6000/rs6000.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
1629         * config/s390/s390-protos.h (s390_output_dwarf_dtprel): Delete.
1630         * config/s390/s390.c (s390_output_dwarf_dtprel): Make static and
1631         unused.
1632         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to s390_output_dwarf_dtprel.
1633         * config/s390/s390.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
1634         * config/sparc/sol2-gas.h (TARGET_SUN_TLS): Define to 0.
1635         (TARGET_GNU_TLS): Define to 1.
1636         * config/sparc/sparc-protos.h (sparc_output_dwarf_dtprel): Delete.
1637         * config/sparc/sparc.c (sparc_output_dwarf_dtprel): Make static and
1638         unused.
1639         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to sparc_output_dwarf_dtprel
1640         if TARGET_GNU_TLS only.
1641         * config/sparc/sparc.h (ASM_OUTPUT_DWARF_DTPREL): Delete.
1642
1643         * config.gcc (sparc64-*-solaris2*): Include tm-dwarf2.h last.
1644         (sparc-*-solaris2*): Likewise on Solaris 7 and up.
1645
1646 2005-06-07  Dale Johannesen  <dalej@apple.com>
1647
1648         * config/i386/i386.md (movqi_1):  Fix case where source
1649         is memory and destination EDI.
1650
1651 2005-06-08  Kazu Hirata  <kazu@codesourcery.com>
1652
1653         * config/c4x/c4x.h (PREDICATE_CODES): Remove mem_operand.
1654
1655 2005-06-07  Eric Christopher  <echristo@redhat.com>
1656
1657         * system.h: Poison EXTRA_CC_MODES.
1658         * config/frv/frv.h (SELECT_CC_MODE): Rewrite comment.
1659         * config/ia64/ia64.h (SELECT_CC_MODE): Ditto.
1660         * doc/md.texi (Jump Patterns): Replace reference to
1661         EXTRA_CC_MODES with machine-modes.def.
1662         * doc/rtl.texi (Machine Modes): Ditto.
1663
1664 2005-06-07  Richard Henderson  <rth@redhat.com>
1665
1666         * varasm.c (initialize_cold_section_name): Fix alloca buffer overflow.
1667         (assemble_start_function): Fix strcmp confusion.
1668
1669 2005-06-07  Uros Bizjak  <uros@kss-loka.si>
1670
1671         * config/i386/i386.h (enum ix86_entity): New.
1672         (enum ix86_stack_slot): New.
1673         (OPTIMIZE_MODE_SWITCHING): Redefine to use
1674         ix86_optimize_mode_switching[] array.
1675         (NUM_MODES_FOR_MODE_SWITCHING): Redefine for 4 entities.
1676         (MODE_NEEDED): Use ix86_mode_needed() function.
1677         (EMIT_MODE_SET): Redefine for changed emit_i387_cw_initialization ()
1678         function.
1679         (struct machine_function): Use optimize_mode_switching[] array.
1680
1681         * config/i386/i386.c (MAX_386_STACK_LOCALS): Remove.
1682         (ix86_mode_needed): New function.
1683         (emit_i387_cw_initialization): Cleanup. Use mode to calculate
1684         correct stack positions for stored control words.
1685         (assign_386_stack_local): Use enum ix86_stack_slot. Change assert.
1686         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR]: Change constant to
1687         SLOT_TEMP.
1688         [IX86_BUILTIN_STMXCSR]: Same.
1689
1690         * config/i386/i386-protos.h (assign_stack_local): Change prototype.
1691         (emit_i387_cw_initialization): Change prototype.
1692         (ix86_mode_needed): New prototype.
1693
1694         * config/i386/i386.md (i387_cw attribute): Change order of elements.
1695         (truncdfsf2, truncxfsf2, truncxfdf2, fix_trunc<mode>_fisttp_i387_1)
1696         (*fix_trunc<mode>_i387_1, lrint<mode>2, *fist<mode>2_floor_1)
1697         (*fist<mode>2_ceil_1): Change constant in call to
1698         assign_386_stack_local to SLOT_TEMP.
1699         (*fix_trunc<mode>_i387_1): Change constant in call to
1700         assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_TRUNC.
1701         Use new ix86_optimize_mode_switching[] array.
1702         (frndintxf2_floor, *fist<mode>2_floor_1): Change constants in call to
1703         assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_FLOOR.
1704         Use new ix86_optimize_mode_switching[] array.
1705         (frndintxf2_ceil, *fist<mode>2_ceil_1):  Change constants in call to
1706         assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_CEIL.
1707         Use new ix86_optimize_mode_switching[] array.
1708         (frndintxf2_trunc): Change constants in call to
1709         assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_TRUNC.
1710         Use new ix86_optimize_mode_switching[] array.
1711         (frndintxf2_mask_pm): Change constants in call to
1712         assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_MASK_PM.
1713         Use new ix86_optimize_mode_switching[] array.
1714
1715         (define_peephole2): Change constant from 17 to FLAGS_REG;
1716
1717 2005-06-07  Richard Henderson  <rth@redhat.com>
1718
1719         PR rtl-opt/21528
1720         * rtlanal.c (reg_overlap_mentioned_p) <MEM>: Handle 'E' formats.
1721
1722 2005-06-07  Dale Johannesen  <dalej@apple.com>
1723
1724         * tree-nested.c (finalize_nesting_tree_1):  Disable
1725         warn_padded around layout_type call.
1726
1727 2005-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
1728
1729         * tree-ssa-loop-ivopts.c (rewrite_use_outer): Unshare the expression
1730         before emiting it.
1731
1732 2005-06-07  Eric Christopher  <echristo@redhat.com>
1733
1734         * config/mips/predicates.md: Revert previous patch.
1735
1736 2005-06-07  Jakub Jelinek  <jakub@redhat.com>
1737
1738         PR middle-end/21850
1739         * tree.c (get_unwidened): Stop at NOP_EXPR/CONVERT_EXPR that convert
1740         from vector types.
1741
1742 2005-06-07  Diego Novillo  <dnovillo@redhat.com>
1743
1744         * tree-ssa-threadupdate.c (struct thread_stats_d): Declare.
1745         (thread_stats): New local variable.
1746         (redirect_edges): Increment count of threaded edges.
1747         (thread_through_all_blocks): Initialize thread_stats.
1748         Display number of threaded jumps if TDF_STATS is enabled.
1749
1750 2005-06-07  Kazu Hirata  <kazu@codesourcery.com>
1751
1752         * sbitmap.h (sbitmap_iter_init): Consistently treat bit_num as
1753         the current bit index with no modulo.
1754
1755 2005-06-07  Sebastian Pop  <pop@cri.ensmp.fr>
1756
1757         PR 18403 and meta PR 21861.
1758         * Makefile.in (tree-chrec.o): Depend on CFGLOOP_H and TREE_FLOW_H.
1759         * tree-chrec.c: Include cfgloop.h and tree-flow.h.
1760         (evolution_function_is_invariant_rec_p,
1761         evolution_function_is_invariant_p): New.
1762         (chrec_convert): Use an extra parameter AT_STMT for refining the
1763         information that is passed down to convert_step.  Integrate the 
1764         code that was in count_ev_in_wider_type.
1765         * tree-chrec.h (count_ev_in_wider_type): Removed.
1766         (chrec_convert): Modify its declaration.
1767         (evolution_function_is_invariant_p): Declared.
1768         (evolution_function_is_affine_p): Use evolution_function_is_invariant_p.
1769         * tree-flow.h (can_count_iv_in_wider_type): Renamed convert_step.
1770         (scev_probably_wraps_p): Declared.
1771         * tree-scalar-evolution.c (count_ev_in_wider_type): Removed.
1772         (follow_ssa_edge_in_rhs, interpret_rhs_modify_expr):
1773         Use an extra parameter AT_STMT for refining the information that is
1774         passed down to convert_step.
1775         (follow_ssa_edge_inner_loop_phi, follow_ssa_edge,
1776         analyze_scalar_evolution_1): Initialize AT_STMT with the current
1777         analyzed statement.
1778         (instantiate_parameters_1): Don't know yet how to initialize AT_STMT.
1779         * tree-ssa-loop-ivopts.c (idx_find_step): Update the use of 
1780         can_count_iv_in_wider_type to use convert_step.
1781         * tree-ssa-loop-niter.c (can_count_iv_in_wider_type_bound): Move 
1782         code that is independent of the loop over the known iteration
1783         bounds to convert_step_widening, the rest is moved to
1784         proved_non_wrapping_p.
1785         (scev_probably_wraps_p): New.
1786         (can_count_iv_in_wider_type): Renamed convert_step.
1787         * tree-vrp.c (adjust_range_with_scev): Take an extra AT_STMT parameter.
1788         Use scev_probably_wraps_p for computing init_is_max.
1789         (vrp_visit_assignment): Pass the current analyzed statement to 
1790         adjust_range_with_scev.
1791         (execute_vrp): Call estimate_numbers_of_iterations for refining the 
1792         information provided by scev analyzer.
1793
1794 2005-06-07  Eric Christopher  <echristo@redhat.com>
1795
1796         * config/mips/predicates.md (sleu_operand): Use
1797         IN_RANGE to specify range of operand.
1798
1799 2005-06-07  Steven Bosscher  <stevenb@suse.de>
1800
1801         PR tree-optimization/21847
1802         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): With
1803         -fnon-call-exceptions, also mark statements inherently
1804         necessary if they may throw.
1805
1806 2005-06-07  Adrian Straetling  <straetling@de.ibm.com>
1807
1808         * config/s390/s390.md: ("UNSPECV_MB", "UNSPECV_CAS"): New constants.
1809         ("type"): Add "sem" to 'type' attribute.
1810         ("memory_barrier", "*memory_barrier", "sync_compare_and_swapdi",
1811         "sync_compare_and_swapsi", "sync_compare_and_swap_ccdi",
1812         "sync_compare_and_swap_ccsi", "*sync_compare_and_swap_ccdi",
1813         "*sync_compare_and_swap_ccsi"): New patterns.
1814         * config/s390/2064.md: ("z_sem"): New insn_reservation.
1815         * config/s390/2084.md: ("x_sem"): New insn_reservation.
1816         * config/s390/s390.c: (s390_compare_emitted): New global variable.
1817         (s390_emit_compare): Do not emit comparison again after cas.
1818         * config/s390/s390.h (s390_compare_emitted): Declare.
1819
1820 2005-06-07  Kazu Hirata  <kazu@codesourcery.com>
1821
1822         * sbitmap.h (sbitmap_iterator, sbitmap_iter_init,
1823         sbitmap_iter_cond, sbitmap_iter_next): New.
1824         * bt-load.c, cfganal.c, combine.c, ddg.c, flow.c,
1825         modulo-sched.c, sbitmap.c, sched-rgn.c, tree-into-ssa.c,
1826         tree-outof-ssa.c, tree-ssa-alias.c, tree-ssa-live.c: Update
1827         uses of EXECUTE_IF_SET_IN_SBITMAP to the new style.
1828
1829 2005-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
1830
1831         * tree-ssa-address.c: New file.
1832         * Makefile.in (tree-ssa-address.o): Add.
1833         * expr.c (expand_expr_real_1): Do not handle REF_ORIGINAL on
1834         INDIRECT_REFs.  Handle TARGET_MEM_REFs.
1835         * tree-eh.c (tree_could_trap_p): Handle TARGET_MEM_REFs.
1836         * tree-flow.h (struct mem_address): New.
1837         (struct affine_tree_combination): Moved from tree-ssa-loop-ivopts.c.
1838         (create_mem_ref, addr_for_mem_ref, get_address_description,
1839         maybe_fold_tmr, multiplier_allowed_in_address_p,
1840         multiply_by_cost):  Declare.
1841         * tree-mudflap.c (mf_xform_derefs_1): Handle TARGET_MEM_REFs.
1842         * tree-pretty-print.c (dump_generic_node): Ditto.
1843         * tree-ssa-loop-im.c (for_each_index): Ditto.
1844         * tree-ssa-loop-ivopts.c (may_be_unaligned_p,
1845         find_interesting_uses_address): Ditto.
1846         (rewrite_address_base, build_addr_strip_iref): Removed.
1847         (struct affine_tree_combination): Moved to tree-flow.h.
1848         (get_ref_tag, copy_ref_info): New functions.
1849         (rewrite_use_address): Produce TARGET_MEM_REFs.
1850         (tree_ssa_iv_optimize): Do not call update_ssa
1851         and rewrite_into_loop_closed_ssa.
1852         (tree_to_aff_combination): Use build_fold_addr_expr instead of
1853         build_addr_strip_iref.
1854         (unshare_aff_combination): New function.
1855         (fold_affine_sum): Removed.
1856         (get_computation_at): Use get_computation_aff.  Unshare the result.
1857         (get_computation_aff, multiplier_allowed_in_address_p): New function.
1858         (multiply_by_cost): Exported.
1859         (get_address_cost): Use multiplier_allowed_in_address_p.
1860         * tree-ssa-operands.c (get_tmr_operands): New function.
1861         (get_expr_operands): Handle TARGET_MEM_REFs.
1862         * tree.c (copy_node_stat): Copy annotations for TARGET_MEM_REFs.
1863         (build): Handle 7 arguments.
1864         (build7_stat): New function.
1865         * tree.def (TARGET_MEM_DEF): New.
1866         * tree.h (REF_ORIGINAL): Removed.
1867         (TMR_SYMBOL, TMR_BASE, TMR_INDEX, TMR_STEP, TMR_OFFSET, TMR_ORIGINAL,
1868         TMR_TAG, build7): New macros.
1869         (build7_stat, tree_mem_ref_addr, copy_mem_ref_info): Declare.
1870         * tree-ssa-ccp.c (fold_stmt_r): Call maybe_fold_tmr.
1871         * doc/c-tree.texi: Document TARGET_MEM_REF.
1872         * doc/tree-ssa.texi: Add TARGET_MEM_REF to gimple grammar.
1873
1874 2005-06-07  Jakub Jelinek  <jakub@redhat.com>
1875
1876         PR debug/21946
1877         * dwarf2out.c (add_loc_descr_op_piece): New function.
1878         (multiple_reg_loc_descriptor, concat_loc_descriptor,
1879         loc_descriptor): Use it.
1880         * var-tracking.c: Include regs.h and expr.h.
1881         (emit_note_insn_var_location): Skip over pieces where offset
1882         is smaller than previous offset plus previous piece mode size.
1883         Optimize adjacent hard registers or memory locations.
1884         * Makefile.in (var-tracking.o): Depend on $(REGS_H) and $(EXPR_H).
1885
1886 2005-06-07  Richard Guenther  <rguenth@gcc.gnu.org>
1887
1888         * c-typeck.c (c_finish_if_stmt): Use void_type_node as type
1889         for COND_EXPR.
1890         * gimplify.c (gimplify_cond_expr): No need to fix up the
1891         type of COND_EXPRs.
1892
1893 2005-06-07  Richard Guenther  <rguenth@gcc.gnu.org>
1894
1895         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Fix
1896         comments.
1897
1898 2005-06-07  Geoffrey Keating  <geoffk@apple.com>
1899
1900         * config/rs6000/host-darwin.c (segv_handler): Widen the possible
1901         'stwux' instructions that are considered to be stack decrements.
1902
1903         * rtlanal.c (subreg_offset_representable_p): Handle objects
1904         with holes.
1905
1906 2005-06-06  Uros Bizjak  <uros@kss-loka.si>
1907
1908         * mode-switching.c (optimize_mode_switching): Fix n_exprs parameter
1909         in call to pre_edge_lcm.
1910
1911 2005-06-06  Kaz Kojima  <kkojima@gcc.gnu.org>
1912
1913         * config/sh/linux-unwind.h (SH_DWARF_FRAME_XD0): Remove for SH5.
1914         (SH_DWARF_FRAME_PR, SH_DWARF_FRAME_GBR, SH_DWARF_FRAME_MACL)
1915         (SH_DWARF_FRAME_MACH, SH_DWARF_FRAME_PC, SH_DWARF_FRAME_FPUL):
1916         Likewise.
1917         (SH_DWARF_FRAME_FP0, SH_DWARF_FRAME_FPSCR): Define to the correct
1918         dwarf register number for SHmedia.
1919         (shmedia_fallback_frame_state): New.
1920         (MD_FALLBACK_FRAME_STATE_FOR): Define to it for SH5.
1921
1922         * config/sh/linux.h (FUNCTION_PROFILER): Provide SHMEDIA version.
1923
1924 2005-06-06  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1925
1926         * c-lex.c (lex_string): Use XOBFINISH.
1927         * collect2.c (extract_string, dump_file): Likewise.
1928         * dbxout.c (dbxout_finish_complex_stabs): Likewise.
1929         * gcc.c (init_spec, build_search_list, convert_filename, 
1930         set_collect_gcc_options, do_spec_2, do_spec_1, main): Likewise.
1931         * genpreds.c (write_predicate_subfunction): Likewise.
1932         * genflags.c (main): Likewise.
1933         * read-rtl.c (mode_attr_index, apply_macro_to_string, 
1934         join_c_conditions, read_quoted_string, read_braced_string, 
1935         read_rtx_1): Likewise.
1936         * stringpool.c (ggc_alloc_string): Likewise.
1937         * tlink.c (obstack_fgets, recompile_files): Likewise.
1938
1939 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
1940
1941         * intl.h (G_): New macro.
1942         * rtl-error.c (error_for_asm, warning_for_asm): Use gmsgid
1943         instead of msgid for argument name.
1944         * tree-ssa.c (warn_uninit): Likewise.
1945         * c-parser.c (c_parser_error): Likewise.
1946         * config/rs6000/rs6000-c.c (SYNTAX_ERROR): Likewise.
1947         * config/darwin-c.c (BAD): Likewise.
1948         * config/c4x/c4x-c.c (BAD): Likewise.
1949         * c-pragma.c (GCC_BAD, GCC_BAD2): Likewise.
1950         * c-errors.c (pedwarn_c99, pedwarn_c90): Likewise.
1951         * c-common.c (c_parse_error): Likewise.
1952         * diagnostic.c (diagnostic_set_info, verbatim, inform, warning,
1953         warning0, pedwarn, error, sorry, fatal_error, internal_error):
1954         Likewise.
1955         (fnotice): Use cmsgid instead of msgid for argument name.
1956         * gcov.c (fnotice): Likewise.
1957         * protoize.c (notice): Likewise.
1958         * final.c (output_operand_lossage): Likewise.
1959         * gcc.c (fatal, notice): Likewise.
1960         (error): Use gmsgid instead of msgid for argument name.
1961         * collect2.c (notice, fatal_perror, fatal): Use cmsgid instead
1962         of msgid for argument name.
1963         (error): Use gmsgid instead of msgid for argument name.
1964         * c-decl.c (locate_old_decl, implicit_decl_warning): Use G_()
1965         instead of N_().
1966         * c-typeck.c (readonly_error, convert_for_assignment): Likewise.
1967         * tree-inline.c (inline_forbidden_p_1): Likewise.
1968         * ABOUT-GCC-NLS: Require gettext 0.14.5 or later.  Mention the new
1969         conventions for marking translations.
1970         * doc/install.texi: Mention gettext 0.14.5 or later requirement.
1971
1972         * tree-chrec.c (reset_evolution_in_loop): Use build3 instead of
1973         build2.
1974
1975         * fold-const.c (operand_equal_p): Don't return 1, if element
1976         chains for 2 VECTOR_CSTs are not the same length.
1977
1978         PR regression/21897
1979         * fold-const.c (fold_ternary) <case BIT_FIELD_REF>: Don't crash if
1980         not all VECTOR_CST elements are given.
1981
1982         * combine.c (try_combine): Use hard_regno_nregs array instead of
1983         HARD_REGNO_NREGS macro.
1984         * config/rs6000/rs6000.c (rs6000_split_multireg_move,
1985         rs6000_register_move_cost, rs6000_memory_move_cost): Likewise.
1986         * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
1987
1988 2005-06-06  Daniel Berlin  <dberlin@dberlin.org>
1989
1990         * tree-ssa-reassoc.o: New.
1991         (OBJS-common): Add tree-ssa-reassoc.o
1992         * timevar.def: Add TV_TREE_REASSOC
1993         * tree-optimize.c (pass_reassoc): Add call.
1994         * tree-pass.h (pass_reassoc): Add.
1995         * tree-ssa-reassoc.c: New file.
1996
1997 2005-06-06  Eric Christopher  <echristo@redhat.com>
1998
1999         target/21927
2000         * expr.c (do_store_flag): Remove check for non-negative BRANCH_COST.
2001
2002 2005-06-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2003
2004         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard with
2005         HAVE_GAS_MAX_SKIP_P2ALIGN.
2006         (HAVE_AS_DWARF2_DEBUG_LINE): Remove.
2007
2008 2005-06-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2009
2010         * Makefile.in (mips-tfile.o): Add $(srcdir)/../include prefix to
2011         getopt.h dependency.
2012         (mips-tdump.o): Likewise.
2013
2014 2005-06-06  Jan Hubicka  <jh@suse.cz>
2015
2016         * predict.c (tree_predict_edge): Don't drop useless predictions;
2017         check that it is not called too late in the game.
2018         (gate_estimate_probability): New gate.
2019         (pass_profile): Gate.
2020         * tree-mudflap.c (mf_build_check_statement_for): Do not drop
2021         predictions; update CFG instead.
2022         * cfgrtl.c (rtl_verify_flow_info): Check that predcitions are consumed.
2023
2024 2005-06-06  Jie Zhang  <jie.zhang@analog.com>
2025
2026         * config.gcc (bfin*-uclinux*): New.
2027         * config/bfin/uclinux.h: New file.
2028
2029 2005-06-06  Ben Elliston  <bje@au.ibm.com>
2030
2031         * doc/md.texi (Insn Splitting): Fix some wording.
2032
2033 2005-06-05  David Edelsohn  <edelsohn@gnu.org>
2034
2035         * config/rs6000/rs6000.c (rs6000_emit_swdivsf): New function.
2036         (rs6000_emit_swdivdf): New function.
2037         * config/rs6000/rs6000.md (fres): New pattern.
2038         (divsf3): Add approximation through rs6000_emit_swdivsf.
2039         (fred): New pattern.
2040         (divdf3): Add approximation through rs6000_emit_swdivdf.
2041         * config/rs6000/rs6000-protos.h (rs6000_emit_swdivsf): Declare.
2042         (rs6000_emit_swdivdf): Declare.
2043         * config/rs6000/rs6000.opt (mswdiv): New option.
2044         * doc/invoke.texi (RS/6000 and PowerPC Options): Document mswdiv.
2045
2046 2005-06-05  Zdenek Dvorak  <dvorakz@suse.cz>
2047
2048         PR tree-optimization/21846
2049         * tree-cfg.c (replace_uses_by): Update information stored at loops.
2050         * tree-flow.h (substitute_in_loop_info): Declare.
2051         * tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer):
2052         Ensure that chrec_dont_know and chrec_known have a type.
2053         * tree-ssa-loop-niter.c (substitute_in_loop_info): New function.
2054
2055 2005-06-05  Steven Bosscher  <stevenb@suse.de>
2056
2057         * config/i386/i386.c (x86_use_loop): Remove.
2058         * config/i386/i386.h (x86_use_loop): Remove extern decl.
2059         (TARGET_USE_LOOP): Remove.
2060         * config/i386/i386.md (doloop_end, doloop_end_internal): Remove.
2061         Also remove related define_splits.
2062
2063 2005-06-05  Dorit Nuzman  <dorit@il.ibm.com>
2064
2065         * tree-flow.h (stmt_ann_d): Move aux to ...
2066         (tree_ann_common_d): ... here.
2067         * tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt,
2068         move_computations_stmt, schedule_sm): Update references to
2069         aux.
2070         * tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Likewise.
2071         * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
2072         call to set_stmt_info.
2073         (vect_transform_loop): Likewise.
2074         * tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info):
2075         Likewise.
2076
2077         * tree-vect-analyze.c (vect_analyze_scalar_cycles): Made void instead of
2078         bool.
2079         (vect_mark_relevant): Takes two additional arguments - live_p and
2080         relevant_p. Set RELEVANT_P and LIVE_P according to these arguments.
2081         (vect_stmt_relevant_p): Differentiate between a live stmt and a
2082         relevant stmt. Return two values = live_p and relevant_p.
2083         (vect_mark_stmts_to_be_vectorized): Call vect_mark_relevant and
2084         vect_stmt_relevant_p with additional arguments. Phis are no longer
2085         put into the worklist (analyzed seperately in analyze_scalar_cycles).
2086         (vect_determine_vectorization_factor): Also check for LIVE_P, because a
2087         stmt that is marked as irrelevant and live, cause it's only used out
2088         side the loop, may need to be vectorized (e.g. reduction).
2089         (vect_analyze_operations): Examine phis. Call
2090         vectorizable_live_operation for for LIVE_P stmts. Check if
2091         need_to_vectorize.
2092         (vect_analyze_scalar_cycles): Update documentation. Don't fail
2093         vectorization - just classify the scalar cycles created by the loop
2094         phis. Call vect_is_simple_reduction.
2095         (vect_analyze_loop): Call to analyze_scalar_cycles moved earlier.
2096         * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
2097         call to set_stmt_info.
2098         (vect_get_vec_def_for_operand): Code reorganized - the code that
2099         classifies the type of use was factored out to vect_is_simple_use.
2100         (vectorizable_store, vect_is_simple_cond): Call vect_is_simple_use with
2101         additional arguments.
2102         (vectorizable_assignment): Likewise. Also make sure the stmt is relevant
2103         and computes a loop_vec_def.
2104         (vectorizable_operation, vectorizable_load, vectorizable_condition):
2105         Likewise.
2106         (vectorizable_live_operation): New.
2107         (vect_transform_stmt): Handle LIVE_P stmts.
2108         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new fields
2109         STMT_VINFO_LIVE_P and STMT_VINFO_DEF_TYPE.
2110         (new_loop_vec_info, destroy_loop_vec_info): Also handle phis.
2111         (vect_is_simple_use): Determine the type of the def and return it
2112         in a new function argument. Consider vect_reduction_def and
2113         vect_induction_def, but for now these are not supported.
2114         (vect_is_simple_reduction): New. Empty for now.
2115         * tree-vectorizer.h (vect_def_type): New enum type.
2116         (_stmt_vec_info): Added new fields - live and _stmt_vec_info.
2117         (STMT_VINFO_LIVE_P, STMT_VINFO_DEF_TYPE): New accessor macros.
2118         (vect_is_simple_use): New arguments added to function declaration.
2119         (vect_is_simple_reduction): New function declaration.
2120         (vectorizable_live_operation): New function declaration.
2121
2122         * tree-vect-analyze.c (vect_can_advance_ivs_p): Add debug printout.
2123         (vect_can_advance_ivs_p): Likewise.
2124         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Likewise.
2125
2126 2005-06-05  Eric Christopher  <echristo@redhat.com>
2127
2128         * config/mips/mips.c (mips_rtx_costs): Remove unused variable.
2129
2130 2005-06-05  Hans-Peter Nilsson  <hp@bitrange.com>
2131
2132         PR target/21914
2133         * config/mmix/mmix.md ("*movdicc_real_foldable")
2134         ("*movdfcc_real_foldable", "*bCC_foldable")
2135         ("*bCC_inverted_foldable"): Specify DImode for register being
2136         compared.
2137
2138 2005-06-04  Roger Sayle  <roger@eyesopen.com>
2139
2140         * reg-stack.c (struct block_info_def): Correct grammar typo.
2141         (compensate_edge): Clean-up.  Perform as little work as possible
2142         when src and dest stacks match.  Avoid modifying block_info.
2143         Reorder and simplify assertion checks.  Avoid unnecessary copying
2144         of regstack structure.
2145         (convert_regs_1): Set the done flag here...
2146         (convert_regs_2): ... instead of here.
2147
2148 2005-06-04  Dale Johannesen  <dalej@apple.com>
2149
2150         * config/rs6000/rs6000.c (no_global_regs_above): New.
2151         (rs6000_emit_prologue):  Use it; cosmetic formatting fixes.
2152         (rs6000_emit_epilogue):  Use it; cosmetic formatting fixes.
2153         (rs6000_conditional_register_usage): Don't put Darwin PIC
2154         register in global_regs.
2155         (rs6000_stack_info):  Don't set lr_save_p just because Darwin 
2156         PIC reg used.
2157         (rs6000_emit_prologue):  Save LR in R0 around Darwin PIC setup,
2158         if not done by lr_save_p.
2159         * config/rs6000/rs6000.md (insnv1_internal1):  Back out 05-18 patch.
2160         Use rotate instead of ashift.
2161         (call_indirect_nonlocal_sysv):  Prefer CTR to LR.
2162         (call_value_indirect_nonlocal_sysv):  Ditto.
2163
2164 2005-06-04  Jan Hubicka  <jh@suse.cz>
2165
2166         * cgraphunit.c (cgraph_reset_node): Break out from ...
2167         (cgraph_finalize_function): ... here.
2168         (cgraph_finalize_compilation_unit): Reset nodes where backend
2169         removed the body.
2170
2171 2005-06-04  Richard Henderson  <rth@redhat.com>
2172
2173         PR target/21888
2174         * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
2175         until we've passed initial ldgp.
2176
2177 2005-06-04  Daniel Berlin  <dberlin@dberlin.org>
2178
2179         * cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P.
2180         * dwarf2out.c (loc_descriptor_from_tree_1): Ditto.
2181         * expr.c (expand_var): Ditto.   
2182         * function.c (gimplify_parameters): Use SET_DECL_VALUE_EXPR too.
2183         * gimplify.c (gimplify_decl_expr): Ditto.
2184         (gimplify_expr): Ditto.
2185         * tree-mudflap.c (mf_decl_eligible_p): Use DECL_HAS_VALUE_EXPR_P.
2186         * tree.c (value_expr_for_decl): New.
2187         (print_value_expr_statistics): New.
2188         (init_ttree): Init value_expr_for_decl.
2189         (decl_value_expr_lookup): New.
2190         (decl_value_expr_insert): Ditto.
2191         (copy_node_stat): Copy DECL_VALUE_EXPR status.
2192         * tree.h (DECL_VALUE_EXPR): Use hashtable.
2193         (SET_DECL_VALUE_EXPR): New.
2194         (DECL_HAS_VALUE_EXPR_P): New.
2195
2196 2005-06-04  Steven Bosscher  <stevenb@suse.de>
2197
2198         * lcm.c: Move all mode-switching related functions from here...
2199         * mode-switching.c: ...to this new file.
2200         * doc/passes.texi: Update accordingly.
2201
2202         * basic-block.h (label_value_list): Remove extern decl.
2203         * cfgrtl.c (label_value_list): Remove.
2204         (can_delete_label_p): Don't look at it.
2205         * cfgcleanup.c (cleanup_cfg): Don't free it.
2206
2207         * common.opt: Don't refer to non-existing flag_alias_check.
2208
2209 2005-06-04  David Edelsohn  <edelsohn@gnu.org>
2210
2211         * config/rs6000/aix52.h (ASM_CPU_SPEC): Add power5.
2212
2213 2005-06-04  Kazu Hirata  <kazu@codesourcery.com>
2214
2215         * function.c (prologue, epilogue, sibcall_epilogue): Change
2216         their types to VEC(int,heap)*.
2217         (free_after_compilation): Free the three vectors above.
2218         (init_function_for_compilation, record_insns, contains,
2219         prologue_epilogue_contains, sibcall_epilogue_contains,
2220         reposition_prologue_and_epilogue_notes): Use VEC instead of
2221         VARRAY.  (init_function_once): Remove.
2222         * function.h: Remove the prototype for init_function_once.
2223         * toplev.c (backend_init): Don't call init_function_once.
2224
2225 2005-06-04  Jan Hubicka  <jh@suse.cz>
2226
2227         * predict.c (tree_predict_edge): Do not predict entry edge and
2228         single succestor edge.
2229
2230 2005-06-04  Joseph S. Myers  <joseph@codesourcery.com>
2231
2232         PR c/21873
2233         * c-typeck.c (push_init_level): Don't pop levels without braces if
2234         implicit == 1.
2235
2236 2005-06-03  Sebastian Pop  <pop@cri.ensmp.fr>
2237         
2238         * tree-data-ref.c (compute_self_dependence): New function.
2239         (compute_all_dependences): Use it.
2240
2241 2005-06-03  Geoffrey Keating  <geoffk@apple.com>
2242
2243         * c-parser.c (c_parser_parms_declarator): Don't use chainon().
2244         (c_parser_expr_list): Don't use chainon().
2245
2246         * config/darwin.h (LINK_SPEC): Pass -syslibroot to linker
2247         when -isysroot passed.
2248
2249 2005-06-03  Joseph S. Myers  <joseph@codesourcery.com>
2250
2251         PR c/21879
2252         * c-decl.c (start_function): Restore label_context_stack_se and
2253         label_context_stack_vm  if returning with an error.
2254
2255 2005-06-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2256
2257         * configure.ac: Check declaration for asprintf, needed by
2258         libiberty.h. 
2259         * configure: Regenerate.
2260         * config.in: Likewise.
2261
2262 2005-06-03  Diego Novillo  <dnovillo@redhat.com>
2263
2264         * tree-ssa-dom.c (record_edge_info): Use last_basic_block to
2265         allocate info array.
2266         * tree-vrp.c (extract_range_from_unary_expr): Set resulting
2267         range to varying in cast expressions that change
2268         TYPE_PRECISION.
2269
2270 2005-06-03  Eric Christopher  <echristo@redhat.com>
2271
2272         * config/mips/mips.opt: Add RejectNegative to divide-breaks and
2273         divide-traps.
2274
2275 2005-06-03  Jan Hubicka  <jh@suse.cz>
2276
2277         * basic-block.h (remove_predictions_associated_with_edge): Declare.
2278         * cfg.c (remove_edge): Use it.
2279         * predict.c (remove_predictions_associated_with_edge): New function.
2280
2281 2005-06-03  Pat Haugen  <pthaugen@us.ibm.com>
2282
2283         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
2284         Clear call_realy_used_regs[r2] when ABI_AIX.
2285
2286 2005-06-03  Richard Guenther  <rguenth@gcc.gnu.org>
2287
2288         PR middle-end/21858
2289         * fold-const.c (fold_binary): Fix type mismatches in folding
2290         of comparisons.
2291
2292 2005-06-03  Kazu Hirata  <kazu@codesourcery.com>
2293
2294         * cgraph.c, cgraphunit.c, config/mips/mips.c: Fix comment
2295         typos.
2296
2297 2005-06-03  Joseph S. Myers  <joseph@codesourcery.com>
2298
2299         * collect2.c (maybe_unlink): Use unlink_if_ordinary.
2300
2301 2005-06-02  Bernd Schmidt  <bernd.schmidt@analog.com>
2302
2303         * reload1.c (reload): Revert my previous patch.
2304
2305 2005-06-03  Nick Clifton  <nickc@redhat.com>
2306
2307         * config/arm/semi.h (ASM_SPEC): Fix typo passing -mfloat-abi to
2308         assembler.
2309
2310 2005-06-03  Kazu Hirata  <kazu@codesourcery.com>
2311
2312         PR tree-optimization/21849
2313         * tree-ssa-copy.c (dump_copy_of): Call sbitmap_zero.
2314
2315 2005-06-02  Richard Henderson  <rth@redhat.com>
2316
2317         * Makefile.in (tree-vect-generic.o): New.
2318         (OBJS-common, GTFILES, s-gtype): Add it.
2319         * tree-complex.c (build_replicated_const, vector_inner_type,
2320         vector_last_type, vector_last_nunits, build_word_mode_vector_type,
2321         elem_op_func, tree_vec_extract, do_unop, do_binop, do_plus_minus,
2322         do_negate, expand_vector_piecewise, expand_vector_parallel, 
2323         expand_vector_addition, expand_vector_operation, 
2324         type_for_widest_vector_mode, expand_vector_operations_1, 
2325         gate_expand_vector_operations, expand_vector_operations, 
2326         pass_lower_vector_ssa): Move to tree-vect-generic.c.
2327         (tree_lower_complex): Rename from tree_lower_operations.
2328         (pass_lower_complex): Rename from pass_pre_expand.
2329         * tree-vect-generic.c: New file.
2330         * tree-pass.h (pass_lower_complex): Rename from pass_pre_expand.
2331         (pass_lower_vector): New.
2332         * tree-optimize.c (init_tree_optimization_passes): Update to match.
2333
2334 2005-06-02  Richard Henderson  <rth@redhat.com>
2335
2336         * modulo-sched.c (doloop_register_get): Protect against 
2337         doloop_end not defined.
2338
2339 2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
2340
2341         * config/sh/sh.c (general_movsrc_operand,
2342         general_movdst_operand, arith_reg_operand, arith_reg_dest,
2343         logical_reg_operand, int_gpr_dest, fp_arith_reg_operand,
2344         fp_arith_reg_dest, arith_operand, arith_reg_or_0_operand,
2345         xor_operand, cmp_operand, logical_operand, and_operand,
2346         fpscr_operand, fpul_operand, symbol_ref_operand,
2347         commutative_float_operator, noncommutative_float_operator,
2348         unary_float_operator, binary_float_operator,
2349         binary_logical_operator, equality_comparison_operator,
2350         greater_comparison_operator, less_comparison_operator,
2351         shift_operator, logical_operator, target_reg_operand,
2352         target_operand, mextr_bit_offset, extend_reg_operand,
2353         trunc_hi_operand, extend_reg_or_0_operand, minuend_operand,
2354         general_extend_operand, ua_address_operand,
2355         cache_address_operand, inqhi_operand, sh_rep_vec, sh_1el_vec,
2356         sh_const_vec, ua_offset, sh_register_operand, cmpsi_operand,
2357         shift_count_reg_operand, shift_count_operand,
2358         unaligned_load_operand): Move to ...
2359         * config/sh/predicates.md: ... here.
2360         * config/sh/sh.h (PREDICATE_CODES, SPECIAL_MODE_PREDICATES):
2361         Remove.
2362
2363 2005-06-02  Andrew Pinski  <pinskia@physics.uc.edu>
2364
2365         * tree.c (build_common_builtin_nodes): Fix the return type on
2366         __builtin_memcmp.
2367
2368 2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
2369
2370         * tree-ssa-loop-ivopts.c (build_addr_strip_iref): Remove.
2371         (find_interesting_uses_address): Use build_fold_addr_expr instead.
2372         (strip_offset_1): Likewise.
2373         (tree_to_aff_combination): Likewise.
2374
2375 2005-06-02  DJ Delorie  <dj@redhat.com>
2376
2377         * convert.c (convert_to_pointer): Avoid recursion if no conversion
2378         is needed.
2379
2380 2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
2381
2382         * tree-chrec.c (chrec_fold_plus_1): Ensure we build
2383         binary operations with the correct types.
2384         * tree-ssa-loo-ivopts.c (idx_find_step): Use sizetype
2385         for all computation.
2386
2387 2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
2388
2389         * tree-vrp.c, config/arm/arm.md, config/arm/arm1020e.md,
2390         config/rs6000/rs6000.md: Fix comment typos.  Follow splling
2391         conventions.
2392         * doc/install.texi: Fix a typo.
2393
2394 2005-06-02  Jan Hubicka  <jh@suse.cz>
2395
2396         * cgraphunit.c (cgraph_function_and_variable_visibility): Extern
2397         inline functions are not local.
2398
2399 2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
2400
2401         * gimplify.c (gimplify_ctx): Change the type of case_labels to
2402         VEC from VARRAY.
2403         (gimplify_switch_expr, gimplify_case_label_expr): Adjust uses
2404         of case_labels.
2405
2406 2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
2407
2408         * c-typeck.c (build_indirect_ref): Build INDIRECT_REF
2409         with correct type.
2410
2411 2005-06-02  Ulrich Weigand  <uweigand@de.ibm.com>
2412
2413         * config/s390/s390.c (s390_add_execute): Do not handle out-of-pool
2414         execute templates.
2415         (s390_dump_pool): Likewise.
2416         (s390_mainpool_start, s390_mainpool_finish): Likewise.
2417         (s390_chunkify_start): Likewise.
2418         (s390_dump_execute): Remove.
2419         (s390_reorg): Handle out-of-pool execute templates.
2420
2421 2005-06-02  Adrian Straetling  <straetling@de.ibm.com>
2422
2423         * optabs.c: (expand_bool_compare_and_swap): Emit barrier after
2424           unconditional jump.
2425
2426 2005-06-02  Jan Hubicka  <jh@suse.cz>
2427
2428         * cgraph.c (cgraph_node): Maintain master clones.
2429         (cgraph_remove_node): Likewise.
2430         (availability_names): New static variable.
2431         (dump_cgraph_node): Dump availability.
2432         (dump_cgraph_varpool_node): Likewise.
2433         (cgraph_is_master_clone, cgraph_master_clone,
2434         cgraph_function_body_availability,
2435         cgraph_variable_initializer_availability): New functions.
2436         * cgraph.h (availability): New enum.
2437         (struct cgraph_node): Add master_clone.
2438         (cgraph_is_master_clone, cgraph_master_clone,
2439         cgraph_function_body_availability,
2440         cgraph_variable_initializer_availability): Declare.
2441         * cgraphunit.c (cgraph_expand_function): Setcgraph_function_flags_ready.
2442         (cgraph_remove_unreachable_nodes): Remove unreachable nodes.
2443         * ipa-inline.c (cgraph_decide_inlining): Do not call
2444         cgraph_remove_unreachable_nodes.
2445
2446         * cgraphunit.c (cgraph_function_and_variable_visibility): Fix typo in
2447         previous patch.
2448
2449 2005-06-02  Diego Novillo  <dnovillo@redhat.com>
2450
2451         PR 21582
2452         * tree-vrp.c (nonnull_arg_p): New.
2453         (get_value_range): Call it.
2454
2455 2005-06-02  Eric Christopher  <echristo@redhat.com>
2456
2457         * config/mips/mips.h (processor_type): Remove PROCESSOR_DEFAULT,
2458         add PROCESSOR_MAX.
2459         (mips_rtx_cost_data): New datatype.
2460         (MEMORY_MOVE_COST): Use data from structure.
2461         (BRANCH_COST): Ditto.
2462         (LOGICAL_OP_NON_SHORT_CIRCUIT): Define to zero.
2463         * config/mips/mips.md (cpu): Rework for processor_type changes.
2464         * config/mips/mips.c (mips_cost): New variable.
2465         (DEFAULT_COSTS): Define.
2466         (mips_rtx_cost_data): New.
2467         (mips_rtx_costs): Use. Minor formatting changes. Use COSTS_N_INSNS
2468         for NEG cost. Add support for FLOAT, UNSIGNED_FLOAT, FIX,
2469         FLOAT_EXTEND, FLOAT_TRUNCATE, and SQRT.
2470         (override_options): Set cost data.
2471         (mips_register_move_cost): Formatting changes.
2472         (bdesc_arrays): Use PROCESSOR_MAX.
2473         (mips_init_builtins): Ditto.
2474
2475 2005-06-02  Diego Novillo  <dnovillo@redhat.com>
2476
2477         PR 21765
2478         * doc/invoke.texi: Document -ftree-vrp.
2479
2480 2005-06-02  Dorit Nuzman  <dorit@il.ibm.com>
2481
2482         PR tree-optimization/21734
2483         * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop): Use the
2484         phi_result when current_def is not available.
2485         (slpeel_update_phi_nodes_for_guard1): Don't fail if current_def is not
2486         available.      
2487
2488 2005-06-02  David Edelsohn  <edelsohn@gnu.org>
2489
2490         * config/rs6000/rs6000.c (rs6000_insn_valid_within_doloop): New.
2491         (TARGET_INSN_VALID_WITHIN_DOLOOP): Define.
2492
2493 2005-06-02  Diego Novillo  <dnovillo@redhat.com>
2494
2495         * tree-vrp.c (has_assert_expr, maybe_add_assert_expr): Remove.
2496
2497 2005-06-02  Jan Hubicka  <jh@suse.cz>
2498
2499         * cgraph.c (dump_cgraph_node): Print new flags.
2500         (dump_cgraph_varpool_node): Likewise.
2501         (decide_variable_is_needed): Initialize externally_visible flag.
2502         * cgraph.h (cgraph_local_info): Add externally_visible flag.
2503         (cgraph_varpool_node): Likewise.
2504         (cgraph_function_flags_ready): Declare.
2505         * cgraph.c (cgraph_mark_local_functions): Rename to ...
2506         (cgraph_function_and_variable_visibility) ... this one; handle
2507         externally_visible flags.
2508         (decide_is_function_needed): Set externally_visible flag.
2509         (cgraph_finalize_function): Deal properly with early cleanups.
2510         (cgraph_optimize): Update call of
2511         cgraph_function_and_variable_visibility.
2512
2513 2005-06-02 Steven Bosscher  <stevenb@suse.de>
2514            Mostafa Hagog <mustafa@il.ibm.com>
2515
2516         * cfgloop.h (doloop_condition_get): Make external.
2517         * loop-doloop.c (doloop_condition_get): Generalize to make it
2518         usable in modulo-sched.c.
2519         * modulo-sched.c (doloop_register_get): Use
2520         doloop_condition_get instead of duplicating it.
2521
2522 2005-06-02  Bernd Schmidt  <bernd.schmidt@analog.com>
2523
2524         * reload1.c (reload): Undo 2005-04-20 change.  Make sure we detect
2525         the correct set of init_insns that need deletion.
2526         * local-alloc.c (update_equiv_regs): When substituting sole definition
2527         into sole use of a reg, delete it from liveness information.
2528
2529 2005-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
2530
2531         * config/sh/sh.h (TARGET_FPU_DOUBLE): Use MASK_SH4.
2532
2533 2005-06-01  Diego Novillo  <dnovillo@redhat.com>
2534
2535         PR 14341, PR 21332, PR 20701, PR 21029, PR 21086, PR 21090
2536         PR 21289, PR 21348, PR 21367, PR 21368, PR 21458.
2537         * fold-const.c (invert_tree_comparison): Make extern.
2538         * tree-flow.h (enum value_range_type): Move to tree-ssa-propagate.
2539         (struct value_range_def): Limewise.
2540         (get_value_range): Remove.
2541         (dump_value_range): Remove.
2542         (dump_all_value_ranges): Remove.
2543         (debug_all_value_ranges): Remove.
2544         (vrp_evaluate_conditional): Declare.
2545         * tree-ssa-propagate.c (struct prop_stats_d): Add field
2546         num_pred_folded.
2547         (substitute_and_fold): Add argument use_ranges_p.
2548         Update all callers.
2549         If use_ranges_p is true, call fold_predicate_in to fold
2550         predicates using range information.
2551         Ignore ASSERT_EXPRs.
2552         Change debugging output to only show statements that have been
2553         folded.
2554         (replace_phi_args_in): Move debugging output code from
2555         substitute and fold.
2556         (fold_predicate_in): New local function.
2557         * tree-ssa-propagate.h (enum value_range_type): Move from
2558         tree-flow.h.
2559         (struct value_range_d): Likewise.
2560         Add field 'equiv'. 
2561         (value_range_t): Rename from value_range.
2562         * tree-vrp.c (found_in_subgraph): Rename from found.
2563         (get_opposite_operand): Remove.
2564         (struct assert_locus_d): Declare.
2565         (assert_locus_t): Declare.
2566         (need_assert_for): Declare.
2567         (asserts_for): Declare.
2568         (blocks_visited): Declare.
2569         (vr_value): Declare.
2570         (set_value_range): Add argument 'equiv'.
2571         Don't drop to VARYING ranges that cover all values in the
2572         type.
2573         Make deep copy of equivalence set 'equiv'.
2574         (copy_value_range): New local function.
2575         (set_value_range_to_undefined): New local function.
2576         (compare_values): Return -2 if either value has overflowed.
2577         (range_includes_zero_p): New local function.
2578         (extract_range_from_assert): Flip the predicate code if the
2579         name being asserted is on the RHS of the predicate.
2580         Avoid creating unnecessary symbolic ranges if the comparison
2581         includes another name with a known numeric range.
2582         Update the equivalnce set of the new range when asserting
2583         EQ_EXPR predicates.
2584         (extract_range_from_ssa_name): Update the equivalence set of
2585         the new range with VAR.
2586         (extract_range_from_binary_expr): Also handle TRUTH_*_EXPR.
2587         If -fwrapv is used, set the resulting range to VARYING if the
2588         operation overflows.  Otherwise, use TYPE_MIN_VALUE and
2589         TYPE_MAX_VALUE to represent -INF and +INF.
2590         Fix handling of *_DIV_EXPR.
2591         (extract_range_from_unary_expr): Handle MINUS_EXPR and
2592         ABS_EXPR properly by switching the range around if necessary.
2593         (extract_range_from_comparison): New local function.
2594         (extract_range_from_expr): Call it.
2595         (adjust_range_with_scev): Do not adjust the range if using
2596         wrapping arithmetic (-fwrapv).
2597         (dump_value_range): Also show equivalence set.
2598         Show -INF and +INF for TYPE_MIN_VALUE and TYPE_MAX_VALUE.
2599         (build_assert_expr_for): Also build ASSERT_EXPR for EQ_EXPR.
2600         (infer_value_range): Change return value to bool.
2601         Add arguments 'comp_code_p' and 'val_p'.
2602         Do not attempt to infer ranges from statements that may throw.
2603         Store the comparison code in comp_code_p.
2604         Store the other operand to be used in the predicate in val_p.
2605         (dump_asserts_for): New.
2606         (debug_asserts_for): New.
2607         (dump_all_asserts): New.
2608         (debug_all_asserts): New.
2609         (register_new_assert_for): New.
2610         (register_edge_assert_for): New.
2611         (find_conditional_asserts): New.
2612         (find_assert_locations): New.
2613         (process_assert_insertions_for): New.
2614         (process_assert_insertions): New.
2615         (insert_range_assertions): Initialize found_in_subgraph,
2616         blocks_visited, need_assert_for and asserts_for.
2617         Call find_assert_locations and process_assert_insertions.
2618         (remove_range_assertions): Add more documentation.
2619         (vrp_initialize): Change return type to void.
2620         Do not try to guess if running VRP is worth it.  
2621         (compare_name_with_value): New.
2622         (compare_names): New.
2623         (vrp_evaluate_conditional): Add argument 'use_equiv_p'.  If
2624         use_equiv_p is true, call compare_names and
2625         compare_name_with_value to compare all the ranges for every
2626         name in the equivalence set of the predicate operands.
2627         Update all callers.
2628         (vrp_meet): Try harder not to derive a VARYING range.
2629         If two values meet, the resulting equivalence set is the
2630         intersection of the two equivalence sets.
2631         (vrp_visit_phi_node): Call copy_value_range to get the current
2632         range information of the LHS.
2633         (vrp_finalize): Create a value vector representing all the
2634         names that ended up with exactly one value in their range.
2635         Call substitute_and_fold.
2636         (execute_vrp): Document equivalence sets in ranges.
2637         * tree.h (SSA_NAME_VALUE_RANGE): Remove.
2638         (struct tree_ssa_name): Remove field value_range.
2639         (invert_tree_comparison): Declare.
2640
2641 2005-06-01  Daniel Berlin  <dberlin@dberlin.org>
2642
2643         Fix PR tree-optimization/21839
2644
2645         * gimplify.c (zero_sized_field_decl): New function.
2646         (gimplify_init_ctor_eval): Use it.
2647
2648 2005-06-01  Josh Conner <jconner@apple.com>
2649
2650         PR 21478
2651         * gimplify.c (gimplify_init_constructor): Don't spill initializer
2652         to read-only memory if it's sparse.
2653
2654 2005-06-01  Ramana Radhakrishnan  <ramana@codito.com>
2655
2656         * doc/rtl.texi: Remove references to NOTE_INSN_SETJMP. 
2657         Add documentation for REG_SETJMP
2658
2659 2005-06-01  Richard Guenther  <rguenth@gcc.gnu.org>
2660
2661         * stmt.c (expand_case): Use build_int_cst.
2662         (node_has_low_bound): Likewise, and correct type mismatch.
2663         (node_has_high_bound): Likewise.
2664         * fold-const.c (fold_binary): Ensure we build trees
2665         with the correct types - undo what STRIP_NOPS possibly did.
2666
2667 2005-06-01  Richard Guenther  <rguenth@gcc.gnu.org>
2668
2669         * tree.h (fold_indirect_ref_1): Export from fold-const.c.
2670         * fold-const.c (fold_indirect_ref_1): No longer static.
2671         * tree-inline.c (copy_body_r): Use fold_indirect_ref_1 for
2672         folding, if possible.
2673
2674 2005-06-01  Joseph S. Myers  <joseph@codesourcery.com>
2675
2676         * common.opt (fjump-tables): New.
2677         * doc/invoke.texi (-fno-jump-tables): Document.
2678         * stmt.c (expand_end_case_type): Do not emit jump tables unless
2679         flag_jump_tables.
2680
2681 2005-06-01  Richard Earnshaw  <richard.earnshaw@arm.com>
2682
2683         * arm.md (bunordered, bordered, bungt, bunlt, bunge, bunle, buneq)
2684         (bltgt, arm_buneq, arm_bltgt, sunordered, sordered, sungt, sunge)
2685         (sunlt, sunle): Enable patterns on VFP.
2686
2687         * arm.md (attribute 'type'): Add new types - f_loads floadd, f_stores,
2688         f_stored, f_flag, f_cvt.
2689         (generic_sched): No-longer used for the arm1020e and arm1022e cores.
2690         Include arm1020e.md.
2691         * vfp.md (fmstat): New cpu unit.  Add an exclusion set between it and
2692         the ds and fmac pipelines.  Re-work all load and store patterns and
2693         all conversion patterns to use new attributes.  Adjust reservation
2694         descriptions accordingly.
2695         * arm1020e.md: New file.
2696         * t-arm: Add dependency.
2697
2698 2005-06-01  Jan Hubicka  <jh@suse.cz>
2699
2700         * except.c (struct eh_region): Kill unused fields.
2701         * basic-block.h (struct basic_block_def): Likewise.
2702
2703 2005-06-01  J"orn Rennecke <joern.rennecke@st.com>
2704
2705         PR rtl-optimization/21767
2706         * rtl.h (function_invariant_p): Re-add declaration.
2707         * reload1.c (function_invariant_p): No longer static.
2708         * ifcvt.c (dead_or_predicable): Remove REG_EQUAL notes that
2709         might have become invalid.
2710
2711 2005-06-01  Jakub Jelinek  <jakub@redhat.com>
2712
2713         PR c/21536
2714         PR c/20760
2715         * gimplify.c (gimplify_decl_expr): Call gimplify_type_sizes
2716         on variable sizes types if a decl is a pointer to a VLA.
2717         (gimplify_type_sizes): Handle POINTER_TYPE and REFERENCE_TYPE.
2718         Call gimplify_type_sizes on aggregate fields.  Prevent infinite
2719         recursion.
2720
2721         * fold-const.c (fold_ternary): Optimize BIT_FIELD_REF of VECTOR_CST.
2722
2723         * config/i386/xmmintrin.h (_mm_setzero_ps, _mm_set_ss, _mm_set1_ps,
2724         _mm_set_ps, _mm_setr_ps): Add __extension__.
2725         * config/i386/emmintrin.h (_mm_set_sd, _mm_set1_pd, _mm_set_pd,
2726         _mm_setr_pd, _mm_setzero_pd, _mm_set_epi64x, _mm_set_epi64x,
2727         _mm_set_epi32, _mm_set_epi16, _mm_set_epi8, _mm_setzero_si128):
2728         Likewise.
2729         (_mm_clflush): Don't use return in void function.
2730
2731         * config/i386/emmintrin.h (_mm_castpd_ps, _mm_castpd_si128,
2732         _mm_castps_pd, _mm_castps_si128, _mm_castsi128_ps, _mm_castsi128_pd):
2733         Use __inline instead of inline.
2734
2735 2005-06-01  Richard Guenther  <rguenth@gcc.gnu.org>
2736
2737         * fold-const.c (fold_binary): Fix types in strlen vs.
2738         zero comparison folding.
2739
2740 2005-06-01  Richard Henderson  <rth@redhat.com>
2741
2742         * configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New.
2743         * config.in, configure: Rebuild.
2744         * config/alpha/alpha.c (print_operand): Add 'j'.
2745         * alpha.md (divmodsi_internal_er_1): Use it.
2746         (divmoddi_internal_er_1): Likewise.
2747
2748 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
2749
2750         * system.h (TARGET_OPTIONS, TARGET_SWITCHES): Poison.
2751         * opts.h (print_filtered_help): Delete.
2752         * opts.c (handle_option, decode_options): Remove calls to
2753         set_target_switch.
2754         (print_target_help): New function.
2755         (common_option, print_help): Call print_target_help instead of
2756         display_target_options.
2757         (print_filtered_help): Make static.
2758         * toplev.h (display_target_options, set_target_switch): Delete.
2759         * toplev.c (target_switches, target_options, display_target_options)
2760         (set_target_switch): Delete.
2761         (print_switch_values): Remove handling of TARGET_SWITCHES and
2762         TARGET_OPTIONS.
2763         (default_get_pch_validity): Likewise.  Only treat target_flags
2764         specially if targetm.check_pch_target_flags is nonnull.
2765         (pch_option_mismatch): New function.
2766         (default_pch_valid_p): Use it.  Remove handling of TARGET_SWITCHES
2767         and TARGET_OPTIONS.  Only treat target_flags specially if
2768         targetm.check_pch_target_flags is nonnull.
2769         * config/ia64/ia64.c (ia64_override_options): Don't mention
2770         TARGET_OPTIONS in comment.
2771         * config/m68k/m68k-none.h (CC1_SPEC): Likewise.
2772         * doc/invoke.texi: Remove a reference to TARGET_SWITCHES.
2773         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS): Don't mention the
2774         interaction with TARGET_SWITCHES.
2775         (TARGET_@var{featurename}, TARGET_SWITCHES, TARGET_OPTIONS): Delete.
2776
2777 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
2778
2779         * config/sh/sh.c (multcosts): Check sh_multcost rather than
2780         sh_multcost_str.
2781         (sh_register_move_cost): Likewise sh_gettrcost and sh_gettrcost_str.
2782         (sh_multcost_str, sh_gettrcost_str, sh_div_str, sh_divsi3_libfunc)
2783         (cut2_workaround_str): Delete.
2784         * config/sh/sh.h (SUBTARGET_OPTIONS, TARGET_OPTIONS)
2785         (TARGET_SH5_CUT2_WORKAROUND, sh_multcost_str, sh_gettrcost_str)
2786         (sh_div_str, sh_divsi3_libfunc, cut2_workaround_str): Delete.
2787         * config/sh/sh.opt (mcut2-workaround, mdiv=, mdivsi3_libfunc=)
2788         (mgettrcost=, multcost=): New options.
2789
2790 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
2791
2792         * opts.h (cl_option_state): New structure.
2793         (get_option_state): Declare.
2794         * opts.c (get_option_state): New function.
2795         * toplev.c (option_affects_pch_p): New function.
2796         (default_get_pch_validity): Store the state of all options for which
2797         option_affects_pch_p returns true.
2798         (default_pch_valid_p): Check the state of those options here.
2799         Only check target_flags separately if targetm.check_pch_target_Flags
2800         is nonnull or if TARGET_SWITCHES is defined.
2801
2802 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
2803
2804         * config/mips/mips-protos.h (mips_use_ins_ext_p): Remove parameter
2805         names.
2806
2807 2005-06-01 Mostafa Hagog <mustafa@il.ibm.com>
2808
2809         * modulo-sched.c (undo_generate_reg_moves ): Fix PR 21138.
2810
2811 2005-06-01 Mostafa Hagog <mustafa@il.ibm.com>
2812
2813         * gcse.c (compute_transp, load_killed_in_block): Use 
2814         MEM_READONLY_P.
2815
2816 2005-06-01  David.Billinghurst  <David.Billinghurst@riotinto.com>
2817
2818         PR target/21854
2819         * config/mips/mips-protos.h: Declare mips_use_ins_ext_p
2820         
2821 2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2822
2823         * errors.h (warning, error, fatal, internal_error): Add printf
2824         attribute.
2825         * genmodes.c (make_vector_mode): Fix format arguments.
2826
2827 2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2828
2829         * basic-block.h, bb-reorder.c, c-gimplify.c, config/darwin.c,
2830         config/rs6000/rs6000-c.c, dominance.c, gimple-low.c, gimplify.c,
2831         lambda-code.c, lambda-trans.c, tree-browser.c, tree-cfg.c,
2832         tree-chrec.c, tree-data-ref.c, tree-dfa.c, tree-eh.c,
2833         tree-if-conv.c, tree-into-ssa.c, tree-loop-linear.c,
2834         tree-mudflap.c, tree-nomudflap.c, tree-outof-ssa.c,
2835         tree-pretty-print.c, tree-scalar-evolution.c, tree-sra.c,
2836         tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dom.c,
2837         tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-live.c,
2838         tree-ssa-operands.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
2839         tree-ssa-propagate.c, tree-ssa-sink.c, tree-ssa-threadupdate.c,
2840         tree-ssa-uncprop.c, tree-ssa.c, tree-vect-analyze.c,
2841         tree-vect-transform.c, tree-vectorizer.c, vec.c: Don't include
2842         errors.h and include toplev.h if necessary.
2843         
2844         * rtl.c, varray.c: If we're compiling as a GENERATOR_FILE, include
2845         errors.h otherwise include toplev.h.
2846         
2847         * Makefile.in: Update dependencies.
2848         
2849 2005-06-01  Danny Smith  <dannysmith@users.sourceforge.net>
2850
2851         * config/i386/cygming.h (NO_PROFILE_COUNTERS): Define.
2852
2853 2005-05-31  Geoffrey Keating  <geoffk@geoffk.org>
2854
2855         * config/rs6000/rs6000.md (sync_boolcshort_internal): New.
2856         * config/rs6000/rs6000.c (rs6000_emit_sync): Shift count must
2857         be complemented for big-endian.  Mask for AND must be rotated,
2858         not shifted.  Handle short operands with NOT on the memory
2859         operation.
2860
2861 2005-05-30  Daniel Berlin  <dberlin@dberlin.org>
2862
2863         * c-objc-common.c (c_tree_printer): Check flag before hashtable.
2864         Use DECL_DEBUG_EXPR and SET_DECL_DEBUG_EXPR.
2865         * dwarf2out.c (dwarf2out_var_location): Ditto.
2866         * toplev.c (default_tree_printer): Ditto.
2867         * tree-outof-ssa.c (create_temp): Ditto.
2868         * tree-sra.c (instantiate_element): Ditto.
2869         * var-tracking.c (track_expr_p): Ditto.
2870         * tree.c (struct tree_map): New structure.
2871         (debug_expr_for_decl): New.
2872         (tree_map_eq): New function.
2873         (tree_map_hash): Ditto.
2874         (tree_map_marked_p): Ditto.
2875         (print_debug_expr_statistics): Ditto.
2876         (decl_debug_expr_lookup): Ditto.
2877         (decl_debug_expr_insert): Ditto.
2878         (dump_tree_statistics): Dump debug_expr hashtable stats.
2879         * tree.h (DECL_DEBUG_EXPR): Change
2880         (SET_DECL_DEBUG_EXPR): Add.
2881         
2882 2005-06-01  Alan Modra  <amodra@bigpond.net.au>
2883
2884         * configure.ac: Add --enable-secureplt.
2885         (HAVE_AS_REL16): Test for R_PPC_REL16 relocs.
2886         * config.in: Regenerate.
2887         * configure: Regenerate.
2888         * config.gcc (powerpc64-*-linux*, powerpc-*-linux*): Add
2889         rs6000/secureplt.h to tm_file when enable_secureplt.
2890         * doc/invoke.texi (msecure-plt, mbss-plt): Document.
2891         * doc/install.texi: Document --enable-targets and --enable-secureplt.
2892         Correct xrefs to "Using the GNU Compiler Collection (GCC)".
2893         * config/rs6000/secureplt.h: New file.
2894         * config/rs6000/sysv4.h (TARGET_SECURE_PLT): Define.
2895         (SUBTARGET_OVERRIDE_OPTIONS): Error if -msecure-plt given without
2896         assembler support.
2897         (CC1_SECURE_PLT_DEFAULT_SPEC): Define.
2898         (CC1_SPEC): Delete duplicate mno-sdata.  Invoke cc1_secure_plt_default.
2899         (SUBTARGET_EXTRA_SPECS): Add cc1_secure_plt_default.
2900         * config/rs6000/sysv4.opt (msecure-plt, bss-plt): Add options.
2901         * config/rs6000/rs6000.h (TARGET_SECURE_PLT): Define.
2902         * config/rs6000/rs6000.c (rs6000_emit_load_toc_table): Handle
2903         TARGET_SECURE_PLT got register load sequence.
2904         (rs6000_emit_prologue): Call rs6000_emit_load_toc_table when
2905         TARGET_SECURE_PLT.
2906         (rs6000_elf_declare_function_name): Don't emit toc address offset
2907         word when TARGET_SECURE_PLT.
2908         * config/rs6000/rs6000.md (elf_high, elf_low): Move past load_toc_*.
2909         (load_toc_v4_PIC_1) Enable for TARGET_SECURE_PLT.
2910         (load_toc_v4_PIC_3b, load_toc_v4_PIC_3c): New insns.
2911         (call, call_value): Mark pic_offset_table_rtx used for sysv pic and
2912         TARGET_SECURE_PLT.
2913         (call_nonlocal_sysv, call_value_nonlocal_sysv, sibcall_nonlocal_sysv,
2914         sibcall_value_nonlocal_sysv): Add 32768 offset when TARGET_SECURE_PLT
2915         and -fPIC.
2916         * config/rs6000/tramp.asm (trampoline_initial): Use "bcl 20,31".
2917         (__trampoline_setup): Likewise.  Init r30 before plt call.
2918
2919 2005-05-31  DJ Delorie  <dj@redhat.com>
2920
2921         * expr.c (convert_move): When a partial_int requires multiple
2922         conversion steps, make sure successive steps convert the
2923         intermediate value, not the original value.
2924
2925         * expmed.c (expand_mult): Convert partial_int multiplies to
2926         shift/add combinations too.
2927
2928         * genmodes.c (mode_data): Add wider_2x.
2929         (calc_wider_mode): Calculate twice-wider mode too.
2930         (emit_mode_wider): Emit twice-wider mode too.
2931         * machmode.h (mode_2xwider, GET_MODE_2XWIDER_MODE): New.
2932         * expr.c (expand_expr_real_1): Use it for expanding
2933         multiplies.
2934
2935 2005-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
2936
2937         PR tree-optimization/21817
2938         * tree-ssa-loop-im.c (for_each_index): Handle VECTOR_CST.
2939
2940 2005-05-31  Pat Haugen  <pthaugen@us.ibm.com>
2941
2942         * loop.c (loop_invariant_p, valid_initial_value_p): Revert last
2943         change.
2944
2945 2005-05-31  Andrew Pinski  <pinskia@physics.uc.edu>
2946
2947         PR middle-end/20931
2948         PR middle-end/20946
2949         * fold-const.c (fold_checksum_tree): Copy types also if
2950         TYPE_CONTAINS_PLACEHOLDER_INTERNAL is set.
2951         Don't call fold_checksum_tree for TREE_LIST's TREE_CHAIN
2952         first.
2953         Tail recurse TREE_LIST's TREE_CHAIN.
2954
2955 2005-05-31  Andrew Pinski  <pinskia@physics.uc.edu>
2956
2957         PR tree-opt/21732
2958         * tree-ssa-copy.c (dump_copy_of): Create a bitmap and don't visit a
2959         SSA_NAME twice and cause the loop to become finite.  Remove the test
2960         for val.
2961
2962 2005-05-31  Andrew Pinski  <pinskia@physics.uc.edu>
2963
2964         * tree-cfg.c (verify_expr): Add checking for COND_EXPR's conditional
2965         expression.
2966
2967 2005-05-31  Richard Sandiford  <rsandifo@redhat.com>
2968
2969         * doc/tm.texi (TARGET_GET_PCH_VALIDITY, TARGET_PCH_VALID_P): Tweak
2970         the documentation to make it more future-proof.
2971         (TARGET_CHECK_PCH_TARGET_FLAGS): Document this new hook.
2972         * target.h (gcc_target): Add check_pch_target_flags.
2973         * target-def.h (TARGET_CHECK_PCH_TARGET_FLAGS): New macro.
2974         (TARGET_INITIALIZER): Include it.
2975         * toplev.c (default_pch_valid_p): Use targetm.check_pch_target_flags.
2976         * config/sh/sh-protos.h (sh_pch_valid_p): Delete.
2977         * config/sh/sh.c (TARGET_PCH_VALID_P, sh_pch_valid_p): Delete.
2978         (sh_check_pch_target_flags): New function.
2979         (TARGET_CHECK_PCH_TARGET_FLAGS): Override default.
2980
2981 2005-05-31  Richard Guenther  <rguenth@gcc.gnu.org>
2982
2983         * fold-const.c (extract_array_ref): Handle more cases,
2984         do some useful canonicalization of the base.
2985         (fold_binary): Explicitly deal with arrays of zero-sized
2986         structures during folding of &a[i] == &a[j].
2987
2988 2005-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>
2989
2990         * doc/install.texi (sparc-sun-solaris2*): Update note
2991         about Sun bug 4910101.
2992         (sparc-sun-solaris2.7): Document bootstrap
2993         failure with Sun WorkShop 6 99/08/18 as.
2994
2995 2005-05-30  Pat Haugen  <pthaugen@us.ibm.com>
2996
2997         * loop.c (loop_invariant_p, valid_initial_value_p): Use
2998         regs_invalidated_by_call instead of call_used_regs.
2999
3000 2005-05-30  Paolo Carlini  <pcarlini@suse.de>
3001
3002         PR middle-end/21743
3003         * builtins.def (BUILT_IN_CLOG, BUILT_IN_CLOGF, BUILT_IN_CLOGL):
3004         Enable.
3005         * doc/extend.texi: Add clog, clogf, clogl.
3006
3007 2005-05-30  H.J. Lu  <hongjiu.lu@intel.com>
3008
3009         PR middle-end/20303
3010         * c-pragma.c: Include "vec.h".
3011         (handle_pragma_visibility): Use VEC.
3012
3013         * doc/invoke.texi: Remove the nested visibility push limit.
3014
3015 2005-05-30  Roger Sayle  <roger@eyesopen.com>
3016
3017         PR rtl-optimization/15422
3018         * reg-stack.c (starting_stack_p): New static global.
3019         (straighten_stack): Delete prototype. Change to update the stack
3020         before the current insn.
3021         (subst_stack_regs): Update call to straighten stack.
3022         (emit_swap_insn): Delete prototype.  For the first insn in a
3023         basic block, update stack_in instead of emitting a real swap.
3024         (change_stack): When changing the stack before the first insn
3025         in a basic block, update stack_in instead of emitting real code.
3026         (compensate_edges): Clear starting_stack_p during compensation.
3027         (convert_regs_1): Keep track of starting_stack_p whilst processing
3028         a basic block.
3029
3030 2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>
3031
3032         * tree-ssa-ccp.c (const_val): Make it static.
3033
3034 2005-05-29  Geoffrey Keating  <geoffk@apple.com>
3035
3036         PR target/21761
3037         * config/rs6000/rs6000.md: Remove stray TARGET_32BIT from
3038         pattern involving `:P'.
3039
3040         * Makefile.in (install-cpp): Depend on installdirs.
3041
3042 2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>
3043
3044         * tree-outof-ssa.c (_elim_graph): Change the type of edge_list
3045         to VEC(int,heap)*.
3046         (new_elim_graph, clear_elim_graph, delete_elim_graph,
3047         elim_graph_add_edge, elim_graph_remove_succ_edge,
3048         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED): Use VEC
3049         instead of VARRAY.
3050
3051 2005-05-29  Kazu Hirata  <kazu@cs.umass.edu>
3052
3053         * cgraphunit.c, ipa-inline.c, loop-iv.c, modulo-sched.c,
3054         opts.c, postreload-gcse.c, tree-browser.def, tree-eh.c,
3055         tree-ssa-copyrename.c, tree-vect-analyze.c: Fix typos and
3056         follow spelling conventions in error/dump messages.
3057
3058 2005-05-29  Roger Sayle  <roger@eyesopen.com>
3059             Richard Henderson  <rth@redhat.com>
3060
3061         * ifcvt.c (noce_emit_move_insn): Construct a SET pattern directly
3062         if the RHS isn't suitable for calling emit_move_insn.
3063
3064 2005-05-29  Kazu Hirata  <kazu@cs.umass.edu>
3065
3066         * tree-ssa-ccp.c (ccp_fold): Return immediately after calling
3067         fold_unary and fold_binary.
3068
3069 2005-05-29  Roger Sayle  <roger@eyesopen.com>
3070
3071         * reg-stack.c (propagate_stack): Always copy the source stack to
3072         the destination.  This routine is now only called when this is safe.
3073         (better_edge): New function split out from convert_regs_1 to
3074         determine which of two edges is better to propagate across.
3075         (convert_regs_1):  We need only search for a best edge if the
3076         stack layout hasn't been defined yet.  Use better_edge to help
3077         find beste.  No longer traverse unnecessary edges.
3078
3079 2005-05-29  Keith Besaw  <kbesaw@us.ibm.com>
3080
3081         * tree-ssa-alias.c (new_type_alias): New procedure to
3082         create a type memory tag for a pointer with a may-alias
3083         set determined from a variable declaration.
3084         * tree-flow.h: export declaration of new_type_alias
3085         * tree-optimize.c (init_tree_optimization_passes): document
3086         that pass_may_alias cannot be called after pass_vectorize.
3087         * tree-vect-transform (vect_create_data_ref_ptr): Call
3088         new_type_alias when an type memory tag isn't available
3089         for a reference.
3090         (vectorizable_store): Use copy_virtual_operands to update
3091         virtual defs in place (so that loop_version can be called).
3092         Call mark_for_renaming for the virtual defs in case peeling
3093         is done and virtual uses outside the loop need to be updated.
3094
3095 2005-05-29  Dorit Naishlos  <dorit@il.ibm.com>
3096
3097         PR tree-optimization/21639
3098         * tree-complex.c (pass_lower_vector_s): Remove TODO_ggc_collect.
3099
3100 2005-05-29  Jan Hubicka  <jh@suse.cz>
3101
3102         PR tree-optimization/21562
3103         * cfgexpand.c (construct_init_block): Deal properly with the case
3104         of entry edge not pointing to very first basic block.
3105
3106 2005-05-28  Kazu Hirata  <kazu@cs.umass.edu>
3107
3108         * tree-ssa-ccp.c (ccp_fold): Remove code that produces
3109         non-gimple min invariant.
3110
3111         * Makefile.in (OBJS-common): Add tree-cfgcleanup.o.
3112         * tree-flow.h: Add prototypes for start_recording_case_labels
3113         and end_recording_case_labels.
3114         * tree-cfg.c (start_recording_case_labels,
3115         end_recording_case_labels): Export.
3116         (cleanup_tree_cfg_loop, modified_noreturn_calls,
3117         cleanup_control_flow, cleanup_control_expr_graph,
3118         remove_fallthru_edge, phi_alternatives_equal,
3119         tree_forwarder_block_p, has_abnormal_incoming_edge_p,
3120         remove_forwarder_block, cleanup_forwarder_blocks,
3121         remove_forwarder_block_with_phi, merge_phi_nodes,
3122         gate_merge_phi, pass_merge_phi): Move to ...
3123         * tree-cfgcleanup.c: ... here.
3124
3125         * basic-block.h: Remove forward declaration of bb_ann_d.
3126
3127 2005-05-28  Jan Hubicka  <jh@suse.cz>
3128
3129         * tree-ssa-threadupdate.c: (create_edge_and_update_destination_phis):
3130         Update profile.
3131         * value-prof.c (tree_divmod_fixed_value_transform): Be more verbose in
3132         debug output.
3133         (tree_mod_subtract): Fix profile updating code.
3134         (tree_divmod_values_to_profile): Do not produce useless value profilers
3135         for divisions.
3136
3137 2005-05-28  Kazu Hirata  <kazu@cs.umass.edu>
3138
3139         * tree-ssa-dom.c (vrp_element_p): Define.
3140         (vrp_hash_elt): Change the type of records to
3141         VEC(vrp_element_p,heap).
3142         (vrp_free): New.
3143         (tree_ssa_dominator_optimize): Pass vrp_free to htab_create.
3144         Update uses of VRP records.
3145         (simplify_cond_and_lookup_avail_expr, record_range): Update
3146         uses of VRP records.
3147
3148         * tree-inline.c (cfun_stack): Change the type to
3149         VEC(function_p,heap).
3150         (push_cfun, pop_cfun): Use VEC instead of VARRAY.
3151
3152 2005-05-27  Ian Lance Taylor  <ian@airs.com>
3153
3154         * c-decl.c (add_stmt): Add C frontend specific version.
3155         (stmts_are_full_exprs_p): Remove.
3156         * c-common.h (STMT_IS_FULL_EXPR_P): Remove.
3157         (stmts_are_full_exprs_p): Don't declare.
3158         * c-semantics.c (add_stmt): Remove.
3159
3160 2005-05-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3161
3162         * config/mips/mips-protos.h (mips_declare_object): Add printf
3163         attribute.
3164         * config/mips/mips.c (mips_declare_object_name): Fix format
3165         argument.
3166
3167 2005-05-27  Roger Sayle  <roger@eyesopen.com>
3168
3169         * reg-stack.c (compensate_edge): Remove original prototype.
3170         (propagate_stack): New function to copy the stack layout
3171         at the start of a basic block from the layout at the end of
3172         one of its predecessors.
3173         (compensate_edge): Assume that both source and destination
3174         blocks have already had their stack layouts defined.
3175         (compensate_edges): Traverse all non-entry edges in the CFG
3176         and call compensate_edge on each in turn.
3177         (convert_regs_1): Change return type to void.  Call
3178         propagate_stack instead of compensate_edge.
3179         (convert_regs_2): Change return type to void.  Update call
3180         to convert_regs_1 to ignore the (now void) return value.
3181         (convert_regs): Update calls to convert_regs_2 to ignore
3182         the (now void) return value.  After all the basic blocks have
3183         been processed, call compensate_edges to actually emit new
3184         insns.
3185         (reg_to_stack): Initialize the aux info for each basic block
3186         with FOR_EACH_BB instead of which FOR_EACH_BB_REVERSE.
3187
3188 2005-05-28  Jan Hubicka  <jh@suse.cz>
3189
3190         * except.c (can_throw_internal_1, can_throw_external_1): Add 
3191         "is_resx" argument.
3192         (can_throw_external, can_throw_internal): Bring into sync wrt
3193         dealing resx.
3194         * except.h (can_throw_internal_1, can_throw_external_1): Update
3195         prototype.
3196         * tree-eh.c (tree_can_throw_internal, tree_can_throw_external):
3197         Deal properly with resx.
3198
3199 2005-05-27  Kazu Hirata  <kazu@cs.umass.edu>
3200
3201         * basic-block.h (basic_block_def): Add phi_nodes and
3202         predictions.  Remove tree_annotations.
3203         * predict.c (tree_predicted_by_p, tree_predict_edge,
3204         combine_predictions_for_bb): Adjust references to predictions.
3205         * tree-cfg.c (init_empty_tree_cfg, create_bb): Don't call
3206         create_block_annotation.
3207         (create_block_annotation, free_blocks_annotatios,
3208         clear_blocks_annotations): Remove.
3209         (dump_cfg_stats): Don't print out the memory spent on
3210         bb_ann_d.
3211         (delete_tree_cfg_annotations): Don't call free_blocks_annotations.
3212         * tree-flow-inline.h (bb_ann): Remove.
3213         (phi_nodes, set_phi_nodes): Update references to phi_nodes.
3214         * tree-flow.h (bb_ann_d): Remove.
3215         * tree-if-conv.c (process_phi_nodes): Update a reference to
3216         phi_nodes.
3217         * tree-phinodes.c (reserve_phi_args_for_new_edge,
3218         create_phi_node, remove_phi_node): Likewise.
3219         * tree-pretty-print.c (dump_generic_bb_buff): Don't call bb_ann.
3220         * tree-ssa-dom.c (threaded_blocks): New.
3221         (tree_ssa_dominator_optimize): Initialize, clear, and free
3222         threaded_blocks. Update a call to thread_through_all_blocks.
3223         (thread_across_edge): Use threaded_blocks instead of setting
3224         incoming_edge_threaded.
3225         * tree-ssa-threadupdate.c (threaded_through_all_blocks): Take
3226         a bitmap of blocks that are threaded through.
3227         * tree.h: Move the prototype of threaded_through_blocks to
3228         tree-flow.h.
3229
3230         * domwalk.c (walk_dominator_tree, init_walk_dominator_tree,
3231         fini_walk_dominator_tree): Use VEC instead of VARRAY.
3232         * domwalk.h (dom_walk_data): Change the type of
3233         block_data_stack and free_block_data to VEC(void_p,heap)*.
3234         * tree-ssa-dse.c (dse_initialize_block_local_data,
3235         dse_optimize_stmt, dse_record_phis, dse_finalize_block): Use
3236         VEC instead of VARRAY.
3237
3238 2005-05-27  Jan Hubicka  <jh@suse.cz>
3239
3240         * cgraph.c: Include tree-gimple.h
3241         (cgraph_edge): Rename expr to stmt.
3242         (cgraph_create_edge): Likewise.
3243         (cgraph_clone_node): Likewise.
3244         * cgraph.h (cgraph_node): Use call_stmt instead of call_expr.
3245         * cgraphunit.c (record_call_1): Rename to ...
3246         (record_reference): ... this one; do not build edges.
3247         (cgraph_varpool_analyze_pending_decls): Call record_reference directly.
3248         (current_basic_block): Kill.
3249         (cgraph_create_edges): Rewrite to work on gimple statements nicely.
3250         (verify_cgraph_node): Likewise.
3251         * tree-inline.c (copy_body_r): Do not mess up with cgraph edges.
3252         (copy_bb): Mess up with cgraph edges here; simplify EH handling.
3253         (copy_edges_for_bb): Simplify EH handling.
3254         (expand_call_inline): Pass statement to cgraph_edge and
3255         cgraph_create_edge.
3256
3257 2005-05-27  Richard Guenther  <rguenth@gcc.gnu.org>
3258
3259         * tree-inline.c (copy_body_r): Manually fold *& to deal
3260         with ADDR_EXPRs with mismatched types for now.
3261
3262         * gimplify.c (fold_indirect_ref_rhs): New function.
3263         (gimplify_modify_expr_rhs): Use it instead of pessimistic
3264         fold_indirect_ref.
3265
3266         * fold-const.c (fold_indirect_ref_1): Add type argument;
3267         make sure the resulting expression is of this type.
3268         (build_fold_indirect_ref, fold_indirect_ref): Adjust callers.
3269
3270 2005-05-27  Kazu Hirata  <kazu@cs.umass.edu>
3271
3272         PR tree-optimization/21658
3273         * tree-ssa-ccp.c (ccp_fold): Call fold_binary instead of
3274         fold_binary_to_constant.  Likewise, call fold_unary instead of
3275         fold_unary_to_constant.
3276
3277 2005-05-27  Nathan Sidwell  <nathan@codesourcery.com>
3278
3279         * vec.h: Implement integral type vector specialization.
3280         (VEC_T): Define a non-GTY structure.
3281         (VEC_T_GTY): Define a GTY structure.
3282         (VEC_TA): Rename to ...
3283         (VEC_TA_GTY): ... here.
3284         (DEF_VEC_I, DEF_VEC_ALLOC_I): New.
3285         (DEF_VEC_P, DEF_VEC_ALLOC_P): Adjust.
3286         (DEF_VEC_FUNC_P, DEF_VEC_ALLOC_FUNC_P): New, broken out of
3287         DEF_VEC_P and DEF_VEC_ALLOC_P.
3288         (DEF_VEC_O, DEF_VEC_ALLOC_O): Adjust.
3289         (DEF_VEC_FUNC_O, DEF_VEC_ALLOC_FUNC_O): New, broken out of
3290         DEF_VEC_O and DEF_VEC_ALLOC_O.
3291         * global.c: Use DEF_VEC_I, DEF_VEC_ALLOC_I.
3292         * lambda-code.c: Likewise.
3293         * tree-into-ssa.c: Likewise.
3294         * tree-ssa-live.c: Likewise.
3295
3296 2005-05-27  Kazu Hirata  <kazu@cs.umass.edu>
3297
3298         * tree-into-ssa.c (update_ssa): Ensure that the operand cache
3299         is up-to-date.
3300         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
3301         update_stmt_if_modified before calling update_ssa.
3302
3303 2005-05-27  Ralf Corsepius  <ralf.corsepius@rtems.org>
3304
3305         * config/rs6000/t-rtems: Remove roe multilib variant.
3306
3307 2005-05-26  Roger Sayle  <roger@eyesopen.com>
3308
3309         PR tree-optimization/9814
3310         * ifcvt.c (noce_emit_move_insn): If we fail to recognize the move
3311         instruction, add the necessary clobbers by re-expanding the RTL
3312         for arithmetic operations via optab.c's expand_unop/expand_binop.
3313         (noce_try_bitop): New function to optimize bit manipulation idioms
3314         of the form "if (x & C) x = x op C" and "if (!(x & C) x = x op C".
3315         (noce_process_if_block): Call noce_try_bitop.
3316
3317 2005-05-26  Roger Sayle  <roger@eyesopen.com>
3318
3319         * reg-stack.c (convert_regs_entry, convert_regs_exit,
3320         convert_regs_1, convert_regs_2, convert_regs): Delete prototypes.
3321         (reg_to_stack): Move to end of the file.  Initialize the per
3322         basic block information here, instead of...
3323         (convert_regs_entry): Here.
3324         (convert_regs): Change unused return type to void.
3325
3326 2005-05-27  Kazu Hirata  <kazu@cs.umass.edu>
3327
3328         * c-pch.c, timevar.c, timevar.h, unwind-compat.c,
3329         unwind-dw2-fde-compat.c, unwind-dw2-fde.c, config/mmix/mmix.h,
3330         config/rs6000/eabispe.h, config/rs6000/lynx.h,
3331         config/sh/elf.h, config/sh/symbian-pre.h,
3332         config/sparc/sparc-protos.h: Update copyright.
3333
3334 2005-05-26  Mike Stump  <mrs@apple.com>
3335
3336         * darwin.h (ASM_OUTPUT_LABELREF): Handle quoted non-lazy pointers
3337         for Objective-C++.
3338         
3339 2005-05-26  Richard Guenther  <rguenth@gcc.gnu.org>
3340
3341         * tree-ssa-forwprop.c (forward_propagate_addr_expr):
3342         See through ADDR_EXPR in finding place to propagate into.
3343
3344 2005-05-26  Kazu Hirata  <kazu@cs.umass.edu>
3345
3346         * c-common.c, c-parser.c, cfgbuild.c, cfghooks.c, cfghooks.h,
3347         cfgrtl.c, cgraphunit.c, ddg.c, expr.h, gcse.c, ggc-page.c,
3348         ggc-zone.c, gimplify.c, ipa-inline.c, longlong.h, targhooks.c,
3349         tree-flow-inline.h, tree-pass.h, tree-ssa-dse.c,
3350         tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c,
3351         tree-ssa-operands.c, tree-vect-analyze.c,
3352         tree-vect-transform.c, tree-vectorizer.c, tree.c,
3353         config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c,
3354         config/frv/frv.md, config/i386/i386.c, config/i386/sse.md,
3355         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
3356         config/mcore/mcore.c, config/mips/mips.c, config/mips/mips.md,
3357         config/rs6000/darwin-ldouble.c, config/rs6000/rs6000.c,
3358         config/rs6000/rs6000.h, config/sh/sh.c, config/sh/sh.md,
3359         config/sh/ushmedia.h, config/sparc/sparc.c,
3360         config/sparc/sparc.md, config/stormy16/stormy-abi: Fix comment
3361         typos.  Follow spelling conventions.
3362         * doc/invoke.texi, doc/tm.texi, doc/tree-ssa.texi: Fix typos.
3363         Follow spelling conventions.
3364
3365 2005-05-26  David Ung  <davidu@mips.com>
3366
3367         * config/mips/mips.c (mips_use_ins_ext_p): New helper function
3368         that determines whether the MIPS32/64 R2 ext/ins should be used.
3369         * config/mips/mips.h (ISA_HAS_EXT_INS): New macro.
3370         * config/mips/mips.md (extzv): Changed predicate for operand to
3371         nonimmediate_operand. Add code to generate insn patterns for
3372         extzvsi and extzvdi.
3373         (extzv<mode>): New pattern to match mips32/64 r2 ext insn.
3374         (insv): Similarly for insertion.
3375         (insv<mode>): Similarly.
3376
3377 2005-05-26  Paolo Bonzini  <bonzini@gnu.org>
3378
3379         * simplify-rtx.c (avoid_constant_pool_reference): Support
3380         offsetted addresses in the constant pool.
3381
3382 2005-05-26  Paolo Bonzini  <bonzini@gnu.org>
3383
3384         * df.h (DF_SUBREGS, df_local_def_available_p, df_insn_modified_p): New.
3385         * df.c (DF_SUBREGS, df_local_def_available_p, df_insn_modified_p): New.
3386
3387 2005-05-26  Jakub Jelinek  <jakub@redhat.com>
3388
3389         PR target/21716
3390         * reg-stack.c (swap_rtx_condition): Don't crash if %ax user was not
3391         found in the basic block and last insn in the basic block is not
3392         INSN_P.  Remove explicit unspec numbers that are no longer valid
3393         from comments.
3394
3395 2005-05-26  Paolo Bonzini  <bonzini@gnu.org>
3396
3397         * tree-vect-transform.c (vectorizable_operation): Try word_mode
3398         vectorization if UNITS_PER_WORD == UNITS_PER_SIMD_WORD, even
3399         if a vector mode is available.
3400
3401 2005-05-25  Roger Sayle  <roger@eyesopen.com>
3402
3403         PR middle-end/21709
3404         * fold-const.c (const_binop): Check for division by zero during
3405         complex division.
3406
3407 2005-05-26  Ian Lance Taylor  <ian@airs.com>
3408
3409         * reload1.c (verify_initial_elim_offsets): Add braces to avoid
3410         having a declaration after a statement.
3411
3412 2005-05-26  Richard Sandiford  <rsandifo@redhat.com>
3413
3414         * opt-functions.awk (var_type): New function.
3415         (var_set): Use CLVC_STRING if var_type returns "const char *".
3416         * opth-gen.awk: Use var_type to find out the types of variables.
3417         Don't print comments above each "extern" definition.
3418         * optc-gen.awk: Use var_type in the same way.
3419         * opts.h (cl_var_cond): Rename to...
3420         (cl_var_type): ...this.  Add CLVC_STRING.
3421         (cl_option): Make "flag_var" a "void *" pointer.  Replace "var_cond"
3422         with "var_type".
3423         * opts.c (handle_option, option_enabled): Update after above name
3424         change.  Cast flag_var before using it.  Handle CLVC_STRING.
3425         
3426         * config/alpha/alpha.h (alpha_tls_size): Delete.
3427         * config/alpha/alpha.c (alpha_tls_size, alpha_cpu_string)
3428         (alpha_tune_string, alpha_tp_string, alpha_fprm_string)
3429         (alpha_fptm_string, alpha_mlat_string): Delete.
3430         (alpha_handle_option): Don't set the above variables here.  Use the
3431         integer argument to check the validity of -mtls-size=.
3432         * config/alpha/alpha.opt (mcpu=, mtune=, mfp-rounding-mode=)
3433         (mfp-trap-mode=, mtrap-precision=, mmemory-latency=): Add Var()s.
3434         (mtls-size=): Likewise.  Convert to a UInteger and initialize the
3435         variable to 32.
3436
3437         * config/arc/arc.c (arc_cpu_string, arc_text_string)
3438         (arc_data_string, arc_rodata_string): Delete.
3439         (arc_handle_option): Don't set the above variables here.
3440         * config/arc/arc.opt (mcpu=, mtext=, mdata=, mrodata=): Add Var()s
3441         and initialize them.
3442
3443         * config/arm/arm.c (target_fpu_name, target_fpe_name)
3444         (target_float_abi_name, target_abi_name, structure_size_string)
3445         (arm_pic_register_string): Delete.
3446         (arm_handle_option): Don't set the above variables here, except
3447         in the handling of -mhard-float and -msoft-float.
3448         * config/arm/arm.opt (mabi=, mfloat-abi=, mfp=, mfpe=, mfpu=)
3449         (mpic-register=, mstructure-size-boundary=): Add Var()s.
3450
3451         * config/avr/avr.c (avr_init_stack, avr_mcu_name, TARGET_HANDLE_OPTION)
3452         (avr_handle_option): Delete.
3453         * config/avr/avr.opt (mmcu=, minit-stack=): Add Var()s and initialize
3454         them.
3455
3456         * config/bfin/bfin.c (bfin_library_id): Delete.
3457         (bfin_handle_option): Don't set it.
3458         * config/bfin/bfin.opt (mshared-library-id=): Add Var().
3459
3460         * config/c4x/c4x.h (c4x_rpts_cycles): Delete.
3461         * config/c4x/c4x.c (c4x_rpts_cycles): Delete.
3462         (c4x_handle_option): Don't set c4x_rpts_cycles here.
3463         * config/c4x/c4x.opt (mrpts=): Add Var().
3464
3465         * config/cris/aout.h (CRIS_SUBTARGET_HANDLE_OPTION): Don't set
3466         cris_elinux_stacksize_str here.
3467         * config/cris/aout.opt (melinux-stacksize=): Add Var().
3468         * config/cris/cris.h (cris_max_stackframe_str, cris_cpu_str)
3469         (cris_tune_str, cris_elinux_stacksize_str): Delete.
3470         * config/cris/cris.c (cris_max_stackframe_str, cris_cpu_str)
3471         (cris_tune_str, cris_elinux_stacksize_str): Delete.
3472         (cris_handle_option): Don't set the above variables here.
3473         * config/cris/cris.opt (mcpu=, march=, mtune=, mmax-stackframe=)
3474         (max-stackframe=): Add Var()s.
3475
3476         * config/i386/i386.h (ix86_tune_string, ix86_arch_string): Delete.
3477         * config/i386/i386.c (ix86_cmodel_string, ix86_asm_string)
3478         (ix86_tls_dialect_string, ix86_tune_string, ix86_arch_string)
3479         (ix86_fpmath_string, ix86_regparm_string, ix86_align_loops_string)
3480         (ix86_align_jumps_string, ix86_preferred_stack_boundary_string)
3481         (ix86_branch_cost_string, ix86_align_funcs_string): Delete.
3482         (ix86_handle_option): Don't set the above variables here.
3483         * config/i386/i386.opt (malign-functions=, malign-jumps=)
3484         (malign-loops=, march=, masm=, mbranch-cost=, mcmodel=, mfpmath=)
3485         (mpreferred-stack-boundary=, mregparm=, mtls-dialect=, mtune=): Add
3486         Var()s.
3487
3488         * config/ia64/ia64.h (ia64_tls_size): Delete.
3489         * config/ia64/ia64.c (ia64_tls_size): Delete.
3490         (ia64_handle_option): Treat -mtls-size= as a UInteger option,
3491         reading the integer argument from the "value" parameter.  Don't
3492         set ia64_tls_size here.
3493         * config/ia64/ia64.opt (mtls-size=): Turn into a UInteger option.
3494         Add Var() and Init().
3495
3496         * config/m32r/m32r.h (m32r_cache_flush_func): Delete.
3497         (m32r_cache_flush_trap): Delete.
3498         * config/m32r/m32r.c (m32r_cache_flush_func): Delete.
3499         (m32r_cache_flush_trap): Delete.
3500         (m32r_handle_option): Don't set the above variables when handling
3501         -mflush-func= and -mflush-trap=.
3502         * config/m32r/m32r.opt (-mflush-func=, -mflush-trap=): Add Var()s
3503         and Init()s.
3504
3505         * config/mips/mips.h (mips_cache_flush_func): Delete.
3506         * config/mips/mips.c (mips_arch_string, mips_tune_string)
3507         (mips_cache_flush_func): Delete.
3508         (mips_handle_option): Don't set the above variables when handling
3509         -march=, -mtune= and -mflush-func=.
3510         * config/mips/mips.opt (march=, mflush-func=, mtune=): Add Var()s.
3511
3512         * config/s390/s390.c (s390_arch_string): Delete.
3513         (s390_handle_option): Don't set it here.
3514         * config/s390/s390.opt (march=): Add Var().
3515
3516         * config/sparc/sparc.h (sparc_cmodel_string): Delete.
3517         * config/sparc/sparc.c (sparc_cmodel_string): Delete.
3518         (sparc_handle_option): Don't set it here.
3519         * config/sparc/sparc.opt (mcmodel=): Add Var().
3520
3521 2005-05-25  Roger Sayle  <roger@eyesopen.com>
3522
3523         * convert.c (convert_to_integer) <POINTER_TYPE>: Avoid recursive
3524         call to convert_to_integer by building the NOP_EXPR directly.
3525
3526 2005-05-25  Richard Sandiford  <rsandifo@redhat.com>
3527
3528         * config/rs6000/rs6000.opt (mprioritize-restricted-insns=): Fix typo.
3529
3530 2005-05-25  Daniel Berlin  <dberlin@dberlin.org>
3531             Jeff Law  <law@redhat.com>
3532
3533         * tree-cfg.c (verify_expr, case ADDR_EXPR): Verify invariant,
3534         constant and side_effects of the ADDR_EXPR are consistent.
3535
3536         * tree-nested.c (convert_local_reference): Set CURRENT_FUNCTION_DECL
3537         appropriately around calls to recompute_tree_invarant_for_addr_expr.
3538
3539 2005-05-25  Ulrich Weigand  <uweigand@de.ibm.com>
3540
3541         * config/s390/s390.c (GP_ARG_NUM_REG, FP_ARG_NUM_REG): New defines.
3542         (s390_function_arg, s390_gimplify_va_arg): Use them.
3543         (s390_register_info): Save only required subset of argument
3544         registers into save area for va_list.
3545         (s390_va_start): Initialize only required elements of va_list struct.
3546         (s390_build_builtin_va_list): Set va_list_[gf]pr_counter_field.
3547
3548 2005-05-25  Ulrich Weigand  <uweigand@de.ibm.com>
3549
3550         * reload1.c (verify_initial_elim_offsets): Return boolean status
3551         instead of aborting.
3552         (reload): Adapt verify_initial_elim_offsets call site.  Restart
3553         main loop if some initial elimination offsets changed.
3554
3555 2005-05-25  Adam Nemet  <anemet@lnxw.com>
3556
3557         * config/rs6000/lynx.h (CC1_SPEC): Use -maix-struct-return instead
3558         of -mno-svr4-struct-return.
3559
3560 2005-05-25  Daniel Berlin  <dberlin@dberlin.org>
3561
3562         Fix PR tree-optimization/21705
3563         
3564         * tree-ssa-pre.c (in_fre): New static variable.
3565         (create_value_expr_from): Recursively value number reference ops
3566         in argument lists.
3567         (can_value_number_call): Temporary restrict only exists for
3568         PRE, not FRE.
3569
3570 2005-05-25  Kazu Hirata  <kazu@cs.umass.edu>
3571
3572         * tree-into-ssa.c (rewrite_into_ssa, update_ssa): Replace
3573         sizeof (bitmap *) with sizeof (bitmap).
3574
3575 2005-05-25  Daniel Berlin <dberlin@dberlin.org>
3576
3577         * lambda-code.c (perfect_nestify): Call update_stmt on the exit
3578         condition.
3579
3580 2005-05-25  Adrian Straetling  <straetling@de.ibm.com>
3581
3582         * config/s390/s390.c (TARGET_INSN_VALID_WITHIN_DOLOOP): Set to
3583         hook_bool_rtx_true.
3584
3585 2005-05-25  Jan Hubicka  <jh@suse.cz>
3586
3587         * Makefile.in (ipa-inline.o): Add COEVERAGE_H dependency.
3588         * cgraph.c (cgraph_create_node): Reset estimated_growth.
3589         * cgraph.h (cgraph_global_info): Add estimated_growth.
3590         * ipa-inline.c: Include coverage.h
3591         (max_insns, max_count): New static variables.
3592         (cgraph_estimate_size_after_inlining): Cache the result.
3593         (cgraph_estimate_growth):
3594         * passes.c (rest_of_clean_state): Kill coverage_end_function.
3595         * timevar.def (TV_INLINE_HEURISTICS): New timevar.
3596         * tree-optimize.c (init_tree_optimization_passes): Move profiling before
3597         inlining.
3598         (ipa_passes): Initialize bitmaps.
3599
3600 2005-05-25  Adrian Straetling  <straetling@de.ibm.com>
3601
3602         * loop-doloop.c: Include "target.h". 
3603           (doloop_valid_p): Move tests to function in targhooks.c.
3604         * target.h (struct gcc_target): New target hook
3605           "insn_valid_within_doloop".
3606         * target-def.h: Define default value for "insn_valid_within_doloop".
3607           (TARGET_INITIALIZER): Insert new target hook into initializer.
3608         * targhooks.c (default_insn_valid_within_doloop): New function.
3609         * targhooks.h (default_insn_valid_within_doloop): Declare.
3610         * hooks.c (hook_bool_rtx_true): New function.
3611         * hooks.h (hook_bool_rtx_true): Declare.
3612         * doc/tm.texi: Add documentation for new target hook.
3613
3614 2005-05-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
3615
3616         PR target/21412
3617         * config/sparc/sparc.h (SPARC_SYMBOL_REF_TLS_P): New macro
3618         * config/sparc/sparc-protos.h (tls_symbolic_operand): Delete.
3619         (sparc_tls_referenced_p): New prototype.
3620         * config/sparc/sparc.c (tls_symbolic_operand): Delete.
3621         (sparc_expand_move): Look for TLS addresses with constant offsets.
3622         (legitimate_constant_p): Use SPARC_SYMBOL_REF_TLS_P instead of
3623         tls_symbolic_operand.
3624         (legitimate_pic_operand_p): Likewise.
3625         (legitimate_address_p): Likewise.
3626         (legitimize_address): Likewise.
3627         (sparc_tls_symbol_ref_1): New function.
3628         (sparc_tls_referenced_p): New function.
3629         * config/sparc/predicates.md (tgd_symbolic_operand): Use
3630         SYMBOL_REF_TLS_MODEL instead of tls_symbolic_operand.
3631         (tld_symbolic_operand): Likewise.
3632         (tie_symbolic_operand): Likewise.
3633         (tle_symbolic_operand): Likewise.
3634
3635 2005-05-24  DJ Delorie  <dj@redhat.com>
3636         
3637         * common.opt (-Wattributes): New.  Default true.
3638         * doc/invoke.texi (-Wno-attributes): Document.
3639         
3640         * attribs.c (decl_attributes): Move warning control from if() to
3641         warning(OPT_*).
3642         * c-common.c (handle_packed_attribute): Likewise.
3643         (handle_nocommon_attribute): Likewise.
3644         (handle_common_attribute): Likewise.
3645         (handle_noreturn_attribute): Likewise.
3646         (handle_noinline_attribute): Likewise.
3647         (handle_always_inline_attribute): Likewise.
3648         (handle_used_attribute): Likewise.
3649         (handle_unused_attribute): Likewise.
3650         (handle_const_attribute): Likewise.
3651         (handle_transparent_union_attribute): Likewise.
3652         (handle_constructor_attribute): Likewise.
3653         (handle_destructor_attribute): Likewise.
3654         (handle_mode_attribute): Likewise.
3655         (handle_alias_attribute): Likewise.
3656         (handle_visibility_attribute): Likewise.
3657         (handle_tls_model_attribute): Likewise.
3658         (handle_malloc_attribute): Likewise.
3659         (handle_returns_twice_attribute): Likewise.
3660         (handle_pure_attribute): Likewise.
3661         (handle_deprecated_attribute): Likewise.
3662         (handle_vector_size_attribute): Likewise.
3663         (handle_nothrow_attribute): Likewise.
3664         (handle_cleanup_attribute): Likewise.
3665         (handle_warn_unused_result_attribute): Likewise.
3666         (handle_sentinel_attribute): Likewise.
3667         * c-decl.c (diagnose_mismatched_decls): Likewise.
3668         (start_decl): Likewise.
3669         (grokdeclarator): Likewise.
3670         (start_function): Likewise.
3671         * c-format.c (check_function_format): Likewise.
3672         * stor-layout.c (place_field): Likewise.
3673         (finalize_record_size): Likewise.
3674         * tree.c (handle_dll_attribute)): Likewise.
3675         * varasm.c (default_assemble_visibility): Likewise.
3676         * config/darwin.c (darwin_handle_weak_import_attribute): Likewise.
3677         (darwin_assemble_visibility): Likewise.
3678         * config/arc/arc.c (arc_handle_interrupt_attribute): Likewise.
3679         * config/arm/arm.c (arm_handle_fndecl_attribute): Likewise.
3680         (arm_handle_isr_attribute): Likewise.
3681         * config/avr/avr.c (avr_handle_progmem_attribute): Likewise.
3682         (avr_handle_fndecl_attribute): Likewise.
3683         * config/bfin/bfin.c (handle_int_attribute): Likewise.
3684         * config/c4x/c4x.c (c4x_handle_fntype_attribute): Likewise.
3685         * config/h8300/h8300.c (h8300_handle_fndecl_attribute): Likewise.
3686         (h8300_handle_eightbit_data_attribute): Likewise.
3687         (h8300_handle_tiny_data_attribute): Likewise.
3688         * config/i386/i386.c (ix86_handle_cdecl_attribute): Likewise.
3689         (ix86_handle_regparm_attribute): Likewise.
3690         (ix86_handle_struct_attribute): Likewise.
3691         * config/i386/winnt.c (ix86_handle_shared_attribute): Likewise.
3692         (i386_pe_encode_section_info): Likewise.
3693         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3694         * config/ip2k/ip2k.c (ip2k_handle_progmem_attribute): Likewise.
3695         (ip2k_handle_fndecl_attribute): Likewise.
3696         * config/m32r/m32r.c (m32r_handle_model_attribute): Likewise.
3697         * config/m68hc11/m68hc11 (m68hc11_handle_page0_attribute): Likewise.
3698         (m68hc11_handle_fntype_attribute): Likewise.
3699         (m68hc11_encode_section_info): Likewise.
3700         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3701         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3702         * config/ns32k/ns32k.c (ns32k_handle_fntype_attribute): Likewise.
3703         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute): Likewise.
3704         * config/sh/sh.c (sh_handle_interrupt_handler_attribute): Likewise.
3705         (sh_handle_sp_switch_attribute): Likewise.
3706         (sh_handle_trap_exit_attribute): Likewise.
3707         * config/sh/symbian.c (sh_symbian_dllimport_p): Likewise.
3708         (sh_symbian_handle_dll_attribute): Likewise.
3709         * config/stormy16/stormy16.c (xstormy16_handle_interrupt_attribute): Likewise.
3710         (xstormy16_handle_below100_attribute): Likewise.
3711         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3712
3713         * c-common.c (unsigned_conversion_warning): Move warning control
3714         from if() to warning(OPT_*).
3715         (c_common_truthvalue_conversion): Likewise.
3716         (c_do_switch_warnings): Likewise.
3717         * c-decl.c (diagnose_mismatched_decls): Likewise.
3718         (diagnose_mismatched_decls): Likewise.
3719         (define_label): Likewise.
3720         (grokdeclarator): Likewise.
3721         * c-format.c (check_format_info): Likewise.
3722         * c-lex.c (interpret_integer): Likwise.
3723         (lex_string): Likewise.
3724         * c-opts.c (c_common_post_options): Likewise.
3725         * c-parser.c (c_parser_unary_expression): Likewise.
3726         * c-pragma.c (handle_pragma_redefine_extname): Likewise.
3727         (handle_pragma_extern_prefix): Likewise.
3728         * c-typeck.c (build_binary_op): Likewise.
3729         * gcse.c (is_too_expensive): Likewise.
3730         * opts.c (decode_options): Likewise.
3731         * stor-layout.c (place_field): Likewise.
3732         * tree-cfg.c (remove_bb): Likewise.
3733
3734         * c.opt (-Wreturn-type): Add Var(warn_return_type).
3735         * flags.h (warn_return_type): Remove.
3736         * toplev.c (warn_return_type): Likewise.
3737
3738 2005-05-24  Kelley Cook  <kcook@gcc.gnu.org>
3739
3740         * configure.ac: Don't use gcc_AC_C_LONG_LONG.  Check for
3741         existence of long long and __int64 before determining their size.
3742         * aclocal.m4: Delete gcc_AC_C_LONG_LONG.
3743         * configure, config.h.in:  Regenerate.
3744
3745 2005-05-24  Kelley Cook  <kcook@gcc.gnu.org>
3746
3747         * configure: Regenerate.
3748
3749 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
3750
3751         * c-common.h (objc_comptypes): Remove prototype.
3752         (objc_compare_types): New prototype.
3753         (objc_volatilized_decl): Likewise.
3754         (objc_type_quals_match): Likewise.
3755         * c-decl.c (objc_mark_locals_volatile): Streamline by calling
3756         objc_volatilize_decl().
3757         * c-typeck.c (comp_target_types): Remove third parameter; do
3758         not call objc_comptypes().
3759         (comptypes): Remove calls to objc_comptypes().
3760         (build_function_call): Extend compatible prototype check to ObjC.
3761         (build_conditional_expr): Adjust call to comp_target_types().
3762         (convert_for_assignment): Call objc_compare_types() instead of
3763         objc_comptypes(); adjust calls to comp_target_types(); call
3764         objc_type_quals_match() before issuing qualifier mismatch
3765         warnings.
3766         (build_binary_op): Call objc_compare_types() before issuing
3767         pointer mismatch warnings; adjust calls to
3768         comp_target_types().
3769         * stub-objc.c (objc_comptypes): Remove stub.
3770         (objc_compare_types): New stub.
3771         (objc_volatilized_decl): Likewise.
3772         (objc_type_quals_match): Likewise.
3773
3774 2005-05-24  Paolo Carlini  <pcarlini@suse.de>
3775
3776         * config/ia64/ia64intrin.h: Define nothing for C++:
3777         overloaded builtins have been ported to C++.
3778
3779 2005-05-24  Jeff Law  <law@redhat.com>
3780
3781         * tree-nested.c (build_addr): New "context" argument.  Temporarily
3782         set current_function_decl around the call to build the ADDR_EXPR.
3783         (get_static_chain): Pass proper context to build_addr.
3784         (convert_nl_goto_reference): Likewise.
3785         (convert_tramp_reference): Likewise.
3786         (final_nesting_tree_1): Likewise.
3787         * tree-profile.c (tree_gen_interval_profiler): Likewise.
3788         (tree_gen_pow2_profiler): Likewise.
3789         (tree_gen_one_value_profiler): Likewise.
3790         * tree-ssa-loop-ivopts.c (build_addr_strip_iref): Likewise.
3791         * tree.h (build_addr): Update prototype.
3792
3793 2005-05-24  Kazu Hirata  <kazu@cs.umass.edu>
3794
3795         * tree-flow.h (bb_ann_d): Remove has_escape_site.
3796         * tree-ssa-alias.c (compute_points_to_addr_escape): Don't
3797         write to has_escape_site.
3798
3799 2005-05-24  Jeff Law  <law@redhat.com>
3800
3801         * Makefile.in (tree-cfg.o): Depend on tree-ssa-propagate.h.
3802         * tree-cfg.c: Include tree-ssa-propagate.h.
3803         (replace_uses_by): Call recompute_tree_invarant_for_addr_expr as
3804         needed.
3805
3806 2005-05-24  Nick Clifton  <nickc@redhat.com>
3807
3808         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
3809         __NO_FPRS__ when 'f' class registers will not be available. 
3810
3811 2005-05-24  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
3812
3813         * config/m32r/m32r.c (m32r_expand_block_move):  Return 0 if
3814         nothing was done.
3815         * config/m32r/m32r.md (movmemsi):  If m32r_expand_block_move did
3816         nothing then FAIL.
3817         * config/m32r/m32r/m32r-protos.h  (m32r_expand_block_move): Update
3818         prototype.
3819
3820 2005-05-23  Jeff Law  <law@redhat.com>
3821
3822         * tree-ssa-dom.c (cprop_into_stmt): Do not call
3823         recompute_tree_invariant_for_addr_expr here.
3824         (optimize_stmt): Call it here instead and do so if anything
3825         at all has changed in the statement and the RHS is an ADDR_EXPR.
3826         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): If
3827         needed, call recompute_tree_invariant_for_addr_expr.
3828         * tree-ssa-propagate.c (substitute_and_fold): Call
3829         recompute_tree_invariant_for_addr_expr as needed.
3830
3831 2005-05-23  Andreas Krebbel  <krebbel1@de.ibm.com>
3832
3833         * config/s390/s390.c (s390_optimize_prologue): Don't replace an insn
3834         saving less registers than the replacement.
3835
3836 2005-05-23  Jan Hubicka  <jh@suse.cz>
3837
3838         * tree-flow.h (stmt_ann_d): Kill GTY ((skip)) mark on BB.
3839
3840 2005-05-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
3841
3842         * config/sparc/sparc-protos.h (sparc_expand_move): New prototype.
3843         * config/sparc/sparc.c (sparc_expand_move): New function.
3844         (sparc_emit_set_const64): Rewrite assert condition on entry.
3845         (legitimate_constant_p) <CONST_VECTOR>: New case.
3846         (legitimize_pic_address): Use TARGET_ARCH64 to select the mode.
3847         * config/sparc/sparc.md (movqi, movhi, movsi, movdi, movV32,
3848         movV64, movtf): Use nonimmediate_operand for the first operand.
3849         Rewrite.  Only invoke sparc_expand_move.
3850         * config/sparc/predicates.md (input_operand): Reorder tests.
3851
3852 2005-05-23  Jan Beulich  <jbeulich@novell.com>
3853
3854         * gthr-posix.h (__gthread_recursive_mutex_init_function): Add
3855         missing return statement.
3856
3857 2005-05-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
3858
3859         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Use
3860         emit_move_insn for moves to TFmode stack slots.
3861
3862 2005-05-21  Richard Guenther  <rguenth@gcc.gnu.org>
3863
3864         * tree-stdarg.c (execute_optimize_stdarg): Handle references
3865         to va_list of the form &va[0].
3866
3867 2005-05-20  Jan Hubicka  <jh@suse.cz>
3868
3869         * Makefile.in (insn-emit.o): Add basic-block.h dependency.
3870         * genemit.c (main): Make insn-emit to include basic-block.h too.
3871
3872 2005-05-20  Jan Hubicka  <jh@suse.cz>
3873
3874         * cgraphunit.c (cgraph_expand_function): Force function being lowered.
3875
3876 2005-05-19  Richard Henderson  <rth@redhat.com>
3877
3878         * config/alpha/alpha.c (emit_unlikely_jump, emit_load_locked,
3879         emit_store_conditional): Split out from ...
3880         (alpha_split_atomic_op): ... here.
3881         (alpha_split_compare_and_swap): New; extract from .md file.
3882         (alpha_split_lock_test_and_set): Likewise.
3883         * config/alpha/alpha-protos.h: Update.
3884         * config/alpha/sync.md (sync_compare_and_swap<I48MODE>): Move
3885         split code into alpha.c.
3886         (sync_lock_test_and_set<I48MODE>): Likewise.
3887
3888 2005-05-19  Richard Henderson  <rth@redhat.com>
3889
3890         * unwind.h, unwind-pe.h: Revert gcc_unreachable change of 05-17.
3891
3892 2005-05-19  Richard Henderson  <rth@redhat.com>
3893
3894         * config/i386/sse.md (mulv4si3): Use all register inputs.
3895         (mulv2di3): Likewise.
3896
3897 2005-05-19  Richard Guenther  <rguenth@gcc.gnu.org>
3898
3899         * tree-ssa-loop-ivopts.c (determine_base_object): Use
3900         build_fold_addr_expr to generate trees of correct type.
3901         Use fold_buildN if possible.
3902
3903 2005-05-19  Jan Hubicka  <jh@suse.cz>
3904
3905         * basic-block.h (REG_BR_PROB_BASE): Define.
3906         * cgraph.c (cgraph_create_edge): Initialize loop_nest and count.
3907         (dump_cgraph_node): Dump count.
3908         (cgraph_clone_edge): Rescale counts.
3909         (cgraph_clone_node): Likewise.
3910         * cgraph.h: Include basic-block.h
3911         (cgraph_node): Add count.
3912         (cgraph_edge): Add count and loop_nest.
3913         (cgraph_node, cgraph_edge, cgraph_clone_edge, cgraph_clone_node):
3914         Update prototypes.
3915         * cgraphunit.c: Kill now redundant inlining comment.
3916         (cgraph_create_edges): Make static, maintain current basic block;
3917         fix pasto.
3918         (record_call_1): Fill in new fields.
3919         * ipa-inline.c (cgraph_clone_inlined_nodes): Update call of
3920         cgraph_clone_node.
3921         (cgraph_decide_recursive_inlining): Likewise.
3922         * rtl.h (REG_BR_PROB_BASE): Kill.
3923         * tree-inline.c (copy_body_r): Update call of cgraph_clone_edge.
3924         (expand_call_inline): Update call of cgraph_create_edge.
3925         * tree-optimize.c (tree_rest_of_compilation): Likewise.
3926
3927 2005-05-19  Nick Clifton  <nickc@redhat.com>
3928
3929         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use the
3930         new rs6000_explicit_options structure.
3931
3932 2005-05-19  Richard Henderson  <rth@redhat.com>
3933
3934         PR target/21390
3935         * config/alpha/alpha.c (alpha_emit_conditional_branch): Move 
3936         TFmode code swapping ...
3937         (alpha_emit_xfloating_compare): ... here.
3938         (alpha_emit_setcc): Update to match.
3939         (alpha_lookup_xfloating_lib_func): Assert TARGET_HAS_XFLOATING_LIBS.
3940
3941 2005-05-19  Richard Henderson  <rth@redhat.com>
3942
3943         PR target/21657
3944         * config/ia64/ia64.c (ia64_expand_tls_address): Remove extra
3945         memory indirection in local-dynamic case.
3946
3947 2005-05-18  Jie Zhang  <jie.zhang@analog.com>
3948             Bernd Schmidt  <bernd.schmidt@analog.com>
3949
3950         * config/bfin/bfin.c (branch_dest): Add comment why it's
3951         necessary.
3952         * config/bfin/bfin.md (attr "length" default): Change the offset of
3953         forward conditional branch of length 4 from 4096 to 4092.
3954
3955 2005-05-19  Jan Beulich  <jbeulich@novell.com>
3956
3957         * unwind-compat.c: Include tconfig.h and tsystem.h.
3958         * unwind-dw2-fde-compat.c: Likewise.
3959
3960 2005-05-18  Richard Henderson  <rth@redhat.com>
3961
3962         PR 21541
3963         * ifcvt.c (noce_process_if_block): Avoid conversion when the
3964         memory destination is readonly.
3965
3966 2005-05-18  Richard Henderson  <rth@redhat.com>
3967
3968         PR 21541
3969         * tree-ssa-operands.c (opf_non_specific): New.
3970         (get_asm_expr_operands): Set it.
3971         (add_call_clobber_ops, add_call_read_ops): Likewise.
3972         (add_stmt_operand): Test it instead of opf_kill_def when
3973         considering unmodifiable variables.
3974
3975         * tree-ssa-operands.c (get_expr_operands): Fix exact test.
3976
3977 2005-05-19  Kazu Hirata  <kazu@cs.umass.edu>
3978
3979         * cfgexpand.c, tree-cfg.c, tree-inline.c, tree-optimize.c,
3980         tree-ssa-forwprop.c: Fix comment typos.
3981         * doc/invoke.texi: Fix a typo.