OSDN Git Service

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