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