OSDN Git Service

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