1 2007-07-11 Eric Botcazou <ebotcazou@adacore.com>
3 PR tree-optimization/32713
4 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
6 2007-07-11 Paolo Carlini <pcarlini@suse.de>
9 * c-opts.c (c_common_post_options): Do not change flag_complex_method
10 conditional to flag_isoc99.
11 (c_common_init_options): Do it here, unconditionally.
13 2007-07-11 Eric Botcazou <ebotcazou@adacore.com>
15 PR tree-optimization/32589
16 * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
17 * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
18 * tree-ssa-propagate.c (valid_gimple_expression_p): New
19 predicate, extracted from...
20 (set_rhs): ...here. Call it for the expression on entry.
21 * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
22 * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
23 (simplify_binary_expression): Use valid_gimple_expression_p
24 to validate the simplification.
25 * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
27 2007-07-11 Danny Smith <dannysmith@users.sourceforge.net>
29 * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
30 DWARF2_DEBUG on 32 bit target too.
31 (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition.
33 2007-07-11 Nick Clifton <nickc@redhat.com>
35 * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
36 version for 64-bit hosts.
38 2007-07-10 David Daney <ddaney@avtrex.com>
40 * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
42 (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of library
44 * config/mips/mips.c (mips_expand_synci_loop): New function.
45 * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
49 (clear_cache): New expand.
54 * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
56 * testsuite/gcc.target/mips/clear-cache-1.c: New test.
57 * testsuite/gcc.target/mips/clear-cache-2.c: New test.
59 2007-07-10 Ian Lance Taylor <iant@google.com>
61 * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
64 2007-07-10 David Daney <ddaney@avtrex.com>
66 * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
67 * builtins.c (expand_builtin___clear_cache): New function.
68 (expand_builtin): Call expand_builtin___clear_cache for
69 BUILT_IN_CLEAR_CACHE case.
70 * doc/extend.texi (__builtin___clear_cache): Document new builtin.
71 * doc/md.texi (clear_cache): Document new instruction pattern.
72 * testsuite/gcc.dg/builtins-64.c: New test.
74 2007-07-11 Hans-Peter Nilsson <hp@axis.com>
76 * config/cris/cris.md ("movsi"): Fix typo in last change.
78 2007-07-09 Geoffrey Keating <geoffk@apple.com>
81 * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
83 (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
84 * varasm.c (assemble_start_function): Honor DECL_ALIGN
85 for FUNCTION_DECLs. Don't use align_functions_log if
87 * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
88 even for FUNCTION_DECLs.
89 * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
91 * tree.h (DECL_ALIGN): Update for new location of 'align'.
92 (DECL_FUNCTION_CODE): Update for new location and name of
94 (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
95 (struct tree_decl_common): Move 'align' and 'off_align' out
96 of union, ensure they're still on a 32-bit boundary. Remove
97 other fields in union 'u1'.
98 (struct tree_function_decl): Add field 'function_code' replacing
99 'u1.f' in tree_decl_common.
100 * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
101 * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
102 (Variable Attributes): Cross-reference 'aligned' attribute
103 to Function Attributes.
104 * flags.h (force_align_functions_log): Delete.
105 * toplev.c (force_align_functions_log): Delete.
107 2007-07-10 Uros Bizjak <ubizjak@gmail.com>
110 * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
111 (*vec_concatv2di_rex): New insn pattern.
113 2007-07-10 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
116 * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
118 2007-07-10 Ian Lance Taylor <iant@google.com>
120 Replace no_new_pseudos in backends.
121 * rtl.h (can_create_pseudo_p): Define.
122 * config/darwin.c (machopic_indirect_data_reference): Use
123 can_create_pseudo_p () instead of no_new_pseudos.
124 (machopic_indirect_data_reference): Likewise.
125 (machopic_legitimize_pic_address): Likewise.
126 * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
127 (alpha_emit_set_const_1): Likewise.
128 (alpha_emit_set_const): Likewise.
129 (alpha_emit_conditional_move): Likewise.
130 (alpha_split_conditional_move): Likewise.
131 * config/alpha/alpha.md (various splitters): Likewise.
133 * config/arm/arm.c (legitimize_pic_address): Likewise.
134 (arm_load_pic_register): Likewise.
135 * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
136 (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
137 * config/bfin/bfin.c (legitimize_pic_address): Likewise.
138 * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
139 * config/cris/cris.md (movsi): Likewise.
140 * config/frv/frv.md (symGOT2reg_hilo): Likewise.
141 (symGOTOFF2reg_hilo): Likewise.
142 (symGPREL2reg, symGPREL2reg_hilo): Likewise.
143 * config/h8300/h8300.md (insv, extzv): Likewise.
144 * config/i386/i386.c (ix86_expand_move): Likewise.
145 (ix86_expand_vector_move): Likewise.
146 (ix86_prepare_fp_compare_args): Likewise.
147 (ix86_expand_carry_flag_compare): Likewise.
148 * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
149 (tls_dynamic_gnu2_combine_32): Likewise.
150 (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
151 * config/ia64/ia64.c (ia64_expand_move): Likewise.
152 (ia64_expand_movxf_movrf): Likewise.
153 * config/m32c/m32c.c (m32c_prepare_move): Likewise.
154 (m32c_split_move): Likewise.
155 (m32c_expand_insv): Likewise.
156 * config/m68k/m68k.md (movsi): Likewise.
157 * config/mips/mips.c (mips_force_temporary): Likewise.
158 (mips_split_symbol): Likewise.
159 (mips_move_integer): Likewise.
160 (mips_legitimize_const_move): Likewise.
161 * config/mn10300/mn10300.md (movsi): Likewise.
162 * config/pa/pa.c (emit_move_sequence): Likewise.
163 * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
164 (rs6000_got_register): Likewise.
165 (create_TOC_reference): Likewise.
166 (rs6000_machopic_legitimize_pic_address): Likewise.
167 * config/rs6000/rs6000.md (add<mode>3): Likewise.
168 (various splitters): Likewise.
169 (iorsi3, xorsi3, iordi3, xordi3): Likewise.
170 (movsi_got): Likewise.
171 * config/s390/s390.c (emit_symbolic_move): Likewise.
172 * config/s390/s390.md (movhi, movqi): Likewise.
173 (load_multiple, store_multiple): Likewise.
174 * config/score/score.c (score_force_temporary): Likewise.
175 * config/sh/sh.c (prepare_move_operands): Likewise.
176 (prepare_cbranch_operands): Likewise.
177 (emit_fpu_switch): Likewise.
178 (fpscr_set_from_mem): Likewise.
179 * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
180 (adddi3, subsi3): Likewise.
181 (various splitters): Likewise.
182 (divsi_inv_fp_combine): Likewise.
183 (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
184 (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
186 * config/sh/predicates.md (xor_operand): Likewise.
187 * config/sparc/sparc.c (legitimize_tls_address): Likewise.
188 * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
189 (movdi_pic_label_ref): Likewise.
190 * config/spu/spu.c (spu_split_immediate): Likewise.
191 * config/alpha/alpha.md (various splitters): Remove test
192 !no_new_pseudos || reload_completed.
193 * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
195 * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
196 * config/mips/mips.c (mips_output_mi_thunk): Likewise.
197 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
198 * config/score/score.c (th_output_mi_thunk): Likewise.
199 * config/sh/sh.c (sh_output_mi_thunk): Likewise.
200 * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
202 2007-07-10 Kaz Kojima <kkojima@gcc.gnu.org>
204 PR rtl-optimization/32664
205 * mode-switching.c (create_pre_exit): Skip barrier insns.
207 2007-07-10 Zdenek Dvorak <dvorakz@suse.cz>
209 * tree-scalar-evolution.c (scev_const_prop): Add arguments to
210 force_gimple_operand_bsi.
211 * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
212 rewrite_use_compare): Ditto.
213 * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
215 * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
216 * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
217 * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
218 * tree-profile.c (prepare_instrumented_value,
219 tree_gen_interval_profiler, tree_gen_pow2_profiler,
220 tree_gen_one_value_profiler, tree_gen_ic_profiler,
221 tree_gen_ic_func_profiler, tree_gen_average_profiler,
222 tree_gen_ior_profiler): Ditto.
223 * tree-ssa-reassoc.c (negate_value): Ditto.
224 * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
225 Use force_gimple_operand_bsi.
226 * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
227 * tree-if-conv.c (add_to_dst_predicate_list,
228 find_phi_replacement_condition): Ditto.
229 * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
230 Call mark_symbols_for_renaming for new statements.
231 * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
233 2007-07-10 Zdenek Dvorak <dvorakz@suse.cz>
235 * cfghooks.c (remove_edge): New function.
236 (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
238 * cfghooks.h (remove_edge): Declare.
239 * cfg.c (remove_edge): Renamed to remove_edge_raw.
240 * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
242 2007-07-09 Wolfgang Gellerich <gellerich@de.ibm.com>
244 * optabs.h: Added declaration for signbit_optab.
245 * optabs.c: (init_optabs): Added initialization for signbit_optab.
246 * genoptinit.c (optabs): Added entry for signbit insns.
247 * builtins.c (expand_builtin_signbit): Added code to use a signbit
249 * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.
250 * config/s390/s390.md (signbit<mode>2): New expander.
252 2007-07-09 Richard Guenther <rguenther@suse.de>
255 * fold-const.c (fold_plusminus_mult_expr): Move constant
256 arguments second to allow decomposing.
258 2007-07-09 Alexandre Oliva <aoliva@oliva.athome.lsd.ic.unicamp.br>
261 2007-07-06 Alexandre Oliva <aoliva@redhat.com>
263 * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
264 Disregard DECL_FROM_INLINE.
266 2007-07-09 Uros Bizjak <ubizjak@gmail.com>
269 * doc/invoke.texi: Add ftree-reassoc flag.
270 * common.opt (ftree-reassoc): New flag.
271 * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
272 (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
274 2007-07-09 Uros Bizjak <ubizjak@gmail.com>
276 PR tree-optimization/32681
277 * tree-if-conv.c (find_phi_replacement_condition): Use the condition
278 saved in second_edge->aux when first_bb is a loop header.
280 2007-07-09 Jan HUbicka <jh@suse.cz>
282 * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
284 2007-07-09 Richard Guenther <rguenther@suse.de>
286 * c-decl.c (start_function): Do not promote return type.
288 2007-07-08 Daniel Franke <franke.daniel@gmail.com>
290 * function.c (do_warn_unused_parameter): Do not warn if
291 TREE_NO_WARNING is set.
293 2007-07-08 Andreas Schwab <schwab@suse.de>
295 * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
297 2007-07-08 Sandra Loosemore <sandra@codesourcery.com>
300 2007-07-06 Sandra Loosemore <sandra@codesourcery.com>
302 * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
303 apply to assembly language, too.
304 * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
306 2007-07-07 Daniel Berlin <dberlin@dberlin.org>
308 Revert (note the sccvn portions are *not* reverted)
309 2007-07-06 Daniel Berlin <dberlin@dberlin.org>
311 Fix PR tree-optimization/23488
313 * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
315 * tree-flow-inline.h (get_value_handle): Ditto.
316 * tree-ssa-pre.c (decl_vh_map): New.
317 (decl_node_pool): New.
318 (can_value_number_operation): Support DECL_P.
319 (can_PRE_operation): Ditto.
320 (create_expression_by_pieces): Ditto.
321 (find_existing_value_expr): Modify to differnetiate between
322 addressing and top level.
323 (create_value_handle_for_expr): Handle DECL's.
324 (poolify_tree): Ditto.
325 (make_values_for_phi): Don't insert into PHI_GEN during FRE.
326 (make_values_for_stmt): Handle DECL's properly.
327 (init_pre): Reorg to not init useless things during FRE.
329 * tree-flow.h: Include pointer-set.h.
330 (decl_vh_map): Declare.
331 * Makefile.in (TREE_FLOW_H): Add pointer-set.h
333 2007-07-07 Eric Weddington <eweddington@cso.atmel.com>
335 * config/avr/constraints.md (define_memory_constraint "Q"): Fix
336 the constraint description.
337 * doc/md.texi: Update documentation of AVR constraints.
339 2007-07-07 Kazu Hirata <kazu@codesourcery.com>
341 * auto-inc-dec.c, config/arm/arm.c,
342 config/m32r/constraints.md, config/mips/mips.md,
343 config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
344 df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
345 tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
346 typos. Follow spelling conventions.
347 * doc/invoke.texi, doc/rtl.texi: Fix typos.
349 * cfgrtl.c (delete_insn_chain_and_edges): Remove.
350 * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
352 * tree-ssa-operands.c (realloc_vop, realloc_vdef,
353 realloc_vuse): Remove.
354 * tree-ssa-operands.h: Remove the prototype for realloc_vdef
357 2007-07-06 Daniel Berlin <dberlin@dberlin.org>
359 Fix PR tree-optimization/23488
361 * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
362 (try_to_simplify): Ditto.
364 * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
366 * tree-flow-inline.h (get_value_handle): Ditto.
367 * tree-ssa-pre.c (decl_vh_map): New.
368 (decl_node_pool): New.
369 (can_value_number_operation): Support DECL_P.
370 (can_PRE_operation): Ditto.
371 (create_expression_by_pieces): Ditto.
372 (find_existing_value_expr): Modify to differnetiate between
373 addressing and top level.
374 (create_value_handle_for_expr): Handle DECL's.
375 (poolify_tree): Ditto.
376 (make_values_for_phi): Don't insert into PHI_GEN during FRE.
377 (make_values_for_stmt): Handle DECL's properly.
378 (init_pre): Reorg to not init useless things during FRE.
380 * tree-flow.h: Include pointer-set.h.
381 (decl_vh_map): Declare.
382 * Makefile.in (TREE_FLOW_H): Add pointer-set.h
384 2007-07-06 Sandra Loosemore <sandra@codesourcery.com>
386 * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
387 apply to assembly language, too.
388 * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
390 2007-07-06 Ian Lance Taylor <iant@google.com>
391 Zack Weinberg <zackw@panix.com>
394 * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
396 2007-07-06 Richard Sandiford <richard@codesourcery.com>
398 * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
399 (prefetch): Likewise if "pref" would be used.
401 2007-07-06 Josh Conner <jconner@apple.com>
405 * calls.c (store_one_arg): Handle arguments which are partially
406 on the stack when detecting argument overlap.
408 2007-07-06 Bernd Schmidt <bernd.schmidt@analog.com>
410 * reload1.c (choose_reload_regs): Set reload_spill_index for regs
411 chosen during find_reloads.
413 2007-07-06 Richard Guenther <rguenther@suse.de>
415 * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
416 TYPE_ARG_TYPES for verification of argument types. Use
417 DECL_ARG_TYPE instead of the PARM_DECL type. Take excess
418 parameters as variable arguments.
420 2007-07-06 Andreas Krebbel <krebbel1@de.ibm.com>
422 * libgcc2.h (word_type): Type definition removed.
423 (cmp_return_type, shift_count_type): Type definitions added.
424 (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
425 replaced with shift_count_type.
426 (__cmpdi2, __ucmpdi2): word_type of return type replaced with
428 * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
429 changed from word_type to Wtype.
430 (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
431 replaced with shift_count_type.
432 (__cmpdi2, __ucmpdi2): word_type of return type replaced with
434 * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
435 and libgcc_shift_count attribute added.
436 * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
437 TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
438 (TARGET_INITIALIZER): New target hooks added.
439 * targhooks.c (default_libgcc_cmp_return_mode,
440 default_libgcc_shift_count_mode): Default implementations for the new
442 * targhooks.h (default_libgcc_cmp_return_mode,
443 default_libgcc_shift_count_mode): Function prototypes added.
444 * target.h (struct gcc_target): Fields for the new target hooks added.
445 * optabs.c (expand_binop): Use shift_count_mode when expanding shift
447 (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
450 * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
451 TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
453 * config/s390/s390.c (s390_libgcc_cmp_return_mode,
454 s390_libgcc_shift_count_mode): Functions added.
455 (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
456 Target hooks defined.
458 2007-07-06 Richard Sandiford <richard@codesourcery.com>
460 * config/mips/mips.c (compute_frame_size): Restore the original
461 gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
462 fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
463 Document why the difference is needed.
465 2007-07-06 Richard Guenther <rguenther@suse.de>
467 * c-common.c (boolean_increment): Use correctly typed
470 2007-07-06 Richard Sandiford <richard@codesourcery.com>
472 * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
473 the topmost argument register is not also included in the save mask.
474 (mips16e_collect_argument_save_p): Take a pointer to the argument
475 register, rather than a pointer to the number of arguments.
476 (mips16e_collect_argument_saves): Only include argument saves
477 that aren't in the register mask.
479 2007-07-06 Uros Bizjak <ubizjak@gmail.com>
481 PR rtl-optimization/32450
482 * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
483 to ensure that instructions are not moved into the prologue when
484 profiling is on. Remove unused prologue_end variable.
485 (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
486 as a scheduling barrier.
488 2007-07-06 Alexandre Oliva <aoliva@redhat.com>
491 * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
492 Disregard DECL_FROM_INLINE.
494 2007-07-05 Adam Nemet <anemet@caviumnetworks.com>
496 * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
497 IORing with a constant.
499 2007-07-05 Seongbae Park <seongbae.park@gmail.com>
501 PR rtl-optimization/32475
502 * df-scan.c (df_def_record_1): Add a use of the stack pointer
503 for every definition of the stack pointer.
505 2007-07-05 Richard Earnshaw <rearnsha@arm.com>
507 * arm.c (vfp3_const_double_index): Copy signed results of
508 REAL_VALUE_TO_INT into unsigned vars.
510 2007-07-05 Richard Guenther <rguenther@suse.de>
513 * alias.c (get_alias_set): Tread METHOD_TYPE the same as
515 * tree-ssa.c (useless_type_conversion_p): Check canonical
518 2007-07-05 Anatoly Sokolov <aesok@post.ru>
520 * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2,
521 zero_extendhisi2): Change to define_insn_and_split.
522 (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
524 2007-07-05 Paolo Bonzini <bonzini@gnu.org>
526 * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
527 pass_match_asm_constraints): New.
528 * passes.c (init_optimization_passes): Add new pass.
529 * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
530 * function.h (struct function): Add has_asm_statement bit.
531 (current_function_has_asm_statement): New.
532 * tree-pass.h (pass_match_asm_constraints): New.
534 2007-07-05 Richard Sandiford <rsandifo@nildram.co.uk>
536 * config/mips/mips.c (mips_file_start): Avoid declaration
539 2007-07-05 Sandra Loosemore <sandra@codesourcery.com>
541 * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
543 2007-07-05 Uros Bizjak <ubizjak@gmail.com>
545 * rtl.def (NOTE): Change print format string to print
546 operand 5 as a note insn name.
548 2007-07-05 Sandra Loosemore <sandra@codesourcery.com>
549 David Ung <davidu@mips.com>
551 * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
552 * doc/invoke.texi: (MIPS Options): Document them.
554 2007-07-05 Sandra Loosemore <sandra@codesourcery.com>
555 David Ung <davidu@mips.com>
557 Add support for SmartMIPS ASE.
559 * optabs.c (expand_binop_directly): New, broken out from...
560 (expand_binop): Here. Make it try rotating in the other
561 direction even when the second operand isn't constant.
562 * config/mips/mips.md (*lwxs): New.
563 * config/mips/mips.opt (msmartmips): New.
564 * config/mips/mips.c (mips_lwxs_address_p): New.
565 (mips_rtx_costs): Make it recognize scaled indexed addressing.
566 * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
567 __mips_smartmips when compiling for TARGET_SMARTMIPS.
568 (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
570 (ASM_SPEC): Add -msmartmips/-mno-smartmips.
571 * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
572 * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
573 * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
574 * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
575 * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
576 * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
578 2007-07-05 Dorit Nuzman <dorit@il.ibm.com>
580 * tree-vectorizer.c (new_loop_vec_info): Initialize
581 LOOP_VINFO_COST_MODEL_MIN_ITERS.
582 * tree-vectorizer.h (_loop_vec_info): Added new filed
583 min_profitable_iters.
584 (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
585 (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
586 * tree-vect-analyze.c (vect_analyze_operations): Set
587 LOOP_VINFO_COST_MODEL_MIN_ITERS.
588 * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
589 VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
590 Fix calculation of peel_iters_prologue. Move consideration of epilogue
591 and prologue cost to after they are computed.
592 (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
594 (vect_model_simple_cost): Takes additional argument dt. Consider cost
595 of creating vectors from scalars according to dt.
596 (vect_model_store_cost): Likewise.
597 (vectorizable_call): Use dt array instead of scalar dt. Call
598 vect_model_simple_cost with additional argument dt.
599 (vectorizable_assignment): Likewise.
600 (vectorizable_operation): Likewise.
601 (vectorizable_type_demotion): Likewise.
602 (vectorizable_type_promotion): Likewise.
603 (vectorizable_store): Use dt array instead of scalar dt. Call
604 vect_model_store_cost with additional argument dt.
605 (vect_do_peeling_for_loop_bound): Don't call
606 vect_estimate_min_profitable_iters. Instead, lookup
607 LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
608 "may not be profitable".
610 2007-07-05 Dorit Nuzman <dorit@il.ibm.com>
613 * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
614 (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
615 (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
616 (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns.
618 2007-07-05 Zdenek Dvorak <dvorakz@suse.cz>
620 * config/i386/i386.c (ix86_address_cost): Do not consider more complex
621 addressing modes cheaper.
623 2007-07-05 Alexandre Oliva <aoliva@redhat.com>
625 * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
626 (dw_ranges_struct): Rename block_num to num. Adjust.
627 (dw_ranges_by_label_struct): New.
628 (ranges_by_label, ranges_by_label_allocated,
629 ranges_by_label_in_use): New variables.
630 (add_ranges_num): Factored most of the code out of...
631 (add_ranges): ... this one. Rewrite in terms of the former.
632 (add_ranges_by_labels): New.
633 (output_ranges): Output by-label ranges.
634 (dwarf2out_finish): Output range for multiple-section
635 compile_unit. Output standard DW_AT_low_pc in addition to
636 unexpected DW_AT_entry_pc.
638 2007-07-04 Daniel Berlin <dberlin@dberlin.org>
640 PR tree-optimization/32604
641 PR tree-optimization/32606
643 * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
644 (compute_antic_safe): Removed.
645 (ANTIC_SAFE_LOADS): Ditto.
646 (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
647 (execute_pre): Don't call compute_antic_safe.
648 (vuse_equiv): New function.
649 (make_values_for_stmt): Use it
650 * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
653 2007-07-04 Anatoly Sokolov <aesok@post.ru>
656 * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
658 (avr_attribute_table): Make "naked" attribute apply to function types
659 rather than to decls.
660 (avr_handle_fntype_attribute): New function.
662 2007-07-04 Joseph Myers <joseph@codesourcery.com>
664 * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
667 2007-07-04 David Ung <davidu@mips.com>
668 Joseph Myers <joseph@codesourcery.com>
670 * config/mips/mips.md (type): Add logical, signext and move.
671 (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
672 *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
673 *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
674 combinations", *zero_extend<SHORT:mode><GPR:mode>2,
675 *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
676 *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
677 *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
678 *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
679 *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
680 *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
681 movv2sf_hardfloat_64bit): Use the new types.
682 (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
683 *movdf_softfloat, *movdf_mips16): Use "multi".
684 (extendqihi2): Replace with a define_expand.
685 (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
686 Based on extend<SHORT:mode><GPR:mode>2 patterns.
687 * config/mips/74k.md (r74k_int_logical): New reservation and
689 (r74k_int_arith): Remove "slt".
690 * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
691 config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
692 config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
693 config/mips/sb1.md, config/mips/sr71k.md: Add new types to
694 reservations for "arith".
696 2007-07-04 Richard Guenther <rguenther@suse.de>
698 * tree-ssa.c (useless_type_conversion_p): Add handling for
699 scalar float and vector types. Only call the types_compatible_p
700 langhook for aggregate types as last resort. Follow the
703 2007-07-04 Richard Guenther <rguenther@suse.de>
705 * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
706 the same as NOP_EXPR.
708 2007-07-04 Nick Clifton <nickc@redhat.com>
710 * target.h (struct gcc_target): Add target_help field.
711 * target-def.h (TARGET_HELP): New.
712 (TARGET_INITIALIZER): Use TARGET_HELP.
713 * opts.c (command_handle_option): Invoke target_help function, if
714 defined, when the user has specified --target-help on the command
716 * doc/invoke.texi: Mention that --target-help might print
717 additional information.
718 * doc/tm.texi: Document TARGET_HELP hook.
720 * arm.c (TARGET_HELP): Override default definition.
721 (arm_target_help): New - display a wrapped list of cores and
722 architectures supported.
724 2007-07-04 Rask Ingemann Lambertsen <rask@sygehus.dk>
726 * config/gcc/v850/v850.c (expand_prologue): Make sure
727 GEN_INT() argument is sign extended rather than zero extended.
728 (expand_epilogue): Likewise.
729 (output_move_double): Delete.
730 * config/gcc/v850/v850-protos.h (output_move_double): Delete.
731 * config/gcc/v850/v850.md (movdi): Delete.
732 (*movdi_internal): Delete.
734 (*movdf_internal): Delete.
736 2007-07-04 Richard Sandiford <richard@codesourcery.com>
738 * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
739 unless compiling RTP PIC.
741 2007-07-04 Richard Guenther <rguenther@suse.de>
743 PR tree-optimization/32482
744 * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
745 original ssa name if we didn't find a shift expression.
746 Fix shift constant for bit zero test.
748 2007-07-04 Richard Sandiford <richard@codesourcery.com>
750 * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
752 2007-07-04 Richard Sandiford <richard@codesourcery.com>
754 * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
755 * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
756 * config/arm/vxworks.h (ASM_SPEC): Delete.
757 (SUBTARGET_EXTRA_ASM_SPEC): Define.
759 2007-07-04 Sebastian Pop <sebpop@gmail.com>
761 * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
762 (DDR_REVERSED_P): New.
763 * tree-data-ref.c (initialize_data_dependence_relation,
764 build_classic_dist_vector): Set DDR_REVERSED_P.
766 2007-07-04 Sebastian Pop <sebpop@gmail.com>
769 * tree-data-ref.c (analyze_siv_subscript_cst_affine,
770 compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
771 init_omega_for_ddr_1): Use non conservative number of iterations
773 (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
774 (analyze_siv_subscript): Remove FIXME and reinitialization of
775 last_conflicts to chrec_dont_know.
776 * testsuite/gfortran.dg/vect/pr32457.f90: New.
778 2007-07-04 Douglas Gregor <doug.gregor@gmail.com>
780 * tree.c (maybe_canonicalize_argtypes): Improve description.
782 2007-07-04 Douglas Gregor <doug.gregor@gmail.com>
784 * tree.c (maybe_canonicalize_argtypes): New.
785 (build_function_type): Set canonical type.
786 (build_method_type_directly): Ditto.
787 (reconstruct_complex_type): Rebuild the METHOD_TYPE node
790 2007-07-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
792 * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
794 (rewrite_use_nonlinear_expr): Likewise.
796 2007-07-03 Seongbae Park <seongbae.park@gmail.com>
798 * rtl.def (UNSPEC, USE, CLOBBER): More comments.
800 2007-07-04 Ben Elliston <bje@au.ibm.com>
802 * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
805 * c-objc-common.c (c_types_compatible_p): Fix indentation.
807 * doc/tm.texi (Run-time Target): Capitalise "CPU".
808 (Exception Handling): Likewise.
810 2007-07-03 Jan Hubicka <jh@suse.cz>
812 * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
814 2007-07-03 Eric Christopher <echristo@apple.com>
816 * doc/cppopts.texi: Add conflicting option note to -dM.
817 * doc/invoke.texi: Add note about possible conflicts with
818 -E for -dCHARS and note that -dM will not produce
819 any results if there is no machine dependent reorg.
821 2007-07-03 Geoffrey Keating <geoffk@apple.com>
823 * tree.h (DECL_ALIGN): Back out previous change.
825 2007-07-03 Joseph Myers <joseph@codesourcery.com>
827 * configure.ac: Test for .dtprelword support on MIPS.
828 * configure, config.in: Regenerate.
829 * config/mips/mips.c (mips_output_dwarf_dtprel): New.
830 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
832 2007-07-03 Julian Brown <julian@codesourcery.com>
834 * config.gcc (with_fpu): Allow --with-fpu=vfp3.
835 * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
836 * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
837 * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
839 (all_fpus): Add FPUTYPE_VFP3.
840 (fp_model_for_fpu): Add VFPv3 field.
841 (arm_rtx_costs_1): Give cost to VFPv3 constants.
842 (vfp3_const_double_index): New function. Return integer index of
843 VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
845 (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
846 and argument represents a valid RTX for a VFPv3 constant.
847 (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
849 (vfp_emit_fstmd): Similar, for fstmd.
850 (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
851 constants, represented as integer indices.
852 (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
853 VFP_REGNO_OK_FOR_DOUBLE macros.
854 (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
855 (arm_file_start): Set float-abi attribute for VFPv3, and output
856 correct ".fpu" assembler directive.
857 (arm_dbx_register_numbering): Add FIXME.
858 * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
859 (fputype): Add FPUTYPE_VFP3.
860 (FIXED_REGISTERS): Add 32 registers for D16-D31.
861 (CALL_USED_REGISTERS): Likewise.
862 (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
863 of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
864 (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
865 (D7_VFP_REGNUM): New.
866 (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
867 (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
868 (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
869 (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
870 (REG_ALLOC_ORDER): Adjust for VFPv3.
871 (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
872 (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
873 VFP_LO_REGS, VFP_HI_REGS.
874 (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
875 (IS_VFP_CLASS): Define macro.
876 (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
878 (REGISTER_MOVE_COST): Likewise.
879 * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
880 * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
881 (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
882 (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
883 (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
884 (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
885 (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
886 (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
887 (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
888 (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
889 (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
890 where appropriate for single-word registers.
891 (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
892 As above. Fix type attributes.
893 * config/arm/constraints.md (register_contraint "t"): Define.
894 (register_constraint "w"): Change to D0-D15, or D0-D31 for
896 (register_constraint "x"): Define.
897 (constraint "Dv"): Define.
899 2007-07-03 Geoffrey Keating <geoffk@apple.com>
901 * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
903 2007-07-03 Tom Tromey <tromey@redhat.com>
905 * c-parser.c (objc_pq_context): Removed.
906 (objc_need_raw_identifier): Likewise.
907 (c_parser) <objc_pq_context>: New field.
908 <objc_need_raw_identifier>: Likewise.
909 (OBJC_NEED_RAW_IDENTIFIER): Removed.
910 (c_lex_one_token): Update.
911 (c_parser_objc_protocol_definition): Update.
912 (c_parser_objc_method_definition): Update.
913 (c_parser_objc_methodproto): Update.
914 (c_parser_declspecs): Update.
916 2007-07-03 David Ung <davidu@mips.com>
918 * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
920 2007-07-03 David Ung <davidu@mips.com>
921 Richard Sandiford <richard@codesourcery.com>
923 * doc/invoke.texi: Document -march=74kf3_2.
924 * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
925 (TUNE_74K): Check for it.
926 * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
927 (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
928 * config/mips/mips.md (cpu): Add 74kf3_2.
929 * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
930 (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
931 (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
932 (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
933 74kf3_2 to the CPU list.
934 (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
935 (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
936 (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
937 (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
938 (r74kf3_2_fxfer_from_c1): New insn reservations.
940 2007-07-03 Richard Sandiford <richard@codesourcery.com>
941 David Ung <davidu@mips.com>
943 * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
944 -march=24kx with -march=24kf1_1. Likewise 24ke[fx], 34k[fx]
945 and 74k[fx]. Document aliases for the new options.
946 * config/mips/mips.h (PROCESSOR_24KF): Rename to...
947 (PROCESSOR_24KF2_1): ...this.
948 (PROCESSOR_24KX): Rename to...
949 (PROCESSOR_24KF1_1): ...this.
950 (PROCESSOR_74KF): Rename to...
951 (PROCESSOR_74KF2_1): ...this.
952 (PROCESSOR_74KX): Rename to...
953 (PROCESSOR_74KF1_1): ...this.
954 (TUNE_74K): Update PROCESSOR_* names.
955 * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
956 for 24kf. Add 24kf1_1 and 24kfx as synonyms for 24kx. Likewise
957 the 24ke*, 34k* and 74k* processors. Update PROCESSOR_* names.
958 (mips_rtx_cost_data): Update processor names in comments.
959 (mips_issue_rate): Update PROCESSOR_* names.
960 * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
961 24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
962 * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
963 to r24kf2_1_*. Rename r24kx_* insn reservations to r24kf1_1_*.
964 Update cpu attribute names.
965 (r24k_fpu_iss): Rename this reservation to...
966 (r24kf2_1_fpu_iss): ...this and update all uses.
967 (r24kx_fpu_iss): Rename this reservation to...
968 (r24kf1_1_fpu_iss): ...this and update all uses.
969 * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
970 to r74kf2_1_*. Rename r74kx_* insn reservations to r74kf1_1_*.
971 Update cpu attribute names.
973 2007-07-01 Kaz Kojima <kkojima@gcc.gnu.org>
975 * config/m32r/constraints.md: New file.
976 * config/m32r/m32r.c: Include tm-constrs.h.
977 (small_data_operand): Use satisfies_constraint_* instead of macro.
978 (addr24_operand, gen_compare): Likewise.
979 * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
980 (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
981 CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
982 EXTRA_CONSTRAINT): Likewise.
983 * config/m32r/m32r.md: Include constraints.md.
984 (*movsi_insn): Use satisfies_constraint_* instead of macro.
985 (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
986 * config/m32r/predicates.md (conditional_move_operand): Likewise.
987 (two_insn_const_operand, int8_operand, uint16_operand,
988 reg_or_int16_operand, reg_or_uint16_operand,
989 reg_or_cmp_int16_operand, cmp_int16_operand,
990 seth_add3_operand): Likewise.
992 2007-07-03 Eric Christopher <echristo@gmail.com>
994 * libgcc2.h: Conditionally declare __bswapsi2 and
997 2007-07-03 H.J. Lu <hongjiu.lu@intel.com>
999 * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
1002 2007-07-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
1005 * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
1006 (__gthrw_pragma): Provide default definition.
1008 * gthr-posix.c (__gthrw_pragma): Define.
1010 2007-07-03 Daniel Berlin <dberlin@dberlin.org>
1012 * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
1013 before declaring inequality.
1015 2007-07-03 Rask Ingemann Lambertsen <rask@sygehus.dk>
1017 * combine.c (recog_for_combine): Log the success or failure of
1018 matching new insn patterns against the machine description in
1021 2007-07-03 Revital Eres <eres@il.ibm.com>
1023 * ddg.c (print_sccs): New function.
1024 (check_sccs): New function.
1025 (create_ddg_all_sccs): Use it.
1026 * ddg.h (print_sccs): Declare.
1027 * modulo-sched.c (sms_order_nodes): Call print_sccs.
1029 2007-07-03 Uros Bizjak <ubizjak@gmail.com>
1031 * targhooks.h (default_mode_for_suffix): New function declaration.
1032 * targhooks.c (default_mode_for_suffix): New default target hook.
1033 * target.h (struct c): New structure in the targetm struct.
1034 (mode_for_suffix): New target hook as part of struct c.
1035 target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
1036 default_mode_for_suffix.
1037 (TARGET_C): New define.
1038 * c-lex.c: Include "target.h".
1039 (interpret_float): Use targetm.c.mode_for_suffix to determine
1040 the mode for a given non-standard suffix.
1041 Makefile.in (c-lex.o): Depend on $(TARGET_H).
1043 * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
1044 (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
1046 * doc/extend.texi (Floating Types): New node. Document __float80 and
1047 __float128 types. Document 'w', 'W', 'q' and 'Q' suffixes.
1049 2007-07-03 Kaz Kojima <kkojima@gcc.gnu.org>
1052 * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
1053 predicate instead of target_operand.
1054 (divsi3_i1_media, divsi3_media_2): Likewise.
1056 2007-07-02 Eric Botcazou <ebotcazou@adacore.com>
1058 * tree.h (alias_sets_might_conflict_p): Rename into
1059 alias_sets_must_conflict_p.
1060 * alias.c (alias_sets_might_conflict_p): Likewise.
1061 (alias_sets_conflict_p): Use it.
1062 (objects_must_conflict_p): Likewise.
1063 * c-common.c (strict_aliasing_warning): Adjust.
1065 2007-07-02 Andrew Pinski <andrew_pinski@playstation.sony.com>
1067 * rtlhooks.c (gen_lowpart_if_possible): Check for
1068 invalid subreg before calling gen_lowpart_SUBREG.
1070 2007-07-02 Geoffrey Keating <geoffk@apple.com>
1072 * config/darwin9.h: Add copyright notice.
1073 (LINK_COMMAND_SPEC): Add comment.
1074 (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
1075 * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
1076 DARWIN_LIBSYSTEM_HAS_UNWIND.
1078 2007-07-02 Jakub Jelinek <jakub@redhat.com>
1081 * omp-low.c (check_combined_parallel): New function.
1082 (lower_omp_parallel): Call it via walk_stmts, set
1083 OMP_PARALLEL_COMBINED if appropriate.
1084 (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
1085 isn't the only statement in WS_ENTRY_BB or OMP_RETURN
1086 the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
1087 don't consider it as combined parallel.
1089 2007-07-02 Richard Sandiford <richard@codesourcery.com>
1091 * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
1092 (gcc_tooldir): Likewise.
1093 * configure: Regenerate.
1094 * Makefile.in (libsubdir_to_prefix): New variable, based on the
1095 old configure.ac gcc_tooldir setting.
1096 (prefix_to_exec_prefix): New variable.
1097 (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
1098 rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
1100 2007-07-02 Daniel Berlin <dberlin@dberlin.org>
1102 Fix PR tree-optimization/32583
1103 Fix PR tree-optimization/32584
1104 * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
1105 (phi_translate_set): Use phi_translate directly now.
1106 (make_values_for_stmt): Don't value number RHS if we already know
1109 2007-07-02 Steve Ellcey <sje@cup.hp.com>
1110 Jim Wilson <wilson@specifix.com>
1113 * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
1116 2007-07-02 Sandra Loosemore <sandra@codesourcery.com>
1117 Richard Sandiford <richard@codesourcery.com>
1118 Nigel Stephens <nigel@mips.com>
1120 * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
1121 (mips16e_output_save_restore): Declare.
1122 (mips16e_save_restore_pattern_p): Likewise.
1123 * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
1124 * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
1125 for GENERATE_MIPS16E_SAVE_RESTORE. Return 0x400 for TARGET_MIPS16
1126 && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
1127 (BITSET_P): New global macro, extracted from...
1128 (mips_for_each_saved_reg): ...here.
1129 (mips16e_save_restore_info): New struct.
1130 (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
1131 (mips16e_save_restore_regs): New variable.
1132 (mips_split_plus, mips16e_find_first_register): New functions.
1133 (mips16e_mask_registers): New function.
1134 (compute_frame_size): Expand the commentary before the function.
1135 Enforce the MIPS16e save and restore register range restrictions.
1136 Pad the general register save area at the low end.
1137 (mips16e_save_restore_reg, mips16e_build_save_restore)
1138 (mips16e_save_restore_pattern_p, mips16e_add_register_range)
1139 (mips16e_output_save_restore, mips16e_collect_propagate_value)
1140 (mips16e_collect_argument_save, mips16e_collect_argument_saves):
1142 (mips_expand_prologue, mips_expand_epilogue): Handle
1143 GENERATE_MIPS16E_SAVE_RESTORE.
1144 * config/mips/mips.md (*mips16e_save_restore): New pattern.
1146 2007-07-02 Uros Bizjak <ubizjak@gmail.com>
1148 PR tree-optimization/31966
1149 PR tree-optimization/32533
1150 * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
1151 "basic_block" description as its third argument. Update function
1152 calls to get destination bb from "edge" argument. Save "cond" into
1153 aux field of the edge. Update prototype for changed arguments.
1154 (if_convertible_loop_p): Clear aux field of incoming edges if bb
1156 (find_phi_replacement_condition): Operate on incoming edges, not
1157 on predecessor blocks. If there is a condition saved in the
1158 incoming edge aux field, AND it with incoming bb predicate.
1159 Return source bb of the first edge.
1160 (clean_predicate_lists): Clean aux field of outgoing node edges.
1161 (tree_if_conversion): Do not initialize cond variable. Move
1162 variable declaration into the loop.
1163 (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
1164 initializations of new_stmt, arg0 and arg1 variables.
1166 2007-07-02 Jakub Jelinek <jakub@redhat.com>
1168 * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
1169 SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
1171 2007-07-02 Richard Guenther <rguenther@suse.de>
1173 * tree-ssa.c (useless_type_conversion_p): Document
1174 future intent as defining the middle-end type system.
1175 Re-structure to call langhook last, group by type class,
1176 mark questionable parts.
1178 2007-07-02 Richard Guenther <rguenther@suse.de>
1180 * tree-flow.h (types_compatible_p): Declare.
1181 * tree-ssa.c (types_compatible_p): New function.
1182 * ipa-type-escape.c (discover_unique_type): Use
1183 types_compatible_p instead of lang_hooks.types_compatible_p.
1184 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
1185 * tree-vn.c (expressions_equal_p): Likewise.
1186 * tree.c (fields_compatible_p): Likewise.
1187 * tree-ssa-dom.c (avail_expr_eq): Likewise.
1188 (cprop_operand): Use useless_type_conversion_p instead of
1189 lang_hooks.types_compatible_p.
1190 * tree-inline.c (setup_one_parameter): Likewise.
1191 (declare_return_variable): Likewise.
1192 * tree-nrv.c (tree_nrv): Likewise.
1193 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
1194 (maybe_fold_offset_to_component_ref): Likewise.
1195 (maybe_fold_offset_to_reference): Likewise.
1196 * tree-ssa-copy.c (may_propagate_copy): Likewise.
1197 (merge_alias_info): Likewise.
1198 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1199 * tree-ssa-phiopt.c (conditional_replacement): Likewise.
1200 * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
1201 * tree-tailcall.c (find_tail_calls): Likewise.
1202 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
1203 * gimplify.c (canonicalize_addr_expr): Likewise.
1204 (fold_indirect_ref_rhs): Likewise.
1205 (gimplify_addr_expr): Likewise. Swap parameters to cpt_same_type.
1206 (cpt_same_type): Likewise.
1207 (check_pointer_types_r): Swap parameters to cpt_same_type
1209 * fold-const.c (fold_convert): Revert fix for PR15988.
1210 * tree-inline.c (setup_one_parameter): Instead fix it here by
1211 using fold_build1 instead of fold_convert and checking for
1212 error_mark_node. Convert only if the conversion is necessary.
1214 2007-07-02 Joseph Myers <joseph@codesourcery.com>
1216 * configure.ac: Check for .gnu_attribute on Power.
1217 * configure: Regenerate.
1218 * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
1219 attribute for floating-point ABI.
1221 2007-07-02 Ira Rosen <irar@il.ibm.com>
1223 PR tree-optimization/32230
1224 PR tree-optimization/32477
1225 * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base
1226 address is a constant.
1228 2007-07-02 Richard Sandiford <richard@codesourcery.com>
1230 * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
1231 (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
1232 (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
1233 stanzas. Use the first part of the triplet to set MIPS_ISA_DEFAULT.
1234 Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
1235 64-bit targets. Add support for *-elfoabi*.
1236 * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
1237 different settings if $(tm_defines) does not select the EABI.
1238 (MULTILIB_EXCLUSIONS): Define in those circumstances.
1239 * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
1240 (MIPS_ARCH_OPTION_SPEC): Likewise.
1241 (MIPS_ISA_LEVEL_SPEC): Likewise.
1242 (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
1243 * config/mips/elfoabi.h: New file.
1245 2007-07-02 Richard Guenther <rguenther@suse.de>
1247 * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
1248 (useless_type_conversion_p): ... this.
1249 * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
1250 (useless_type_conversion_p): ... this.
1251 * builtins.c (fold_builtin_memory_op): Rename
1252 tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
1253 * tree-cfg.c (verify_expr): Likewise.
1254 * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
1255 * tree-ssa-ccp.c (ccp_fold): Likewise.
1256 * tree-ssa-copy.c (may_propagate_copy): Likewise.
1257 * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
1258 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1259 * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
1260 * tree-ssa-pre.c (eliminate): Likewise.
1261 * tree-ssa.c (delete_tree_ssa): Likewise.
1262 (tree_ssa_useless_type_conversion): Likewise.
1263 * tree.c (build2_stat): Likewise.
1265 2007-07-01 Daniel Berlin <dberlin@dberlin.org>
1267 Fix PR tree-optimization/32571
1268 * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
1271 2007-07-01 Daniel Berlin <dberlin@dberlin.org>
1273 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
1274 and other expected operations explicitly, change default to
1277 2007-07-01 Daniel Jacobowitz <dan@codesourcery.com>
1279 * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
1281 * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
1282 (tls_load_dot_plus_eight): Move the label number into the unspec.
1283 * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
1285 2007-07-01 Andreas Schwab <schwab@suse.de>
1287 * dwarf2out.c (initial_return_save): Define only if used.
1289 2007-07-01 Kenneth Zadeck <zadeck@naturalbridge.com>
1291 Unreverting Richard's Revert of:
1293 2007-06-27 Richard Sandiford <richard@codesourcery.com>
1295 * dce.c (deletable_insn_p_1): New function, split out from...
1296 (deletable_insn_p): ...here. Only treat bare USEs and CLOBBERs
1297 specially, not those inside PARALLELs. Remove BODY argument
1298 and adjust recursive call accordingly.
1299 (prescan_insns_for_dce): Update call to delete_insn_p.
1301 2007-07-01 Vladimir Yanovsky <yanov@il.ibm.com>
1302 Revital Eres <eres@il.ibm.com>
1304 * ddg.c (create_ddg_all_sccs): Fix missed
1305 initialization of scc_nodes.
1307 2007-07-01 Uros Bizjak <ubizjak@gmail.com>
1310 * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
1311 X + ~X to 1 only for INTEGRAL_TYPE_P type.
1313 2007-06-30 Joseph Myers <joseph@codesourcery.com>
1315 * configure.ac: Check for .gnu_attribute on MIPS.
1316 * configure, config.in: Regenerate.
1317 * config/mips/mips.c (mips_file_start): If supported, output
1318 attribute for floating-point ABI.
1320 2007-06-30 Uros Bizjak <ubizjak@gmail.com>
1323 * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
1324 (ffs_cmove): New expander to expand using ctz pattern.
1325 (*ffs_cmove): Remove pattern.
1326 (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
1327 (ffsdi2): Expand using ctz pattern.
1328 (*ffs_rex64): Remove pattern.
1330 2007-06-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1332 PR rtl-optimization/32296
1333 * pa.md (return): Delete pattern.
1334 (return_internal): Remove "(const_int 1)" from pattern.
1335 (epilogue): Use return_internal pattern for trivial returns.
1336 * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
1337 * pa.c (hppa_can_use_return_insn_p): Delete function. Include "df.h".
1339 2007-06-30 Daniel Berlin <dberlin@dberlin.org>
1341 * tree-ssa-pre.c (is_exception_related): New function
1342 (can_value_number_operation): Use it.
1344 2007-06-30 Daniel Berlin <dberlin@dberlin.org>
1346 Fix PR tree-optimization/32540
1347 Fix PR tree-optimization/31651
1349 * tree-ssa-sccvn.c: New file.
1351 * tree-ssa-sccvn.h: Ditto.
1353 * tree-vn.c: Include tree-ssa-sccvn.h
1354 (val_expr_paid_d): Removed.
1355 (value_table): Ditto.
1356 (vn_compute): Ditto.
1357 (val_expr_pair_hash): Ditto.
1358 (val_expr_pair_expr_eq): Ditto.
1359 (copy_vuses_from_stmt): Ditto.
1362 (shared_vuses_from_stmt): Ditto.
1363 (print_creation_to_file): Moved up.
1364 (sort_vuses): Ditto.
1365 (sort_vuses_heap): Ditto.
1366 (set_value_handle): Make non-static.
1367 (make_value_handle): Ditto.
1368 (vn_add): Rewritten to use sccvn lookups.
1369 (vn_add_with_vuses): Ditto.
1370 (vn_lookup): Ditto (and second argument removed).
1371 (vn_lookup_with_vuses): Ditto.
1372 (vn_lookup_or_add): Ditto (and second argument removed);
1373 (vn_lookup_or_add_with_vuses): Ditto.
1374 (vn_lookup_with_stmt): New.
1375 (vn_lookup_or_add_with_stmt): Ditto.
1376 (create_value_handle_for_expr): Ditto.
1378 * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
1379 (seen_during_translate): New function.
1380 (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
1381 (phi_trans_add): Ditto.
1382 (constant_expr_p): FIELD_DECL is always constant.
1383 (phi_translate_1): Renamed from phi_translate, add seen bitmap.
1384 Use constant_expr_p.
1385 Avoid infinite recursion on mutually valued expressions.
1386 Change callers of vn_lookup_or_add.
1387 (phi_translate): New function.
1388 (compute_antic_safe): Allow phi nodes.
1389 (create_component_ref_by_pieces): Update for FIELD_DECL change.
1390 (find_or_generate_expression): Rewrite slightly.
1391 (create_expression_by_pieces): Updated for vn_lookup_or_add
1393 Update VN_INFO for new names.
1394 (insert_into_preds_of_block): Update for new names.
1395 (add_to_exp_gen): New function.
1396 (add_to_sets): Use vn_lookup_or_add_with_stmt.
1397 (find_existing_value_expr): Rewrite to changed vn_lookup.
1398 (create_value_expr_from): Ditto, and use add_to_exp_gen.
1399 (try_look_through_load): Removed.
1400 (try_combine_conversion): Ditto.
1401 (get_sccvn_value): New function.
1402 (make_values_for_phi): Ditto.
1403 (make_values_for_stmt): Ditto.
1404 (compute_avail): Rewritten for vn_lookup_or_add changes and to use
1406 (init_pre): Update for SCCVN changes.
1408 (execute_pre): Ditto.
1410 * tree-flow.h (make_value_handle): Declare.
1411 (set_value_handle): Ditto.
1412 (sort_vuses_heap): Ditto.
1413 (vn_lookup_or_add_with_stmt): Ditto.
1414 (vn_lookup_with_stmt): Ditto.
1415 (vn_compute): Remove.
1418 (vn_lookup): Update arguments.
1420 * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
1422 (tree-ssa-sccvn.o): New.
1423 (OBJS-common): Add tree-ssa-sccvn.o
1425 2007-06-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1428 * c-typeck.c (build_external_ref): Don't mark as used if called
1430 * calls.c (rtx_for_function_call): Likewise.
1432 2007-06-30 Richard Sandiford <richard@codesourcery.com>
1436 2007-06-27 Richard Sandiford <richard@codesourcery.com>
1438 * dce.c (deletable_insn_p_1): New function, split out from...
1439 (deletable_insn_p): ...here. Only treat bare USEs and CLOBBERs
1440 specially, not those inside PARALLELs. Remove BODY argument
1441 and adjust recursive call accordingly.
1442 (prescan_insns_for_dce): Update call to delete_insn_p.
1444 2007-06-30 Rask Ingemann Lambertsen <rask@sygehus.dk>
1446 * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
1447 (try_combine): Move potential calls to undo_all() so they happen
1448 before we commit to using the combined insns.
1450 2006-06-30 Jan Hubicka <jh@suse.cz>
1452 * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
1455 2006-06-30 Thomas Neumann <tneumann@users.sourceforge.net>
1457 * ipa.c (cgraph_postorder): Cast according to the coding conventions.
1458 (cgraph_remove_unreachable_nodes): Likewise.
1459 * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
1460 * ipa-inline.c (update_caller_keys): Cast according to the coding
1462 (cgraph_decide_recursive_inlining): Likewise.
1463 (cgraph_decide_inlining_of_small_function): Likewise.
1464 (try_inline): Likewise.
1465 (cgraph_decide_inlining_incrementally): Likewise.
1466 * ipa-pure-const.c (get_function_state): Likewise.
1467 (scan_function): Likewise.
1468 (analyze_function): Likewise.
1469 (static_execute): Likewise.
1470 * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
1471 (merge_callee_local_info): Likewise.
1472 (analyze_function): Use type safe memory macros.
1473 (static_execute): Likewise. Cast according to the coding conventions.
1474 * ipa-type-escape.c (scan_for_regs): Cast according to the coding
1476 * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
1478 (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
1479 * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
1482 2007-06-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
1485 * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
1486 for complex modes (both int and real).
1488 2007-06-29 Jan Hubicka <jh@suse.cz>
1490 * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
1492 2007-06-29 Jan Hubicka <jh@suse.cz>
1495 * cse.c (cse_insn): Avoid invalid sharing in between register note and
1498 2007-06-29 Anatoly Sokolov <aesok@post.ru>
1501 * config/avr/avr.c: Include dataflow header file.
1502 (expand_prologue): Adjust for prologue insn change.
1503 * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
1506 2007-06-29 Richard Guenther <rguenther@suse.de>
1509 * gimplify.c (gimplify_call_expr): Ignore variable argument parts
1510 during type verification.
1512 2007-06-29 Jan Hubicka <jh@suse.cz>
1514 * recog.c (validate_change_rtx_1): Unshare TO argument.
1516 2007-06-29 Uros Bizjak <ubizjak@gmail.com>
1518 PR tree-optimization/24659
1519 * tree-vect-transform.c (vectorizable_call): Handle
1520 (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
1522 * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
1523 * config/i386/i386.c (enum ix86_builtins)
1524 [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
1525 (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
1527 (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
1528 const using def_builtin_const.
1529 (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
1530 input operands in the same modes as the result.
1531 (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
1533 2007-06-29 Richard Sandiford <rsandifo@nildram.co.uk>
1535 * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
1536 (df_set_dead_notes_for_mw): Likewise.
1538 2007-06-29 Eric Botcazou <ebotcazou@adacore.com>
1540 * c-common.c (pointer_int_sum): Do the negation in sizetype.
1542 2007-06-28 DJ Delorie <dj@redhat.com>
1544 * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
1546 2007-06-28 Geoffrey Keating <geoffk@apple.com>
1548 * doc/invoke.texi (C++ Dialect Options): Document
1549 fvisibility-ms-compat.
1550 * c.opt (fvisibility-ms-compat): New.
1552 2007-06-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
1555 * tree-affine.c (aff_combination_add_elt): Handle
1556 pointer addition specially.
1558 2007-06-28 Jakub Jelinek <jakub@redhat.com>
1560 * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
1561 decl is non-external for AIX ABI.
1563 2007-06-28 David Edelsohn <edelsohn@gnu.org>
1565 * config/rs6000/predicates.md (current_file_function_operand):
1566 Ensure the symbol is non-external for AIX ABI.
1568 2007-06-28 Nick Clifton <nickc@redhat.com>
1570 * common.opt (fipa-matrix-reorg): Add Optimization attribute.
1571 (fdce, fdse, fpredictive-commoning): Likewise.
1573 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
1576 * gcc.c (process_command): Recognize the new -static-libgfortran
1579 2007-06-27 Rask Ingemann Lambertsen <rask@sygehus.dk>
1582 * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
1583 Use a call clobbered hard reg instead of a pseudo reg.
1585 2007-06-27 Kaz Kojima <kkojima@gcc.gnu.org>
1587 * config/sh/sh.md (load_gbr): Use correct operand constraint.
1589 2007-06-27 Kaz Kojima <kkojima@gcc.gnu.org>
1592 * config/sh/sh.md (udivsi3): Don't wrap the sequence with
1593 REG_LIBCALL and REG_RETVAL notes.
1594 (divsi3, mulsi3): Likewise.
1595 (mulhisi3): Likewise. Use emit_libcall_block.
1596 (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
1598 2007-06-27 Seongbae Park <seongbae.park@gmail.com>
1600 PR rtl-optimization/32481
1601 * combine.c (adjust_for_new_dest): Rescan the changed insn.
1603 2007-06-27 Richard Sandiford <richard@codesourcery.com>
1605 * dce.c (deletable_insn_p_1): New function, split out from...
1606 (deletable_insn_p): ...here. Only treat bare USEs and CLOBBERs
1607 specially, not those inside PARALLELs. Remove BODY argument
1608 and adjust recursive call accordingly.
1609 (prescan_insns_for_dce): Update call to delete_insn_p.
1611 2007-06-27 Richard Guenther <rguenther@suse.de>
1614 * tree.h (fold_convertible_p): Declare.
1615 * fold-const.c (fold_convertible_p): New function.
1616 * gimplify.c (gimplify_call_expr): Use fold_convertible_p
1617 instead of lang_hooks.types_compatible_p.
1619 2007-06-26 Jan Hubicka <jh@suse.cz>
1621 * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
1622 * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
1623 early use validate_unshare_change.
1624 (reload_combine): Likewise.
1625 * recog.c (change_t): New field unshare.
1626 (validate_change_1): Rename from validate_change; add argument unshare.
1627 (validate_change): Turn into wrapper of validate_change_1; update
1628 prototype for bools.
1629 (validate_unshare_change): New.
1630 (confirm_change_group): Unshare changes if asked for; avoid unnecesary
1631 calls of df_insn_rescan.
1632 * recog.h (validate_change): Replace ints by bools.
1633 (validate_unshare_change): Declare.
1635 2007-06-26 Kenneth Zadeck <zadeck@naturalbridge.com>
1637 * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
1639 2007-06-26 Steve Ellcey <sje@cup.hp.com>
1641 * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
1643 2007-06-25 Jan Hubicka <jh@suse.cz>
1645 * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
1647 (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
1648 cgraph_decide_inlining_incrementally): Move uninlinability checks to
1649 places other call site specific checks are performed.
1651 2007-06-25 Andrew Pinski <andrew_pinski@playstation.sony.com>
1654 * tree-vect-transform.c (vectorizable_operation): Convert
1655 POINTER_PLUS_EXPR over to PLUS_EXPR.
1657 2007-06-25 Chao-ying Fu <fu@mips.com>
1659 * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
1660 UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
1661 Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
1662 Document GET_MODE_IBIT, and GET_MODE_FBIT.
1664 * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
1665 MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1666 (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
1667 SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
1668 SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
1669 ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
1670 ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
1671 SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
1672 ALL_FIXED_POINT_MODE_P): New define.
1673 (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1675 (GET_MODE_IBIT, GET_MODE_FBIT): New define.
1677 * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
1678 MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1679 MODE_VECTOR_UACCUM): New mode classes.
1681 * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
1682 UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
1683 Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
1686 * genmodes.c (struct mode_data): Add ibit and fbit fields.
1687 (blank_mode): Initialize ibit and fbit.
1688 (adj_ibit, adj_fbit): New to adjust ibit and fbit.
1689 (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1691 (new_adjust): Change required_class to required_class_from and
1692 required_class_to for testing within a range.
1693 (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1694 MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1696 (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
1697 (make_fixed_point_mode): New.
1698 (_ADD_ADJUST): Change C to C1 and C2.
1699 (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
1700 use a range for machine classes.
1701 (ADJUST_IBIT, ADJUST_FBIT): New.
1702 (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
1704 (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
1705 MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1706 Emit adjustment for ibit and fbit.
1707 (emit_mode_ibit, emit_mode_fbit): New.
1708 (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
1710 2007-06-25 Nathan Froyd <froydnj@codesourcery.com>
1712 * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
1713 as the source of the set.
1715 2007-06-25 Roman Zippel <zippel@linux-m68k.org>
1717 * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
1718 FP_REGNO_P): Use IN_RANGE.
1719 (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
1720 (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
1721 (DATA_REG_P): Use DATA_REGNO_P.
1722 (FP_REG_P): Use FP_REGNO_P.
1723 (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
1724 * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
1725 REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
1727 2007-06-24 Jan Hubicka <jh@suse.cz>
1730 * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
1732 2007-06-24 Sebastian Pop <sebpop@gmail.com>
1735 * fold-const.c (fold_binary): Strip nops of operand 0
1736 of BIT_NOT_EXPR before calling operand_equal_p.
1737 * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
1738 * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
1740 2007-06-23 Mark Mitchell <mark@codesourcery.com>
1742 * doc/extend.texi: Document that dllimport and dllexport imply
1744 * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
1745 imported or exported declaration, including type declarations.
1746 * c-common.c (handle_visibility_attribute): Check for conflicts
1747 with dllimport/dllexport.
1748 (c_determine_visibility): Handle dllimport/dllexport as an
1749 explicit visibility atttribute.
1751 2007-06-23 Richard Guenther <rguenther@suse.de>
1753 PR tree-optimization/16876
1755 * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
1757 * tree-inline.c (initialize_inlined_parameters): Do not call
1758 lang_hooks.tree_inlining.convert_parm_for_inlining.
1759 * cgraphbuild.c (initialize_inline_failed): Set inline failed
1760 reason for mismatched types.
1761 * gimplify.c (gimplify_call_expr): Verify the call expression
1762 arguments match the called function type signature. Otherwise
1763 mark the call expression to be not considered for inlining
1764 using CALL_CANNOT_INLINE_P flag.
1765 * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
1766 edges call expression.
1767 (cgraph_decide_inlining_of_small_function): Likewise.
1768 (cgraph_decide_inlining): Likewise.
1769 * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
1771 * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
1772 * c-typeck.c (c_convert_parm_for_inlining): Remove.
1773 * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
1775 (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
1776 * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
1778 * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1779 convert_parm_for_inlining member.
1781 2007-06-23 Richard Earnshaw <rearnsha@arm.com>
1784 * arm.md (negscc): Match the correct operand for optimized LT0 test.
1785 Remove optimization for GT.
1787 2007-06-23 Kenneth Zadeck <zadeck@naturalbridge.com>
1790 * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
1792 (prescan_insns_for_dce): Add extra parameter.
1794 2007-06-23 Jan Hubicka <jh@suse.cz>
1797 * gimplify.c (mark_addressable): New function.
1798 (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
1800 2007-06-22 Uros Bizjak <ubizjak@gmail.com>
1803 * expr.c (store_constructor): Do not clobber non-zeroed memory.
1805 2007-06-22 Uros Bizjak <ubizjak@gmail.com>
1808 * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
1809 moves between MMX/SSE registers to at least 8 units to prevent
1810 ICE caused by non-tieable SI/HI/QImodes in SSE registers.
1812 2007-06-22 Uros Bizjak <ubizjak@gmail.com>
1814 * config/i386/i386.c (override_options): Correct x86_sahf
1817 2007-06-21 David Daney <ddaney@avtrex.com>
1820 * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
1821 to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
1822 (exception_receiver): Renamed to ...
1823 (nonlocal_goto_receiver): ... this.
1825 2007-06-22 Roman Zippel <zippel@linux-m68k.org>
1827 * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
1828 (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
1829 partial register accesses.
1831 2007-06-21 Adam Nemet <anemet@caviumnetworks.com>
1833 * fold-const.c (debug_fold_checksum): Move it under
1834 ENABLE_FOLD_CHECKING.
1836 2007-06-21 Sebastian Pop <sebpop@gmail.com>
1839 * tree.h (debug_fold_checksum): Declared.
1840 * fold-const.c (build_fold_addr_expr_with_type_1): New.
1841 (build_fold_addr_expr_with_type, build_fold_addr_expr): Use
1842 build_fold_addr_expr_with_type_1.
1843 (fold_addr_expr, debug_fold_checksum): New.
1844 (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
1845 (fold_unary, fold_comparison, split_address_to_core_and_offset):
1848 2007-06-21 Sebastian Pop <sebpop@gmail.com>
1850 PR tree-optimization/19590
1851 * tree-vrp.c (adjust_range_with_scev): Set the range when the result
1852 of scev is a constant.
1853 * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
1855 2007-06-21 Kenneth Zadeck <zadeck@naturalbridge.com>
1857 * df-problems.c (df_note_bb_compute): Made computation of live
1858 info consistent with df_lr.
1860 2007-06-21 Richard Guenther <rguenther@suse.de>
1862 PR tree-optimization/32453
1863 * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
1864 for pointer anti-range.
1866 2007-06-21 H.J. Lu <hongjiu.lu@intel.com>
1868 * config/i386/i386.c (processor_target_table): Increase maximum
1869 skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
1872 * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
1873 byte alignment if > 8 byte alignment is preferred.
1874 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1876 2007-06-21 Jakub Jelinek <jakub@redhat.com>
1878 PR tree-optimization/31866
1879 * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
1880 if ASM_EXPR's input is not a SSA_NAME.
1883 * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
1884 but decl is a global var, instead return decl.
1885 * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
1886 even for is_global_var decls, if they are private in some outer
1889 2007-06-21 Richard Guenther <rguenther@suse.de>
1891 PR tree-optimization/32451
1892 * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
1894 2007-06-21 Christian Bruel <christian.bruel@st.com>
1896 * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
1897 * config/sh/sh.c (sh_loads_bankedreg_p): New function.
1898 (push_regs): Changed saving order or banked registers.
1899 (sh_expand_epilogue): Likewise.
1900 * config/sh/sh.h (BANKED_REGISTER_P): New macro.
1901 (FIRST_BANKED_REG): Likewise.
1902 (LAST_BANKED_REG): Likewise.
1903 * config/sh/sh.md (banked) New attribute.
1904 (in_delay_slot): Check banked attribute.
1906 2007-06-20 Sebastian Pop <sebpop@gmail.com>
1908 PR tree-optimization/32075
1909 * tree-data-ref.c (subscript_dependence_tester_1,
1910 analyze_miv_subscript, analyze_overlapping_iterations,
1911 add_distance_for_zero_overlaps, build_classic_dist_vector,
1912 subscript_dependence_tester_1, analyze_overlapping_iterations,
1913 subscript_dependence_tester, access_functions_are_affine_or_constant_p,
1914 compute_affine_dependence, compute_all_dependences): Pass loop_nest
1915 to evolution_function_is_affine_multivariate_p.
1917 2007-06-20 Eric Botcazou <ebotcazou@libertysurf.fr>
1919 * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
1921 2007-06-20 Rask Ingemann Lambertsen <rask@sygehus.dk>
1924 * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
1926 * config/m32c/prologue.md (epilogue_exitd_16): New.
1927 (epilogue_reit_16): New.
1928 (epilogue_exitd): Rename to epilogue_exitd_24.
1929 (epilogue_reit): Rename to epilogue_reit_24.
1931 2007-06-20 Seongbae Park <seongbae.park@gmail.com>
1932 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1934 * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
1936 * haifa-sched.c (queue_to_ready): Don't requeue next insn
1937 if dbg_cnt (sched_insn) reaches the limit.
1938 (choose_ready): New parameter INSN_PTR and new return value.
1939 (schedule_block): Handle dbg_cnt (sched_insn). Handle
1940 the new return value from choose_ready.
1941 * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
1942 (rest_of_handle_global_alloc): New global_alloc_at_func.
1944 2007-06-20 Adam Nemet <anemet@caviumnetworks.com>
1946 PR tree-optimization/25737
1947 * tree.h (struct tree_struct_field_tag): Add new field alias_set.
1948 (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
1949 * tree-flow.h (struct fieldoff): Add new field alias_set.
1950 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
1951 argument addressable_type. Set alias_set of fieldoff.
1952 * tree-ssa-alias.c (create_sft): Add new argument alias_set.
1953 (create_overlap_variables_for): Pass alias_set from fieldoff to
1955 * alias.c (get_alias_set): Use alias_set from SFT if set.
1957 2007-06-20 Hui-May Chang <hm.chang@apple.com>
1959 * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
1960 of a variable as an unsigned HOST_WIDE_INT integer.
1962 2007-06-20 Zdenek Dvorak <dvorakz@suse.cz>
1964 PR rtl-optimization/32405
1965 * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
1967 2007-06-20 Jakub Jelinek <jakub@redhat.com>
1969 * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
1972 * builtins.c: Include diagnostic.h.
1973 (expand_builtin_expect): Make gcc_assert more permissive.
1974 * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
1977 * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
1981 * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
1982 if ACCUMULATE_OUTGOING_ARGS.
1984 2007-06-19 Rask Ingemann Lambertsen <rask@sygehus.dk>
1986 * config/m68hc11/m68hc11.c: Include dataflow header file.
1987 (m68hc11_reorg): Port to dataflow.
1989 2007-06-19 Kenneth Zadeck <zadeck@naturalbridge.com>
1991 * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
1992 (struct df_problem.free_blocks_on_set_blocks): New field.
1993 (struct dataflow.optional_p): New field.
1994 (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
1995 (df_live_set_all_dirty): New function.
1996 * df-scan.c (df_scan_alloc): Initialize optional_p.
1997 (problem_SCAN): Initialize free_blocks_on_set_blocks.
1998 * df-core.c (df_set_blocks): Removed use of
1999 DF_FIRST_OPTIONAL_PROBLEM. Now uses
2000 df_problem.free_blocks_on_set_blocks to determine which blocks are
2002 (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
2003 (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM. Now
2004 uses dataflow.optional_p to determine if problem should be
2006 (rest_of_handle_df_initialize): Only start live problem if
2008 (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
2009 * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
2010 df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
2011 (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
2012 problem_NOTE): Initialize free_blocks_on_set_blocks.
2013 (df_lr_bb_local_compute): Recompute luids if df_live problem is
2015 (df_live_set_all_dirty, df_note_alloc): New function.
2016 * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
2018 * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
2019 * postreload.c (reload_combine): Ditto.
2020 * cse.c (cse_extended_basic_block): Ditto.
2021 * regmove.c (mark_flags_life_zones): Ditto.
2022 * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
2023 erase_matching_seqs): Ditto.
2024 * bt-load.c (compute_defs_uses_and_gen): Ditto.
2025 * integrate (allocate_initial_values): Ditto.
2026 * combine.c (reg_dead_at_p): Ditto.
2027 * resource.c (mark_target_live_regs): Ditto.
2028 * sched-rgn.c (check_live_1, update_live_1): Ditto.
2029 * config/sh/sh.c (find_r0_life_regions): Ditto.
2030 * global.c (rest_of_handle_global_alloc): Only add back df_live
2032 * local-alloc.c (rest_of_handle_local_alloc): Only remove
2034 * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
2036 (if_convert): Make sure df_live is there at -O == 1.
2037 (pass_if_after_combine): Cleanup flags.
2038 * init-regs.c (initialize_uninitialized_regs): Make sure df_live
2039 is there at -O == 1.
2041 2007-06-19 Seongbae Park <seongbae.park@gmail.com>
2043 * config/arm/arm.c (arm_get_frame_offsets): Set
2044 offsets->locals_base to avoid negative stack size.
2045 (thumb1_expand_prologue): Assert on negative stack size.
2047 2007-04-19 Sebastian Pop <sebpop@gmail.com>
2049 PR tree-optimization/32367
2050 * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side
2051 of the chrec has no evolution in that loop.
2052 * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
2054 2007-06-19 Bob Wilson <bob.wilson@acm.org>
2056 * config/xtensa/xtensa.c: Include "df.h".
2057 (xtensa_builtin_saveregs): Use adjust_address instead of
2059 (xtensa_va_start): Invoke make_tree with sizetype for
2060 expand_builtin_saveregs and then convert the result to a pointer.
2061 Use POINTER_PLUS_EXPR. Use size_int instead of build_int_cst.
2062 (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
2063 Subtract argument size from index value as integers and then use
2064 POINTER_PLUS_EXPR to add the result to the array address.
2066 2007-06-19 Rask Ingemann Lambertsen <rask@sygehus.dk>
2069 * config/m32c/m32c.c: Include dataflow header file.
2070 (m32c_emit_prologue): Adjust for prologue insn change.
2071 * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
2072 once inside a PARALLEL. Assume frame size passed in operand 0
2073 includes space to save the fb register.
2074 (prologue_enter_24): Likewise.
2075 (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
2077 2007-06-19 David Daney <ddaney@avtrex.com
2080 * config/mips/mips.md (cprestore): Mark $gp as used.
2082 2007-06-19 Rask Ingemann Lambertsen <rask@sygehus.dk>
2085 * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
2086 (frv_ifcvt_modify_insn): Likewise.
2088 2007-06-19 Richard Guenther <rguenther@suse.de>
2090 * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
2091 only handle positive offsets that fit in a HOST_WIDE_INT.
2093 2007-06-19 Uros Bizjak <ubizjak@gmail.com>
2095 * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
2096 result of rsqrt insn for zero input argument to avoid NaN.
2098 2007-06-19 Richard Guenther <rguenther@suse.de>
2101 * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
2103 2007-06-19 Jakub Jelinek <jakub@redhat.com>
2105 PR tree-optimization/32353
2106 * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
2108 2007-06-19 Nick Clifton <nickc@redhat.com>
2110 * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
2112 2007-06-18 Uros Bizjak <ubizjak@gmail.com>
2115 * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
2116 * config/i386/i386.c (assign_386_stack_local): Assert that
2117 SLOT_VIRTUAL is valid only before virtual regs are instantiated.
2118 (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
2119 Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
2120 * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
2122 2007-06-18 Steve Ellcey <sje@cup.hp.com>
2124 * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
2126 2007-06-18 Seongbae Park <seongbae.park@gmail.com>
2128 PR rtl-optimization/32321
2129 * gcse.c (replace_store_insn): Update the note before
2130 calling emit_insn_after.
2132 2007-06-18 Kenneth Zadeck <zadeck@naturalbridge.com>
2135 * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
2137 * df-problems.c (df_note_bb_compute): Fix dumping info.
2139 2007-06-18 Kazu Hirata <kazu@codesourcery.com>
2141 * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
2142 insn with emit_jump_insn.
2144 2007-06-18 Uros Bizjak <ubizjak@gmail.com>
2146 PR tree-optimization/32383
2147 * targhooks.c (default_builtin_reciprocal): Add new bool argument.
2148 * targhooks.h (default_builtin_reciprocal): Update prototype.
2149 * target.h (struct gcc_target): Update builtin_reciprocal.
2150 * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
2151 * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
2152 where arg1 is not SSA_NAME. Pass true to targetm.builtin_reciprocal
2153 when fndecl is in BUILT_IN_MD class.
2154 (execute_convert_to_rsqrt): Ditto.
2156 * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
2157 argument. Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
2158 Convert BUILT_IN_SQRTF code only when md_fn is false.
2160 2007-06-18 Kaz Kojima <kkojima@gcc.gnu.org>
2162 * bt-load.c (move_btr_def): Fix the order of arguments
2163 to validate_replace_rtx.
2165 2007-06-18 Nathan Sidwell <nathan@codesourcery.com>
2167 * config/m68k/m68k-devices.def: Add 54450..54455.
2169 2007-06-17 Uros Bizjak <ubizjak@gmail.com>
2171 PR rtl-optimization/32366
2172 * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
2173 FLOAT_EXTEND]: Prevent non-scalar modes from entering
2176 2007-06-17 Kenneth Zadeck <zadeck@naturalbridge.com>
2179 * modulo-sched (generate_reg_moves): Added rescan parameter and if
2180 this is true, rescan insn being modified.
2181 (sms_schedule): Added rescan parameter.
2182 (rest_of_handle_sms): Moved freeing of dominance info to before
2183 getting out of cfg_layout.
2185 2007-06-17 Nathan Sidwell <nathan@codesourcery.com>
2187 * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
2188 * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
2191 * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
2192 FL_CF_EMAC from the entry for isac.
2194 * config/m68k/predicates.md (const_call_operand): Adjust comment.
2195 (const_sibcall_operand): New.
2196 (sibcall_operand): Use it.
2197 * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
2198 (m68k_isas): ISAC does not imply FPU or EMAC.
2199 (override_options): Add ISA_C logic for symbolic jump & call.
2201 2007-06-17 Eric Botcazou <ebotcazou@libertysurf.fr>
2203 * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
2204 return mode from the builtin itself.
2205 (sparc_fold_builtin): Fix cast of zero constant.
2207 2007-06-16 Uros Bizjak <ubizjak@gmail.com>
2209 * targhooks.c (default_builtin_reciprocal): New default target hook.
2210 * targhooks.h (default_builtin_reciprocal): Add prototype.
2211 * hooks.c (hook_tree_tree_bool_null): Remove hook.
2212 * hooks.h (hook_tree_tree_bool_null): Remove prototype.
2213 * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
2214 default_builtin_reciprocal.
2216 2007-06-16 Uros Bizjak <ubizjak@gmail.com>
2219 * hooks.c (hook_tree_tree_bool_null): New hook.
2220 * hooks.h (hook_tree_tree_bool_null): Add prototype.
2221 * tree-pass.h (pass_convert_to_rsqrt): Declare.
2222 * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
2223 * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
2224 and convert it to reciprocal a*rfunc(b).
2225 (execute_convert_to_rsqrt): New function.
2226 (gate_convert_to_rsqrt): New function.
2227 (pass_convert_to_rsqrt): New pass definition.
2228 * target.h (struct gcc_target): Add builtin_reciprocal.
2229 * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
2230 (TARGET_INITIALIZER): Initialize builtin_reciprocal with
2231 TARGET_BUILTIN_RECIPROCAL.
2232 * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
2234 * config/i386/i386.h (TARGET_RECIP): New define.
2235 * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
2236 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2237 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2238 and not optimizing for size.
2239 (*rcpsf2_sse): New insn pattern.
2240 (*rsqrtsf2_sse): Ditto.
2241 (rsqrtsf2): New expander. Expand by calling ix86_emit_swsqrtsf
2242 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2243 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2244 and not optimizing for size.
2245 (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
2246 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2247 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2248 and not optimizing for size.
2249 * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
2250 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2251 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2252 and not optimizing for size.
2253 (*sse_rsqrtv4sf2): Do not export.
2255 (sse_rsqrtv4sf2): New expander. Expand by calling ix86_emit_swsqrtsf
2256 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2257 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2258 and not optimizing for size.
2260 * config/i386/i386.opt (mrecip): New option.
2261 * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
2262 (ix86_emit_swsqrtsf): Ditto.
2263 * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
2264 (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
2266 (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
2267 ix86_expand_unop1_builtin.
2268 (ix86_emit_swdivsf): New function.
2269 (ix86_emit_swsqrtsf): Ditto.
2270 (ix86_builtin_reciprocal): New function.
2271 (TARGET_BUILTIN_RECIPROCAL): Use it.
2272 (ix86_vectorize_builtin_conversion): Rename from
2273 ix86_builtin_conversion.
2274 (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
2275 * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
2276 "i386 and x86_64 Options" section.
2277 (Intel 386 and AMD x86_64 Options): Document -mrecip.
2279 2007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
2280 Zdenek Dvorak <dvorakz@suse.cz>
2281 Richard Guenther <rguenther@suse.de>
2282 Kaz Kojima <kkojima@gcc.gnu.org>
2284 * tree-vrp.c (compare_values_warnv): Convert val2 to
2286 (extract_range_from_assert): Create
2287 POINTER_PLUS_EXPR for pointer types.
2288 (extract_range_from_binary_expr): Handle
2289 only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
2291 * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
2292 * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
2293 POINTER_PLUS_EXPR as PLUS_EXPR.
2294 (number_of_iterations_lt_to_ne):
2295 For pointer types, use sizetype when
2296 creating MINUS_EXPR/PLUS_EXPRs.
2297 (assert_loop_rolls_lt): For pointer types, use sizetype when
2298 creating MINUS_EXPR/PLUS_EXPRs.
2299 (number_of_iterations_le): Likewise.
2300 (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
2301 (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
2302 like PLUS_EXPR and MINUS_EXPR.
2303 * tree-pretty-print.c (dump_generic_node): Handle
2305 (op_prio): Likewise.
2306 (op_symbol_1): Likewise.
2307 * optabs.c (optab_for_tree_code): Likewise.
2308 * tree-ssa-loop-manip.c (create_iv): Handle pointer base
2310 * tree-tailcall.c (process_assignment): Mention
2311 POINTER_PLUS_EXPR in a TODO comment.
2312 * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or
2313 MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
2314 not used with a pointer and an integer type.
2315 * tree-scalar-evolution.c (add_to_evolution_1): Convert the
2316 increment using chrec_convert_rhs instead of chrec_convert.
2317 (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
2318 PLUS_EXPR except for the right hand side's type will be
2320 (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
2321 (fold_used_pointer_cast): Kill.
2322 (pointer_offset_p): Kill.
2323 (fold_used_pointer): Kill.
2324 (pointer_used_p): Kill.
2325 (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
2326 call fold_used_pointer.
2327 (instantiate_parameters_1): Convert the increment
2328 using chrec_convert_rhs instead of chrec_convert.
2329 Handle POINTER_PLUS_EXPR as PLUS_EXPR.
2330 * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
2331 instead of PLUS_EXPR.
2332 (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
2333 PLUS_EXPR for pointers.
2334 (std_gimplify_va_arg_expr): Likewise.
2335 (fold_builtin_memory_op): Likewise.
2336 (fold_builtin_strstr): Likewise.
2337 (fold_builtin_strchr): Likewise.
2338 (fold_builtin_strrchr): Likewise.
2339 (fold_builtin_strpbrk): Likewise.
2340 (expand_builtin_memory_chk): Likewise.
2341 (fold_builtin_memory_chk): Likewise.
2342 (std_expand_builtin_va_start): Use
2343 sizetype for the call to make_tree and then convert
2344 to the pointer type.
2345 (fold_builtin_memchr): Use POINTER_PLUS_EXPR
2346 instead of PLUS_EXPR for adding to a pointer.
2347 (std_gimplify_va_arg_expr): Use fold_build2 for
2348 the creating of POINTER_PLUS_EXPR. For the BIT_AND_EXPR, cast
2349 the operands to sizetype first and then cast the BIT_AND_EXPR
2350 back to the pointer type.
2351 * fold-const.c (build_range_check): Handle pointer types
2353 (extract_array_ref): Look for POINTER_PLUS_EXPR instead
2354 of PLUS_EXPR's. Make sure the offset is converted to
2356 (try_move_mult_to_index): Strip the NOPs from the offset.
2357 Remove code argument and replace all uses with PLUS_EXPR.
2358 (fold_to_nonsharp_ineq_using_bound): Handle pointer types
2359 specially. Don't use a pointer type for MINUS_EXPR.
2360 (fold_unary): Handle for (T1)(X op Y),
2361 only p+ as that is the only as that can be handled for
2362 binary operators now.
2363 (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
2365 <case PLUS_EXPR>: Add folding of PTR+INT into
2367 Don't call try_move_mult_to_index.
2368 <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
2369 into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
2370 (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
2371 Don't call try_move_mult_to_index.
2372 (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
2373 (tree_expr_nonzero_p): Likewise.
2374 (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
2375 of PLUS_EXPR for the complex expression folding.
2376 * tree-chrec.c (chrec_fold_plus_poly_poly): If the
2377 first chrec is a pointer type, then the second should
2378 be sizetype and not the first's type.
2379 For POINTER_PLUS_EXPR, use a different right hand side type.
2380 Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2381 (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
2382 different right hand side type.
2383 Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2384 (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
2385 instead of PLUS_EXPR.
2386 When either operand is zero, convert the other operand.
2387 (chrec_apply): Use chrec_convert_rhs
2388 on the argument x instead of chrec_convert.
2389 (reset_evolution_in_loop): For pointer types, the new_evol
2391 (convert_affine_scev): For POINTER_PLUS_EXPR, use a
2392 different right hand side type.
2393 Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2394 (chrec_convert_rhs): New function.
2395 (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
2396 different right hand side type.
2397 Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2398 * tree-chrec.h (chrec_convert_rhs): New prototype.
2399 (build_polynomial_chrec): For pointer types, the right hand
2400 * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
2401 POINTER_PLUS_EXPR instead of PLUS_EXPR's.
2402 Remove subtraction case as it is always addition now.
2403 Make sure the offset is converted to sizetype.
2404 (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
2405 Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
2406 * tree-ssa-loop-ivopts.c (determine_base_object): Abort for
2407 PLUS_EXPR in pointer type.
2408 Handle POINTER_PLUS_EXPR.
2409 (tree_to_aff_combination): Likewise.
2410 (force_expr_to_var_cost): Likewise.
2411 (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
2412 instead of PLUS_EXPR for pointers.
2413 * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
2414 instead of PLUS_EXPR of pointer types.
2415 * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
2417 (check_va_list_escapes): Likewise.
2418 (check_all_va_list_escapes): Likewise.
2419 * dwarf2out.c (loc_descriptor_from_tree_1):
2420 Handle POINT_PLUS_EXPR as a PLUS_EXPR.
2421 * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
2422 (string_constant): Likewise.
2423 * tree-ssa-address.c (tree_mem_ref_addr): When adding
2424 the offset to the base, use POINTER_PLUS_EXPR.
2425 (add_to_parts): Convert the index to sizetype.
2426 (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
2427 * matrix-reorg.c (collect_data_for_malloc_call): Stmt
2428 will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
2429 Offset only holds something for PLUS_EXPR.
2430 (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
2432 (analyze_transpose): POINTER_PLUS_EXPR will only show up now
2434 (analyze_accesses_for_modify_stmt): Likewise.
2435 Remove comment about the type being integral type as it is
2437 (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
2439 (transform_access_sites): POINTER_PLUS_EXPR will only show up now
2441 Correct the type which the artimentic is done in (is now
2444 * tree-data-ref.c (split_constant_offset): Handle
2446 * tree-affine.c (tree_to_aff_combination): Likewise.
2447 * c-typeck.c (build_unary_op): For pointers create the increment
2448 as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
2450 * gimplify.c (gimplify_self_mod_expr): Create a
2451 POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2452 (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
2453 * tree.def (POINTER_PLUS_EXPR): New tree code.
2454 * tree-predcom.c (ref_at_iteration): If we have a pointer
2455 type do the multiplication in sizetype.
2456 * tree-mudflap.c (mf_xform_derefs_1): Create a
2457 POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2458 * tree-ssa-forwprop.c
2459 (forward_propagate_addr_into_variable_array_index):
2460 Don't expect there to be a cast for the index as that
2461 does not exist anymore.
2462 (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
2463 instead of PLUS_EXPR.
2464 Don't check for the first operand of the POINTER_PLUS_EXPR
2465 was the index as it cannot be.
2466 Call forward_propagate_addr_into_variable_array_index with
2467 the SSA_NAME instead of the statement.
2468 * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
2469 (compare_constant): Likewise.
2470 (copy_constant): Likewise.
2471 (compute_reloc_for_constant): Likewise.
2472 (output_addressed_constants): Likewise.
2473 (initializer_constant_valid_p): Likewise.
2474 * tree-ssa.c (tree_ssa_useless_type_conversion_1):
2475 Convert the MIN/MAX of the inner type to the outer
2476 type before comparing them.
2477 * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
2478 POINTER_PLUS_EXPR instead of PLUS_EXPR.
2479 (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
2480 of PLUS_EXPR for pointers.
2481 * tree-inline.c (estimate_num_insns_1): Handle
2483 * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
2484 Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2485 (bump_vector_ptr): Create a POINTER_PLUS_EXPR
2486 instead of PLUS_EXPR for the pointer increment statement.
2487 (vect_update_ivs_after_vectorizer): For pointer types, create
2488 POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
2489 MULT_EXPR in sizetype.
2490 (vect_gen_niters_for_prolog_loop): Add a cast when creating
2492 * tree-object-size.c (plus_expr_object_size): Handle
2493 POINTER_PLUS_EXPR instead of PLUS_EXPR. Removing all the extra
2494 code which is trying to figure out which side is a pointer and
2496 (check_for_plus_in_loops_1): Likewise.
2497 (check_for_plus_in_loops): Likewise.
2498 * c-common.c (pointer_int_sum): Create a
2499 POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2500 * tree-ssa-structalias.c (handle_ptr_arith): Handle
2501 only POINTER_PLUS_EXPR. Removing all the extra
2502 code which is trying to figure out which side is a pointer and
2504 * tree-cfg.c (verify_expr): Add extra checking for pointers and
2505 PLUS_EXPR and MINUS_EXPR.
2506 Also add checking to make sure the operands of POINTER_PLUS_EXPR
2508 * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
2509 with make_tree, instead of a pointer type.
2510 * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
2511 for pointers instead of PLUS_EXPR.
2512 (s390_gimplify_va_arg): Likewise.
2513 * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
2514 instead of PLUS_EXPR when doing addition on pointer
2515 types. Use sizetype for the second operand.
2516 (spu_gimplify_va_arg_expr): Likewise.
2517 * config/sparc/sparc.c (sparc_gimplify_va_arg): Use
2518 POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
2519 a pointer. Don't create a BIT_AND_EXPR for pointer types.
2520 * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
2521 for the pointer addition and also use size_int/sizetype
2523 (ix86_gimplify_va_arg): Likewise.
2524 Perform BIT_AND_EXPR on sizetype arguments.
2525 * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
2526 and convert its result to a pointer type. Use POINTER_PLUS_EXPR
2527 for the pointer additions and also use size_int for the offsets.
2528 (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
2529 additions and also use size_int for the offsets. Perform
2530 BIT_AND_EXPR on sizetype arguments.
2531 * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
2532 POINTER_PLUS_EXPR for pointers and create the
2533 BIT_AND_EXPR in sizetype.
2534 * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
2535 instead of PLUS_EXPR for pointer addition.
2536 (rs6000_va_start): Likewise.
2537 Also use sizetype for the offset.
2538 * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
2539 as PLUS_EXPR/MINUS_EXPR.
2540 (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
2541 PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
2542 Don't use BIT_AND_EXPR on a pointer type, convert the
2543 expression to sizetype first.
2544 * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
2546 (mips_gimplify_va_arg_expr): Likewise.
2547 Don't create BIT_AND_EXPR in a pointer type.
2549 2007-06-15 Eric Christopher <echristo@apple.com>
2551 * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
2552 (x86_64-*-darwin*): Ditto.
2553 * config/i386/darwin.h (CRTEND_SPEC): New. Add support
2556 2007-06-15 Matthew Wilcox <matthew@wil.cx>
2558 * doc/extend.texi: Document behavior of __attribute__((aligned))
2561 2007-06-15 Mark Mitchell <mark@codesourcery.com>
2563 * rtlanal.c (note_stores): Improve documentation.
2565 2007-06-15 Bernd Schmidt <bernd.schmidt@analog.com>
2567 * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
2568 LOCAL_LABEL_PREFIX): Delete.
2569 * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
2570 (bfin_internal_label): Delete.
2572 2007-06-15 Uros Bizjak <ubizjak@gmail.com>
2574 * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
2575 define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
2576 otherwise define to LIBGCC2_TF_CEXT.
2577 * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
2578 (LIBGCC_TF_CEXT): Ditto.
2581 2007-06-14 Seongbae Park <seongbae.park@gmail.com>
2583 PR rtl-optimization/32339
2584 * df-scan.c (df_uses_record): Don't modify flags but just add to
2585 it for df_ref_record.
2587 2007-06-14 Andrew Pinski <andrew_pinski@playstation.sony.com>
2589 * tree-mudflap.c: Fix whitespace issues.
2591 2007-06-15 Kazu Hirata <kazu@codesourcery.com>
2593 * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
2595 2007-06-14 Eric Christopher <echristo@apple.com>
2597 * config/i386/sse.md (movdi_to_sse): Rewrite body.
2598 (movv4sf): Use gcc_unreachable instead of abort.
2600 2007-06-14 Uros Bizjak <ubizjak@gmail.com>
2603 * config/i386/sfp-machine.h (CMPtype): New define.
2604 (mach stubs): Use CMPtype instead of int as a return type.
2606 2007-06-14 Uros Bizjak <ubizjak@gmail.com>
2608 * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
2609 config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
2610 config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
2611 config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
2612 config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
2613 config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
2614 config/soft-fp/soft-fp.h: Update from glibc CVS.
2616 2007-06-14 Bernd Schmidt <bernd.schmidt@analog.com>
2618 * config/bfin/uclinux.h (MFWRAP_SPEC): New.
2620 2007-06-14 Rask Ingemann Lambertsen <rask@sygehus.dk>
2623 * config/v850/v850.c: Include dataflow header file.
2624 (substitute_ep_register): Fix typo.
2626 2007-06-14 Paolo Bonzini <bonzini@gnu.org>
2628 * configure.ac: Fix earlier checkin.
2629 * configure: Regenerated.
2631 2007-06-14 Paolo Bonzini <bonzini@gnu.org>
2633 * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
2634 * aclocal.m4: Regenerate.
2635 * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
2636 ACX_PROG_CC_WARNINGS_ARE_ERRORS,
2637 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
2638 * configure: Regenerate.
2639 * Makefile.in (LOOSE_WARN): Subst loose_warn.
2641 * Makefile.in (quickstrap): Build libgcc too.
2643 2007-06-14 Paolo Bonzini <bonzini@gnu.org>
2645 * configure.ac: Add --enable-checking=df. Explicitly mention that
2646 the variables are initialized as for "release".
2647 * df-core.c: Use it.
2648 * configure: Regenerate.
2649 * config.in: Regenerate.
2651 2007-06-14 Bob Wilson <bob.wilson@acm.org>
2653 * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
2654 validate_replace_rtx instead of replace_rtx.
2655 (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
2657 2007-06-14 Danny Smith <dannysmith@users.sourceforge.net>
2659 * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
2660 (DWARF2_UNWIND_INFO): Override default if configured with
2662 * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
2663 (ENDFILE_SPEC): Add crtend.o.
2664 * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
2665 (ENDFILE_SPEC): Add crtend.o.
2666 (TARGET_USE_JCR_SECTION): Define.
2667 (MD_UNWIND_SUPPORT): Define for 32-bit target.
2669 * config/i386/cygming-crtbegin.c: New file.
2670 * config/i386/cygming-crtend.c: New file.
2672 2007-06-14 Pascal Obry Pascal Obry <obry@adacore.com>
2674 * config/i386/w32-unwind.h: New file.
2676 2007-06-13 Eric Christopher <echristo@apple.com>
2678 * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
2679 the user set a value below STACK_BOUNDARY.
2681 2007-06-13 Thiemo Seufer <ths@networkno.de>
2683 * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
2684 imply -lpthread for -pthread.
2686 2007-06-13 Kazu Hirata <kazu@codesourcery.com>
2688 * basic-block.h: Remove the prototype for
2689 free_basic_block_vars.
2690 * cfglayout.h: Remove the prototype for
2691 insn_locators_initialize.
2692 * tree.h: Remove the prototype for emit_line_note.
2694 * tree-ssa-pre.c (mergephitemp): Remove.
2695 (init_pre): Don't use mergephitemp.
2697 2007-06-13 Eric Christopher <echristo@apple.com>
2699 * config/i386/i386.c (override_options): If we've specified
2700 an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
2702 2007-06-13 Bob Wilson <bob.wilson@acm.org>
2704 * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
2707 2007-06-13 Bernd Schmidt <bernd.schmidt@analog.com>
2709 * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
2710 * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
2711 (eh_store_handler): New pattern.
2712 (eh_return): Emit it instead of a plain move.
2714 2007-06-13 Uros Bizjak <ubizjak@gmail.com>
2716 * config/i386/i386.c (ix86_init_mmx_sse_builtins)
2717 [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
2718 [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
2721 2007-06-13 Bernd Schmidt <bernd.schmidt@analog.com>
2723 * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
2724 (find_next_insn_start, find_load): New functions.
2725 (bfin_reorg): Use them to deal with the fact that parallel insns are
2726 no longer represented as a SEQUENCE.
2728 2007-06-13 Eric Botcazou <ebotcazou@libertysurf.fr>
2730 * config/sparc/sparc.c (sparc_override_options): Initialize
2733 2007-06-13 Dave Korn <dave.korn@artimi.com>
2735 * config/i386/i386.c (ix86_eax_live_at_start_p): Use
2738 2007-06-13 Kazu Hirata <kazu@codesourcery.com>
2740 * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
2741 config/sh/divcost-analysis, dbgcnt.def, df-core.c,
2742 df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
2743 tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
2744 tree-vect-transform.c: Fix comment typos. Follow spelling
2747 2007-06-12 Seongbae Park <seongbae.park@gmail.com>
2749 * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
2750 to the exit block use set.
2751 (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring".
2752 * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
2753 * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
2755 2007-06-12 Seongbae Park <seongbae.park@gmail.com>
2757 * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
2758 * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
2759 to indicate an error.
2760 (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
2762 (dbg_cnt_process_opt): Print an error on a bad argument.
2763 * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
2764 * common.opt (-fdbg-cnt-list): New.
2765 * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
2767 2007-06-12 Eric Botcazou <ebotcazou@adacore.com>
2769 * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
2770 flag on ref-all pointers.
2772 2007-06-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
2775 * expr.c (expand_expr_addr_expr_1): Call expand_expr
2776 for the offset with the modifier as EXPAND_INITIALIZER
2777 if the modifier is EXPAND_INITIALIZER.
2778 (expand_expr_real_1 <case INTEGER_CST>): Don't force to
2779 a register if we had an overflow.
2781 2007-06-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2783 * real.c (real_isfinite): New.
2784 (real_sqrt): Use it.
2785 * real.h (real_isfinite): New.
2786 * builtins.c: Use it.
2788 2007-06-12 Ian Lance Taylor <iant@google.com>
2789 Daniel Berlin <dberlin@dberlin.org>
2792 * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
2793 * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
2794 (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
2795 (DECL_NO_TBAA_P): Define.
2796 (struct tree_decl_common): Add no_tbaa_flag field.
2797 * tree-ssa-structalias.c (struct variable_info): Add
2798 no_tbaa_pruning field.
2799 (new_var_info): Initialize no_tbaa_pruning field.
2800 (unify_nodes): Copy no_tbaa_pruning field.
2801 (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
2802 (dump_solution_for_var): Print no_tbaa_pruning flag.
2803 (set_uids_in_ptset): Add no_tbaa_pruning parameter. Change all
2805 (compute_tbaa_pruning): New static function.
2806 (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
2807 Call compute_tbaa_pruning.
2808 * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
2809 * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
2810 * gimple-low.c (lower_stmt): Likewise.
2811 * tree-gimple.c (is_gimple_stmt): Likewise.
2812 * tree-ssa-operands.c (get_expr_operands): Likewise.
2813 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2814 * tree-inline.c (estimate_num_insns_1): Likewise.
2815 (copy_result_decl_to_var): Likewise.
2816 * expr.c (expand_expr_real_1): Likewise.
2817 * tree-pretty-print.c (dump_generic_node): Likewise.
2818 * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
2819 * omp-low.c (omp_copy_decl_2): Likewise.
2820 * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
2821 * doc/c-tree.texi (Expression trees): Document
2822 CHANGE_DYNAMIC_TYPE_EXPR.
2824 2007-06-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2826 * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
2827 with !HONOR_NANS and !HONOR_INFINITIES.
2828 * simplify-rtx.c (simplify_binary_operation_1): Likewise.
2830 2007-06-12 Tristan Gingold <gingold@adacore.com>
2832 * gcov.c: Comments updated.
2833 (source_info): Add file_time field.
2834 (source_index): New variable.
2835 (mutiple_files): New variable.
2836 (generate_results): New function extracted from process_file.
2837 (process_file): Save and restore chain of functions, generate
2838 results and free structures only if not merging results.
2839 (release_structures): File names are now freed in create_file_names
2840 (create_file_names): Free previous file names.
2841 (find_source): File date is now read here and modifications in
2842 source files is checked here.
2843 (read_graph_file): Only reverse order of functions for the current
2845 (make_gcov_file_name): Do not generate long names if input_name is
2847 (output_lines): If merging results do not display graph, data and
2849 Checking source file modification is done in find_source.
2851 * doc/gcov.texi: Append an s to sourcefile.
2853 2007-06-12 Bernd Schmidt <bernd.schmidt@analog.com>
2855 * config/bfin/bfin.md (UNSPEC_NOP): New constant.
2856 (forced_nop): New pattern.
2857 * config/bfin/bfin.c: Include "df.h".
2858 (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
2859 (bfin_discover_loop): Use df_get_live_in instead of
2860 global_live_at_start.
2861 (bfin_reorder_loops): Pass 0 to cfg_layout_initialize. Call
2862 df_analyze when done.
2863 (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
2864 the insns. Use QImode for the final insn in a bundle. Call
2865 df_insn_rescan on generated NOPs; use gen_forced_nop instead of
2867 (reorder_var_tracking_notes): New function.
2868 (bfin_reorg): Pass no argument to split_all_insns. Don't call
2869 update_life_info. Call df_analyze after scheduling and bundle
2870 generation. Call reorder_var_tracking_notes if generating these
2871 notes. Call df_finish_pass at the end.
2873 2007-06-12 Dirk Mueller <dmueller@suse.de>
2875 * optabs.c (debug_optab_libfuncs): fix gcc_assert to
2876 a comparison, not an assignment.
2878 2007-06-12 Olivier Hainque <hainque@adacore.com>
2880 * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
2881 Request walking the subtrees only, leaving the current is_lhs/val_only
2883 (convert_non_local_reference): Likewise.
2885 2007-06-12 Nathan Sidwell <nathan@codesourcery.com>
2887 * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
2889 2007-06-12 Richard Guenther <rguenther@suse.de>
2891 PR tree-optimization/15353
2892 PR tree-optimization/31657
2893 * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
2894 * timevar.def: Add TV_TREE_IFCOMBINE.
2895 * tree-pass.h (pass_tree_ifcombine): Declare.
2896 * tree-ssa-ifcombine.c: New file.
2897 * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
2898 * tree-flow.h (blocks_in_phiopt_order): Declare.
2899 * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
2900 (tree-ssa-ifcombine.o): New dependencies.
2902 2007-06-12 Uros Bizjak <ubizjak@gmail.com>
2904 PR rtl-optimization/32293
2905 * combine.c (simplify_if_then_else): Truncate return from
2906 nonzero_bits() to correct mode.
2908 2007-06-12 Uros Bizjak <ubizjak@gmail.com>
2910 * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
2911 into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
2913 2007-06-11 Diego Novillo <dnovillo@google.com>
2915 * Makefile.in (reload1.o-warn): Remove.
2917 2007-06-11 Seongbae Park <seongbae.park@gmail.com>
2919 * combine.c (subst): Use reg_overlap_mentioned_p
2920 instead of comparing register numbers directly.
2922 2007-06-11 Kenneth Zadeck <zadeck@naturalbridge.com>
2924 * reload1.c (mark_home_live_1): Use the mode parameter.
2926 2007-06-11 Kenneth Zadeck <zadeck@naturalbridge.com>
2928 * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
2929 df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
2933 2007-06-11 Daniel Berlin <dberlin@dberlin.org>
2935 * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
2937 2007-06-11 Uros Bizjak <ubizjak@gmail.com>
2939 * config/i386/i386.md ("*movtf_internal): Penalize moves to and
2940 from integer registers.
2941 (FP mode splitters): Handle TFmode.
2943 2007-06-11 Eric Botcazou <ebotcazou@adacore.com>
2945 * tree-ssa-structalias.c (find_what_p_points_to): Return false
2946 for ref-all pointers that point-to anything.
2948 2007-06-11 Joseph Myers <joseph@codesourcery.com>
2950 * config/arm/arm.c (arm_output_dwarf_dtprel,
2951 TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
2953 2007-06-11 Bernd Schmidt <bernd.schmidt@analog.com>
2955 * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
2956 movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
2959 2007-06-11 Rafael Avila de Espindola <espindola@google.com>
2961 * gcc/tree.c (signed_or_unsigned_type_for): New.
2962 (unsigned_type_for): Use signed_or_unsigned_type_for.
2963 (signed_type_for): Use signed_or_unsigned_type_for.
2964 * gcc/tree.h (signed_or_unsigned_type_for): New.
2965 (get_signed_or_unsigned_type): Remove.
2966 * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
2967 lang_hooks.types.signed_type
2968 (size_diffop): Likewise.
2969 (all_ones_mask_p): Likewise.
2970 (build_range_check): Likewise.
2971 (fold_cond_expr_with_comparison): Likewise.
2972 (fold_cond_expr_with_comparison): Likewise.
2973 (unextend): Likewise.
2974 (extract_muldiv_1): Likewise.
2975 (fold_single_bit_test_into_sign_test): Likewise.
2976 (fold_binary): Likewise.
2977 (fold_ternary): Likewise.
2978 (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
2979 instead of get_signed_or_unsigned_type.
2980 * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
2981 (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2982 * gcc/expr.c (signed_or_unsigned_type_for): Use
2983 signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
2984 * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
2985 (lhd_signed_or_unsigned_type): Remove.
2986 * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
2987 signed_or_unsigned_type.
2988 (lhd_signed_or_unsigned_type): Remove.
2989 * gcc/expmed.c (make_tree): Use signed_type_for instead of
2990 lang_hooks.types.signed_type.
2991 * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
2992 c_common_signed_type instead of lang_hooks.types.signed_type.
2993 (c_common_unsigned_type): New.
2994 (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
2995 (shorten_compare): Use c_common_unsigned_type instead of
2996 c_common_signed_or_unsigned_type.
2997 (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
2999 * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
3000 lang_hooks.types.signed_type.
3001 * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
3002 (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
3003 LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
3004 * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
3005 instead of unsigned_type_for.
3006 * gcc/c-decl.c (groakdeclarator): Likewise.
3007 * gcc/c-typeck.c (convert_for_assignment): Likewise.
3008 * gcc/c-common.h (c_common_unsigned_type): New.
3010 2007-06-11 Uros Bizjak <ubizjak@gmail.com>
3013 * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
3014 * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
3016 2007-06-11 Uros Bizjak <ubizjak@gmail.com>
3019 * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
3020 into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
3022 2007-06-10 Jan Sjodin <jan.sjodin@amd.com>
3023 Sebastian Pop <sebpop@gmail.com>
3025 * lambda-code.c (remove_iv): New.
3026 (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
3028 2007-06-10 Zdenek Dvorak <dvorakz@suse.cz>
3030 * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
3031 * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
3032 * tree-ssa-loop-prefetch.c: Include optabs.h.
3033 (FENCE_FOLLOWING_MOVNT): New macro.
3034 (struct mem_ref): Add independent_p and storent_p fields.
3035 (record_ref): Initalize the new fields.
3036 (gather_memory_references_ref): Return true if the reference
3038 (gather_memory_references): Check whether all memory accesses
3039 in loop were recorded.
3040 (should_issue_prefetch_p): Return false for nontemporal stores.
3041 (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
3042 may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
3043 (determine_loop_nest_reuse): Detect independent memory references.
3044 (loop_prefetch_arrays): Call mark_nontemporal_stores.
3045 * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
3046 * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
3047 * config/i386/i386.h (x86_mfence): Declare.
3048 (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
3049 * config/i386/i386.c (x86_mfence): New variable.
3050 (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
3052 * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
3053 * optabs.c (init_optabs): Initialize storent_optab.
3054 * optabs.h (enum optab_index): Add OTI_storent.
3055 (storent_optab): Declare.
3056 * genopinit.c (optabs): Add initialization for storent_optab.
3057 * tree.h (MOVE_NONTEMPORAL): New macro.
3058 * expr.c (expand_assignment, store_expr, store_constructor_field,
3059 store_constructor, store_field, expand_expr_real_1): Propagate
3060 nontemporality of the expanded store.
3061 (emit_storent_insn): New function.
3062 * expr.h (expand_assignment, store_expr): Declaration changed.
3063 * function.c (assign_parm_setup_reg): Pass false as nontemporality
3064 to expand_assignment.
3065 * stmt.c (expand_asm_expr): Ditto.
3066 * calls.c (initialize_argument_information): Pass false as
3067 nontemporality to store_expr.
3068 * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
3071 2007-06-09 Daniel Berlin <dberlin@dberlin.org>
3073 * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
3075 (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
3077 2007-06-09 Daniel Berlin <dberlin@dberlin.org>
3079 * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
3080 and allow DECL_P here.
3082 2007-06-09 Zdenek Dvorak <dvorakz@suse.cz>
3084 * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
3085 follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
3086 track of the size of the expression.
3087 * cfghooks.c (merge_blocks): Remove block from loops structure only
3088 after call of the merge_blocks hook.
3090 2007-06-09 Tom Tromey <tromey@redhat.com>
3092 * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
3093 (deprecated_state): Removed.
3094 (start_decl): Update.
3095 (enum deprecated_states): Moved earlier.
3096 (groktypename): Update.
3097 (push_parm_decl): Likewise.
3098 (grokfield): Likewise.
3099 (start_function): Likewise.
3101 2007-06-09 Ian Lance Taylor <iant@google.com>
3103 PR tree-optimization/32169
3104 * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
3105 CONVERT_EXPR, check whether min and max both converted to an
3106 overflow infinity representation.
3108 2007-06-08 Eric Botcazou <ebotcazou@adacore.com>
3110 * reload1.c (fixup_abnormal_edges): Clear bb field for insns
3111 not inserted on the edge.
3113 2007-06-08 Bob Wilson <bob.wilson@acm.org>
3115 * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
3116 instructions if they are supported.
3117 (__divsi3, __umodsi3, __modsi3): Likewise.
3118 (__ashldi3, __ashrdi3, __lshrdi3): New.
3119 * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
3121 2007-06-08 Harsha Jagasia <harsha.jagasia@amd.com>
3122 Tony Linthicum <tony.linthicum@amd.com>
3124 * doc/invoke.texi: Add fvect-cost-model flag.
3125 * common.opt (fvect-cost-model): New flag.
3126 * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
3127 cost fields in stmt_vec_info struct for STMT.
3128 * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
3129 fields in stmt_vec_info struct and access functions for the same.
3130 (TARG_COND_BRANCH_COST): Define cost of conditional branch.
3131 (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
3132 load, store and vector to scalar operation.
3133 (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
3134 (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
3135 (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
3136 (TARG_VEC_STORE_COST): Define cost of vector store.
3137 (vect_estimate_min_profitable_iters): Define new function.
3138 * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
3139 check to evaluate if loop iterations are less than minimum profitable
3140 iterations determined by cost model or minimum vect loop bound defined
3141 by user, whichever is more conservative.
3142 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
3143 run-time check to evaluate if loop iterations are less than minimum
3144 profitable iterations determined by cost model or minimum vect loop
3145 bound defined by user, whichever is more conservative.
3146 (vect_estimate_min_profitable_iterations): New function to estimate
3147 mimimimum iterartions required for vector version of loop to be
3148 profitable over scalar version.
3149 (vect_model_reduction_cost): New function.
3150 (vect_model_induction_cost): New function.
3151 (vect_model_simple_cost): New function.
3152 (vect_cost_strided_group_size): New function.
3153 (vect_model_store_cost): New function.
3154 (vect_model_load_cost): New function.
3155 (vectorizable_reduction): Call vect_model_reduction_cost during
3157 (vectorizable_induction): Call vect_model_induction_cost during
3159 (vectorizable_load): Call vect_model_load_cost during analysis phase.
3160 (vectorizable_store): Call vect_model_store_cost during analysis phase.
3161 (vectorizable_call, vectorizable_assignment, vectorizable_operation,
3162 vectorizable_promotion, vectorizable_demotion): Call
3163 vect_model_simple_cost during analysis phase.
3165 2007-06-08 Simon Baldwin <simonb@google.com>
3167 * reg-stack.c (get_true_reg): Readability change. Moved default case
3168 label into direct switch statement scope.
3170 2007-06-08 Simon Baldwin <simonb@google.com>
3172 * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
3173 in gcc_assert() with '==' comparison.
3175 2007-06-08 Uros Bizjak <ubizjak@gmail.com>
3177 * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
3178 TARGET_ABM handling of x86_popcnt variable.
3180 2007-06-08 Uros Bizjak <ubizjak@gmail.com>
3182 * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
3183 __builtin_copysignq and __builtin_infq built-in functions.
3185 2007-06-08 Uros Bizjak <ubizjak@gmail.com>
3187 * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
3188 SSE4.2 section. Correct built-in function names in SSE4A section.
3190 2007-06-08 Uros Bizjak <ubizjak@gmail.com>
3192 PR tree-optimization/32243
3193 * tree-vect-transform.c (vectorizable_type_promotion): Move check
3194 for ncopies after ratio check between nunits_out and nunits_in.
3195 (vectorizable_type_demotion): Remove single-use variable "scalar_type".
3197 2007-06-08 Dorit Nuzman <dorit@il.ibm.com>
3199 PR tree-optimization/32224
3200 * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
3201 vectorization upon a non GIMPLE_MODIFY_STMT.
3203 2007-06-08 Christian Bruel <christian.bruel@st.com>
3206 * config/sh/sh.md (doloop_end): New pattern and splitter.
3207 * loop-iv.c (simple_rhs_p): Check for hardware registers.
3209 2007-06-08 Zdenek Dvorak <dvorakz@suse.cz>
3212 * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
3214 (verify_dominators): Do not change dominance tree.
3216 2007-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
3218 * config/sh/constraints.md: New file.
3219 * config/sh/sh.c: Include tm-constrs.h.
3220 (reg_class_from_letter): Remove.
3221 (prepare_cbranch_operands): Use satisfies_constraint_*
3222 function instead of macro.
3223 (andcosts, broken_move, sh_secondary_reload): Likewise.
3224 * config/sh/predicates.md (trapping_target_operand): Likewise.
3225 (and_operand, arith_operand, arith_reg_or_0_operand,
3226 cmp_operand, logical_operand, target_operand,
3227 ua_address_operand, ua_offset, xor_operand): Likewise.
3228 * config/sh/sh.md: Include constraints.md.
3229 (*movsicc_t_false): Use satisfies_constraint_* function
3231 (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
3232 lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
3233 movdi_const_16bit+1, beq, bne, *ptb): Likewise.
3234 * config/sh/sh.h (reg_class_from_letter): Remove prototype.
3235 (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
3236 (REG_CLASS_FROM_CONSTRAINT): Remove.
3237 (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
3238 CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
3239 CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
3240 CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
3241 CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
3242 (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
3243 function instead of macro.
3244 (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
3245 (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
3246 EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
3247 EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
3248 (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
3249 (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
3250 (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
3251 (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
3252 (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
3253 EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
3254 EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
3255 EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
3256 EXTRA_CONSTRAINT_STR): Likewise.
3257 (GO_IF_LEGITIMATE_INDEX): Fix indentation.
3259 2007-06-07 Geoffrey Keating <geoffk@apple.com>
3261 * config/i386/darwin.h (STACK_BOUNDARY): Define.
3263 2007-06-07 Simon Martin <simartin@users.sourceforge.net>
3266 * c-common.h (flag_cpp0x): Replaced by...
3267 (cxx_dialect): ... this new variable specifying the C++ dialect that
3269 * c-common.c (flag_cpp0x): Removed.
3270 (cxx_dialect): Defined.
3271 * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
3273 * c-opts.c (c_common_post_options): Likewise.
3274 (set_std_cxx98): Set cxx_dialect to cxx98.
3275 (set_std_cxx0x): Set cxx_dialect to cxx0x.
3277 2007-06-07 Geoffrey Keating <geoffk@apple.com>
3278 Hui-May Chang <hm.chang@apple.com>
3280 * doc/invoke.texi (Darwin Options): Update documentation for
3281 -mmacosx-version-min.
3282 * config.gcc (*-*-darwin*): Set extra_gcc_objs.
3283 * config/darwin-driver.c: New file.
3284 * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
3285 * config/t-darwin (darwin-driver.o): New rule.
3287 * config/darwin-c.c (version_as_macro): Ignore low digit.
3289 2007-06-07 Uros Bizjak <ubizjak@gmail.com>
3291 * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
3292 (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
3293 (CSGNMODE): New mode macro.
3294 (CSGNVMODE): New mode attribute.
3295 (copysign<mode>3): Rename from copysingsf3 and copysigndf3. Macroize
3296 expander using CSGNMODE mode macro. Handle TFmode.
3297 (copysign<mode>3_const): Rename from copysignsf3_const and
3298 copysigndf3_const. Macroize pattern using CSGNMODE mode macro.
3300 (copysign<mode>3_var): Rename from copysignsf3_var and
3301 copysigndf3_var. Macroize pattern using CSGNMODE mode macro.
3303 (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
3304 mode macro. Handle TFmode.
3305 * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
3306 (iortf3, *iortf3): Ditto.
3307 (xortf3, *xortf3): Ditto.
3308 * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
3309 TFmode and TImode masks.
3310 (ix86_expand_copysign): Expand TFmode copysign insn.
3311 (IX86_BUILTIN_INFQ): New.
3312 (IX86_BUILTIN_FABSQ): Ditto.
3313 (IX86_BUILTIN_COPYSIGNQ): Ditto.
3314 (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
3315 [__builtin_fabsq]: Ditto.
3316 [__builtin_copysignq]: Ditto.
3317 (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
3318 [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
3319 [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
3320 ix86_expand_binop_builtin().
3322 2007-06-07 Bob Wilson <bob.wilson@acm.org>
3324 * config/xtensa/lib1funcs.asm: Clean up whitespace.
3326 2007-06-07 Steve Ellcey <sje@cup.hp.com>
3329 * rtl.h (push_to_sequence2): New.
3330 * emit-rtl.c (push_to_sequence2): New.
3331 * function.c (assign_parm_data_all): Add new fields.
3332 (assign_parm_setup_block): Call push_to_sequence2 instead of
3334 (assign_parm_setup_reg): Ditto.
3335 (assign_parm_setup_stack): Ditto.
3336 (assign_parms_unsplit_complex): Ditto.
3337 (assign_parms): Change field name.
3339 2007-06-07 Zdenek Dvorak <dvorakz@suse.cz>
3341 PR tree-optimization/32220
3342 * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
3343 phi node is reached before defining statement.
3345 2007-06-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
3348 * tree-vect-transform.c (vectorizable_call): Call update_stmt
3349 after changing the right hand side of the assignment.
3351 2007-06-06 Eric Christopher <echristo@apple.com>
3353 * config.gcc (i?86-*-darwin*): Remove arch parameter.
3354 (x86_64-*-darwin*): Ditto.
3355 * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
3356 (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
3358 2007-06-06 Thomas Neumann <tneumann@users.sourceforge.net>
3360 * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
3362 (add_key): Likewise.
3363 * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
3364 * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
3366 * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
3368 (add_cost_one_coalesce): Likewise.
3369 * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
3370 variable names. Rename orig to orig_name for consistency.
3371 * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
3373 (cprop_into_successor_phis): Avoid using C++ keywords as variable
3375 (record_equivalences_from_stmt): Likewise.
3376 * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
3377 the coding conventions.
3378 (memory_ssa_name_same): Likewise.
3379 (dse_optimize_stmt): Likewise.
3380 (dse_record_phis): Likewise.
3381 (dse_finalize_block): Likewise.
3382 * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
3383 keywords as variable names.
3384 (may_move_till): Cast according to the coding conventions.
3385 (force_move_till_expr): Avoid using C++ keywords as variable names.
3386 (force_move_till): Cast according to the coding conventions.
3387 (memref_hash): Likewise.
3388 (memref_eq): Likewise.
3389 (gather_mem_refs_stmt): Likewise.
3390 * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
3391 using C++ keywords as variable names.
3392 (idx_find_step): Cast according to the coding conventions.
3393 (idx_record_use): Likewise.
3394 (find_depends): Likewise.
3395 (prepare_decl_rtl): Likewise.
3396 (mbc_entry_hash): Likewise.
3397 (mbc_entry_eq): Likewise.
3398 * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
3399 (simplify_replace_tree): Avoid using C++ keywords as variable names.
3400 (idx_infer_loop_bounds): Cast according to the coding conventions.
3401 * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
3402 * tree-ssa-math-opts.c (occ_new ): Likwise.
3403 * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
3405 * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
3407 (add_use_op): Likewise.
3408 (add_vop): Likewise.
3409 (add_vuse_op): Likewise.
3410 (add_vdef_op): Likewise.
3411 (get_expr_operands): Likewise.
3412 (push_stmt_changes): Use type safe memory macros.
3413 * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
3414 keywords as variable names.
3415 (conditional_replacement): Likewise.
3416 (minmax_replacement): Likewise.
3417 (abs_replacement): Likewise.
3418 * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
3420 (insert_fake_stores): Avoid using C++ keywords as variable names.
3421 * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
3423 * tree-ssa-structalias.c (heapvar_lookup): Likewise.
3424 (heapvar_insert): Use type safe memory macros.
3425 (new_var_info): Cast according to the coding conventions.
3426 (new_constraint): Likewise.
3427 (remove_preds_and_fake_succs): Use type safe memory macros.
3428 * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
3430 (thread_single_edge): Likewise.
3431 (thread_through_loop_header): Likewise.
3433 2007-06-06 Eric Christopher <echristo@apple.com>
3435 * config/i386/i386.c (override_options): Move handling
3436 of TARGET_SUBTARGET* earlier.
3438 2007-06-06 Paolo Bonzini <bonzini@gnu.org>
3440 * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
3443 2007-06-06 Zdenek Dvorak <dvorakz@suse.cz>
3445 * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
3446 emited outside of basic block.
3447 * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
3449 * rtl.h (delete_insn_chain): Declaration changed.
3450 * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
3452 (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
3453 (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
3454 rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
3455 to delete_insn_chain.
3456 (rtl_verify_flow_info_1): Verify that the insns in header and footer
3457 do not have bb field set.
3458 (rtl_verify_flow_info): Verify that insns between basic blocks do not
3460 * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
3461 * cfgcleanup.c (try_optimize_cfg): Ditto.
3463 2007-06-06 Thomas Neumann <tneumann@users.sourceforge.net>
3465 * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
3466 (lambda_body_vector_new): Use type safe memory macros.
3467 (lambda_linear_expression_new): Likewise.
3468 (lambda_loopnest_new): Likewise.
3469 (lambda_lattice_new): Likewise.
3470 (replace_uses_equiv_to_x_with_y): Cast according to the coding
3471 conventions. Use type safe memory macros.
3472 * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
3473 (lambda_body_vector_s): Likewise.
3474 * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
3475 * lambda-trans.c (lambda_trans_matrix_new): Likewise.
3477 2007-06-06 Richard Guenther <rguenther@suse.de>
3479 * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
3480 if we need to schedule cfg_cleanup.
3481 (tree_ssa_forward_propagate_single_use_vars): Do so.
3483 2007-06-06 Ian Lance Taylor <iant@google.com>
3485 * fold-const.c (merge_ranges): If range_successor or
3486 range_predecessor fail, just return 0.
3488 2007-06-06 Uros Bizjak <ubizjak@gmail.com>
3490 PR tree-optimization/32216
3491 * tree-vectorizer.c (supportable_widening_operation): Determine
3492 signedness of FIX_TRUNC_EXPR from output operand.
3493 (supportable_narrowing_operation): Ditto.
3494 * tree-vect-generic.c (expand_vector_operations_1): Determine
3495 signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
3498 2007-06-06 Thomas Neumann <tneumann@users.sourceforge.net>
3500 * config/i386/i386.c (enum pta_flags): Move out of struct scope...
3501 (struct pta): ...from here. Change flags to unsigned to avoid
3502 excessive casting (as it is used as a bit mask).
3503 (override_options): Add casts according to the coding convenventions.
3504 (x86_64_elf_unique_section): Likewise.
3505 (examine_argument): Avoid using C++ keywords as variable names.
3506 (construct_container): Likewise.
3507 (legitimize_pic_address): Likewise.
3508 (get_dllimport_decl): Cast according to the coding conventions. Use
3509 type safe memory macros.
3510 (legitimize_address): Cast according to the coding conventions.
3511 (emit_i387_cw_initialization): Corrected the type of slot to enum
3513 (ix86_init_machine_status): Use type safe memory macros.
3514 (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
3515 (bdesc_pcmpistr): Likewise.
3516 (bdesc_crc32): Likewise.
3517 (bdesc_sse_3arg): Likewise.
3518 (bdesc_2arg): Likewise.
3519 (bdesc_1arg): Likewise.
3520 (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
3521 (ix86_expand_sse_pcmpistr): Likewise.
3522 (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
3523 (ix86_builtin_vectorized_function): Change the type of fn to unsigned
3524 int to match the langhook definition.
3525 (ix86_builtin_conversion): Change the type of code to unsigned init to
3526 match the langhook definition.
3527 (ix86_preferred_reload_class): Avoid using C++ keywords as variable
3529 (ix86_preferred_output_reload_class): Likewise.
3530 (ix86_cannot_change_mode_class): Likewise.
3531 (ix86_memory_move_cost): Likewise.
3532 (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
3533 avoid excessive casting later on.
3534 (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
3536 2007-06-06 Uros Bizjak <ubizjak@gmail.com>
3538 * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
3539 as flags setting insn.
3540 (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
3542 2007-06-06 Uros Bizjak <ubizjak@gmail.com>
3544 * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
3545 (UNSPEC_ROUND): New.
3546 ("sse4_1_round<mode>2"): New insn pattern.
3547 ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
3549 ("floor<mode>2"): Rename from floordf2 and floorsf2. Macroize
3550 expander using SSEMODEF mode macro. Expand using
3551 "sse4_1_round<mode>2" pattern for SSE4.1 targets.
3552 ("ceil<mode>2"): Rename from ceildf2 and ceilsf2. Macroize
3553 expander using SSEMODEF mode macro. Expand using
3554 "sse4_1_round<mode>2" pattern for SSE4.1 targets.
3555 ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2. Macroize
3556 expander using SSEMODEF mode macro. Expand using
3557 "sse4_1_round<mode>2" pattern for SSE4.1 targets.
3558 * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
3559 UNSPEC_ROUND instead of UNSPEC_ROUNDP.
3560 ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
3563 2007-06-06 Jan Sjodin <jan.sjodin@amd.com>
3564 Sebastian Pop <sebpop@gmail.com>
3566 * lambda.h (build_linear_expr): New.
3567 * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
3568 Use build_linear_expr, call fold and force_gimple_operand.
3569 (lambda_loopnest_to_gcc_loopnest): Check that there is
3570 something to insert.
3571 * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
3573 2007-06-05 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
3575 PR preprocessor/23479
3576 * doc/extend.texi: Document the 0b-prefixed binary integer
3579 2007-06-05 Uros Bizjak <ubizjak@gmail.com>
3581 PR tree-optimization/32215
3582 * tree-vectorizer.c (supportable_widening_operation): Return false
3583 for unsupported FIX_TRUNC_EXPR tree code.
3584 (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
3586 2007-06-06 Nathan Froyd <froydnj@codesourcery.com>
3588 * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
3589 register on SPE targets. Change documentation to reflect
3591 * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
3592 Change FIXED_SCRATCH to 14 and document why we're keeping r14
3593 out of the register allocation pool.
3594 (rs6000_reg_live_or_pic_offset_p): New function.
3595 (rs6000_emit_prologue): Move the actual saving of LR up to free
3596 r0 for holding r11. Split saving of SPE 64-bit registers into
3597 its own case. Ensure that offsets will always be in-range for
3598 'evstdd' by using r11 as a scratch register to point at the start
3599 of the SPE save area. Save r11 if necessary, as it is the static
3601 (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
3602 into its own case. Ensure that offsets will always be in-range
3603 for 'evldd' by using r11 as a scratch register to point at the
3604 start of the SPE save area. Also adjust r11 when restoring
3605 the stack pointer to compensate for pre-loading r11.
3607 2007-06-05 Thomas Neumann <tneumann@users.sourceforge.net>
3609 * cfg.c (init_flow): Use type safe memory macros.
3610 (alloc_block): Likewise.
3611 (unchecked_make_edge): Likewise.
3612 (dump_flow_info): Avoid using C++ keywords as variable names.
3613 (copy_original_table_clear): Cast according to the coding conventions.
3614 (copy_original_table_set): Likewise.
3615 * cfgexpand (label_rtx_for_bb): Likewise.
3616 (expand_gimple_basic_block): Likewise.
3617 * cfghooks.c (dump_bb): Likewise.
3618 (lv_adjust_loop_header_phi): Avoid using C++ keywords as
3620 (lv_add_condition_to_bb): Likewise.
3621 * cfglayout (relink_block_chain): Cast according to the coding
3623 (fixup_reorder_chain): Likewise.
3624 (fixup_fallthru_exit_predecessor): Likewise.
3625 * cfgloop.c (glb_enum_p): Likewise.
3626 (get_exit_description): Likewise.
3627 (dump_recorded_exit): Likewise.
3628 * cfgloop.h (enum loop_estimation): Move out of struct scope...
3629 (struct loop): ... from here.
3630 * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
3632 * cfgrtl.c (rtl_create_basic_block): Likewise.
3633 (rtl_split_block): Likewise.
3634 (rtl_dump_bb): Likewise.
3635 (cfg_layout_split_block): Likewise.
3636 (init_rtl_bb_info): Use typesafe memory macros.
3638 * graphds.h (struct graph_edge): Renamed edge to graph_edge.
3639 * graphds.h: Updated all usages of edge to graph_edge.
3640 * graphds.c: Likewise.
3641 * cfgloopanal.c: Likewise.
3643 2007-06-05 Ian Lance Taylor <iant@google.com>
3645 * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
3646 PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
3647 (extract_range_from_assert): Set TREE_NO_WARNING when creating an
3649 (test_for_singularity): Likewise.
3651 2007-06-05 H.J. Lu <hongjiu.lu@intel.com>
3653 * config/i386/constraints.md ("Y2"): Replaced by ...
3655 * config/i386/i386.md: Likewise.
3656 * config/i386/mmx.md: Likewise.
3657 * config/i386/sse.md: Likewise.
3659 2007-06-05 H.J. Lu <hongjiu.lu@intel.com>
3661 * config/i386/constraints.md ("z"): Replaced by ...
3663 * config/i386/sse.md (sse4_1_blendvpd): Likewise.
3664 (sse4_1_blendvps): Likewise.
3665 (sse4_1_pblendvb): Likewise.
3666 (sse4_2_pcmpestr): Likewise.
3667 (sse4_2_pcmpestrm): Likewise.
3668 (sse4_2_pcmpestr_cconly): Likewise.
3669 (sse4_2_pcmpistr): Likewise.
3670 (sse4_2_pcmpistrm): Likewise.
3671 (sse4_2_pcmpistr_cconly): Likewise.
3673 2007-06-05 Razya Ladelsky <razya@il.ibm.com>
3675 * matrix-reorg.c (transform_access_sites): Fix computation.
3676 (transform_allocation_sites): Same.
3678 2007-06-05 Uros Bizjak <ubizjak@gmail.com>
3680 * config/i386/i386.c (override_options): Use
3681 TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
3683 2007-06-05 Uros Bizjak <ubizjak@gmail.com>
3685 * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
3686 (nonimm_not_xmm0_operand): Ditto.
3687 * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
3688 as operand[0] and operand[1] predicate. Use "nonimm_not_xmm0_operand"
3689 as operand[2] predicate. Require "z" class XMM register for
3690 operand[3]. Adjust asm template.
3691 ("sse4_1_blendvpd"): Ditto.
3692 ("sse4_1_pblendvb"): Ditto.
3693 * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
3694 force op2 into xmm0 register for variable blend instructions.
3696 2007-06-04 Tom Tromey <tromey@redhat.com>
3698 * c-tree.h (start_enum): Update.
3699 (build_enumerator): Likewise.
3700 * c-decl.c (enum_next_value): Removed.
3701 (enum_overflow): Likewise.
3702 (start_enum): Add c_enum_contents argument. Don't use globals.
3703 (build_enumerator): Likewise.
3704 * c-tree.h (struct c_enum_contents): New struct.
3706 2007-06-04 Tom Tromey <tromey@redhat.com>
3708 * c-common.c (c_common_get_alias_set): Fix indentation.
3710 2007-06-04 Ian Lance Taylor <iant@google.com>
3712 * tree-vrp.c (adjust_range_with_scev): When loop is not expected
3713 to overflow, reduce overflow infinity to regular infinity.
3714 (vrp_var_may_overflow): New static function.
3715 (vrp_visit_phi_node): Check vrp_var_may_overflow.
3717 2007-06-04 Kazu Hirata <kazu@codesourcery.com>
3719 * stor-layout.c (layout_type): Remove duplicate code.
3721 2007-06-04 Uros Bizjak <ubizjak@gmail.com>
3724 * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
3725 before build_common_builtin_nodes ().
3727 2007-06-04 Steve Ellcey <sje@cup.hp.com>
3730 * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
3732 2007-06-04 Jan Hubicka <jh@suse.cz>
3734 * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
3735 reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
3736 instead of _stat version.
3738 2007-06-03 Zdenek Dvorak <dvorakz@suse.cz>
3740 PR tree-optimization/32194
3741 * tree-predcom.c (determine_offset): Check that both references have
3744 2007-06-03 Zdenek Dvorak <dvorakz@suse.cz>
3746 * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
3747 Change dom_bbs to vector. Add argument to iterate_fix_dominators call.
3748 * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
3749 * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
3750 Add argument to iterate_fix_dominators call.
3751 (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
3752 * gcse.c (hoist_code): Change domby to vector.
3753 * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
3754 Add argument to iterate_fix_dominators call.
3755 * loop-doloop.c (doloop_modify): Changed recount_dominator to
3756 recompute_dominator.
3757 * lambda-code.c (perfect_nestify): Ditto.
3758 * cfgloopanal.c: Include graphds.h.
3759 (struct edge, struct vertex, struct graph, dump_graph, new_graph,
3760 add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
3761 (mark_irreducible_loops): Use graphds_scc. Remove argument from
3763 * graphds.c: New file.
3764 * graphds.h: New file.
3765 * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
3766 (get_dominated_by, get_dominated_by_region): Change return type to
3768 (verify_dominators): Recompute all dominators and compare the results.
3769 (recount_dominator): Renamed to ...
3770 (recompute_dominator): ... this. Do not check that the block is
3772 (iterate_fix_dominators): Reimplemented.
3773 (prune_bbs_to_update_dominators, root_of_dom_tree,
3774 determine_dominators_for_sons): New functions.
3775 * et-forest.c (et_root): New function.
3776 * et-forest.h (et_root): Declare.
3777 * Makefile.in (graphds.o): Add.
3778 (cfgloopanal.o): Add graphds.h dependency.
3779 (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
3780 * basic-block.h (get_dominated_by, get_dominated_by_region,
3781 iterate_fix_dominators): Declaration changed.
3782 (recount_dominator): Renamed to ...
3783 (recompute_dominator): ... this.
3784 * tree-ssa-threadupdate.c (thread_block): Free dominance info.
3785 (thread_through_all_blocks): Do not free dominance info.
3787 2007-06-03 Andreas Schwab <schwab@suse.de>
3789 * config/m68k/m68k.c (override_options): Don't override
3791 * config/m68k/m68k-modes.def (SF, DF): Define to use
3792 motorola_single_format and motorola_double_format, resp.
3793 * real.c (motorola_single_format): Renamed from
3794 coldfire_single_format.
3795 (motorola_double_format): Renamed from coldfire_double_format.
3796 (encode_ieee_extended): Generate a proper canonical NaN image
3797 respecting canonical_nan_lsbs_set.
3798 (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
3800 * real.h: Adjust declarations.
3802 2007-06-03 Kaz Kojima <kkojima@gcc.gnu.org>
3805 * config/sh/sh.md (symGOT_load): Don't schedule insns when
3806 the symbol is generated with the stack protector.
3808 2007-06-03 Kazu Hirata <kazu@codesourcery.com>
3810 * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
3811 (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
3813 * doc/extend.texi (interrupt): Mention m68k.
3815 2007-06-02 Uros Bizjak <ubizjak@gmail.com>
3817 * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
3818 safe_vector_operand() if input operand is VECTOR_MODE_P operand.
3819 (ix86_expand_sse_pcmpestr): Do not check operands for
3820 "register_operand", when insn operand predicate is "register_operand".
3821 (ix86_expand_sse_pcmpistr): Ditto.
3823 2007-06-02 H.J. Lu <hongjiu.lu@intel.com>
3824 Uros Bizjak <ubizjak@gmail.com>
3826 * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
3827 (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
3828 (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
3829 (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
3830 * config/i386/constraints.md ("z"): New register constraint
3831 for members of SSE_FIRST_REG class.
3832 * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
3833 * config/i386/i386.c (regclass_map): Change class of %xmm0 to
3834 SSE_FIRST_REG class.
3835 (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
3836 (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
3837 (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
3838 (IX86_BUILTIN_PCMPESTRM128): Likewise.
3839 (IX86_BUILTIN_PCMPESTRA128): Likewise.
3840 (IX86_BUILTIN_PCMPESTRC128): Likewise.
3841 (IX86_BUILTIN_PCMPESTRO128): Likewise.
3842 (IX86_BUILTIN_PCMPESTRS128): Likewise.
3843 (IX86_BUILTIN_PCMPESTRZ128): Likewise.
3844 (IX86_BUILTIN_PCMPISTRI128): Likewise.
3845 (IX86_BUILTIN_PCMPISTRM128): Likewise.
3846 (IX86_BUILTIN_PCMPISTRA128): Likewise.
3847 (IX86_BUILTIN_PCMPISTRC128): Likewise.
3848 (IX86_BUILTIN_PCMPISTRO128): Likewise.
3849 (IX86_BUILTIN_PCMPISTRS128): Likewise.
3850 (IX86_BUILTIN_PCMPISTRZ128): Likewise.
3851 (struct builtin_description): Change "flag" field to unsigned.
3852 (bdesc_pcmpestr): New builtin description table.
3853 (bdesc_pcmpistr): Likewise.
3854 (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
3855 v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
3856 Initialize pcmp[ei]str[im] insns for SSE4.2.
3857 (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
3858 (ix86_expand_sse_pcmpistr): Likewise.
3859 (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
3860 * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
3861 (UNSPEC_PCMPISTR): Likewise.
3862 * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
3863 (sse4_2_pcmpestri):New isns pattern.
3864 (sse4_2_pcmpestrm): Likewise.
3865 (sse4_2_pcmpestr_cconly): Likewise.
3866 (sse4_2_pcmpistr): New insn patern and splitter.
3867 (sse4_2_pcmpistri):New isns pattern.
3868 (sse4_2_pcmpistrm): Likewise.
3869 (sse4_2_pcmpistr_cconly): Likewise.
3870 * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
3873 2007-06-01 David Daney <ddaney@avtrex.com>
3875 * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
3876 LOADGP_ABSOLUTE and not binds_local_p.
3878 2007-06-01 Geoffrey Keating <geoffk@apple.com>
3880 * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
3882 2007-06-01 Ian Lance Taylor <iant@google.com>
3884 * tree-vrp.c (compare_name_with_value): Always set
3885 used_strict_overflow if we get a result from the variable itself.
3887 2007-06-01 Ian Lance Taylor <iant@google.com>
3889 PR rtl-optimization/31455
3890 * lower-subreg.c (find_decomposable_subregs): Don't decompose
3891 subregs which have a cast between modes which are not tieable.
3893 2007-06-01 Uros Bizjak <ubizjak@gmail.com>
3895 * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
3896 breaks after return statements.
3898 2007-06-01 Kaz Kojima <kkojima@gcc.gnu.org>
3900 * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
3901 only after no_new_pseudos.
3903 2007-05-31 Eric Christopher <echristo@apple.com>
3905 * expr.c (convert_move): Assert that we don't have a BLKmode
3907 (store_expr): Handle BLKmode moves by calling emit_block_move.
3909 2007-05-31 Daniel Berlin <dberlin@dberlin.org>
3911 * c-typeck.c (build_indirect_ref): Include type in error message.
3912 (build_binary_op): Pass types to binary_op_error.
3913 * c-common.c (binary_op_error): Take two type arguments, print out
3915 * c-common.h (binary_op_error): Update prototype.
3917 2007-05-31 H.J. Lu <hongjiu.lu@intel.com>
3919 * config/i386/i386.c: Correct coments on -mno-sse4.
3921 2007-05-31 H.J. Lu <hongjiu.lu@intel.com>
3923 * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
3924 (x86_64-*-*): Likewise.
3925 * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
3926 (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
3927 (OPTION_MASK_ISA_SSE_UNSET): Likewise.
3928 (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
3929 (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
3930 (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
3931 (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
3932 (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
3933 (OPTION_MASK_ISA_SSE4): Likewise.
3934 (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
3935 (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
3936 (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET. Handle SSE4.2.
3937 (override_options): Support SSE4.2.
3938 (ix86_build_const_vector): Support SImode and DImode.
3939 (ix86_build_signbit_mask): Likewise.
3940 (ix86_expand_int_vcond): Support V2DImode.
3941 (IX86_BUILTIN_CRC32QI): New for SSE4.2.
3942 (IX86_BUILTIN_CRC32HI): Likewise.
3943 (IX86_BUILTIN_CRC32SI): Likewise.
3944 (IX86_BUILTIN_CRC32DI): Likewise.
3945 (IX86_BUILTIN_PCMPGTQ): Likewise.
3946 (bdesc_crc32): Likewise.
3947 (bdesc_sse_3arg): Likewise.
3948 (ix86_expand_crc32): Likewise.
3949 (ix86_init_mmx_sse_builtins): Support SSE4.2.
3950 (ix86_expand_builtin): Likewise.
3951 * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3952 __SSE4_2__ for -msse4.2.
3953 * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
3954 (CRC32MODE): Likewise.
3955 (crc32modesuffix): Likewise.
3956 (crc32modeconstraint): Likewise.
3957 (sse4_2_crc32<mode>): Likewise.
3958 (sse4_2_crc32di): Likewise.
3959 * config/i386/i386.opt (msse4.2): New for SSE4.2.
3961 * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
3962 * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
3963 * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
3964 (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
3965 (vcondu<mode>): Likewise.
3966 * doc/extend.texi: Document SSE4.2 built-in functions.
3967 * doc/invoke.texi: Document -msse4.2/-msse4.
3969 2007-05-31 Zdenek Dvorak <dvorakz@suse.cz>
3971 PR tree-optimization/32160
3972 * tree-predcom.c (predcom_tmp_var): New function. Mark created
3973 variable as gimple reg.
3974 (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
3976 2007-05-31 Kazu Hirata <kazu@codesourcery.com>
3978 * gcc.c (main): Don't consider linker options when issuing the
3979 warning about a linker input file not being used.
3981 2007-05-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3983 * tree-vrp.c (compare_names): Initialize sop.
3985 2007-05-30 Dirk Mueller <dmueller@suse.de>
3987 * cgraphunit.c (cgraph_analyze_function): Remove
3988 computation of inline parameters.
3990 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3992 * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
3994 2007-05-30 Richard Sandiford <richard@codesourcery.com>
3996 * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
3997 Add vx-common.h. Include vxworks.h between vx-common.h and
3999 * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
4001 * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
4002 (TARGET_ASM_DESTRUCTOR): Likewise.
4003 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
4004 instead of arm_is_xscale. Use VXWORKS_OS_CPP_BUILTINS.
4005 (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
4006 (CC1_SPEC): Add -tstrongarm. Line up backslashes.
4007 (VXWORKS_ENDIAN_SPEC): Define.
4008 (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
4009 (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
4010 VXWORKS_* equivalents.
4011 (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
4012 (ASM_FILE_START): Delete.
4013 (TARGET_VERSION): Reformat.
4014 (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
4015 (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
4016 * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
4017 (FPBIT, DPBIT): Define.
4018 (fp-bit.c, dp-bit.c): New rules.
4019 (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
4020 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
4021 * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
4022 * config/arm/arm.h: Include vxworks-dummy.h.
4023 * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
4024 Mark with ATTRIBUTE_UNUSED.
4025 (arm_override_options): Do not allow VxWorks RTP PIC to be used
4026 for Thumb. Force r9 to be the PIC register for VxWorks RTPs and
4027 make it incompatible with -msingle-pic-base.
4028 (arm_function_ok_for_sibcall): Return false for calls that might
4029 go through a VxWorks PIC PLT entry.
4030 (require_pic_register): New function, split out from...
4031 (legitimize_pic_address): ...here. Do not use GOTOFF accesses
4033 (arm_load_pic_register): Handle the VxWorks RTP initialization
4034 sequence. Use pic_reg as a shorthand for cfun->machine->pic_reg.
4035 (arm_emit_call_insn): New function.
4036 (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
4037 * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
4038 (pic_offset_arm): New pattern.
4039 (call, call_value): Use arm_emit_call_insn.
4040 (call_internal, call_value_internal): New expanders.
4041 * config/arm/lib1funcs.asm (__PLT__): Define to empty for
4042 VxWorks unless __PIC__.
4044 2007-05-30 Eric Christopher <echristo@gmail.com>
4046 * genrecog.c: Include regs.h in generated file.
4047 * genemit.c: Ditto. Fix up formatting.
4048 * config/mn10300/constraints.md: New.
4049 * config/mn10300/mn10300.md: Include.
4050 * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
4051 Fix up for removed macro.
4052 * config/mn10300/predicates.md (call_address_operand): Ditto.
4053 * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
4054 (CONST_OK_FOR_I): Ditto.
4055 (CONST_OK_FOR_J): Ditto.
4056 (CONST_OK_FOR_K): Ditto.
4057 (CONST_OK_FOR_L): Ditto.
4058 (CONST_OK_FOR_M): Ditto.
4059 (CONST_OK_FOR_N): Ditto.
4060 (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
4064 (EXTRA_CONSTRAINT): Ditto.
4066 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
4068 * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
4070 * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
4071 OPTION_MASK_ISA_64BIT.
4072 * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
4074 2007-05-30 Richard Guenther <rguenther@suse.de>
4077 * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
4078 types for comparison.
4079 * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
4080 with original typed arguments.
4081 * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
4083 2007-05-30 Jakub Jelinek <jakub@redhat.com>
4085 PR tree-optimization/31769
4086 * except.c (duplicate_eh_regions): Clear prev_try if
4087 ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
4089 2007-05-30 Zdenek Dvorak <dvorakz@suse.cz>
4091 * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
4092 * tree-ssa-sink.c (statement_sink_location): Return basic block and
4093 bsi of the location where statements should be inserted.
4094 (sink_code_in_bb): Take bsi from statement_sink_location.
4095 * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
4096 instead of bsi_start.
4097 * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
4099 * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
4100 (bsi_move_before): Document inconsistency with bsi_move_after.
4101 (tree_redirect_edge_and_branch): Do not create labels if not necessary.
4103 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
4105 * config/i386/i386.h (TARGET_ABM): New define.
4106 (TARGET_POPCNT): Ditto.
4107 (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
4108 New temporary defines to redefine from OPTION_ISA_* defines.
4109 (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
4110 New temporary defines to redefine from OPTION_MASK_ISA_* defines.
4111 (ix86_isa_flags): New extern int declaration.
4112 (TARGET_SUBTARGET_DEFAULT): New define.
4113 (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
4114 (TARGET_SUBTARGET32_DEFAULT): Ditto.
4115 (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
4116 (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
4117 * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
4118 * config/i386/darwin.h: Change TARGET_64BIT define to
4121 * config/i386/i386.opt (m3dnowa): Define as undocumented option
4122 using existing "ix86_isa_flags" varible.
4123 (m32, m64): Use existing "ix86_isa_flags" variable.
4124 (mmmx, m3dnow): Ditto.
4125 (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
4126 (mabm): Define as non-negative option using "x86_abm" variable.
4127 (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
4129 * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
4130 Rewrite feature test bitmap.
4131 (ix86_isa_flags): New initialized global int varible.
4132 (ix86_isa_flags_explicit): New static int variable.
4133 (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
4134 msse, msse2, msse3, msse4.1 and msse4a option is processed. Change
4135 i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
4136 target_flags_explicit.
4137 (override_options): Remove "target_enable" and "target_disable" fields
4138 from "struct ptt". Update processor_target_table accordingly. Remove
4139 PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
4140 defined and rearrange PTA_* bits. Use "ix86_isa_flags" instead of
4141 "target_flags" and "ix86_isa_flags_explicit" instead of
4142 "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
4143 MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*. Set "x86_abm" to true when
4144 PTA_ABM is set in processor_alias_table flags entry. Set "x86_popcnt"
4145 to true when either of PTA_POPCNT or PTA_ABM is set in
4146 processor_alias_table flags entry. Set "x86_prefetch_sse" to true
4147 when either of PTA_PREFETCH_SSE or PTA_SSE is set in
4148 processor_alias_table flags entry. Remove handling of
4149 "target_enable" and "target_disable" fields of processor_target_table.
4150 Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
4151 targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
4152 Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
4153 targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
4154 (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
4156 (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
4158 2007-05-29 David Daney <ddaney@avtrex.com>
4161 * config/mips/mips.c (mips_output_mi_thunk): Emit
4162 NOTE_INSN_PROLOGUE_END at beginning of the thunk.
4164 2007-05-29 Hui-May Chang <hm.chang@apple.com>
4165 * config/i386/i386.c (ix86_function_regparm): Added checking of
4166 ix86_force_align_arg_pointer to determine the number of
4167 register parameters.
4169 2007-05-29 Zdenek Dvorak <dvorakz@suse.cz>
4171 * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
4172 (SET_DR_MISALIGNMENT): New.
4173 * tree-vect-analyze.c (vect_compute_data_ref_alignment,
4174 vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
4175 Use SET_DR_MISALIGNMENT.
4176 * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
4178 * tree-data-ref.c (create_data_ref, compute_all_dependences,
4179 find_loop_nest): Export.
4180 * tree-data-ref.h (struct data_reference): Change aux field to pointer.
4181 (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
4182 * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
4183 (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
4185 (struct mem_ref): Add field reuse_distance.
4186 (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
4187 Initialize reuse_distance field.
4188 (issue_prefetch_ref): Select temporality of prefetch according to
4190 (volume_of_references, volume_of_dist_vector, add_subscript_strides,
4191 self_reuse_distance, determine_loop_nest_reuse): New functions.
4192 (loop_prefetch_arrays): Call determine_loop_nest_reuse.
4193 (tree_ssa_prefetch_arrays): Dump L2 cache size.
4194 * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
4197 2007-05-29 Daniel Berlin <dberlin@dberlin.org>
4199 * tree-ssa-alias.c: Add aliasing overview.
4201 2007-05-29 Zuxy Meng <zuxy.meng@gmail.com>
4202 Danny Smith <dannysmith@users.sourceforge.net>
4205 * config/i386/t-crtfm: Compile crtfastmath.o with
4206 -minline-all-stringops.
4207 * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
4208 * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
4210 2007-05-28 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
4212 * doc/md.texi: Document constraints on HP PA-RISC.
4214 * pa/constraints.md: New file.
4215 * pa.md: Include constraints.md.
4216 * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
4217 (integer_store_memory_operand, ldil_cint_p): New functions.
4218 * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
4219 * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
4220 IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
4221 * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
4222 * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
4224 2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com>
4227 * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
4228 case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
4229 case POSTDECREMENT_EXPR>): Return the error_mark_node
4230 if either the real or imaginary parts would an
4233 2007-05-28 Daniel Berlin <dberlin@dberlin.org>
4235 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
4236 name when we remove it from a call.
4238 2007-05-28 Kazu Hirata <kazu@codesourcery.com>
4240 * targhooks.c (default_narrow_bitfield): Remove.
4241 * targhooks.h: Remove the prototype for
4242 default_narrow_bitfield.
4244 * langhooks-def.h: Remove the prototype for
4245 hook_get_alias_set_0.
4246 * langhooks.c (hook_get_alias_set_0): Remove.
4248 * global.c (EXECUTE_IF_CONFLICT): Remove.
4250 2007-05-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
4253 * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
4254 return true when truth_value_p is true and the type
4257 2007-05-28 Gerald Pfeifer <gerald@pfeifer.com>
4259 * doc/install.texi (Prerequisites): We no longer require Autoconf
4260 2.13 for the top-level.
4262 2007-05-28 Uros Bizjak <ubizjak@gmail.com>
4264 * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
4265 memory access via x86_expand_vector_move_misalign() only for
4266 TImode values on 32-bit targets.
4268 2007-05-28 Razya Ladelsky <razya@il.ibm.com>
4270 * matrix-reorg.c: New file. Implement matrix flattening and
4271 transposing optimization.
4272 * tree-pass.h: Add matrix reorg pass.
4273 * common.opt: Add fipa-mreorg flag.
4274 * Makefile.in: Add matrix-reorg.c.
4275 * passes.c: Add matrix reorg pass.
4276 * varpool.c (add_new_static_var): New function.
4277 * cgraph.h (add_new_static_var): Declare.
4279 2007-05-27 Eric Christopher <echristo@apple.com>
4281 * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
4282 sp_offset depending on stack size. Save r12 depending
4283 on registers we're saving later.
4284 (rs6000_emit_epilogue): Update sp_offset depending only
4287 2007-05-27 Zdenek Dvorak <dvorakz@suse.cz>
4289 * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
4290 * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
4291 * ifcvt.c (if_convert): Ditto.
4292 * tree-ssa-threadupdate.c (thread_block): Ditto.
4293 (thread_through_all_blocks): Ditto. Assert that loops were analysed.
4294 * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
4295 verify_loop_closed_ssa): Check number_of_loops instead of
4297 * predict.c (tree_estimate_probability): Ditto.
4298 * tree-if-conv.c (main_tree_if_conversion): Ditto.
4299 * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
4300 * modulo-sched.c (sms_schedule): Ditto.
4301 * tree-scalar-evolution.c (scev_const_prop): Ditto.
4302 (scev_finalize): Do not do anything if scev analysis was not
4304 * cfgloopanal.c (mark_irreducible_loops): Do not check whether
4305 current_loops == NULL.
4306 (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
4307 * loop-init.c (loop_optimizer_init): Do not free current_loops when
4309 (loop_optimizer_finalize): Assert that loops were analyzed.
4310 (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
4311 rtl_doloop): Check number_of_loops instead of current_loops.
4312 * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
4313 current_loops == NULL.
4314 (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
4315 gate_tree_vectorize tree_linear_transform, check_data_deps,
4316 tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
4317 tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
4318 Check number_of_loops instead of current_loops.
4319 (tree_ssa_loop_done): Do not check whether current_loops == NULL.
4320 * tree-ssa-pre.c (fini_pre): Do not take do_fre argument. Always
4321 free loops if available.
4322 (execute_pre): Do not pass do_fre to fini_pre.
4324 2007-05-27 Tobias Burnus <burnus@net-b.de>
4327 * real.c (mpfr_from_real): Fix sign of -Inf.
4329 2007-05-27 H.J. Lu <hongjiu.lu@intel.com>
4331 * tree-vect-transform.c (vectorizable_conversion): Initialize
4332 tree_code variables to ERROR_MARK.
4333 (vectorizable_type_demotion): Likewise.
4334 (vectorizable_type_promotion): Likewise.
4336 2007-05-26 Uros Bizjak <ubizjak@gmail.com>
4339 * config/i386/i386.md (movti): Handle push operands via
4342 2007-05-26 Kazu Hirata <kazu@codesourcery.com>
4344 * basic-block.h: Remove the prototype for merge_seq_blocks.
4345 * cfgcleanup.c (merge_seq_blocks): Remove.
4347 * tree-flow.h: Remove the prototype for is_aliased_with.
4348 * tree-ssa-alias.c (is_aliased_with): Remove.
4350 2007-05-26 H.J. Lu <hongjiu.lu@intel.com>
4352 * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
4354 * config/i386/i386.c (ix86_expand_sse4_unpack): New.
4356 * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
4357 ix86_expand_sse4_unpack if SSE4.1 is enabled.
4358 (vec_unpacks_hi_v16qi): Likewise.
4359 (vec_unpacku_lo_v16qi): Likewise.
4360 (vec_unpacks_lo_v16qi): Likewise.
4361 (vec_unpacku_hi_v8hi): Likewise.
4362 (vec_unpacks_hi_v8hi): Likewise.
4363 (vec_unpacku_lo_v8hi): Likewise.
4364 (vec_unpacks_lo_v8hi): Likewise.
4365 (vec_unpacku_hi_v4si): Likewise.
4366 (vec_unpacks_hi_v4si): Likewise.
4367 (vec_unpacku_lo_v4si): Likewise.
4368 (vec_unpacks_lo_v4si): Likewise.
4370 2007-05-26 Kazu Hirata <kazu@codesourcery.com>
4372 * c-typeck.c, config/arm/arm.c, config/darwin.c,
4373 config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
4374 omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
4375 follow spelling conventions in various
4376 warning/error/diagnostic messages.
4378 * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
4379 df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
4380 fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
4381 tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
4382 tree-vrp.c: Fix comment typos. Follow spelling conventions.
4383 * doc/tm.texi: Follow spelling conventions.
4385 2007-05-25 Andrew Pinski <andrew_pinski@playstation.sony.com>
4388 * tree-ssa-forwprop.c
4389 (forward_propagate_addr_into_variable_array_index): Remove
4390 the lhs argument. Use the type of def_rhs instead of lhs.
4391 (forward_propagate_addr_expr_1): Update use of
4392 forward_propagate_addr_into_variable_array_index.
4394 2007-05-25 Sandra Loosemore <sandra@codesourcery.com>
4395 Nigel Stephens <nigel@mips.com>
4397 * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
4398 function attributes, "far" being an alias for "long_call".
4399 (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
4400 (mips_near_type_p, mips_far_type_p): New.
4401 (mips_comp_type_attributes): New function to check that attributes
4402 attached to a function type are compatible.
4403 (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
4404 TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
4405 to the target function of the thunk.
4406 (mips_encode_section_info): Check for "near" and "far" function
4407 attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
4409 * config/mips/predicates.md (const_call_insn_operand): Test only
4410 SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
4412 * doc/extend.texi (Function Attributes): Document MIPS "near" and
4415 * testsuite/gcc.target/mips/near-far-1.c: New test case.
4416 * testsuite/gcc.target/mips/near-far-2.c: New test case.
4417 * testsuite/gcc.target/mips/near-far-3.c: New test case.
4418 * testsuite/gcc.target/mips/near-far-4.c: New test case.
4420 2007-05-25 Eric Christopher <echristo@apple.com>
4422 * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
4423 to x86-darwin configurations.
4424 * config/i386/t-darwin: Add softfp support.
4425 * config/i386/t-darwin64: Ditto.
4426 * config/i386/sfp-machine.h: If mach then don't use
4427 aliasing, emit a stub to call.
4429 2007-05-25 Kazu Hirata <kazu@codesourcery.com>
4431 * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
4432 haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
4433 tree-predcom.c, tree-ssa-alias-warnings.c,
4434 tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
4435 comment typos. Follow spelling conventions.
4436 * doc/cpp.texi, doc/invoke.texi: Fix typos.
4438 2007-05-26 Uros Bizjak <ubizjak@gmail.com>
4441 * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
4442 constants into memory. Expand unaligned memory references for
4443 SSE modes via x86_expand_vector_move_misalign() function.
4445 2007-05-25 Uros Bizjak <ubizjak@gmail.com>
4447 * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
4448 "memory" attribute for "sseishft" type insn without operands[2].
4450 2007-05-25 Dirk Mueller <dmueller@suse.de>
4451 Marcus Meissner <meissner@suse.de>
4453 * doc/extend.texi (alloc_size): New attribute.
4454 * c-common.c (handle_alloc_size_attribute): New.
4455 * tree-object-size.c (alloc_object_size): Use alloc_size
4456 attribute, if available.
4458 2007-05-25 H.J. Lu <hongjiu.lu@intel.com>
4460 * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
4462 (__builtin_ia32_vec_ext_v2di): Likewise.
4463 (__builtin_ia32_vec_ext_v4si): Likewise.
4464 (__builtin_ia32_vec_ext_v8hi): Likewise.
4465 (__builtin_ia32_vec_ext_v16qi): Likewise.
4466 (__builtin_ia32_vec_set_v8hi): Likewise.
4468 2007-05-25 H.J. Lu <hongjiu.lu@intel.com>
4470 * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
4472 2007-05-25 Richard Sandiford <richard@codesourcery.com>
4474 * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
4475 (arm_is_longcall_p): Rename to...
4476 (arm_is_long_call_p): ...this. Take a single tree argument and
4478 * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
4479 (CUMULATIVE_ARGS): Remove call_cookie.
4480 (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
4481 (ENCODED_LONG_CALL_ATTR_P): Delete.
4482 (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
4483 LONG_CALL_FLAG_CHAR cases.
4484 (ARM_DECLARE_FUNCTION_SIZE): Delete.
4485 * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
4486 ARM_DECLARE_FUNCTION_SIZE.
4487 * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
4488 (arm_function_arg): Return const0_rtx for VOIDmode arguments.
4489 (arm_encode_call_attribute, current_file_function_operand): Delete.
4490 (arm_function_in_section_p): New function.
4491 (arm_is_longcall_p): Rename to...
4492 (arm_is_long_call_p): ...this. Take the target function as a single
4493 argument and return a bool. Do not rely on call cookies. Check
4494 whether the target symbol is in the same section as the current
4495 function, not just the same compilation unit.
4496 (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
4497 (arm_encode_section_info): Don't encode a call type.
4498 * config/arm/arm.md (call, call_value): Update calls to
4499 arm_is_long(_)call_p. Simplify logic.
4500 (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
4501 Update calls to arm_is_long(_)call_p.
4503 2007-05-25 Richard Guenther <rguenther@suse.de>
4505 PR tree-optimization/31982
4506 * tree-ssa-forwprop.c
4507 (forward_propagate_addr_into_variable_array_index): Handle arrays
4508 with element size one.
4510 2007-05-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
4512 * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
4513 (umulsi3_highpart): Likewise.
4515 2007-05-24 Ian Lance Taylor <iant@google.com>
4517 PR rtl-optimization/32069
4518 * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
4521 2007-05-24 Ollie Wild <aaw@google.com>
4523 * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
4526 2007-05-24 Richard Sandiford <rsandifo@nildram.co.uk>
4528 * postreload-gcse.c (reg_changed_after_insn_p): New function.
4529 (oprs_unchanged_p): Use it to check all registers in a REG.
4530 (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
4531 (reg_set_between_after_reload_p): Delete.
4532 (reg_used_between_after_reload_p): Likewise.
4533 (reg_set_or_used_since_bb_start): Likewise.
4534 (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
4535 and reg_used_between_p instead of reg_set_or_used_since_bb_start.
4536 Use reg_set_between_p instead of reg_set_between_after_reload_p.
4537 * rtlanal.c (reg_set_p): Check whether REG overlaps
4538 regs_invalidated_by_call, rather than just checking the
4539 membership of REGNO (REG).
4541 2007-05-24 Zdenek Dvorak <dvorakz@suse.cz>
4543 * doc/passes.texi: Document predictive commoning.
4544 * doc/invoke.texi (-fpredictive-commoning): Document.
4545 * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
4546 * tree-ssa-loop-im.c (get_lsm_tmp_name): Export. Allow
4547 adding indices to the generated name.
4548 (schedule_sm): Pass 0 to get_lsm_tmp_name.
4549 * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
4550 * tree-pretty-print.c (op_symbol_1): Renamed to ...
4551 (op_symbol_code): ... and exported.
4552 (dump_omp_clause, op_symbol): Use op_symbol_code
4553 instead of op_symbol_1.
4554 * tree-pass.h (pass_predcom): Declare.
4555 * timevar.def (TV_PREDCOM): New timevar.
4556 * tree-ssa-loop.c (run_tree_predictive_commoning,
4557 gate_tree_predictive_commoning, pass_predcom): New.
4558 * tree-data-ref.c (find_data_references_in_loop): Find the
4559 references in dominance order.
4560 (canonicalize_base_object_address): Ensure that the result has
4562 (dr_analyze_innermost): Export.
4563 (create_data_ref): Code to fail for references with invariant
4565 (find_data_references_in_stmt): ... here.
4566 * tree-data-ref.h (dr_analyze_innermost): Declare.
4567 * tree-affine.c: Include tree-gimple.h and hashtab.h.
4568 (aff_combination_find_elt, name_expansion_hash,
4569 name_expansion_eq, tree_to_aff_combination_expand,
4570 double_int_constant_multiple_p, aff_combination_constant_multiple_p):
4572 * tree-affine.h (aff_combination_constant_multiple_p,
4573 tree_to_aff_combination_expand): Declare.
4574 * tree-predcom.c: New file.
4575 * common.opt (fpredictive-commoning): New option.
4576 * tree-flow.h (op_symbol_code, tree_predictive_commoning,
4577 stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
4578 * Makefile.in (tree-predcom.o): Add.
4579 (tree-affine.o): Add TREE_GIMPLE_H dependency.
4580 * passes.c (init_optimization_passes): Add dceloop after
4581 copy propagation in loop optimizer. Add predictive commoning
4582 to loop optimizer passes.
4584 2007-05-24 H.J. Lu <hongjiu.lu@intel.com>
4586 * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
4589 2007-05-24 Jan Hubicka <jh@suse.cz>
4591 * gengenrtl.c (gendecl, gendef): Output the gens annotated for
4593 (genheader): Include statistics.h.
4595 * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
4597 * print-rtl.c (flag_dump_unnumbered): Update comments.
4598 (print_rtl): Fix my previous change.
4599 * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
4602 2007-05-24 Zdenek Dvorak <dvorakz@suse.cz>
4605 * tree-ssa-threadupdate.c (thread_through_loop_header): Use
4607 (thread_through_all_blocks): Call initialize_original_copy_tables
4608 and free_original_copy_tables.
4609 * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
4611 * tree-cfg.c (tree_duplicate_sese_region): Ditto.
4612 * cfghooks.c (duplicate_block): Use get_loop_copy.
4613 * cfg.c: Include cfgloop.h.
4614 (loop_copy): New hash table.
4615 (initialize_original_copy_tables): Initialize loop_copy table.
4616 (free_original_copy_tables): Free loop_copy table.
4617 (copy_original_table_clear, copy_original_table_set,
4618 set_loop_copy, get_loop_copy): New functions.
4619 (set_bb_original, set_bb_copy): Use copy_original_table_set.
4620 * cfgloop.h (struct loop): Remove copy field.
4621 * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
4622 * basic-block.h (set_loop_copy, get_loop_copy): Declare.
4624 2007-05-24 H.J. Lu <hongjiu.lu@intel.com>
4626 * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
4627 -msse/-msse2/-msse3.
4629 2007-05-24 H.J. Lu <hongjiu.lu@intel.com>
4631 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
4632 __builtin_ia32_vec_set_v2di with MASK_64BIT.
4634 2007-05-24 Danny Smith <dannysmith@users.sourceforge.net>
4637 * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
4638 * targhooks.h (default_mangle_decl_assembler_name): Declare
4640 * targhooks.c (default_mangle_decl_assembler_name): Define
4642 * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
4644 * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
4645 * langhooks.c (lhd_set_decl_assembler_name): Call
4646 targetm.mangle_decl_assembler_name for names with global scope.
4648 * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
4650 (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
4651 * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
4653 * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
4654 New. Factored out of i386_pe_encode_section_info.
4655 (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
4656 Move check for prior decoration of stdcall
4657 symbols to i386_pe_encode_section_info.
4658 (i386_pe_encode_section_info): Adjust call to
4659 gen_stdcall_or_fastcall_suffix. Use
4660 i386_pe_maybe_mangle_decl_assembler_name, if needed.
4661 (i386_pe_mangle_decl_assembler_name): New. Wrap
4662 i386_pe_maybe_mangle_decl_assembler_name.
4664 2007-05-16 Rafael Avila de Espindola <espindola@google.com>
4666 * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
4667 INTEGRAL_TYPE_P and TYPE_UNSIGNED.
4668 * langhooks.c (get_signed_or_unsigned_type): Don't check for
4669 INTEGRAL_TYPE_P or TYPE_UNSIGNED.
4670 (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
4673 2007-05-23 Sandra Loosemore <sandra@codesourcery.com>
4674 Nigel Stephens <nigel@mips.com>
4675 Richard Sandiford <richard@codesourcery.com>
4677 Fix up MIPS16 hard float and add support for complex.
4679 * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
4680 (TARGET_SOFT_FLOAT_ABI): New.
4681 (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
4682 __mips_soft_float to reflect the ABI in use, not whether the
4683 FPU is directly accessible (e.g., in MIPS16 mode).
4684 (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
4685 (UNITS_PER_FPVALUE): Likewise.
4687 * config/mips/mips.c (mips_expand_call): Remove redundant
4688 TARGET_MIPS16 check.
4689 (mips_arg_regno): New.
4690 (function_arg_advance): When setting bits in cum->fp_code for
4691 MIPS16, don't subtract 1 from cum->arg_number, since it is now
4693 (function_arg): Use mips_arg_regno.
4694 (mips_return_mode_in_fpr_p): New.
4695 (mips16_call_stub_mode_suffix): New.
4696 (mips16_cfun_returns_in_fpr_p): New.
4697 (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
4698 (mips_output_function_prologue): Test mips16_hard_float, not
4699 !TARGET_SOFT_FLOAT, to decide when a function stub is required.
4700 (mips_expand_epilogue): Call MIPS16 helper routines to copy
4701 return value into a floating-point register.
4702 (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
4703 (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
4704 (mips16_fp_args): Handle MIPS32r2 ISA which supports
4705 TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
4706 word of double arguments from or to the high bits of 64-bit
4707 floating point registers.
4708 (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
4709 (mips16_fpret_double): New helper function.
4710 (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p. Add
4711 support for complex modes. Fill in DECL_RESULT for stubdecl.
4712 (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
4714 * config/mips/mips16.S
4715 (RET, ARG1, ARG2): New.
4716 (MERGE_GPRf, MERGE_GPRt): New.
4717 (DELAYt, DELAYf): New.
4718 (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
4719 (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
4720 (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
4721 (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
4722 (SFOP): Renamed to...
4723 (OPSF3): This, and macro-ified. Updated all uses.
4724 (SFOP2): Renamed to...
4725 (OPSF2): This, and macro-ified. Updated all uses.
4726 (SFCMP): Renamed to...
4727 (CMPSF): This, and macro-ified. Updated all uses.
4728 (SFREVCMP): Renamed to...
4729 (REVCMPSF): This, and macro-ified. Updated all uses.
4730 (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
4731 (LDDBL1, LDDBL2, RETDBL): Deleted.
4732 (DFOP): Renamed to...
4733 (OPDF3): This, and macro-ified. Updated all uses.
4734 (DFOP2): Renamed to...
4735 (OPDF2): This, and macro-ified. Updated all uses.
4736 (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
4737 (DFCMP): Renamed to...
4738 (CMPDF): This, and macro-ified. Updated all uses.
4739 (DFREVCMP): Renamed to...
4740 (REVCMPDF): This, and macro-ified. Updated all uses.
4741 (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
4742 (RET_FUNCTION): New.
4743 (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
4744 (__mips16_ret_sc, __mips16_ret_dc): New.
4745 (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
4746 STUB_ARGS_6, STUB_ARGS_10): New.
4747 (CALL_STUB_NO_RET): New.
4748 (__mips16_call_stub_1): Macro-ified.
4749 (__mips16_call_stub_5): Macro-ified.
4750 (__mips16_call_stub_2): Macro-ified.
4751 (__mips16_call_stub_6): Macro-ified.
4752 (__mips16_call_stub_9): Macro-ified.
4753 (__mips16_call_stub_10): Macro-ified.
4754 (CALL_STUB_RET): New.
4755 (__mips16_call_stub_sf_0): Macro-ified.
4756 (__mips16_call_stub_sf_1): Macro-ified.
4757 (__mips16_call_stub_sf_5): Macro-ified.
4758 (__mips16_call_stub_sf_2): Macro-ified.
4759 (__mips16_call_stub_sf_6): Macro-ified.
4760 (__mips16_call_stub_sf_9): Macro-ified.
4761 (__mips16_call_stub_sf_10): Macro-ified.
4762 (__mips16_call_stub_df_0): Macro-ified.
4763 (__mips16_call_stub_df_1): Macro-ified.
4764 (__mips16_call_stub_df_5): Macro-ified.
4765 (__mips16_call_stub_df_2): Macro-ified.
4766 (__mips16_call_stub_df_6): Macro-ified.
4767 (__mips16_call_stub_df_9): Macro-ified.
4768 (__mips16_call_stub_df_10): Macro-ified.
4769 (__mips16_call_stub_sc_0): New.
4770 (__mips16_call_stub_sc_1): New.
4771 (__mips16_call_stub_sc_5): New.
4772 (__mips16_call_stub_sc_2): New.
4773 (__mips16_call_stub_sc_6): New.
4774 (__mips16_call_stub_sc_9): New.
4775 (__mips16_call_stub_sc_10): New.
4776 (__mips16_call_stub_dc_0): New.
4777 (__mips16_call_stub_dc_1): New.
4778 (__mips16_call_stub_dc_5): New.
4779 (__mips16_call_stub_dc_2): New.
4780 (__mips16_call_stub_dc_6): New.
4781 (__mips16_call_stub_dc_9): New.
4782 (__mips16_call_stub_dc_10): New.
4784 * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
4785 * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
4786 * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
4788 2007-05-23 Ian Lance Taylor <iant@google.com>
4790 * doc/invoke.texi (Invoking GCC): Document that the order of the
4793 2007-05-23 Chen Liqin <liqin@sunnorth.com.cn>
4796 * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
4797 * config/score/predicate.md (const_pow2, const_npow2): Remove.
4798 * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
4802 * config/score/score.c (score_print_operand): Make sure that only
4803 lower bits are used.
4805 2007-05-22 Ian Lance Taylor <iant@google.com>
4807 * tree-vrp.c (avoid_overflow_infinity): New static function,
4808 broken out of set_value_range_to_value.
4809 (set_value_range_to_value): Call avoid_overflow_infinity.
4810 (extract_range_from_assert): Likewise.
4812 2007-05-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
4815 * builtins.c (expand_builtin_memmove_args): Strip nops that don't
4816 change the type before looking for a COMPOUND_EXPR.
4818 2007-05-22 Ian Lance Taylor <iant@google.com>
4820 * lower-subreg.c (decompose_multiword_subregs): If we change an
4821 insn, call remove_retval_note on it.
4823 2007-05-22 Richard Sandiford <rsandifo@nildram.co.uk>
4825 * regs.h (end_hard_regno): New function.
4826 (END_HARD_REGNO, END_REGNO): New macros.
4827 (add_to_hard_reg_set): New function.
4828 (remove_from_hard_reg_set): Likewise.
4829 (in_hard_reg_set_p): Likewise.
4830 (overlaps_hard_reg_set_p): Likewise.
4831 * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
4832 (note_btr_set): Use END_HARD_REGNO.
4833 * caller-save.c (setup_save_areas): Use end_hard_regno.
4834 (mark_set_regs): Use END_HARD_REGNO.
4835 (add_stored_regs): Use end_hard_regno.
4836 (mark_referenced_regs): Use add_to_hard_reg_set.
4837 * combine.c (update_table_tick): Use END_REGNO.
4838 (record_value_for_reg): Likewise.
4839 (record_dead_and_set_regs): Likewise.
4840 (get_last_value_validate): Likewise.
4841 (use_crosses_set_p): Likewise.
4842 (reg_dead_at_p_1): Likewise.
4843 (reg_dead_at_p): Likewise.
4844 (mark_used_regs_combine): Use add_to_hard_reg_set.
4845 (move_deaths): Use END_HARD_REGNO.
4846 (reg_bitfield_target_p): Use end_hard_regno.
4847 (distribute_notes): Use END_HARD_REGNO.
4848 * cse.c (mention_regs): Use END_REGNO.
4849 (insert): Use add_to_hard_reg_set.
4850 (invalidate): Use END_HARD_REGNO.
4851 (invalidate_for_call): Likewise.
4852 (exp_equiv_p): Use END_REGNO.
4853 (cse_insn): Likewise.
4854 * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
4855 * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
4856 * df-scan.c (df_ref_record): Use END_HARD_REGNO.
4857 * function.c (keep_stack_depressed): Use end_hard_regno.
4858 * global.c (global_alloc): Use end_hard_regno.
4859 (global_conflicts): Use add_to_hard_reg_set instead of
4861 (find_reg): Likewise.
4862 (mark_reg_store): Likewise.
4863 (mark_reg_conflicts): Likewise.
4864 (mark_reg_death): Use remove_from_hard_reg_set.
4865 (mark_reg_live_nc): Delete.
4866 (set_preference): Use end_hard_regno.
4867 * local-alloc.c (mark_life): Use add_to_hard_reg_set and
4868 remove_from_hard_reg_set.
4869 (post_mark_life): Use add_to_hard_reg_set.
4870 * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
4871 (reg_becomes_live): Use add_to_hard_reg_set.
4872 * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
4873 (peep2_find_free_register): Use add_to_hard_reg_set.
4874 * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
4875 * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
4876 * regrename.c (note_sets): Use add_to_hard_reg_set.
4877 (clear_dead_regs): Use remove_from_hard_reg_set.
4878 (regrename_optimize): Use add_to_hard_reg_set.
4879 (find_oldest_value_reg): Use in_hard_reg_set_p.
4880 * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
4881 (hard_reg_set_here_p): Use end_hard_regno.
4882 (decompose): Likewise.
4883 (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
4884 (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
4885 * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
4886 (mark_home_live): Use end_hard_regno.
4887 (spill_hard_reg): Likewise.
4888 (clear_reload_reg_in_use): Likewise.
4889 * reorg.c (delete_prior_computation): Use END_REGNO.
4890 * resource.c (update_live_status): Use END_HARD_REGNO.
4891 (mark_referenced_resources): Use add_to_hard_reg_set.
4892 (mark_set_resources): Likewise.
4893 (mark_target_live_regs): Likewise. Use remove_from_hard_reg_set.
4894 * rtlanal.c (refers_to_regno_p): Use END_REGNO.
4895 (reg_overlap_mentioned_p): Likewise.
4896 (dead_or_set_p): Likewise. Use an exclusive upper loop bound.
4897 (covers_regno_no_parallel_p): Use END_REGNO.
4898 (find_regno_note): Likewise.
4899 (find_reg_fusage): Use END_HARD_REGNO.
4900 * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
4901 * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
4903 2007-05-22 Richard Sandiford <rsandifo@nildram.co.uk>
4905 * mode-switching.c (reg_dies): Change type of second argument to
4907 (optimize_mode_switching): Update accordingly.
4909 2007-05-22 Richard Sandiford <richard@codesourcery.com>
4911 * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
4913 (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
4914 (hard_reg_set_empty_p): ...these new functions.
4915 * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
4916 GO_IF_HARD_REG_SUBSET.
4917 * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
4918 instead of GO_IF_HARD_REG_EQUAL.
4919 * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
4920 instead of GO_IF_HARD_REG_EQUAL.
4921 * global.c (find_reg): Use hard_reg_set_empty_p instead of
4922 GO_IF_HARD_REG_SUBSET.
4923 (modify_reg_pav): Use hard_reg_set_empty_p instead of
4924 GO_IF_HARD_REG_EQUAL.
4925 * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
4926 of GO_IF_HARD_REG_SUBSET.
4927 * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
4928 instead of GO_IF_HARD_REG_EQUAL.
4929 * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
4930 hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
4931 (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
4932 of GO_IF_HARD_REG_SUBSET,
4933 * reload1.c (finish_spills): Use hard_reg_subset_p instead of
4934 GO_IF_HARD_REG_SUBSET.
4935 * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
4936 instead of GO_IF_HARD_REG_EQUAL.
4937 * config/sh/sh.c (push_regs, calc_live_regs): Use
4938 hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
4939 (hard_regs_intersect_p): Delete.
4941 2007-05-22 Janis Johnson <janis187@us.ibm.com>
4943 * doc/sourcebuild.texi (Test Directives) Add dg-message.
4945 2007-05-22 H.J. Lu <hongjiu.lu@intel.com>
4946 Richard Henderson <rth@redhat.com>
4948 * config.gcc (i[34567]86-*-*): Add smmintrin.h to
4950 (x86_64-*-*): Likewise.
4952 * i386/i386-modes.def (V2QI): New.
4954 * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
4956 (override_options): Support SSE4.1.
4957 (IX86_BUILTIN_BLENDPD): New for SSE4.1.
4958 (IX86_BUILTIN_BLENDPS): Likewise.
4959 (IX86_BUILTIN_BLENDVPD): Likewise.
4960 (IX86_BUILTIN_BLENDVPS): Likewise.
4961 (IX86_BUILTIN_PBLENDVB128): Likewise.
4962 (IX86_BUILTIN_PBLENDW128): Likewise.
4963 (IX86_BUILTIN_DPPD): Likewise.
4964 (IX86_BUILTIN_DPPS): Likewise.
4965 (IX86_BUILTIN_INSERTPS128): Likewise.
4966 (IX86_BUILTIN_MOVNTDQA): Likewise.
4967 (IX86_BUILTIN_MPSADBW128): Likewise.
4968 (IX86_BUILTIN_PACKUSDW128): Likewise.
4969 (IX86_BUILTIN_PCMPEQQ): Likewise.
4970 (IX86_BUILTIN_PHMINPOSUW128): Likewise.
4971 (IX86_BUILTIN_PMAXSB128): Likewise.
4972 (IX86_BUILTIN_PMAXSD128): Likewise.
4973 (IX86_BUILTIN_PMAXUD128): Likewise.
4974 (IX86_BUILTIN_PMAXUW128): Likewise.
4975 (IX86_BUILTIN_PMINSB128): Likewise.
4976 (IX86_BUILTIN_PMINSD128): Likewise.
4977 (IX86_BUILTIN_PMINUD128): Likewise.
4978 (IX86_BUILTIN_PMINUW128): Likewise.
4979 (IX86_BUILTIN_PMOVSXBW128): Likewise.
4980 (IX86_BUILTIN_PMOVSXBD128): Likewise.
4981 (IX86_BUILTIN_PMOVSXBQ128): Likewise.
4982 (IX86_BUILTIN_PMOVSXWD128): Likewise.
4983 (IX86_BUILTIN_PMOVSXWQ128): Likewise.
4984 (IX86_BUILTIN_PMOVSXDQ128): Likewise.
4985 (IX86_BUILTIN_PMOVZXBW128): Likewise.
4986 (IX86_BUILTIN_PMOVZXBD128): Likewise.
4987 (IX86_BUILTIN_PMOVZXBQ128): Likewise.
4988 (IX86_BUILTIN_PMOVZXWD128): Likewise.
4989 (IX86_BUILTIN_PMOVZXWQ128): Likewise.
4990 (IX86_BUILTIN_PMOVZXDQ128): Likewise.
4991 (IX86_BUILTIN_PMULDQ128): Likewise.
4992 (IX86_BUILTIN_PMULLD128): Likewise.
4993 (IX86_BUILTIN_ROUNDPD): Likewise.
4994 (IX86_BUILTIN_ROUNDPS): Likewise.
4995 (IX86_BUILTIN_ROUNDSD): Likewise.
4996 (IX86_BUILTIN_ROUNDSS): Likewise.
4997 (IX86_BUILTIN_PTESTZ): Likewise.
4998 (IX86_BUILTIN_PTESTC): Likewise.
4999 (IX86_BUILTIN_PTESTNZC): Likewise.
5000 (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
5001 (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
5002 (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
5003 (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
5004 (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
5006 (bdesc_sse_3arg): Likewise.
5007 (bdesc_2arg): Likewise.
5008 (bdesc_1arg): Likewise.
5009 (ix86_init_mmx_sse_builtins): Support SSE4.1. Handle SSE builtins
5011 (ix86_expand_sse_4_operands_builtin): New.
5012 (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
5013 smaller than 8 bits as the 2nd arg.
5014 (ix86_expand_sse_ptest): New.
5015 (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
5016 (ix86_expand_vector_set): Support SSE4.1.
5017 (ix86_expand_vector_extract): Likewise.
5019 * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
5020 __SSE4_1__ for -msse4.1.
5022 * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
5023 (UNSPEC_INSERTPS): Likewise.
5024 (UNSPEC_DP): Likewise.
5025 (UNSPEC_MOVNTDQA): Likewise.
5026 (UNSPEC_MPSADBW): Likewise.
5027 (UNSPEC_PHMINPOSUW): Likewise.
5028 (UNSPEC_PTEST): Likewise.
5029 (UNSPEC_ROUNDP): Likewise.
5030 (UNSPEC_ROUNDS): Likewise.
5032 * config/i386/i386.opt (msse4.1): New for SSE4.1.
5034 * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
5035 (const_pow2_1_to_32768_operand): Likewise.
5037 * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
5040 * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
5042 (sse4_1_insertps): Likewise.
5043 (*sse4_1_extractps): Likewise.
5044 (sse4_1_ptest): Likewise.
5045 (sse4_1_mulv2siv2di3): Likewise.
5046 (*sse4_1_mulv4si3): Likewise.
5047 (*sse4_1_smax<mode>3): Likewise.
5048 (*sse4_1_umax<mode>3): Likewise.
5049 (*sse4_1_smin<mode>3): Likewise.
5050 (*sse4_1_umin<mode>3): Likewise.
5051 (sse4_1_eqv2di3): Likewise.
5052 (*sse4_1_pinsrb): Likewise.
5053 (*sse4_1_pinsrd): Likewise.
5054 (*sse4_1_pinsrq): Likewise.
5055 (*sse4_1_pextrb): Likewise.
5056 (*sse4_1_pextrb_memory): Likewise.
5057 (*sse4_1_pextrw_memory): Likewise.
5058 (*sse4_1_pextrq): Likewise.
5059 (sse4_1_blendpd): Likewise.
5060 (sse4_1_blendps): Likewise.
5061 (sse4_1_blendvpd): Likewise.
5062 (sse4_1_blendvps): Likewise.
5063 (sse4_1_dppd): Likewise.
5064 (sse4_1_dpps): Likewise.
5065 (sse4_1_movntdqa): Likewise.
5066 (sse4_1_mpsadbw): Likewise.
5067 (sse4_1_packusdw): Likewise.
5068 (sse4_1_pblendvb): Likewise.
5069 (sse4_1_pblendw): Likewise.
5070 (sse4_1_phminposuw): Likewise.
5071 (sse4_1_extendv8qiv8hi2): Likewise.
5072 (*sse4_1_extendv8qiv8hi2): Likewise.
5073 (sse4_1_extendv4qiv4si2): Likewise.
5074 (*sse4_1_extendv4qiv4si2): Likewise.
5075 (sse4_1_extendv2qiv2di2): Likewise.
5076 (*sse4_1_extendv2qiv2di2): Likewise.
5077 (sse4_1_extendv4hiv4si2): Likewise.
5078 (*sse4_1_extendv4hiv4si2): Likewise.
5079 (sse4_1_extendv2hiv2di2): Likewise.
5080 (*sse4_1_extendv2hiv2di2): Likewise.
5081 (sse4_1_extendv2siv2di2): Likewise.
5082 (*sse4_1_extendv2siv2di2): Likewise.
5083 (sse4_1_zero_extendv8qiv8hi2): Likewise.
5084 (*sse4_1_zero_extendv8qiv8hi2): Likewise.
5085 (sse4_1_zero_extendv4qiv4si2): Likewise.
5086 (*sse4_1_zero_extendv4qiv4si2): Likewise.
5087 (sse4_1_zero_extendv2qiv2di2): Likewise.
5088 (*sse4_1_zero_extendv2qiv2di2): Likewise.
5089 (sse4_1_zero_extendv4hiv4si2): Likewise.
5090 (*sse4_1_zero_extendv4hiv4si2): Likewise.
5091 (sse4_1_zero_extendv2hiv2di2): Likewise.
5092 (*sse4_1_zero_extendv2hiv2di2): Likewise.
5093 (sse4_1_zero_extendv2siv2di2): Likewise.
5094 (*sse4_1_zero_extendv2siv2di2): Likewise.
5095 (sse4_1_roundpd): Likewise.
5096 (sse4_1_roundps): Likewise.
5097 (sse4_1_roundsd): Likewise.
5098 (sse4_1_roundss): Likewise.
5099 (mulv4si3): Don't expand for SSE4.1.
5100 (smax<mode>3): Likewise.
5101 (umaxv4si3): Likewise.
5102 (uminv16qi3): Likewise.
5103 (umin<mode>3): Likewise.
5104 (umaxv8hi3): Rewrite. Only enabled for SSE4.1.
5106 * doc/extend.texi: Document SSE4.1 built-in functions.
5108 * doc/invoke.texi: Document -msse4.1.
5110 2007-05-22 Nathan Sidwell <nathan@codesourcery.com>
5112 * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
5113 * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
5114 * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
5115 (ASM_SPEC): Add asm_pcrel_spec.
5116 (EXTRA_SPECS): Add asm_pcrel_spec.
5118 2007-05-21 David Daney <ddaney@avtrex.com>
5120 * doc/install.texi (Building a cross compiler): Add requirements
5121 for Java cross compiler.
5123 2007-05-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
5126 * tree-chrec.c (evolution_function_is_affine_multivariate_p):
5127 Add loopno argument. Use evolution_function_is_invariant_rec_p
5128 instead of evolution_function_is_constant_p.
5129 Update calls to evolution_function_is_affine_multivariate_p.
5130 * tree-chrec.h (evolution_function_is_affine_multivariate_p):
5131 Add loopno argument.
5132 * tree-scalar-evolution.c (gather_chrec_stats): Call
5133 evolution_function_is_affine_multivariate_p with a loop
5135 * tree-data-ref.c (analyze_miv_subscript): Likewise.
5136 (analyze_overlapping_iterations): Likewise.
5137 (access_functions_are_affine_or_constant_p): Likewise.
5138 (build_classic_dist_vector_1): If the access functions
5139 are equal, don't do anything.
5141 2007-05-21 Paolo Bonzini <bonzini@gnu.org>
5142 Paolo Carlini <pcarlini@suse.de>
5143 Uros Bizjak <ubizjak@gmail.com>
5145 * c-cppbuiltin.c (c_cpp_builtins): Define
5146 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
5147 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
5148 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
5149 * doc/cpp.texi ([Standard Predefined Macros]): Document.
5151 2007-05-21 Mike Stump <mrs@apple.com>
5153 * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
5155 * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
5157 2007-05-21 Uros Bizjak <ubizjak@gmail.com>
5159 * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
5160 implementation if __OPTIMIZE__ is not defined.
5161 (_mm_alignr_pi8): Ditto.
5162 * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
5163 (_mm_inserti_si64): Ditto.
5164 * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
5165 (_mm_slli_epi16): Ditto.
5166 (_mm_slli_epi32): Ditto.
5167 (_mm_slli_epi64): Ditto.
5168 (_mm_srai_epi16): Ditto.
5169 (_mm_srai_epi32): Ditto.
5170 (_mm_srli_si128): Ditto.
5171 (_mm_slli_si128): Ditto.
5172 (_mm_srli_epi16): Ditto.
5173 (_mm_srli_epi32): Ditto.
5174 (_mm_srli_epi64): Ditto.
5175 (_mm_extract_epi16): Ditto.
5176 (_mm_insert_epi16): Ditto.
5177 (_mm_shufflehi_epi16): Ditto.
5178 (_mm_shufflelo_epi16): Ditto.
5179 (_mm_shuffle_epi32): Ditto.
5180 * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
5182 (_mm_insert_pi16): Ditto.
5184 (_mm_shuffle_pi16): Ditto.
5186 (_mm_shufle_ps): Ditto.
5187 (_mm_prefetch): Ditto.
5189 2007-05-21 Andreas Krebbel <krebbel1@de.ibm.com>
5191 * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
5192 * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
5193 * real.c (encode_i370_single, decode_i370_single,
5194 encode_i370_double, decode_i370_double): Functions removed.
5195 (i370_single_format, i370_double_format): Initializations removed.
5196 (real_maxval, round_for_format, exact_real_truncate, significand_size):
5197 Consider the log2_b field to always be one.
5198 (ieee_single_format, mips_single_format, coldfire_single_format,
5199 ieee_double_format, mips_double_format, coldfire_double_format,
5200 ieee_extended_motorola_format, ieee_extended_intel_96_format,
5201 ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
5202 ibm_extended_format, mips_extended_format, ieee_quad_format,
5203 mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
5204 decimal_single_format, decimal_double_format, decimal_quad_format,
5205 c4x_single_format, c4x_extended_format, real_internal_format): Remove
5206 initialization of log2_b.
5207 * real.h (i370_single_format, i370_double_format): Declarations
5209 * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
5210 field to always be one.
5212 2007-05-21 Andreas Schwab <schwab@suse.de>
5214 * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
5215 NOTE_INSN_BASIC_BLOCK_P.
5216 (process_for_unwind_directive): Likewise.
5218 2007-05-21 Nathan Sidwell <nathan@codesourcery.com>
5220 * builtins.c (expand_builtin_setjmp_setup): Update comment.
5221 * function.h (struct function): Move va_list_gpr_size,
5222 va_list_fpr_size, function_frequency to front of bitfields. Add
5224 (current_function_calls_unwind_init): New.
5225 * except.c (expand_builtin_unwind_init): Set
5226 current_function_calls_unwind_init not
5227 current_function_has_nonlocal_label.
5228 * reload1.c (has_nonexceptional_receiver): New.
5229 (reload): Use it and current_function_calls_unwind_init to
5230 determine whether call-saved regs must be saved.
5232 2007-05-20 Jan Hubicka <jh@suse.cz>
5234 * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
5235 NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5236 * ddg.c (create_ddg): LIkewise.
5237 * final.c (final): Remove hunk moving line number notes around since
5238 they are no longer present at this stage.
5239 (final_scan_insn): Use NOTE_KIND instead of
5240 NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5241 (output_asm_label): Likewise.
5242 * reorg.c (dbr_schedule): Likewise.
5243 * haifa-sched.c (unlink_other_notes): Likewise.
5244 * mode-switching.c (optimize_mode_switching): Likewise.
5245 * graph.c (start_bb): Likewise.
5246 * rtl.def (NOTE): Update description.
5247 * jump.c (squeeze_notes): Delete.
5248 (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
5249 NOTE_INSN_BASIC_BLOCK_P when possible.
5250 * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
5251 * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
5252 NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5253 (dwarf2out_var_location): Likewise.
5254 * cfgbuild.c (make_edges): Likewise.
5255 (find_basic_blocks_1): Likewise.
5256 * function.c (reorder_blocks_1): Likewise.
5257 (epilogue_done): Likewise.
5258 (reposition_prologue_and_epilogue_notes): Likewise.
5259 * print-rtl.c (print_rtx): Likewise; drop code for printing
5261 (print_rtl): Likewise.
5262 (print_rtl_single): Likewise.
5263 * gcse.c (insert_insn_start_bb): Likewise.
5264 * alias.c (init_alias_analysis): Likewise.
5265 * calls.c (fixup_tail_calls): Likewise.
5266 * except.c (sjlj_emit_function_enter): Likewise.
5267 * emit-rtl.c (add_insn_after): Likeiwse.
5268 (emit_label_before): Likewise.
5269 (emit_label_after): Likewise.
5270 (emit_note_before, emit_note_after, emit_note): Update
5271 parameter to be enum insn_note; do not deal with source
5273 * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
5274 Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
5276 (merge_blocks_move_successor_nojumps): Simplify now when
5277 we don't have BLOCK notes.
5278 (try_optimize_cfg): Likewise.
5279 * cfglayout.c (skip_insns_after_block): Likewise.
5280 (record_effective_endpoints): Likewise.
5281 (duplicate_insn_chain): Likewise.
5282 * varasm.c (output_constant_pool_1): Likewise.
5283 * sched-deps.c (sched_analyze): Likewise.
5284 * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
5286 (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
5287 * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
5288 (SET_INSN_DELETED): Simplify.
5289 (NOTE_LINE_NUMBER): Exterminate.
5290 (NOTE_LINE_KIND): New.
5291 (NOTE_INSN_BASIC_BLOCK_P): Update.
5292 (enum insn_note): Simplify.
5293 (GET_NOTE_INSN_NAME) Simplify.
5294 (emit_note_before, emit_note_after, emit_note): Update prototype.
5295 (squeeze_notes): Remove.
5296 * sched-int.h (NOTE_NOT_BB_P): Update.
5297 * resource.c (mark_target_live_regs): Update.
5298 * sched-rgn.c (debug_dependencies): Update.
5299 * sched-vis.c (print_insn): Update.
5300 * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
5301 * config/i386/i386.c (ix86_output_function_epilogue): Update.
5302 * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
5303 (TARGET_ADJUST_UNROLL_MAX): Likewise.
5304 (split_branches): Update.
5305 (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
5307 (sh_adjust_unroll_max): Exterminate.
5308 * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
5309 * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
5310 (m68hc11_reorg): Likewise.
5311 * config/ia64/ia64.c (emit_insn_group_barriers): Update.
5312 (emit_predicate_relation_info): Update.
5313 (process_for_unwind_directive): Update.
5314 * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
5315 (output_call): Update.
5316 * config/pa/pa.c (output_lbranch): Update.
5317 (output_millicode_call): Update.
5318 (output_call): Update.
5319 (pa_combine_instructions): Update.
5320 * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
5321 * config/bfin/bfin.c (gen_one_bundle): Update.
5322 * cfgrtl.c (can_delete_note_p): Update.
5323 (delete_insn): Update.
5324 (rtl_merge_blocks): Update.
5325 (commit_one_edge_insertion): Update.
5326 (rtl_verify_flow_info): Update.
5327 * stmt.c (expand_case): Do not call squeeze_notes.
5329 2007-05-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
5336 * c.opt (Wtype-limits): New.
5337 * doc/invoke.texi (Wtype-limits): Document it.
5338 (Wextra): Enabled by -Wextra.
5339 * c-opts.c (c_common_post_options): Enabled by -Wextra.
5340 * c-common.c (shorten_compare): Warn with Wtype-limits.
5342 2007-05-20 Uros Bizjak <ubizjak@gmail.com>
5344 * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
5345 inlined function, not as a macro.
5346 (_mm_alignr_pi8): Ditto.
5347 * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
5348 (_mm_inserti_si64): Ditto.
5349 * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
5350 (_mm_extract_epi16): Ditto.
5351 (_mm_insert_epi16): Ditto.
5352 (_mm_shufflehi_epi16): Ditto.
5353 (_mm_shufflelo_epi16): Ditto.
5354 (_mm_shuffle_epi32): Ditto.
5355 * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
5356 * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
5358 (_m_from_float): Add __extension__ to conversion. Use 0.0f for
5360 (_m_to_float): Use C89 compatible assignment.
5362 2007-04-20 Martin Michlmayr <tbm@cyrius.com>
5365 * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
5367 2007-05-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
5370 * doc/invoke.texi (Wreturn-type): Complete description.
5371 (Wextra): Delete item about return-type warning.
5372 * c-decl.c: Delete redundant Wextra warning.
5374 2007-05-20 Uros Bizjak <ubizjak@gmail.com>
5377 * config/i386/pmmintrin.h: Do not include xmmintrin.h
5378 * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
5379 inlined function, not as a macro.
5380 (_mm_prefetch): Ditto.
5382 (_mm_insert_pi16): Ditto.
5384 (_mm_shuffle_pi16): Ditto. Add const to __N argument.
5385 (_m_pshufw): Ditto. Add const to __N argument.
5386 (_mm_shufle_ps): Ditto. Add const to __mask argument.
5387 * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
5388 (_mm_slli_epi32): Ditto.
5389 (_mm_srli_si128): Implement as always inlined function, not as a
5390 macro. Add __inline to function declaration.
5391 (_mm_slli_si128): Ditto.
5393 2007-05-19 Uros Bizjak <ubizjak@gmail.com>
5395 * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
5396 FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
5398 (struct fenv): New structure.
5399 (FP_HANDLE_EXCEPTIONS): New define.
5400 (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
5401 (_FP_DECL_EXP): New define.
5402 (FP_INIT_ROUNDMODE): New define.
5403 (FP_ROUNDMODE): New define.
5405 2007-05-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
5407 * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
5408 (Wconversion): Update description.
5409 (Wconversion-sign): New.
5410 * c.opt (Wconversion-sign): New.
5411 * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
5412 means disabled for C++. Otherwise, take the status of Wconversion.
5413 * c-common.c (conversion_warning): Warn with either Wconversion or
5415 (warnings_for_convert_and_check): Conditions are already checked by
5417 (convert_and_check): Don't check warnings if the conversion failed.
5419 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
5420 Anatoly Sokolov <aesok@dol.ru>
5422 * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
5423 avr_epilogue_uses) : Add declaration.
5424 * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
5425 * config/avr/constraints.md (R): New constraint.
5426 config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
5427 UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
5428 (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
5429 (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
5430 (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
5431 call_prologue_saves, epilogue_restores, return_from_epilogue,
5432 return_from_main_epilogue, return_from_interrupt_epilogue,
5433 return_from_naked_epilogue, prologue, epilogue): New patterns.
5434 (jump): Handle symbol reference.
5435 * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
5436 avr_output_function_prologue, avr_output_function_epilogue): Remove
5438 (avr_init_machine_status, expand_prologue, expand_epilogue,
5439 avr_asm_function_end_prologue, avr_epilogue_uses,
5440 avr_asm_function_begin_epilogue): New functions.
5441 (prologue_size, epilogue_size, jump_tables_size): Remove global
5443 (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
5444 (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
5445 (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
5446 (avr_override_options): Initialise init_machine_status.
5447 (output_movhi): Handle all stack pointer loads.
5448 (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
5449 (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
5450 * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
5451 (EPILOGUE_USES) Redefine.
5452 (machine_function) Declare.
5454 2007-05-19 Richard Sandiford <richard@codesourcery.com>
5456 * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
5457 Use a single return statement.
5459 2007-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5462 * builtins.c (do_mpfr_lgamma_r): New.
5463 (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
5464 * tree.h (CASE_FLT_FN_REENT): New.
5466 2007-05-18 Geoffrey Keating <geoffk@apple.com>
5468 * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
5469 (output_die): Use 'unsigned long' with %x.
5470 * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
5471 HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
5472 * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
5474 * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
5476 2007-05-18 H.J. Lu <hongjiu.lu@intel.com>
5481 * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
5482 true if function has no argument.
5484 2007-05-18 DJ Delorie <dj@redhat.com>
5486 * config/mips/mips.c (mips_offset_within_alignment_p): New.
5487 (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
5489 2007-05-18 Uros Bizjak <ubizjak@gmail.com>
5491 * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
5492 sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
5493 count_trailing_zeros.
5494 (__i386__): Implement count_leading_zeros using __builtin_clz().
5495 Implement count_trailing_zeros usign __builtin_ctz().
5497 2007-05-18 Richard Sandiford <richard@codesourcery.com>
5499 * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
5501 2007-05-18 Uros Bizjak <ubizjak@gmail.com>
5504 * expr.c (emit_move_change_mode): Change mode of push operands here.
5506 2007-05-17 Ian Lance Taylor <iant@google.com>
5508 PR tree-optimization/31953
5509 * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
5511 (set_value_range_to_null): Call set_value_range_to_value.
5512 (extract_range_from_comparison): Likewise.
5514 2007-05-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5516 * toplev.c (print_version): Output GMP/MPFR version info.
5518 * builtins.c (CASE_MATHFN_REENT): New macro.
5519 (mathfn_built_in): Use it.
5520 * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
5521 BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
5522 BUILT_IN_LGAMMAL_R): New.
5523 * doc/extend.texi: Document new builtins.
5526 * builtins.c (do_mpfr_remquo): New.
5527 (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
5528 (fold_builtin_3): Handle BUILT_IN_REMQUO.
5531 * builtins.c (fold_builtin_1): Handle y0, y1.
5532 (fold_builtin_2): Handle yn.
5535 * builtins.c (do_mpfr_bessel_n): New.
5536 (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
5537 (fold_builtin_2): Handle BUILT_IN_JN.
5539 2007-05-17 Danny Smith <dannysmith@users.sourceforge.net>
5542 * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
5543 TYPE_PRECISION (intmax_type_node).
5545 2007-05-17 Steve Ellcey <sje@cup.hp.com>
5548 * reload.c (subst_reloads): Remove checking.
5550 2007-05-17 Eric Botcazou <ebotcazou@libertysurf.fr>
5552 PR rtl-optimization/31691
5553 * combine.c (simplify_set): Build a new src pattern instead of
5554 substituting its operands in the COMPARE case.
5556 2007-05-17 Zdenek Dvorak <dvorakz@suse.cz>
5558 * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
5559 (execute_vrp): Preserve loops through jump threading.
5560 * tree-ssa-threadupdate.c (thread_single_edge,
5561 dbds_continue_enumeration_p, determine_bb_domination_status,
5562 thread_through_loop_header): New functions.
5563 (create_edge_and_update_destination_phis,
5564 create_edge_and_update_destination_phis): Set loops for the new blocks.
5565 (prune_undesirable_thread_requests): Removed.
5566 (redirect_edges): Do not pretend that redirect_edge_and_branch can
5568 (thread_block): Do not call prune_undesirable_thread_requests.
5570 (mark_threaded_blocks): Select edges to thread here.
5571 (thread_through_all_blocks): Take may_peel_loop_headers argument.
5572 Thread edges through loop headers independently.
5573 * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
5574 * tree-pass.h (TODO_mark_first_instance): New.
5575 (first_pass_instance): Declare.
5576 * cfghooks.c (duplicate_block): Put the block to the original loop
5577 if copy is not specified.
5578 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
5579 jump threading. Pass may_peel_loop_headers to
5580 thread_through_all_blocks according to first_pass_instance.
5581 * cfgloop.h (create_preheader): Declare.
5582 * tree-flow.h (thread_through_all_blocks): Declaration changed.
5583 * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
5584 * passes.c (first_pass_instance): New variable.
5585 (next_pass_1): Set TODO_mark_first_instance.
5586 (execute_todo): Set first_pass_instance.
5588 2007-05-17 Uros Bizjak <ubizjak@gmail.com>
5590 PR tree-optimization/24659
5591 * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
5592 OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
5593 OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
5594 OTI_vec_pack_ufix_trunc.
5595 (vec_unpacks_float_hi_optab): Define new macro.
5596 (vec_unpacks_float_lo_optab): Ditto.
5597 (vec_unpacku_float_hi_optab): Ditto.
5598 (vec_unpacku_float_lo_optab): Ditto.
5599 (vec_pack_sfix_trunc_optab): Ditto.
5600 (vec_pack_ufix_trunc_optab): Ditto.
5601 * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
5602 and vec_pack_[s|u]fix_trunc_optab using
5603 vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
5604 * tree-vectorizer.c (supportable_widening_operation): Handle
5605 FLOAT_EXPR and CONVERT_EXPR. Update comment.
5606 (supportable_narrowing_operation): New function.
5607 * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
5608 * tree-vect-transform.c (vectorizable_conversion): Handle
5609 (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
5610 (vect_gen_widened_results_half): Move before vectorizable_conversion.
5611 (vectorizable_type_demotion): Call supportable_narrowing_operation()
5612 to check for target support.
5613 * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
5614 for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
5615 for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
5616 for VEC_PACK_FIX_TRUNC_EXPR.
5617 (expand_binop): Special case mode of the result for
5618 vec_pack_[u|s]fix_trunc_optab.
5619 (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
5620 vec_pack_[u|s]fix_trunc_optab.
5622 * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
5623 VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
5624 * tree-pretty-print.c (dump_generic_node): Handle
5625 VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
5626 VEC_PACK_FIX_TRUNC_EXPR.
5628 * expr.c (expand_expr_real_1): Ditto.
5629 * tree-inline.c (estimate_num_insns_1): Ditto.
5630 * tree-vect-generic.c (expand_vector_operations_1): Ditto.
5632 * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
5633 (vec_unpacks_float_lo_v8hi): Ditto.
5634 (vec_unpacku_float_hi_v8hi): Ditto.
5635 (vec_unpacku_float_lo_v8hi): Ditto.
5636 (vec_unpacks_float_hi_v4si): Ditto.
5637 (vec_unpacks_float_lo_v4si): Ditto.
5638 (vec_pack_sfix_trunc_v2df): Ditto.
5640 * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
5642 [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
5643 [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
5644 * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
5645 [vec_pack_ufix_trunc]: Ditto.
5646 [vec_unpacks_float_hi]: Ditto.
5647 [vec_unpacks_float_lo]: Ditto.
5648 [vec_unpacku_float_hi]: Ditto.
5649 [vec_unpacku_float_lo]: Ditto.
5651 2007-05-16 Uros Bizjak <ubizjak@gmail.com>
5653 * soft-fp/README: Update for new files.
5654 * soft-fp/floattisf.c: New file.
5655 * soft-fp/floattidf.c: New file.
5656 * soft-fp/floattitf.c: New file.
5657 * soft-fp/floatuntisf.c: New file.
5658 * soft-fp/floatuntidf.c: New file.
5659 * soft-fp/floatuntitf.c: New file.
5660 * soft-fp/fixsfti.c: New file.
5661 * soft-fp/fixdfti.c: New file.
5662 * soft-fp/fixtfti.c: New file.
5663 * soft-fp/fixunssfti.c: New file.
5664 * soft-fp/fixunsdfti.c: New file.
5665 * soft-fp/fixunstfti.c: New file.
5666 * soft-fp/extendxftf.c: New file.
5667 * soft-fp/trunctfxf.c: New file.
5669 * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
5670 (__trunctfxf2): Ditto.
5672 * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
5673 __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
5674 __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
5675 __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
5676 __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
5677 __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
5679 * config/i386/t-fprules-softfp64: New file.
5680 * config/i386/sfp-machine.h: New file.
5681 * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
5682 x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
5683 and soft-fp/t-softfp to tmake_file.
5684 (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
5685 i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
5687 * config/i386/t-linux64 (softfp_wrap_start): New.
5688 (softfp_wrap_end): New.
5689 * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
5690 supported for TARGET_64BIT.
5692 2007-05-16 Rafael Avila de Espindola <espindola@google.com>
5694 * c-common.c (c_common_signed_or_unsigned_type): Emulate
5695 c_common_unsigned_type behavior.
5697 2007-05-16 Paolo Bonzini <bonzini@gnu.org>
5699 * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
5702 2007-05-16 Eric Christopher <echristo@apple.com>
5704 * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
5705 saving after stack push. Set sp_offset whenever we push.
5706 (rs6000_emit_epilogue): Move altivec register restore before
5709 2007-05-16 Richard Sandiford <richard@codesourcery.com>
5711 * configure.ac: Allow sysroots to be relocated under $prefix as
5712 well as $exec_prefix.
5713 * configure: Regenerate.
5715 2007-05-16 Richard Sandiford <richard@codesourcery.com>
5719 2007-05-12 Richard Sandiford <richard@codesourcery.com>
5721 * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
5722 (gcc_tooldir): Likewise.
5723 * configure: Regenerate.
5724 * Makefile.in (libsubdir_to_prefix): New variable, based on the
5725 old configure.ac gcc_tooldir setting.
5726 (prefix_to_exec_prefix): New variable.
5727 (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
5728 rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
5730 2007-05-14 Janis Johnson <janis187@us.ibm.com>
5732 * c-typeck.c (build_binary_op): Return early for error.
5734 2007-05-15 Zdenek Dvorak <dvorakz@suse.cz>
5736 * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
5737 struct nb_iter_bound.
5738 (free_numbers_of_iterations_estimates_loop): Use ggc_free.
5739 * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
5740 * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
5741 * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
5742 (struct scev_info_str, scalar_evolution_info): Add GTY markers.
5743 (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
5744 (del_scev_info): Use ggc_free.
5745 (scev_initialize): Allocate scalar_evolution_info in gc memory.
5746 * loop-init.c: Include ggc.h.
5747 (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
5748 (loop_optimizer_finalize): Use ggc_free.
5749 * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
5750 pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
5751 pass_iv_optimize): Add TODO_ggc_collect.
5752 * function.h (struct function): Remove skip marker from
5754 * cfgloop.c: Include ggc.h.
5755 (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
5757 (establish_preds): Vector superloops is gc allocated.
5758 (alloc_loop): Allocate loop using GGC_CNEW. Allocate head of
5760 (flow_loops_find): Vector larray is gc allocated.
5761 (loop_exit_free): Use ggc_free.
5762 (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit. Reflect
5763 that head of exits list is now not a part of struct loop.
5764 (record_loop_exits): Allocate exits table in gc memory.
5765 (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
5766 that head of exits list is now not a part of struct loop.
5767 * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
5768 struct loop_exit): Add GTY marker.
5769 (struct loop): Add GTY marker. Make superloops vector gc allocated.
5770 Add skip marker to aux field. Make head of exits list a separate
5772 (struct loops): Add GTY marker. Make larray vector gc allocated.
5773 Add param marker to exits table.
5774 (get_loops): Type changed.
5775 * Makefile.in (tree-scalar-evolution.o): Add
5776 gt-tree-scalar-evolution.h dependency.
5777 (cfgloop.o, loop-init.o): Add ggc.h dependency.
5778 (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
5779 * basic-block.h (struct basic_block_def): Remove skip marker from
5782 2007-05-14 Uros Bizjak <ubizjak@gmail.com>
5784 * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
5785 of 0 in the call to expand_expr().
5786 (expand_builtin_mathfn_3): Ditto.
5787 (expand_builtin_interclass_mathfn): Ditto.
5788 (expand_builtin_cexpi): Ditto.
5789 (expand_builtin_int_roundingfn): Ditto.
5790 (expand_builtin_int_roundingfn_2): Ditto.
5791 (expand_builtin_pow): Ditto.
5792 (expand_builtin_powi): Ditto.
5793 (expand_builtin_bswap): Ditto.
5794 (expand_builtin_unop): Ditto.
5795 (expand_builtin_fabs): Ditto.
5796 (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
5797 the call to expand_expr().
5798 (expand_builtin_sync_operation): Ditto.
5799 (expand_builtin_compare_and_swap): Ditto.
5800 (expand_builtin_lock_test_and_set): Ditto.
5801 * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
5802 instead of 0 in the call to expand_expr().
5803 (expand_builtin_extract_return_addr): Ditto.
5804 (expand_builtin_eh_return): Ditto.
5805 (expand_eh_return): Ditto.
5806 * explow.c (expr_size): Ditto.
5807 * expr.c (optimize_bitfield_assignment_op): Ditto.
5808 (expand_assignement): Ditto.
5809 (store_expr): Ditto.
5810 (store_field): Ditto.
5811 (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
5812 the call to expand_expr().
5813 (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
5814 in the call to expand_expr().
5815 [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
5816 BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
5817 [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
5819 * optabs.c (expand_vec_shift_expr): Ditto.
5820 (expand_vec_cond_expr): Ditto.
5821 (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
5822 call to expand_expr().
5823 * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
5824 in the call to expand_expr().
5826 2007-05-14 Dave Korn <dave.korn@artimi.com>
5828 * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
5830 2007-05-14 Rafael Avila de Espindola <espindola@google.com>
5832 * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
5833 instead of c_common_unsigned_type.
5834 (c_common_unsigned_type): Remove.
5835 (shorten_compare): Use c_common_signed_or_unsigned_type instead of
5836 c_common_unsigned_type.
5837 (c_common_nodes_and_builtins): Use unsigned_type_for instead of
5838 c_common_unsigned_type.
5839 * c-common.h (c_common_unsigned_type): Remove.
5840 * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
5841 c_common_unsigned_type.
5842 * c-format.c (check_format_types): Use unsigned_type_for instead of
5843 c_common_unsigned_type.
5844 * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
5845 * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
5846 of c_common_unsigned_type.
5847 * convert.c (convert_to_integer): Use unsigned_type_for instead of
5848 lang_hooks.types.unsigned_type.
5849 * expmed.c (make_tree): Use unsigned_type_for instead of
5850 lang_hooks.types.unsigned_type.
5851 * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
5852 lang_hooks.types.unsigned_type.
5853 (build_range_check): Likewise.
5854 (fold_unary): Likewise.
5855 (fold_binary): Likewise.
5856 (fold_ternary): Likewise.
5857 * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
5858 * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
5859 * tree.c (get_unsigned_type): New.
5860 (unsigned_type_for): Use get_unsigned_type instead of
5861 lang_hooks.types.unsigned_type.
5863 2007-05-14 Kazu Hirata <kazu@codesourcery.com>
5865 * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
5866 to m68k_get_function_kind. Update its prototype.
5867 * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
5869 (m68k_interrupt_function_p): Return enum m68k_function_type
5870 instead of bool. Rename to m68k_get_function_kind.
5871 (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
5873 (m68k_compute_frame_layout): Don't mark any register for save
5874 if an interrupt_thread attribute is specified.
5875 (m68k_hard_regno_rename_ok): Update a use of
5876 m68k_interrupt_function_p.
5877 * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
5878 m68k_interrupt_function_p.
5879 (m68k_function_type): New.
5880 * config/m68k/m68k.md (*return): Output a 'sleep' instruction
5881 for a function with an interrupt_thread attribute.
5882 * doc/extend.texi: Document the interrupt_thread attribute.
5884 2007-05-13 Daniel Berlin <dberlin@dberlin.org>
5886 Fix PR tree-optimization/31911
5887 * tree-ssa-pre.c (phi_translate): Make sure to cache results even
5888 if they didn't change the expression.
5890 2007-05-13 Zdenek Dvorak <dvorakz@suse.cz>
5892 * tree-scalar-evolution.c (resolve_mixers): Exported.
5893 * tree-scalar-evolution.h (resolve_mixers): Declare.
5894 * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
5895 ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
5896 record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
5897 base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
5898 init_array_ref, init_pointer_ref, analyze_indirect_ref,
5899 strip_conversion, analyze_offset_expr, address_analysis,
5900 object_analysis, analyze_offset): Removed.
5901 (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
5902 split_constant_offset, canonicalize_base_object_address,
5903 object_address_invariant_in_loop_p, disjoint_objects_p,
5904 dr_may_alias_p, dr_address_invariant_p): New functions.
5905 (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
5906 and dr_analyze_alias.
5907 (initialize_data_dependence_relation): Use dr_may_alias_p
5908 and object_address_invariant_in_loop_p.
5909 (compute_self_dependence): Handle the case when
5910 DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
5911 (find_data_references_in_stmt): Restrict the analysis of data
5912 references to the given loop nest.
5913 (find_data_references_in_loop): Made static. Pass loop nest to
5914 find_data_references_in_stmt.
5915 (compute_data_dependences_for_loop): Use DR_VOPS.
5916 (free_data_ref): Free DR_VOPS.
5917 * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
5918 (struct innermost_loop_behavior): ... new.
5919 (struct base_object_info): Replaced by ...
5920 (struct indices): ... new.
5921 (struct dr_alias): New.
5922 (enum data_ref_type): Removed.
5923 (struct data_reference): Consist of struct innermost_loop_behavior,
5924 struct indices and struct dr_alias.
5925 (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
5926 (DR_MEMTAG): Renamed to ...
5927 (DR_SYMBOL_TAG): ... this.
5928 (find_data_references_in_loop): Declaration removed.
5929 * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
5930 instead of DR_OFFSET_MISALIGNMENT. DR_ALIGNED_TO is never NULL.
5931 (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
5932 * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
5934 2007-05-13 Revital Eres <eres@il.ibm.com>
5936 * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
5937 which walks virtual def-use chains to find redundant stores.
5938 (dse_optimize_stmt): Call it.
5940 2007-05-12 Steven Bosscher <steven@gcc.gnu.org>
5942 * gcse.c (gcse_main): Do jump bypassing in CPROP2.
5943 * passes.c (init_optimization_passes): Move pass_jump_bypass
5946 * basic-block.h (bb_has_eh_pred): Fix style issue.
5948 2007-05-12 Steven Bosscher <steven@gcc.gnu.org>
5950 PR rtl-optimization/31848
5951 * loop-invariant.c (move_invariant_reg): If we move an insn
5952 with a REG_EQUAL note, and that insn is not always executed,
5953 remove the REG_EQUAL note.
5955 2007-05-12 Richard Guenther <rguenther@suse.de>
5957 PR tree-optimization/31797
5958 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
5959 propagate into a stmt that has volatile ops.
5961 2007-05-12 Richard Sandiford <richard@codesourcery.com>
5963 * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
5964 (gcc_tooldir): Likewise.
5965 * configure: Regenerate.
5966 * Makefile.in (libsubdir_to_prefix): New variable, based on the
5967 old configure.ac gcc_tooldir setting.
5968 (prefix_to_exec_prefix): New variable.
5969 (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
5970 rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
5972 2007-05-11 Silvius Rus <rus@google.com>
5974 * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
5975 * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
5976 * c-common.h (strict_aliasing_warning): Change return type.
5977 * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
5978 * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
5979 (build_c_cast): Condition call to strict_aliasing_warning.
5980 * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
5981 * flags.h (set_Wstrict_aliasing): Declare.
5982 * opts.c (set_Wstrict_alising): Define, add call to.
5983 * tree-flow.h (strict_aliasing_warning_backend): Declare.
5984 * tree-ssa-alias-warnings.c: New file.
5985 * tree-ssa-alias.c (compute_may_aliases): Add call to
5986 strict_aliasing_warning_backend.
5988 2007-05-11 Zdenek Dvorak <dvorakz@suse.cz>
5990 * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
5991 Use loop_depth and loop_outer accessor functions.
5992 * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
5993 determine_invariantness_stmt, move_computations_stmt): Ditto.
5994 * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
5995 add_loop, loopify, unloop, fix_loop_structure): Ditto.
5996 * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
5997 * tree-scalar-evolution.c (interpret_loop_phi,
5998 compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
5999 instantiate_parameters_1, scev_const_prop): Ditto.
6000 * cfghooks.c (make_forwarder_block): Ditto.
6001 * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
6002 * modulo-sched.c (loop_canon_p): Ditto.
6003 * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
6004 slpeel_can_duplicate_loop_p): Ditto.
6005 * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
6006 * tree-cfg.c (tree_duplicate_sese_region): Ditto.
6007 * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
6008 cancel_loop, verify_loop_structure): Ditto.
6009 (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
6010 add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
6011 superloops vector instead of "pred" array.
6012 (establish_preds): Take father loop as an argument. Initialize the
6014 (flow_loop_tree_node_add): Pass father loop to establish_preds.
6015 Do not initialize loop->outer.
6016 (flow_loop_tree_node_remove): Truncate the superloops vector.
6017 * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
6018 "pred" merged to "superloops" vector.
6019 (loop_depth, loop_outer): New.
6020 (fel_init): Use loop_outer.
6022 2007-05-11 Jan Hubicka <jh@suse.cz>
6024 * cgraphunit.c: Include gt-cgraphunit.h
6025 (static_ctors, static_dtors): New static vars.
6026 (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
6027 based on implementation in c-common.c
6028 (cgraph_finalize_function): Call record_cdtor_fn.
6029 (cgraph_optimize): Call cgraph_build_cdtor_fns.
6030 * decl.c (finish_function): Do not call c_record_cdtor_fn.
6031 (c_write_global_declarations): Do not call c_build_cdtor_fns.
6032 * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
6033 build_cdtor, c_build_cdtor_fns): Remove.
6034 * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
6035 c_build_cdtor_fns): Remove prototype.
6037 2007-05-11 Paolo Carlini <pcarlini@suse.de>
6040 * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
6041 * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
6042 * builtins.c (fold_builtin_memchr): New.
6043 (expand_builtin_memchr): Call the latter.
6044 (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
6045 * doc/extend.texi ([Other built-in functions provided by GCC]):
6048 2007-05-11 Andreas Krebbel <krebbel1@de.ibm.com>
6050 * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
6051 PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
6052 PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
6053 PFPO_OP1_TYPE_SHIFT): Constants added.
6054 (DFP_ALL): Mode macro defined.
6055 ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
6056 "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
6057 Insn definitions added.
6058 ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
6059 "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
6062 2007-05-10 Zdenek Dvorak <dvorakz@suse.cz>
6064 PR tree-optimization/31885
6065 * tree-chrec.c (chrec_contains_undetermined): Do not consider
6066 NULL_TREE to be undetermined.
6067 (automatically_generated_chrec_p): Return false for NULL.
6069 2007-05-08 Bernd Schmidt <bernd.schmidt@analog.com>
6071 * config/bfin/bfin.h (MOVE_RATIO): Define.
6073 2007-05-10 Richard Sandiford <richard@codesourcery.com>
6075 * config.gcc (sparc-wrs-vxworks): New target.
6076 * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
6077 * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
6078 * config/sparc/sparc.h: Include vxworks-dummy.h.
6079 (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
6080 include LABEL_REFs too.
6081 * config/sparc/sparc.c (sparc_expand_move): Don't assume that
6082 _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
6084 (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
6086 (load_pic_register): Use gen_vxworks_load_got for VxWorks.
6087 (sparc_emit_call_insn): New function.
6088 (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
6089 functions when generating VxWorks PIC.
6090 * config/sparc/sparc.md (vxworks_load_got): New pattern.
6091 (call, call_value): Use sparc_emit_call_insn instead of
6094 2007-05-09 Bob Wilson <bob.wilson@acm.org>
6096 * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
6098 2007-05-09 Bob Wilson <bob.wilson@acm.org>
6100 * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
6101 for floating-point values if HOST_BITS_PER_LONG > 32. Use
6102 split_double instead of operand_subword.
6104 2007-05-08 Bernd Schmidt <bernd.schmidt@analog.com>
6106 * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
6107 * config/bfin/bfin.c (bfin_local_alignment): New function.
6108 * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
6110 2007-05-08 Chao-ying Fu <fu@mips.com>
6112 * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
6113 * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
6114 (smsub_widen_optab, umsub_widen_optab): Define.
6115 * optabs.c (init_optabs): Initialize smsub_widen_optab and
6117 * genopinit.c (optabs): Fill in smsub_widen_optab and
6119 * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
6120 and umsub_widen_optab to implement multiply-subtract sequences.
6121 * config/mips/mips.md (*msac<u>_di): Rename to...
6122 (<u>msubsidi4): ...this. Extend condition to include
6123 GENERATE_MADD_MSUB and TARGET_DSPR2. Change the constraint
6124 of operand 0 to "ka" and use the three-operand form of msub<u>
6126 * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
6129 2007-05-08 Kaz Kojima <kkojima@gcc.gnu.org>
6131 PR rtl-optimization/28011
6132 * reload.c (push_reload): Set dont_share if IN appears in OUT
6133 also when IN is a PLUS rtx.
6134 (reg_overlap_mentioned_for_reload_p): Return true if X and IN
6137 2007-05-08 Kazu Hirata <kazu@codesourcery.com>
6139 * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL. Don't
6140 call unshare_all_decls.
6141 (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
6142 (unshare_all_decls): Remove.
6144 2007-05-08 Simon Martin <simartin@users.sourceforge.net>
6147 * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
6150 2007-05-08 Sandra Loosemore <sandra@codesourcery.com>
6151 Nigel Stephens <nigel@mips.com>
6153 * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
6154 Update comments and all uses.
6155 (MIN_FPRS_PER_FMT): Define.
6156 * config/mips/mips.c (function_arg): Fix to correctly handle
6157 the -mips32r2 -mfp64 -mabi=32 case.
6158 (override_options): Enable use of odd-numbered registers for
6159 SFmode values on MIPS32.
6160 (mips_save_reg_p): Save whole floating-point register pair if
6161 either half is used.
6162 (compute_frame_size): Fix comment.
6164 2007-05-08 Jie Zhang <jie.zhang@analog.com>
6166 * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
6167 argument of type bool.
6168 * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
6169 argument. Safely select temporary P register according to it.
6170 (do_link): Change call site of add_to_reg accordingly.
6171 (do_unlink): Add epilogue_p as a fourth argument and pass it
6173 (expand_interrupt_handler_epilogue): Change call of do_unlink
6175 (bfin_expand_prologue): Add a third argument sibcall_p.
6176 * config/bfin/bfin.md (epilogue): Change call of
6177 bfin_expand_epilogue accordingly.
6178 (sibcall_epilogue): Likewise.
6179 (eh_return_internal): Likewise.
6181 * config/bfin/bfin-protos.h (enum bfin_cpu): Add
6182 BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
6183 * config/bfin/bfin.c (bfin_handle_option): Handle
6184 -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
6185 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
6186 Support bf534, bf536 and bf561.
6187 * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
6189 2007-05-08 Uros Bizjak <ubizjak@gmail.com>
6192 * config/i386/i386.c (ix86_function_regparm): Process local
6193 functions only when TREE_CODE (decl) equals FUNCTION_DECL.
6195 2007-05-07 Mike Stump <mrs@apple.com>
6197 * doc/invoke.texi (Warning Options): Document that -Wempty-body
6198 also checks for and while statements in C++.
6200 2007-05-07 Nathan Froyd <froydnj@codesourcery.com>
6202 * gcc.c (at_file_supplied): New variable.
6203 (main): Set it if we expanded argv.
6204 (do_spec_1): Pass an @-file to the linker if we were called with
6205 an @-file argument and HAVE_GNU_LD.
6206 * collect2.c (at_file_supplied): New variable.
6207 (response_file): New variable.
6208 (collect_exit): Unlink response_file if necessary.
6209 (handler): Likewise.
6210 (do_wait): Likewise.
6211 (main): Set at_file_supplied if we expanded argv.
6212 (collect_execute): Pass an @-file to subprocesses if we were called
6213 with an @-file argument.
6214 * configure.ac: Add define for HAVE_GNU_LD.
6215 * configure: Regenerate.
6216 * config.in: Regenerate.
6218 2007-05-07 Naveen.H.S <naveen.hs@kpitcummins.com>
6220 * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
6226 2007-05-07 Jayant Sonar <jayants@kpitcummins.com>
6228 * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
6229 (TARGET_ENCODE_SECTION_INFO): Re-define.
6230 (m32c_encode_section_info): New
6231 (function_vector_handler): New
6232 (current_function_special_page_vector): New
6233 (m32c_special_page_vector_p): New.
6234 * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
6236 * config/m32c/jump.md: Added instruction JSRS for functions
6237 with attribute "function_vector".
6238 * doc/extend.texi (function_vector): Added description
6239 for M16C, M32C targets.
6241 2007-05-07 DJ Delorie <dj@redhat.com>
6244 * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
6245 ashrpsi3, lshrpsi3): Update shift count constraint.
6247 2007-05-07 Danny Smith <dannysmith@users.sourceforge.net>
6248 Nathan Froyd <froydnj@codesourcery.com>
6251 * c-incpath.c (add_path): Strip trailing path separators.
6253 2007-05-07 Eric Botcazou <ebotcazou@adacore.com>
6255 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
6256 Free dominance info before purging EH edges.
6257 (eliminate_degenerate_phis): Likewise.
6258 (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
6260 2007-05-07 Jan Hubicka <jh@suse.cz>
6262 * gimplify.c (gimplify_expr): Do not crash when folding
6263 (void *)(int)&a + 4.
6265 2007-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
6268 * c-opts.c (lang_fortran): Make it non static.
6269 * c-common.h (lang_fortran): New prototype.
6270 * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
6271 -lang-fortran option was passed by the driver.
6273 2007-05-06 Eric Botcazou <ebotcazou@adacore.com>
6275 * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
6276 of ASSERT_CHECKING. Tweak message.
6278 2007-05-06 Revital Eres <eres@il.ibm.com>
6281 * loop-unroll.c (insert_var_expansion_initialization):
6282 Initialize the expansions with -zero instead of +zero.
6284 2007-05-05 Aurelien Jarno <aurelien@aurel32.net>
6286 * config/pa/pa.md: Split tgd_load, tld_load and tie_load
6287 into pic and non-pic versions. Mark r19 as used for
6288 tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
6289 for tgd_load, tld_load and tie_load .
6290 * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
6291 version of tgd_load, tld_load and tie_load depending on the
6294 2007-05-04 Ulrich Drepper <drepper@redhat.com>
6295 Jakub Jelinek <jakub@redhat.com>
6297 * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
6298 (__do_global_dtors_aux): Use more paranoid loop to run
6299 destructors if HIDDEN_DTOR_LIST_END.
6300 (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
6302 2007-05-04 Jakub Jelinek <jakub@redhat.com>
6304 * varasm.c (align_variable): Don't increase alignment for
6305 DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
6306 DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
6308 2007-05-04 Josh Conner <jconner@apple.com>
6310 * basic-block.h (cdi_direction): Assign values to all enumeration
6312 (dom_computed): Remove.
6313 (dom_info_state): New.
6314 (set_dom_info_availability): New.
6315 * tree-ssa-loop-im.c (determine_invariantness): Initialize
6316 walk_data.dom_direction.
6317 * cfghooks.c (delete_basic_block): Use dom_info_available_p()
6318 instead of dom_computed[].
6319 (split_edge): Likewise.
6320 (create_basic_block): Likewise.
6321 (merge_blocks): Likewise.
6322 * ifcvt.c (find_if_header): Likewise.
6323 * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
6324 * tree-ssa-dce.c (remove_dead_stmt): Likewise.
6325 * tree-ssa.c (verify_ssa): Likewise.
6326 * tree-cfg.c (tree_verify_flow_info): Likewise.
6327 (remove_edge_and_dominated_blocks): Likewise.
6328 * dominance.c (dom_computed): Make static.
6329 (calc_dfs_tree_nonrec): Change third param to a bool.
6330 (calc_dfs_tree): Change second param to a bool.
6331 (calc_idioms): Change second param to a bool. Use
6332 dom_convert_dir_to_idx.
6333 (init_dom_info): Validate dir before using.
6334 (dom_convert_dir_to_idx): New.
6335 (calculate_dominance_info): Use dom_convert_dir_to_idx. New
6336 variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
6337 (free_dominance_info): Use dom_convert_dir_to_idx.
6338 (get_immediate_dominator): Likewise.
6339 (set_immediate_dominator): Likewise.
6340 (get_dominated_by): Likewise.
6341 (redirect_immediate_dominators): Likewise.
6342 (nearest_common_denominator): Likewise.
6343 (dominated_by_p): Likewise.
6344 (bb_dom_dfs_in): Likewise.
6345 (bb_dom_dfs_out): Likewise.
6346 (recount_dominator): Likewise.
6347 (iterate_fix_dominators): Likewise.
6348 (add_to_dominance_info): Likewise.
6349 (delete_from_dominance_info): Likewise.
6350 (first_dom_son): Likewise.
6351 (next_dom_son): Likewise.
6352 (dom_info_available_p): Likewise.
6353 (dom_info_state): New.
6354 (set_dom_info_availability): New.
6356 2007-05-04 Andreas Krebbel <krebbel1@de.ibm.com>
6358 * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
6360 ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
6362 2007-05-04 Bob Wilson <bob.wilson@acm.org>
6364 * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
6365 (subdi3, subdi_carry): Delete.
6367 2007-05-04 Jan Hubicka <jh@suse.cz>
6368 Richard Guenther <rguenther@suse.de>
6370 * opts.c (decode_options): Do not fiddle with inlining
6371 parameters in case of optimizing for size.
6372 * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
6373 for size do nothing.
6374 (cgraph_decide_inlining_of_small_function): When optimizing for
6375 size never inline functions increasing caller size.
6376 (cgraph_early_inlining): Inline for size when optimizing for size.
6378 2007-04-18 Bernd Schmidt <bernd.schmidt@analog.com>
6380 * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
6381 logical operations piecewise.
6382 (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
6383 zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
6384 subdi_sesidi_di): Delete.
6385 (add_with_carry): Produce carry in CC instead of a DREG to shorten
6386 the generated sequence. Allow three-reg add in constraints. Rewrite
6387 the rtl expression for carry to avoid zero_extend of a constant.
6388 (sub_with_carry): New pattern.
6389 (adddi3, subdi3): Change into define_expand. For subtract, generate a
6390 different sequence not involving jumps.
6391 (notbi): Now a named pattern.
6393 2007-05-04 Bradley Lucier <lucier@math.purdue.edu>
6395 * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
6396 Add the note about a significant loss of accuracy of some
6397 mathematical routines when these options are used.
6399 2007-05-04 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
6401 * haifa-sched.c (rtx_vec_t): New typedef.
6402 (contributes_to_priority_p): Extract piece of priority () into new
6404 (priority): Use the function. Add assertion.
6405 (rank_for_schedule, set_priorities): Add assertion to check that
6406 insn's priority is initialized.
6407 (clear_priorities, calc_priorities): Change signature. Make it update
6408 all relevant insns. Update all callers ('add_to_speculative_block ()'
6409 and 'create_block_check_twin ()').
6410 * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
6411 Add new field 'priority_status'.
6412 (INSN_PRIORITY_STATUS): New macro.
6413 (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
6415 2007-05-04 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
6417 * sched-ebb.c (debug_ebb_dependencies): New static function.
6418 (init_ready_list): Use it.
6420 * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
6421 with changed signature and 'debug_rgn_dependencies ()'.
6422 (debug_rgn_dependencies): New static function.
6423 (init_ready_list): Use it.
6425 * sched-int.h (debug_dependencies): Declare.
6427 2007-05-04 Andreas Krebbel <krebbel1@de.ibm.com>
6429 * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
6431 2007-05-04 Dirk Mueller <dmueller@suse.de>
6433 * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
6435 2007-05-03 Jan Hubicka <jh@suse.cz>
6437 * fold-const.c (fold_unary): Convert (T1)(X op Y) into
6438 ((T1)X op (T1)Y), for pointer type in more cases than before.
6440 * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
6442 * tree-object-size.c (plus_expr_object_size): When operand size is
6443 unknown, return unknown.
6445 2007-05-03 Dirk Mueller <dmueller@suse.de>
6447 * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
6449 * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
6452 * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
6454 2007-05-03 Janis Johnson <janis187@us.ibm.com>
6456 * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
6458 2007-05-03 Joseph Myers <joseph@codesourcery.com>
6460 * config/soft-fp/double.h, config/soft-fp/extended.h,
6461 config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
6462 config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
6463 config/soft-fp/op-2.h, config/soft-fp/op-4.h,
6464 config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
6467 2007-05-03 Ian Lance Taylor <iant@google.com>
6469 * config/rs6000/rs6000.c (rs6000_override_options): Don't set
6470 MASK_PPC_GFXOPT for 8540 or 8548.
6472 2007-05-03 Uros Bizjak <ubizjak@gmail.com>
6474 * tree-vect-transform.c (vect_update_inits_of_drs): Use
6475 vect_print_dump_info() to output debug information.
6477 2007-05-03 Uros Bizjak <ubizjak@gmail.com>
6480 * config/i386/i386.c (print_operand) ['z']: Output 'w' for
6481 operands of size 2 when operand is not MEM_P.
6483 2007-05-03 Zdenek Dvorak <dvorakz@suse.cz>
6485 PR tree-optimization/30565
6486 * lambda-code.c (perfect_nestify): Fix updating of dominators.
6488 2007-05-03 Bernd Schmidt <bernd.schmidt@analog.com>
6490 * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
6491 (umulsi3_highpart): Use them.
6492 * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
6493 for final accumulator to D regisster tranfser.
6495 2007-05-03 Dorit Nuzman <dorit@il.ibm.com>
6497 PR tree-optimization/31699
6498 * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
6500 (vect_enhance_data_refs_alignment): Compute peel amount using
6501 TYPE_VECTOR_SUBPARTS instead of vf.
6502 * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
6504 2007-05-02 Brooks Moses <brooks.moses@codesourcery.com>
6507 * system.h: Remove inclusion of double-int.h
6508 * tree.h: Include double-int.h
6509 * gengtype.c: Likewise
6510 * cfgloop.h: Likewise
6511 * Makefile.in: Adjust dependencies on double-int.h
6513 2007-05-02 Eric Christopher <echristo@apple.com>
6515 * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
6516 -shared to -Zdynamiclib.
6518 2007-05-02 Seongbae Park <seongbae.park@gmail.com>
6521 * c-common.c (strip_pointer_or_array_types): New function.
6522 * c-common.h (strip_pointer_or_array_types): New function declaration.
6524 2007-05-03 Zdenek Dvorak <dvorakz@suse.cz>
6526 PR tree-optimization/31771
6527 * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
6529 2007-05-02 Paul Brook <paul@codesourcery.com>
6531 * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
6533 2007-05-02 Andrew Pinski <andrew_pinski@playstation.sony.com>
6536 * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
6539 2007-05-02 Nick Clifton <nickc@redhat.com>
6541 * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
6543 2007-05-02 Richard Guenther <rguenther@suse.de>
6545 PR tree-optimization/31146
6546 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
6547 argument, single_use_p. If we have a single use that is
6548 a conversion to the definition rhs type, propagate that rhs.
6549 (forward_propagate_addr_expr): Pass single_use_p argument
6550 to forward_propagate_addr_expr_1.
6552 2007-05-01 H.J. Lu <hongjiu.lu@intel.com>
6554 * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
6557 2007-05-01 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
6559 * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
6560 'AMD Family 10 core'.
6562 2007-05-01 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
6564 * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
6565 and athlon64-sse3 as improved versions of k8, opteron and athlon64
6566 with SSE3 instruction set support.
6567 * doc/invoke.texi: Likewise.
6569 2007-05-01 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
6571 * config/i386/i386.c (override_options): Tuning 32-byte loop
6572 alignment for amdfam10 architecture. Increasing the max loop
6573 alignment to 24 bytes.
6575 2007-05-01 Kazu Hirata <kazu@codesourcery.com>
6577 * config/m68k/constraints.md: New.
6578 * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
6579 CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
6580 EXTRA_CONSTRAINT): Remove.
6581 * config/m68k/m68k.md: Include constraints.md.
6582 * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
6584 2007-05-01 Ian Lance Taylor <iant@google.com>
6586 PR tree-optimization/31739
6587 * tree-vrp.c (vrp_val_is_max): New static function.
6588 (vrp_val_is_min): New static function.
6589 (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
6591 (set_value_range): Use vrp_val_is_{max,min}.
6592 (extract_range_from_assert): Likewise.
6593 (extract_range_from_binary_expr): Likewise.
6594 (extract_range_from_unary_expr): Likewise.
6595 (dump_value_range, vrp_meet): Likewise.
6596 (vrp_visit_phi_node): Likewise.
6597 * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
6599 2007-05-01 Mark Mitchell <mark@codesourcery.com>
6601 * config/i386/gmon-sol2.c (size_t): New type.
6602 (intptr_t): Likewise.
6603 (s_textsize): Declare as size_t.
6605 (monstartup): Use size_t for sizes.
6606 (_mcount): Save and restore registers.
6607 (internal_mcount): Pass 0 as the first argument to monstartup
6609 (moncontrol): Convert pointer to appropriately sized integer
6610 before passing to profil.
6612 2007-05-01 Joseph Myers <joseph@codesourcery.com>
6614 * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
6615 __NO_FPRS__, not just if _SOFT_DOUBLE.
6616 * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
6617 * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
6618 also for E500 double.
6619 * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
6620 suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
6623 2007-05-01 Richard Guenther <rguenther@suse.de>
6625 * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
6628 2007-05-01 Joseph Myers <joseph@codesourcery.com>
6630 * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
6632 2007-05-01 Jan Hubicka <jh@suse.cz>
6634 * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
6637 2007-05-01 Jan Hubicka <jh@suse.cz>
6639 * tree.h (maybe_fold_offset_to_component_ref): Remove.
6640 (maybe_fold_offset_to_reference): Declare.
6641 * fold-const.c (fold_unary): Do not fold
6642 (type *)&A into &A->field_of_type_and_offset_0
6643 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
6644 size is unknown, give up.
6645 (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
6647 (maybe_fold_offset_to_reference): New.
6648 (maybe_fold_stmt_indirect): Use it.
6649 (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
6650 * gimplify.c (gimplify_conversion): Canonicalize conversions to
6652 (gimplify_expr): Likewise for plus_expr.
6654 2007-05-01 Zdenek Dvorak <dvorakz@suse.cz>
6656 * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
6657 bsi_after_labels. Always insert statements before bsi.
6658 * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
6659 * predict.c (apply_return_prediction): Check for empty blocks.
6660 * cfgexpand.c (lab_rtx_for_bb): New variable.
6661 (label_rtx_for_bb): Do not create new tree labels.
6662 (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
6663 (tree_expand_cfg): Initialize lab_rtx_for_bb.
6664 * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
6666 (label_for_bb): Add field used.
6667 (update_eh_label, main_block_label): Mark the label used.
6668 (cleanup_dead_labels): Remove unused labels.
6670 2007-05-01 Richard Guenther <rguenther@suse.de>
6672 * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
6673 if it is not about to be set.
6674 (get_value_range): Do not pre-allocate equiv bitmap.
6675 (update_value_range): No need to clear equiv field.
6676 (add_equivalence): Change prototype to get bitmap pointer.
6677 Allocate bitmap here if it is not already.
6678 (extract_range_from_assert): Do not allocate bitmap here.
6679 Update callers to add_equivalence.
6680 (extract_range_from_ssa_name): Likewise.
6681 (get_vr_for_comparison): New static helper.
6682 (compare_name_with_value): Handle NULL equiv bitmap by
6683 peeling the first iteration of the comparison loop.
6684 Use get_vr_for_comparison.
6685 (compare_names): Handle NULL equiv bitmaps by using fake
6686 ones. Use get_vr_for_comparison.
6688 2007-04-30 Brooks Moses <brooks.moses@codesourcery.com>
6690 * double-int.c (mpz_set_double_int): Moved from
6691 tree-ssa-loop-niter.c.
6692 (mpz_get_double_int): Likewise; also, add option to wrap
6693 out-of-range integers.
6694 * double-int.h: New prototypes for above.
6695 * tree.c (get_static_type_bounds): Moved from
6696 tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
6697 TYPE_MAX_VALUE if they exist..
6698 * tree.h: New prototype for above.
6699 * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
6700 get_type_bounds calls.
6701 (mpz_set_double_int): Move to double-int.c.
6702 (get_type_bounds): Move to tree.c, rename to
6703 get_static_type_bounds.
6704 (mpz_to_double_int): Move to double-int.c, rename to
6707 2007-04-30 Bob Wilson <bob.wilson@acm.org>
6709 * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
6710 DIV0 exception can fall through to a normal return.
6712 2007-04-30 Alexandre Oliva <aoliva@redhat.com>
6716 2007-04-06 Andreas Tobler <a.tobler@schweiz.org>
6717 * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
6718 2007-04-05 Alexandre Oliva <aoliva@redhat.com>
6719 * tree-sra.c (try_instantiate_multiple_fields): Needlessly
6720 initialize align to silence bogus warning.
6721 2007-04-05 Alexandre Oliva <aoliva@redhat.com>
6722 * tree-sra.c (struct sra_elt): Add in_bitfld_block. Remove
6724 (struct sra_walk_fns): Remove use_all parameter from use.
6725 (sra_hash_tree): Handle BIT_FIELD_REFs.
6726 (sra_elt_hash): Don't hash bitfld blocks.
6727 (sra_elt_eq): Skip them in parent compares as well. Handle
6729 (sra_walk_expr): Don't maintain or pass down use_all_p.
6730 (scan_use): Remove use_all parameter.
6731 (scalarize_use): Likewise. Re-expand assignment to
6732 BIT_FIELD_REF of gimple_reg. De-scalarize before input or
6733 output, and re-scalarize after output. Don't mark anything
6735 (scalarize_ldst): Adjust.
6736 (scalarize_walk_gimple_modify_statement): Likewise.
6737 (build_element_name_1): Handle BIT_FIELD_REFs.
6738 (instantiate_element): Don't warn for any element whose parent
6740 (instantiate_missing_elements_1): Return the sra_elt.
6741 (canon_type_for_field): New.
6742 (try_instantiate_multiple_fields): New.
6743 (instantiate_missing_elemnts): Use them.
6744 (mark_no_warning): Removed.
6745 (generate_one_element_ref): Handle BIT_FIELD_REFs.
6746 (REPLDUP, sra_build_elt_assignment): New.
6747 (generate_copy_inout): Use them.
6748 (generate_element_copy): Likewise. Handle bitfld differences.
6749 (generate_element_zero): Don't recurse for blocks. Use
6750 sra_build_elt_assignment.
6751 (generate_one_element_int): Take elt instead of var. Use
6752 sra_build_elt_assignment.
6753 (generate_element_init_1): Adjust.
6754 (scalarize_use, scalarize_copy): Use REPLDUP.
6755 (scalarize_ldst): Move assert before dereference.
6756 (dump_sra_elt_name): Handle BIT_FIELD_REFs.
6758 2007-04-30 Andrew Pinski <andrew_pinski@playstation.sony.com>
6761 * tree.c (reconstruct_complex_type): Reconstruct a reference
6763 Also use the same mode for the pointer as the old pointer type.
6765 2007-04-30 Francois-Xavier Coudert <coudert@clipper.ens.fr>
6767 * doc/trouble.texi (Interoperation): Remove note about Ultrix
6770 2007-04-29 Zdenek Dvorak <dvorakz@suse.cz>
6772 PR rtl-optimization/31676
6773 * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
6774 (df_refs_record): Call it.
6776 2007-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
6778 * rtl.def (SS_ABS): New code.
6779 * config/bfin/bfin.c (print_operand): New modifier 'v'.
6780 (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
6781 BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
6782 BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
6783 (bfin_init_builtins): Define them.
6784 (bdesc_1arg, bdesc_2arg): Add some of them here, ...
6785 (bfin_expand_builtin): ... and handle the others here.
6786 * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
6787 flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
6788 (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
6789 (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
6790 operand is only HImode.
6792 2007-04-29 Steven Bosscher <steven@gcc.gnu.org>
6794 * regclass.c (scan_one_insn): Remove splitting of
6797 2007-04-28 Sandra Loosemore <sandra@codesourcery.com>
6798 Nigel Stephens <nigel@mips.com>
6800 * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
6802 2007-04-28 Jan Hubicka <jh@suse.cz>
6804 * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
6805 insn_locators_alloc instead of insn_locators_initialize;
6806 call reset_block_changes.
6807 * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6808 * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
6809 * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
6810 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
6811 * config/score/score.c (th_output_mi_thunk): Likewise.
6812 * config/mips/mips.c (mips_output_mi_thunk): Likewise.
6813 * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
6814 tolerate uninitialized locator info.
6817 * function.c (init_function_start): Don't init line number info.
6818 (expand_function_end): Update.
6819 (reset_block_changes, record_block_change, finalize_block_changes,
6820 check_block_change, free_block_changes): Kill.
6821 * function.h (reset_block_changes, record_block_change,
6822 finalize_block_changes, check_block_change, free_block_changes):
6824 (struct function): Remove ib_boundaries_block.
6825 * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6826 Use curr_insn_locator to initialize locator.
6827 (emit_line_note): Remove.
6828 * cfgexpand.c (expand_gimple_cond_expr): Update.
6829 (construct_exit_block): Likewise.
6830 (tree_expand_cfg): Initialize/finalize locators.
6831 * expr.c (expand_expr_real): Update.
6832 * cfglayout.c (line_locators_locs, line_locators_lines,
6833 file_locators_locs, file_locators_files): Remove.
6834 (set_block_levels): Move to cfgexpand.c.
6835 (insn_locators_initialize): Remove.
6836 (pass_insn_locators_initialize): Remove.
6837 (locations_locators_locs, locations_locators_vals): New static vars.
6838 (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6840 (insn_locators_alloc, insn_locators_finalize,
6841 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6843 (locator_location): New.
6844 (locator_line, locator_file): Rewrite.
6845 * rtl.h (emit_line_note): Kill.
6846 (insn_locators_alloc, insn_locators_finalize,
6847 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6849 * tree-inline.c (initialize_cfun): Do not initialize
6850 ib_boundaries_block.
6851 * passes.c (pass_insn_locators_initialize): Remove.
6853 2007-04-28 Zdenek Dvorak <dvorakz@suse.cz>
6855 * tree-cfg.c (move_block_to_fn): Release bb from dominance
6856 info. Update last_basic_block correctly.
6858 2007-04-27 Kaz Kojima <kkojima@gcc.gnu.org>
6861 * config/sh/sh.c (output_stack_adjust): Avoid using the frame
6862 register itself to hold the offset constant. Tell flow the use
6863 of r4 and r5 when they are used.
6865 2007-04-27 Richard Guenther <rguenther@suse.de>
6867 * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
6868 if we simplified anything.
6869 (tree_ssa_forward_propagate_single_use_vars): Defer overflow
6870 warnings until we did a simplification and the stmt was not
6871 marked as TREE_NO_WARNING.
6873 2007-04-27 Mike Stump <mrs@apple.com>
6875 * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
6877 2007-04-27 Ian Lance Taylor <iant@google.com>
6880 * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
6881 TYPE_MAX_VALUE exist, convert them to the new type.
6883 2007-04-27 Zdenek Dvorak <dvorakz@suse.cz>
6885 * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
6886 if it claims to be available.
6887 * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
6889 (perform_tree_ssa_dce): Always free postdominators.
6891 2007-04-27 Richard Henderson <rth@redhat.com>
6893 * config/alpha/predicates.md (aligned_memory_operand): Mark
6894 as define_special_predicate.
6895 (unaligned_memory_operand, normal_memory_operand): Likewise.
6896 (reg_or_unaligned_mem_operand): Remove.
6897 (any_memory_operand): Match the documentation and check for
6898 non-renumbered pseudos during reload.
6899 * config/alpha/alpha.c (alpha_secondary_reload): Rename from
6900 alpha_secondary_reload_class, update to new interface, make static.
6901 Handle CQImode like HImode. Remove FP subreg check.
6902 (alpha_expand_mov): Use replace_equiv_address.
6903 (alpha_expand_mov_nobwx): Use any_memory_operand.
6904 (TARGET_SECONDARY_RELOAD): New.
6905 * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
6906 (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
6907 * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
6908 * config/alpha/alpha.md: ... here.
6909 (RELOAD12, reloadmode): New.
6911 (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
6912 Don't handle the aligned case here.
6913 (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
6914 (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
6915 reload_inhi_help. Don't expect a scratch register.
6916 (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
6918 * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
6920 2007-04-27 Richard Guenther <rguenther@suse.de>
6922 * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
6924 2007-04-27 Richard Guenther <rguenther@suse.de>
6926 PR tree-optimization/30965
6927 PR tree-optimization/30978
6928 * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
6929 * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
6930 (find_equivalent_equality_comparison): Likewise.
6931 (simplify_cond): Likewise.
6932 (get_prop_source_stmt): New helper.
6933 (get_prop_dest_stmt): Likewise.
6934 (can_propagate_from): Likewise.
6935 (remove_prop_source_from_use): Likewise.
6936 (combine_cond_expr_cond): Likewise.
6937 (forward_propagate_comparison): New function.
6938 (forward_propagate_into_cond): Rewrite to use fold for
6940 (tree_ssa_forward_propagate_single_use_vars): Call
6941 forward_propagate_comparison to propagate comparisons.
6943 2007-04-27 Richard Guenther <rguenther@suse.de>
6945 PR tree-optimization/31715
6946 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
6947 sure to do computation on the offset in an appropriate
6950 2007-04-27 Richard Sandiford <richard@codesourcery.com>
6952 * reload.h (elimination_target_reg_p): Declare.
6953 * reload.c (find_reloads): Don't apply the reg_rtx move
6954 optimization if the SET_DEST satisfies elimination_target_reg_p.
6955 * reload1.c (elimination_target_reg_p): New function.
6956 (gen_reload): In the move/add2 fallback, make sure that op0
6957 does not overlap the destination register.
6959 2007-04-27 Zdenek Dvorak <dvorakz@suse.cz>
6961 * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
6962 transform only GIMPLE_MODIFY_STMTs.
6963 * tree-complex.c (expand_complex_operations_1): Ditto.
6964 (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
6965 * tree-ssa-loop-manip.c (build_if_stmt): Removed.
6966 (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
6968 * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
6969 tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
6970 * omp-low.c (expand_parallel_call, expand_omp_for_generic,
6971 expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
6972 * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
6973 slpeel_add_loop_guard): Ditto.
6974 * tree-mudflap.c (mf_build_check_statement_for): Ditto.
6975 * lambda-code.c (perfect_nestify): Ditto.
6976 * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
6977 before the first statement.
6978 * tree-optimize.c (execute_free_datastructures): Fix comments.
6979 (execute_free_cfg_annotations): Do not call disband_implicit_edges.
6980 * tree-flow.h (disband_implicit_edges): Declaration removed.
6981 * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
6983 (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
6984 COND_EXPRs without gotos.
6985 (disband_implicit_edges, has_label_p): Removed.
6986 (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
6987 (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
6989 * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
6991 * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
6992 also for COND_EXPRs.
6993 * cfgexpand.c (label_rtx_for_bb): New function.
6994 (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
6995 Use label_rtx_for_bb to find the labels.
6996 (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
6997 last block. Detect fallthru edges.
6999 2007-04-26 Ian Lance Taylor <iant@google.com>
7002 * reload.c (find_reloads_subreg_address): If the address was valid
7003 in the original mode but not in the new mode, reload the whole
7006 2007-04-27 Zdenek Dvorak <dvorakz@suse.cz>
7008 * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
7009 (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
7010 (cleanup_control_expr_graph): Do not invalidate dominance info.
7011 Record altered blocks.
7012 (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
7013 (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
7014 cleanup_tree_cfg_bb): New functions.
7015 (remove_forwarder_block): Do not maintain the worklist of blocks.
7016 Record altered blocks.
7017 (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
7019 (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1. Only call
7020 delete_unreachable_blocks if dominators are not available.
7021 * tree-inline.c (optimize_inline_calls): Free dominance information
7023 * tree-flow.h (remove_edge_and_dominated_blocks,
7024 cfgcleanup_altered_bbs): Altered.
7025 * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
7027 (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
7029 (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
7030 do not invalidate dominators.
7032 2007-04-26 Anatoly Sokolov <aesok@post.ru>
7034 * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
7035 ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
7036 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
7037 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7039 2007-04-26 Steve Ellcey <sje@cup.hp.com>
7041 * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
7043 2007-04-26 Richard Guenther <rguenther@suse.de>
7045 PR tree-optimization/31703
7046 * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
7047 the right type for the target of the bittest.
7049 2007-04-26 Richard Sandiford <richard@codesourcery.com>
7051 * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
7052 ix86_sol10_return_in_memory.
7054 2007-04-26 Richard Sandiford <richard@codesourcery.com>
7056 * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
7059 2007-04-26 Jakub Jelinek <jakub@redhat.com>
7062 * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
7064 PR tree-optimization/30558
7065 * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
7066 clear this_state.prev_try.
7068 2007-04-26 Richard Sandiford <richard@codesourcery.com>
7069 Mark Mitchell <mark@codesourcery.com>
7071 * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
7072 * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
7073 * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
7075 2007-04-26 Richard Sandiford <richard@codesourcery.com>
7078 * doc/invoke.texi (%:print-asm-header): Document.
7079 * gcc.c (asm_options): Use %:print-asm-header() for --target-help
7081 (static_spec_functions): Add print-asm-header.
7082 (main): Print a banner before the --target-help linker options.
7083 (print_asm_header_spec_function): New function.
7085 2007-04-25 Kaz Kojima <kkojima@gcc.gnu.org>
7088 * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
7089 (movsf_ie): Likewise.
7091 2007-04-25 Paolo Carlini <pcarlini@suse.de>
7093 * doc/extend.texi ([Type Traits]): Adjust per N2255.
7095 2007-04-25 Bob Wilson <bob.wilson@acm.org>
7097 * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
7098 exception for divide-by-zero.
7099 (__umodsi3, __modsi3): Likewise.
7101 2007-04-25 Dirk Mueller <dmueller@suse.de>
7103 * c-typeck.c (build_compound_expr): Annotate warning()
7104 call with OPT_Wunused_value.
7105 * tree-ssa.c (warn_uninit): Annotate warning with
7107 * c-common.c (handle_sentinel_attribute): Annotate warning
7108 call with OPT_Wattributes.
7110 2007-04-25 Thiemo Seufer <ths@mips.com>
7112 * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
7114 * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
7115 on to the assembler. Improve handling of -mno-mips16. Add handling
7116 of -mno-mips3d, -mno-dsp, -mno-dspr2.
7117 * doc/invoke.texi (MIPS Options): Whitespace cleanup. Fix wrong use
7118 of @itemx. Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
7119 -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
7121 2007-04-25 Danny Smith <dannysmith.users.sourceforge.net>
7124 * config/i386/winnt.c (i386_pe_file_end): Strip only
7125 USER_LABEL_PREFIX when writing export name.
7127 2007-04-25 Richard Sandiford <richard@codesourcery.com>
7129 * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h. Include
7130 sh/elf.h, vx-common.h and vxworks.h.
7131 * config/sh/sh.h: Include config/vxworks-dummy.h.
7132 (SUBTARGET_OVERRIDE_OPTIONS): Define.
7133 (OVERRIDE_OPTIONS): Use it.
7134 * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
7135 (vxworks_picreg): New pattern.
7136 * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
7137 VXWORKS_OS_CPP_BUILTINS.
7138 (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
7139 to their VXWORKS_* equivalents.
7140 (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
7141 (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
7142 * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
7143 (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
7144 * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
7145 -mrtp/-fPIC multilibs.
7146 (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
7147 (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
7148 (MULTILIB_OSDIRNAMES): Delete.
7150 2007-04-25 Anatoly Sokolov <aesok@post.ru>
7153 * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
7155 2007-04-24 Brooks Moses <brooks.moses@codesourcery.com>
7157 * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
7158 rounding mode to be specified by the caller.
7159 (real_to_mpfr) Likewise.
7160 * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
7161 include new arguments.
7162 * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
7164 2007-04-24 Ian Lance Taylor <iant@google.com>
7166 PR tree-optimization/31605
7167 * tree-vrp.c (set_value_range): Check that min and max are not
7168 both overflow infinities.
7169 (set_value_range_to_value): New static function.
7170 (extract_range_from_binary_expr): Call set_value_range_to_value.
7171 (extract_range_from_cond_expr): Likewise.
7172 (extract_range_from_expr): Likewise.
7173 (extract_range_from_unary_expr): Likewise. Don't create a range
7174 which overflows on both sides.
7175 (vrp_meet): Check for a useless range.
7176 (vrp_visit_phi_node): If we see a constant which looks like an
7177 overflow infinity, turn off the TREE_OVERFLOW flag.
7179 2007-04-24 Ian Lance Taylor <iant@google.com>
7181 * flow.c (elim_reg_cond): Handle a comparison of a subreg.
7183 2007-04-24 Simon Martin <simartin@users.sourceforge.net>
7186 * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
7187 diagnostic message is being built.
7188 * tree-pretty-print.c (dump_generic_node): Only write the
7189 formatted text into BUFFER's stream if we are not building a
7191 * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
7193 * Makefile.in (toplev.o): Depend on tree-pass.h.
7195 2007-04-24 Ian Lance Taylor <iant@google.com>
7197 PR tree-optimization/31602
7198 * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
7199 conditionals in the copied loop header.
7200 * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
7201 warnings if TREE_NO_WARNING is set.
7202 * doc/invoke.texi (Warning Options): Clarify that
7203 -Wstrict-overflow does not warn about loops.
7205 2007-04-24 Janis Johnson <janis187@us.ibm.com>
7207 * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
7208 expand on the comment about _Decimal128 arguments and check the
7209 integer result of the modulus operation; for 64-bit ELF ABI, ensure
7210 that _Decimal128 argument uses even/odd register pair.
7211 (function_arg): Ditto.
7213 2007-04-24 Hui-May Chang <hm.chang@apple.com>
7215 * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
7216 instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
7218 2007-04-24 Richard Guenther <rguenther@suse.de>
7219 Olga Golovanevsky <olga@il.ibm.com>
7221 * fold-const.c (multiple_of_p): Check for bottom
7224 2007-04-24 Richard Henderson <rth@redhat.com>
7226 * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
7227 IS_IBM_EXTENDED. Also define in terms of WIDEST_HARDWARE_FP_SIZE.
7228 * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
7229 looking for non-zero bits shifted out. Avoid a recursive call
7230 when constructing the scalar.
7231 (__floatundisf): Likewise.
7233 2007-04-24 Nathan Froyd <froydnj@codesourcery.com>
7235 * dwarf2out.c (field_byte_offset): Move the existing logic
7236 under the control of PCC_BITFIELD_TYPE_MATTERS and just use
7237 the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
7239 2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
7242 * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
7243 length argument of 0 for memset.
7244 (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
7245 unsigned shift instead of the signed variant.
7247 2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
7249 * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
7250 "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
7251 "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
7252 "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
7253 "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
7254 "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
7255 "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
7256 "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
7257 "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
7258 ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
7259 "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
7260 "mul<mode>3", "div<mode>3"): Insn definitions added.
7261 ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
7262 "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
7263 to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
7264 ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
7265 "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
7266 "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
7267 ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
7268 * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
7269 TARGET_FLOAT_FORMAT): Macro definitions removed.
7270 (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
7271 * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
7272 z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
7273 (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
7274 (s390_gen_rtx_const_DI): Function removed.
7275 * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
7277 2007-04-24 Richard Sandiford <richard@codesourcery.com>
7279 * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
7280 over an external ffs function.
7282 2007-04-24 Chao-ying Fu <fu@mips.com>
7283 Richard Sandiford <richard@nildram.co.uk>
7285 * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
7286 * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
7287 (smadd_widen_optab, umadd_widen_optab): Define.
7288 * optabs.c (init_optabs): Initialize smadd_widen_optab and
7290 * genopinit.c (optabs): Fill in smadd_widen_optab and
7292 * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
7293 and umadd_widen_optab to implement multiply-add sequences.
7294 * config/mips/mips.md (*<su>mul_acc_di): Rename to...
7295 (<u>maddsidi4): ...this. Extend condition to include
7296 GENERATE_MADD_MSUB and TARGET_DSPR2. Change the constraint
7297 of operand 0 to "ka" and use the three-operand form of madd<u>
7299 * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
7301 * config/mips/constraints.md (ka): New register constraint.
7303 2007-04-24 Jan Hubicka <j@suse.cz>
7307 2007-04-23 Jan Hubicka <jh@suse.cz>
7308 * function.c (init_function_start): Don't init line number info.
7309 (expand_function_end): Update.
7310 (reset_block_changes, record_block_change, finalize_block_changes,
7311 check_block_change, free_block_changes): Kill.
7312 * function.h (reset_block_changes, record_block_change,
7313 finalize_block_changes, check_block_change, free_block_changes):
7315 (struct function): Remove ib_boundaries_block.
7316 * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
7317 Use curr_insn_locator to initialize locator.
7318 (emit_line_note): Remove.
7319 * cfgexpand.c (expand_gimple_cond_expr): Update.
7320 (construct_exit_block): Likewise.
7321 (tree_expand_cfg): Initialize/finalize locators.
7322 * expr.c (expand_expr_real): Update.
7323 * cfglayout.c (line_locators_locs, line_locators_lines,
7324 file_locators_locs, file_locators_files): Remove.
7325 (set_block_levels): Move to cfgexpand.c.
7326 (insn_locators_initialize): Remove.
7327 (pass_insn_locators_initialize): Remove.
7328 (locations_locators_locs, locations_locators_vals): New static vars.
7329 (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
7331 (insn_locators_alloc, insn_locators_finalize,
7332 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7334 (locator_location): New.
7335 (locator_line, locator_file): Rewrite.
7336 * rtl.h (emit_line_note): Kill.
7337 (insn_locators_alloc, insn_locators_finalize,
7338 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7340 * tree-inline.c (initialize_cfun): Do not initialize
7341 ib_boundaries_block.
7342 * passes.c (pass_insn_locators_initialize): Remove.
7344 2007-04-24 Daniel Franke <franke.daniel@gmail.com>
7346 * doc/invoke.texi: Removed leading '-' from option index entries.
7348 2007-04-23 Zdenek Dvorak <dvorakz@suse.cz>
7350 * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
7352 (create_phi_node): Use set_phi_nodes.
7353 * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
7354 * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
7355 (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
7356 * tree-flow-inline.h (phi_nodes, set_phi_nodes,
7357 (bsi_start, bsi_last): Use bb_stmt_list.
7358 (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
7359 * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
7360 Traverse the statements using tsi iterator.
7361 * basic-block.h (struct basic_block_def): Fields stmt_list
7362 and phi_nodes moved to ...
7363 (struct tree_bb_info): ... new structure.
7364 * tree-cfg.c (create_bb): Allocate il.tree. Use set_bb_stmt_list.
7365 (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
7366 (remove_bb): Handle blocks with NULL stmt list. Clear il.tree field.
7367 (tree_verify_flow_info): Verify that il.tree is not set for
7368 entry and exit block.
7369 (tree_split_block): Use set_bb_stmt_list.
7371 2007-04-23 Mike Stump <mrs@apple.com>
7373 * config/i386/i386.c (ix86_tune_features
7374 [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
7377 2007-04-23 H.J. Lu <hongjiu.lu@intel.com>
7379 * config/i386/i386.md (prefix_extra): New attribute.
7380 (length): Add prefix_extra.
7382 * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
7383 (sse2_movntv2di): Likewise.
7384 (sse2_cvtps2dq): Likewise.
7385 (sse2_cvtpd2pi): Likewise.
7386 (sse2_cvttpd2pi): Likewise.
7387 (*sse2_cvtpd2ps): Likewise.
7388 (*add<mode>3): Likewise.
7389 (sse2_ssadd<mode>3): Likewise.
7390 (sse2_usadd<mode>3): Likewise.
7391 (*sub<mode>3): Likewise.
7392 (sse2_sssub<mode>3): Likewise.
7393 (sse2_ussub<mode>3): Likewise.
7394 (*mulv8hi3): Likewise.
7395 (*smulv8hi3_highpart): Likewise.
7396 (*umulv8hi3_highpart): Likewise.
7397 (sse2_umulv2siv2di3): Likewise.
7398 (sse2_pmaddwd): Likewise.
7399 (ashr<mode>3): Likewise.
7400 (lshr<mode>3): Likewise.
7401 (ashl<mode>3): Likewise.
7402 (sse2_ashlti3): Likewise.
7403 (sse2_lshrti3): Likewise.
7404 (*umaxv16qi3): Likewise.
7405 (*smaxv8hi3): Likewise.
7406 (*uminv16qi3): Likewise.
7407 (*sminv8hi3): Likewise.
7408 (sse2_eq<mode>3): Likewise.
7409 (sse2_gt<mode>3): Likewise.
7410 (*and<mode>3): Likewise.
7411 (sse2_nand<mode>3): Likewise.
7412 (*ior<mode>3): Likewise.
7413 (*xor<mode>3): Likewise.
7414 (sse2_packsswb): Likewise.
7415 (sse2_packssdw): Likewise.
7416 (sse2_packuswb): Likewise.
7417 (sse2_punpckhbw): Likewise.
7418 (sse2_punpcklbw): Likewise.
7419 (sse2_punpckhwd): Likewise.
7420 (sse2_punpcklwd): Likewise.
7421 (sse2_punpckhdq): Likewise.
7422 (sse2_punpckldq): Likewise.
7423 (sse2_punpckhqdq): Likewise.
7424 (sse2_punpcklqdq): Likewise.
7425 (*sse2_pinsrw): Likewise.
7426 (*sse2_pextrw): Likewise.
7427 (sse2_pshufd_1): Likewise.
7428 (sse2_uavgv16qi3): Likewise.
7429 (sse2_uavgv8hi3): Likewise.
7430 (sse2_psadbw): Likewise.
7431 (sse2_pmovmskb): Likewise.
7432 (*sse2_maskmovdqu): Likewise.
7433 (*sse2_maskmovdqu_rex64): Likewise.
7434 (sse4a_extrqi): Likewise.
7435 (sse4a_extrq): Likewise.
7436 (sse3_lddqu): Set prefix_rep.
7437 (sse3_addsubv4sf3): Likewise.
7438 (sse3_haddv4sf3): Likewise.
7439 (sse3_hsubv4sf3): Likewise.
7440 (sse_cvtss2si): Likewise.
7441 (sse_cvtss2si_2): Likewise.
7442 (sse_cvtss2siq): Likewise.
7443 (sse_cvtss2siq_2): Likewise.
7444 (sse_cvttss2si): Likewise.
7445 (sse_cvttss2siq): Likewise.
7446 (sse2_cvttps2dq): Likewise.
7447 (sse3_movshdup): Likewise.
7448 (sse3_movsldup): Likewise.
7449 (sse2_cvtsd2si): Likewise.
7450 (sse2_cvtsd2si_2): Likewise.
7451 (sse2_cvtsd2siq): Likewise.
7452 (sse2_cvtsd2siq_2): Likewise.
7453 (sse2_cvttsd2si): Likewise.
7454 (sse2_cvttsd2siq): Likewise.
7455 (*sse2_cvtpd2dq): Likewise.
7456 (*sse2_cvttpd2dq): Likewise.
7457 (sse2_pshuflw_1): Likewise.
7458 (sse2_pshufhw_1): Likewise.
7459 (sse4a_insertqi): Likewise.
7460 (sse4a_insertq): Likewise.
7461 (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
7462 (ssse3_phadddv4si3): Likewise.
7463 (ssse3_phaddswv8hi3): Likewise.
7464 (ssse3_phsubwv8hi3): Likewise.
7465 (ssse3_phsubdv4si3): Likewise.
7466 (ssse3_phsubswv8hi3): Likewise.
7467 (ssse3_pmaddubswv8hi3): Likewise.
7468 (ssse3_pmulhrswv8hi3): Likewise.
7469 (ssse3_pshufbv16qi3): Likewise.
7470 (ssse3_psign<mode>3): Likewise.
7471 (ssse3_palignrti): Likewise.
7472 (abs<mode>2): Likewise.
7473 (ssse3_phaddwv4hi3): Set prefix_extra.
7474 (ssse3_phadddv2si3): Likewise.
7475 (ssse3_phaddswv4hi3): Likewise.
7476 (ssse3_phsubwv4hi3): Likewise.
7477 (ssse3_phsubdv2si3): Likewise.
7478 (ssse3_phsubswv4hi3): Likewise.
7479 (ssse3_pmaddubswv4hi3): Likewise.
7480 (ssse3_pmulhrswv4hi3): Likewise.
7481 (ssse3_pshufbv8qi3): Likewise.
7482 (ssse3_psign<mode>3): Likewise.
7483 (ssse3_palignrdi): Likewise.
7484 (abs<mode>2): Likewise.
7485 (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
7486 (*vec_dupv2df): Set mode to V2DF instead of V4SF.
7487 (sse2_pmovmskb): Set mode to SI instead of V2DF.
7489 2007-04-23 Nick Clifton <nickc@redhat.com>
7491 * params.def: Fix formatting of emacs local variables.
7493 2007-04-23 H.J. Lu <hongjiu.lu@intel.com>
7495 * config/i386/sse.md (sse2_stored): Don't split to inter-unit
7496 move if inter-unit move isn't allowed.
7497 Don't split moving the first element of V2DI to DI to inter-unit
7498 move if inter-unit move isn't allowed.
7500 2007-04-23 Richard Guenther <rguenther@suse.de>
7502 * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
7503 and CDI_POST_DOMINATORS separately.
7505 2007-04-23 Nick Clifton <nickc@redhat.com>
7507 * c.opt (Wformat-contains-nul): Add warning attribute.
7509 2007-04-23 Jan Hubicka <jh@suse.cz>
7511 * function.c (init_function_start): Don't init line number info.
7512 (expand_function_end): Update.
7513 (reset_block_changes, record_block_change, finalize_block_changes,
7514 check_block_change, free_block_changes): Kill.
7515 * function.h (reset_block_changes, record_block_change,
7516 finalize_block_changes, check_block_change, free_block_changes):
7518 (struct function): Remove ib_boundaries_block.
7519 * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
7520 Use curr_insn_locator to initialize locator.
7521 (emit_line_note): Remove.
7522 * cfgexpand.c (expand_gimple_cond_expr): Update.
7523 (construct_exit_block): Likewise.
7524 (tree_expand_cfg): Initialize/finalize locators.
7525 * expr.c (expand_expr_real): Update.
7526 * cfglayout.c (line_locators_locs, line_locators_lines,
7527 file_locators_locs, file_locators_files): Remove.
7528 (set_block_levels): Move to cfgexpand.c.
7529 (insn_locators_initialize): Remove.
7530 (pass_insn_locators_initialize): Remove.
7531 (locations_locators_locs, locations_locators_vals): New static vars.
7532 (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
7534 (insn_locators_alloc, insn_locators_finalize,
7535 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7537 (locator_location): New.
7538 (locator_line, locator_file): Rewrite.
7539 * rtl.h (emit_line_note): Kill.
7540 (insn_locators_alloc, insn_locators_finalize,
7541 set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7543 * tree-inline.c (initialize_cfun): Do not initialize
7544 ib_boundaries_block.
7545 * passes.c (pass_insn_locators_initialize): Remove.
7547 2007-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
7550 * expr.c (reduce_to_bit_field_precision): Handle
7553 2007-04-22 Uros Bizjak <ubizjak@gmail.com>
7555 PR tree-optimization/24659
7556 * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
7557 OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
7558 (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
7559 * genopinit.c (optabs): Rename vec_pack_mod_optab
7560 to vec_pack_trunc_optab.
7561 * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
7562 early for scalar floating point operands for NOP_EXPR.
7563 (vectorizable_type_promotion): Ditto.
7564 * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
7565 vec_pack_trunc_optab.
7566 (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
7568 * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
7569 * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
7570 Rename from VEC_PACK_MOD_EXPR.
7571 (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
7572 * expr.c (expand_expr_real_1): Ditto.
7573 * tree-inline.c (estimate_num_insns_1): Ditto.
7574 * tree-vect-generic.c (expand_vector_operations_1): Ditto.
7576 * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
7577 (vec_unpacks_lo_v4sf): Ditto.
7578 (vec_pack_trunc_v2df): Ditto.
7579 (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
7580 (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
7581 (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
7583 * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
7585 (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
7587 * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
7588 Rename from VEC_PACK_MOD_EXPR. This expression also represent
7589 packing of floating point operands.
7590 [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
7591 represent unpacking of floating point operands.
7592 * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
7593 [vec_unpacks_hi]: Ditto.
7594 [vec_unpacks_lo]: Ditto.
7596 2007-04-22 Jan Hubicka <jh@suse.cz>
7598 * final.c (rest_of_handle_final): Call
7599 targetm.asm_out.constructor/targetm.asm_out.destructor
7600 * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
7601 proper priority via decl_*_priority_insert.
7602 * c-common.c (c_expand_body): Likewise.
7604 2007-04-22 Richard Guenther <rguenther@suse.de>
7606 PR tree-optimization/29789
7607 * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
7608 (rewrite_reciprocal): New helper split out from
7609 determine_invariantness_stmt.
7610 (rewrite_bittest): Likewise.
7611 (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
7612 A & (1 << B) if (1 << B) is loop invariant but (A >> B)
7615 2007-04-22 Revital Eres <eres@il.ibm.com>
7617 * loop-unroll.c (var_to_expand): New field to support also
7618 insns of the form x = something + x.
7619 (analyze_insn_to_expand_var): Use it.
7620 (expand_var_during_unrolling): Likewise.
7622 2007-04-21 Zdenek Dvorak <dvorakz@suse.cz>
7624 * predict.c: Include pointer-set.h.
7625 (bb_predictions): New variable.
7626 (tree_predicted_by_p, tree_predict_edge,
7627 remove_predictions_associated_with_edge): Use bb_predictions map
7628 instead of bb->predictions.
7629 (clear_bb_predictions, assert_is_empty): New functions.
7630 (combine_predictions_for_bb): Use bb_predictions map. Call
7631 clear_bb_predictions.
7632 (tree_estimate_probability): Create and free bb_predictions map.
7633 * Makefile.in (predict.o): Add pointer-set.h dependency.
7634 * basic-block.h (struct basic_block_def): Remove predictions
7636 * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
7638 2007-04-21 Kaz Kojima <kkojima@gcc.gnu.org>
7641 * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
7644 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
7646 * timevar.c (timevar_print): Change reference of --disable-checking to
7647 --enable-checking=release. Also warn if assert checking is disabled.
7649 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
7652 * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
7653 decl as addressable if the compound literal was marked as
7655 Mark the decl as a gimple register if it is a complex or
7656 vector decl and does not live in memory.
7658 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
7660 * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
7661 (GENERIC_NEXT): New function macro.
7662 (PHI_CHAIN): Use phi_node's new chain variable.
7663 (tree_phi_node): Change tree_common to tree_base
7664 and add the chain field.
7665 * tree-phinodes.c (make_phi_node): Don't set
7666 TREE_TYPE on the new node.
7667 * c-decl.c (lang_tree_node): Use GENERIC_NEXT
7668 instead of checking GIMPLE_TUPLE_P in chain_next.
7669 * tree-vect-transform.c
7670 (get_initial_def_for_induction): Look at
7671 PHI_RESULT_TREE for the type of the phi node.
7672 (update_vuses_to_preheader): Use PHI_CHAIN
7673 instead of TREE_CHAIN on the phi node.
7674 * tree-ssa-structalias.c (compute_points_to_sets):
7676 (ipa_pta_execute): Likewise.
7678 2007-04-21 Richard Guenther <rguenther@suse.de>
7681 * fold-const.c (fold_unary): Call fold_convert_const on the
7684 2007-04-21 Alexandre Oliva <aoliva@redhat.com>
7686 * gcse.c (store_killed_in_insn): Handle PARALLELs.
7687 (store_killed_in_pat): New.
7689 2007-04-20 Richard Henderson <rth@redhat.com>
7692 * config/i386/i386.c (type_has_variadic_args_p): Look for any
7693 TREE_LIST with a void_type_node value, not void_list_node exactly.
7695 2007-04-21 Douglas Gregor <doug.gregor@gmail.com>
7697 * doc/standards.texi: Re-arrange into language-specific
7698 subsections. Add a C++ section, documenting which standards we
7701 2007-04-21 Zdenek Dvorak <dvorakz@suse.cz>
7703 * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
7704 * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
7706 2007-04-20 Daniel Jacobowitz <dan@codesourcery.com>
7708 * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
7709 ecrti.o and crtbegin.o.
7710 (LIB_DEFAULT_SPEC): Include -lc.
7711 (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
7713 2007-04-20 Richard Henderson <rth@redhat.com>
7716 * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
7717 argument; update all callers.
7718 (get_unaligned_offset): New.
7719 * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
7720 get_unaligned_address, just pass on the address directly.
7721 (unaligned_extendqidi): Use gen_lowpart instead of open-coding
7722 the subreg in the helper patterns.
7723 (unaligned_extendqidi_le): Use get_unaligned_offset.
7724 (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
7725 (unaligned_extendhidi_be): Likewise.
7726 (unaligned_extendhidi): Tidy.
7727 * config/alpha/alpha-protos.h: Update.
7729 2007-04-20 Richard Henderson <rth@redhat.com>
7731 * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
7732 (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
7733 * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
7734 * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
7735 * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
7736 (CPP_SPEC): Don't include %(cpp_subtarget).
7737 * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
7738 (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
7739 * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
7741 2007-04-20 Jakub Jelinek <jakub@redhat.com>
7743 * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
7744 for __builtin_ia32_cmpordss.
7746 PR tree-optimization/31632
7747 * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
7748 and arg1 for optimizations of comparison against min/max values.
7749 Fold arg0 to arg1's type for optimizations of comparison against
7750 min+1 and max-1 values.
7752 2007-04-19 Bernd Schmidt <bernd.schmidt@analog.com>
7754 * reload.c (combine_reloads): When trying to use a dying register,
7755 check whether it's uninitialized and don't use if so.
7757 2007-04-19 Brooks Moses <brooks.moses@codesourcery.com>
7759 * fold-const.c: Remove prototypes for native_encode_expr and
7760 native_interpret_expr.
7761 (native_encode_expr): Make non-static.
7762 (native_interpret_expr): Likewise.
7763 * tree.h: Add prototypes for the above.
7765 2007-04-19 Joseph Myers <joseph@codesourcery.com>
7767 * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
7768 *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
7769 *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
7770 spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
7771 tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
7772 Add length attributes.
7774 2007-04-19 Janis Johnson <janis187@us.ibm.com>
7776 * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
7779 * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
7780 __STDC_WANT_DEC_FP__.
7782 2007-04-19 Joseph Myers <joseph@codesourcery.com>
7784 * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
7785 for long double compatibility.
7786 * configure: Regenerate.
7788 2007-04-19 Eric Botcazou <ebotcazou@libertysurf.fr>
7790 PR rtl-optimization/29841
7791 * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
7793 * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
7794 that may cause control flow transfer from being moved.
7796 2007-04-18 Jan Hubicka <jh@suse.cz>
7798 * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
7801 2007-04-18 Eric Christopher <echristo@apple.com>
7803 * config/rs6000/darwin.md (load_macho_picbase): Use link register
7804 only. Update operands.
7805 * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
7806 * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
7807 link register to pic register.
7809 2007-04-18 Dirk Mueller <dmueller@suse.de>
7812 * tree-vrp.c (search_for_addr_array): New.
7813 (check_array_bounds): Suppress warning about
7814 address taken of array refs if its not de-referenced.
7816 2007-04-18 Dorit Nuzman <dorit@il.ibm.com>
7818 * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
7819 * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
7821 * tree-vectorizer.h (NITERS_KNOWN_P): New.
7822 * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
7823 instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
7825 * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
7827 (vect_analyze_operations): Fix indenetation. Fix a comment. Fix a
7829 (vect_analyze_scalar_cycles): Fix indentation.
7830 (vect_enhance_data_refs_alignment): Fix check in case of peeling.
7831 (vect_mark_relevant): Include phis in relevance analysis.
7833 * tree-vect-transform.c (vect_transform_loop): Add an assert.
7835 2007-04-18 Anatoly Sokolov <aesok@post.ru>
7837 * config/avr/avr.c (ptrreg_to_str): Replace error() with
7838 output_operand_lossage().
7840 2007-04-18 Dorit Nuzman <dorit@il.ibm.com>
7842 * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
7843 the unused code for reduction without adjust-in-epilog to simplify the
7846 2007-04-18 Wolfgang Gellerich <gellerich@de.ibm.com>
7848 * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
7849 (S390_TDC_NEGATIVE_ZERO): New constant.
7850 (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
7851 (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
7852 (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
7853 (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
7854 (S390_TDC_POSITIVE_INFINITY): New constant.
7855 (S390_TDC_NEGATIVE_INFINITY): New constant.
7856 (S390_TDC_POSITIVE_QUIET_NAN): New constant.
7857 (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
7858 (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
7859 (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
7860 (S390_TDC_INFINITY): New constant.
7861 * config/s390/s390.c (s390_canonicalize_comparison): Renamed
7862 UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
7863 optimization for UNSPEC_CCZ_TO_INT.
7864 * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
7865 ("*ccz_to_int"): New insn.
7866 ("isinf<mode>2"): New insn.
7867 (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
7868 (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
7869 (UNSPEC_CCZ_TO_INT): New constant.
7871 2007-04-18 Richard Guenther <rguenther@suse.de>
7873 PR tree-optimization/19431
7874 PR tree-optimization/21463
7875 * tree-pass.h (pass_phiprop): Declare.
7876 * passes.c (init_optimization_passes): New phiprop pass.
7877 * tree-ssa-forwprop.c (struct phiprop_d): New structure.
7878 (phivn_valid_p): New helper function.
7879 (phiprop_insert_phi): Likewise.
7880 (propagate_with_phi): Likewise.
7881 (tree_ssa_phiprop): New propagator propagating loads
7882 through phi nodes if profitable.
7884 2007-04-18 Dorit Nuzman <dorit@il.ibm.com>
7886 * tree-vect-analyze.c (process_use): New function.
7887 (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
7888 Check phis in all bbs.
7889 * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
7892 2007-04-18 Bernd Schmidt <bernd.schmidt@analog.com>
7894 * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
7897 2007-04-17 Anatoly Sokolov <aesok@post.ru>
7900 * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
7903 2007-04-17 H.J. Lu <hongjiu.lu@intel.com>
7905 * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
7907 (sse_vmmulv4sf3): Likewise.
7908 (sse2_vmaddv2df3): Likewise.
7909 (sse2_vmmulv2df3): Likewise.
7911 2007-04-17 Zdenek Dvorak <dvorakz@suse.cz>
7913 PR rtl-optimization/31360
7914 * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
7915 (target_reg_cost): New.
7916 (init_set_costs): Initialize target_reg_cost. Add comments
7917 regarding the rationale of the costs.
7918 (global_cost_for_size): Renamed to...
7919 (estimate_reg_pressure_cost): ... and simplify. Decrease importance
7920 of register pressure.
7921 * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
7922 estimate_reg_pressure_cost. Add number of ivs.
7923 (determine_set_costs): Dump target_reg_cost.
7924 * loop-invariant.c (gain_for_invariant): Use
7925 estimate_reg_pressure_cost. Removed n_inv_uses argument.
7926 (best_gain_for_invariant, find_invariants_to_move): Remove
7928 * cfgloop.h (target_small_cost, target_pres_cost): Removed.
7929 (target_reg_cost): Declare.
7930 (global_cost_for_size): Declaration removed.
7931 (estimate_reg_pressure_cost): Declare.
7933 2007-04-17 Peter Bergner <bergner@vnet.ibm.com>
7935 * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
7936 regnos into even/odd register pairs.
7937 * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
7938 TDmode similar to the other floating point modes.
7939 [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
7940 * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
7942 (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
7943 nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
7944 (movdd_hardfloat64): Use TARGET_MFPGPR.
7946 2007-04-17 Bernd Schmidt <bernd.schmidt@analog.com>
7948 * reload1.c (delete_output_reload): Don't count output in n_inherited.
7951 2005-01-05 Richard Henderson <rth@redhat.com>
7953 * reload1.c (do_input_reload): Restrict the optimization deleteing
7954 a previous output reload to RELOAD_FOR_INPUT.
7956 2007-04-17 Dorit Nuzman <dorit@il.ibm.com>
7958 * tree-vectorizer.h (stmt_vec_info_type): Add enum value
7959 induc_vec_info_type.
7960 (vectorizable_induction): New function declaration.
7961 * tree-vect-transform.c (get_initial_def_for_induction): No need to
7962 check if already vectorized. Find first place in BB where new stmts
7963 can be inserted. Takes only one argument.
7964 (vectorizable_induction): New function.
7965 (vect_transform_stmt): Add case for induc_vec_info_type to call
7966 vectorizable_induction.
7967 (vect_transform_loop): Consider phis for vectorization.
7968 * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
7970 (analyze_operations): Call vectorizable_induction when analyzing phis.
7972 (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
7973 (vect_mark_relevant): Include phis in relevance analysis.
7974 (vect_mark_stmts_to_be_vectorize): Likewise.
7975 * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
7977 2007-04-16 Lawrence Crowl <crowl@google.com>
7979 * doc/invoke.texi (Debugging Options): Add documentation for the
7980 -femit-struct-debug options -femit-struct-debug-baseonly,
7981 -femit-struct-debug-reduced, and
7982 -femit-struct-debug-detailed[=...].
7984 * c-opts.c (c_common_handle_option): Add
7985 OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
7986 and OPT_femit_struct_debug_detailed_.
7987 * c.opt: Add specifications for
7988 -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
7989 and -femit-struct-debug-detailed[=...].
7990 * opts.c (set_struct_debug_option): Parse the
7991 -femit-struct-debug-... options.
7992 * opts.c (matches_main_base, main_input_basename,
7993 main_input_baselength, base_of_path, matches_main_base): Add
7994 variables and functions to compare header base name to compilation
7996 * opts.c (should_emit_struct_debug): Add to determine to emit a
7997 structure based on the option.
7998 (dump_struct_debug) Also disabled function to debug this
8000 * opts.c (handle_options): Save the base name of the
8003 * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
8004 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
8005 This hook indicates if a type is generic. Set it by default
8007 * langhooks.h (struct lang_hooks_for_types): Add a new hook
8008 to determine if a struct type is generic or not.
8009 * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
8010 * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
8011 * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
8014 * flags.h (enum debug_info_usage): Add an enumeration to describe
8015 a program's use of a structure type.
8016 * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
8017 to indicate the program's usage of the type. Filter structs based
8018 on the -femit-struct-debug-... specification.
8019 (gen_type_die): Split into two routines, gen_type_die and
8020 gen_type_die_with_usage. gen_type_die is now a wrapper
8021 that assumes direct usage.
8022 (gen_type_die_with_usage): Replace calls to gen_type_die
8023 with gen_type_die_with_usage adding the program usage of
8024 the referenced type.
8025 (dwarf2out_imported_module_or_decl): Suppress struct debug
8026 information using should_emit_struct_debug when appropriate.
8028 2007-04-16 Ian Lance Taylor <iant@google.com>
8030 PR tree-optimization/31522
8031 * tree-vrp.c (vr_phi_edge_counts): New static variable.
8032 (vrp_initialize): Allocate vr_phi_edge_counts.
8033 (vrp_visit_phi_node): Don't push to infinity if we saw a new
8034 executable edge. Drop test for all constants.
8035 (vrp_finalize): Free vrp_phi_edge_counts.
8037 * doc/cpp.texi (Common Predefined Macros): Clarify description of
8038 __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
8040 * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
8041 predecessors at head rather than tail.
8043 2007-04-16 Matthias Klose <doko@debian.org>
8045 * config/alpha/linux.h (CPP_SPEC): Define.
8046 * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
8048 2007-04-16 Aldy Hernandez <aldyh@redhat.com>
8050 * function.h: Remove sequence_stack extern declaration.
8052 2007-04-16 Kazu Hirata <kazu@codesourcery.com>
8054 * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
8056 (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
8059 2007-04-16 Anatoly Sokolov <aesok@post.ru>
8061 * config/avr/avr.c (avr_arch_types): Rearranging array.
8062 (enum avr_arch): Add.
8063 (avr_mcu_types): Use avr_arch enumeration constants instead of
8065 * config/avr/avr.h (LINK_SPEC): Simplify.
8067 2007-04-16 Kazu Hirata <kazu@codesourcery.com>
8069 * config/m68k/m68k.c (m68k_libcall_value,
8070 m68k_function_value): Use macros for register names more.
8072 * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
8074 (M68K_REGNAME): Use A6_REG.
8075 * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
8077 2007-04-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
8080 * sched-int.h (struct deps): Split field 'pending_lists_length' into
8081 'pending_read_list_length' and 'pending_write_list_length'. Update
8083 * sched-deps.c (add_insn_mem_dependence): Change signature. Update
8084 to handle two length counters instead of one. Update all uses.
8085 (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
8086 two length counters instead of one.
8087 * sched-rgn.c (propagate_deps): Update to handle two length counters
8090 2007-04-16 H.J. Lu <hongjiu.lu@intel.com>
8093 * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
8094 copy of source, pass it to ix86_expand_vector_set and return
8097 2007-04-16 David Ung <davidu@mips.com>
8098 Joseph Myers <joseph@codesourcery.com>
8100 * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
8101 PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
8102 * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
8103 Add 74K processor information.
8104 * config/mips/mips.md: Include 74k.md.
8105 (cpu): Add 74kc,74kf,74kx.
8106 (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
8107 * config/mips/74k.md: New.
8108 * doc/invoke.texi (MIPS Options): Document 74K support.
8110 2007-04-16 Dorit Nuzman <dorit@il.ibm.com>
8112 * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
8113 vectorizable_* functions.
8114 * tree-vect-transform.c (vectorizable_call): Add check for
8115 STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
8116 (vectorizable_store): likewise.
8117 (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
8119 (vectorizable_operation, vectorizable_type_demotion): Likewise.
8120 (vectorizable_type_promotion, vectorizable_load): Likewise.
8121 (vectorizable_live_operation, vectorizable_condition): Likewise.
8122 (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
8124 (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
8126 2007-04-15 Kazu Hirata <kazu@codesourcery.com>
8128 * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
8129 register numbers more.
8130 * config/m68k/m68k.h (STACK_POINTER_REGNUM,
8131 FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
8132 M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
8133 FUNCTION_VALUE_REGNO_P): Likewise.
8134 * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
8135 STATIC_CHAIN_REGNUM): Likewise.
8136 * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
8137 * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
8138 STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
8139 * config/m68k/m68k.md (FP_REG): New.
8141 2007-04-15 Kazu Hirata <kazu@codesourcery.com>
8143 * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
8146 2007-04-15 Kazu Hirata <kazu@codesourcery.com>
8148 * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
8149 tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
8152 2007-04-11 Zdenek Dvorak <dvorakz@suse.cz>
8154 * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
8157 2007-04-14 Andrew Pinski <andrew_pinski@playstation.sony.com>
8160 * c-decl.c (finish_decl): Grab the type of the decl after the call
8161 to store_init_value.
8163 2007-04-14 Steven Bosscher <steven@gcc.gnu.org>
8165 * common.opt (fforward-propagate): Fix "Optimization" annotation.
8167 2007-04-14 Jakub Jelinek <jakub@redhat.com>
8170 * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
8171 dominators, post dominators and cleanup cfg before returning.
8173 2007-04-14 Bernd Schmidt <bernd.schmidt@analog.com>
8175 * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
8176 * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
8178 2007-04-14 Kazu Hirata <kazu@codesourcery.com>
8180 * config.gcc: Recognize fido.
8181 * config/m68k/m68k-devices.def (fidoa): New.
8182 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
8184 (FL_FIDOA, TARGET_FIDOA): New.
8185 * config/m68k/m68k.opt (mfidoa): New.
8187 2007-04-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
8190 * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
8191 when a personality function is used.
8193 2007-04-13 Bob Wilson <bob.wilson@acm.org>
8195 * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
8197 2007-04-13 Mike Stump <mrs@apple.com>
8199 * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
8201 * config/darwin.opt (fapple-kext): Make C++ only.
8202 * config/darwin.c (darwin_override_options): Remove code to ensure
8203 -fapple-kext is given for C++ only.
8205 2007-04-13 Richard Sandiford <richard@codesourcery.com>
8207 * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
8208 * config/mips/mips.c (override_options): Call
8209 SUBTARGET_OVERRIDE_OPTIONS, if defined.
8211 2007-04-13 H.J. Lu <hongjiu.lu@intel.com>
8213 * config/i386/i386.opt (msvr3-shlib): Removed.
8215 * doc/invoke.texi: Remove -msvr3-shlib.
8217 2007-04-13 H.J. Lu <hongjiu.lu@intel.com>
8219 * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
8220 with "popcnt" instruction.
8222 2007-04-13 Richard Guenther <rguenther@suse.de>
8224 PR tree-optimization/21258
8225 * tree-vrp.c (compare_case_labels): New helper.
8226 (find_switch_asserts): New function.
8227 (find_assert_locations): Call it for SWITCH_EXPRs.
8229 2007-04-13 Uros Bizjak <ubizjak@gmail.com>
8231 * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
8232 * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
8233 check is now implied in X87_FLOAT_MODE_P.
8234 (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
8235 (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
8236 (fix_trunc<mode>_i386_fisttp): Ditto.
8237 (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
8238 (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
8239 (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
8240 (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
8241 (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
8242 (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
8243 (unnamed_splitters): Ditto.
8244 * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
8245 for X87_FLOAT_MODE_P mode. Override FIRST_FLOAT_REG with
8246 FIRST_SSE_REG for local functions when SSE math is enabled or
8247 for functions with sseregparm attribute.
8248 (standard_80387_constant_p): Return -1 if mode is not
8250 (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
8251 (ix86_expand_compare): Ditto.
8252 (ix86_expand_carry_flag_compare): Ditto.
8253 (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
8254 of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
8255 DECIMAL_FLOAT_MODE_P.
8256 (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
8257 of SCALAR_FLOAT_MODE_P.
8258 (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
8259 [MINUS]: ... here. Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
8260 checks before FLOAT_MODE_P.
8261 [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
8262 before FLOAT_MODE_P.
8267 [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
8269 2007-04-12 Paolo Bonzini <bonzini@gnu.org>
8270 Charles Wilson <libtool@cwilson.fastmail.fm>
8272 * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
8273 (libgcc.mvars): Don't depend on them.
8274 * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
8275 * exec-tool.in: New.
8277 2007-04-12 Brooks Moses <brooks.moses@codesourcery.com>
8279 * doc/invoke.text (--help): Document --help=common.
8281 2007-04-12 Thomas Neumann <tneumann@users.sourceforge.net>
8283 * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
8285 2007-04-12 Richard Sandiford <richard@codesourcery.com>
8287 * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
8288 * genemit.c (main): Emit #include "integrate.h".
8289 * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
8290 (LOADGP_RTP): New mips_loadgp_style.
8291 * config/mips/mips.h: Include config/vxworks-dummy.h.
8292 (TARGET_RTP_PIC): New macro.
8293 (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
8294 (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
8295 (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
8297 * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define. Pass down
8298 -mvxworks-pic when using -mrtp and a PIC option.
8299 * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
8301 (mips_symbolic_constant_p, mips_symbolic_address_p)
8302 (mips_symbol_insns): Handle SYMBOL_HALF.
8303 (override_options): Warn about -G and -mrtp being used together.
8304 Initialize mips_lo_relocs[SYMBOL_HALF].
8305 (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
8306 (mips_emit_loadgp): Handle LOADGP_RTP.
8307 (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
8308 * config/mips/mips.md (loadgp_rtp): New insn and splitter.
8309 (tablejump): Handle function-relative case table entries if
8311 * config/mips/predicates.md (symbol_ref_operand): New predicate.
8313 2007-04-12 Richard Sandiford <richard@codesourcery.com>
8315 * config/mips/mips.md (load_call<mode>): Allow any general register.
8317 (sibcall_value_internal, sibcall_value_multiple_internal)
8318 (call_value_internal, call_value_split, call_value_multiple_internal)
8319 (call_value_multiple_split): Remove constraints from operand 0.
8321 2007-04-12 Richard Sandiford <richard@codesourcery.com>
8323 * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
8324 rather than loadgp_noshared.
8325 * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
8326 instead of gen_loadgp_noshared. Use gen_loadgp_newabi instead of
8328 * config/mips/mips.md (loadgp): Rename to...
8329 (loadgp_newabi): ...this.
8330 (loadgp_noshared): Rename to...
8331 (loadgp_absolute): ...this.
8333 2007-04-12 Richard Sandiford <richard@codesourcery.com>
8335 * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
8336 false for locally-binding symbols.
8337 (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
8339 2007-04-12 Richard Sandiford <richard@codesourcery.com>
8341 * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
8342 (SYMBOL_GOT_PAGE_OFST): ...this.
8343 (SYMBOL_GOT_GLOBAL): Rename to...
8344 (SYMBOL_GOT_DISP): ...this.
8345 (SYMBOL_GOTOFF_GLOBAL): Rename to...
8346 (SYMBOL_GOTOFF_DISP): ...this. Update comments accordingly.
8347 * config/mips/mips.c (mips_global_symbol_p): New function.
8348 (mips_symbol_binds_local_p): Likewise.
8349 (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
8350 and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST. Use
8351 mips_global_symbol_p and mips_symbol_binds_local_p.
8352 (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
8353 (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
8354 SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
8356 (mips_ok_for_lazy_binding_p): New function.
8357 (mips_load_call_address, mips_expand_call): Use it.
8358 (mips_dangerous_for_la25_p): Likewise.
8359 * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
8360 (*got_disp<mode>): Use got_disp_operand instead of
8361 global_got_operand. Use SYMBOL_GOTOFF_DISP instead of
8362 SYMBOL_GOTOFF_GLOBAL.
8363 (*got_page<mode>): Use got_page_ofst_operand instead of
8365 * config/mips/predicates.md (const_call_insn_operand): Use
8366 SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
8367 (global_got_operand): Rename to...
8368 (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
8370 (local_got_operand): Rename to...
8371 (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
8372 of SYMBOL_GOT_LOCAL.
8374 2007-04-12 Richard Sandiford <richard@codesourcery.com>
8376 * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
8377 TARGET_CALL_CLOBBERED_GP.
8378 (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8379 (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
8380 (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
8381 (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
8382 of TARGET_ABICALLS && !TARGET_NEWABI.
8383 (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8384 * config/mips/mips.c (mips_load_call_address): Check
8385 TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
8386 (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8387 Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
8388 (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
8389 TARGET_ABICALLS && TARGET_NEWABI.
8390 (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
8392 (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
8393 (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
8394 TARGET_ABICALLS && TARGET_NEWABI.
8395 (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
8396 TARGET_ABICALLS. Check TARGET_CALL_SAVED_GP instead of
8397 TARGET_NEWABI. Use TARGET_USE_PIC_FN_ADDR_REG to decide
8398 whether indirect calls must use $25.
8399 (mips_extra_live_on_entry): Check TARGET_GOT instead of
8401 * config/mips/mips.md (jal_macro): Check flag_pic and
8402 TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
8403 (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
8404 instead of TARGET_ABICALLS.
8405 (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
8406 TARGET_ABICALLS && TARGET_OLDABI.
8407 (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8408 (sibcall): In the comment above the define_insn, mention
8409 TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
8410 * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
8411 instead of TARGET_ABICALLS.
8413 2007-04-12 Bernd Schmidt <bernd.schmidt@analog.com>
8415 * doc/md.texi (Blackfin family constraints): Document PA and PB.
8416 * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
8417 (MACFLAGS_MATCH_P): New macro.
8418 * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
8419 (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
8420 * config/bfin/bfin.md (MACFLAG_IS_M): New constant. Renumber some of
8421 the other MACFLAG constants.
8422 (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
8423 (flag_machi): Tighten constraints. Renumber some of the operands.
8424 (flag_machi_acconly): Tighten constraints. Correct operand numbers in
8426 (flag_machi_parts_acconly): New pattern.
8427 (flag_macinithi): Tighten constraints. Allow any accumulator to be
8429 (flag_macinit1hi): Tighten constraints.
8430 (flag_mul_macv2hi_parts_acconly): New pattern.
8432 * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
8433 Use a more efficient implementation.
8434 * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
8435 inline sequences when not optimizing for size.
8437 * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
8438 movhi_high2low): Delete, merge functionality into...
8439 (packv2hi): ... this pattern.
8441 2007-02-11 Jie Zhang <jie.zhang@analog.com>
8442 * config/bfin/bfin.opt (msim): New option.
8443 (mcpu=): New option.
8444 * config/bfin/bfin-protos.h (enum bfin_cpu): New.
8445 (bfin_cpu_t): Typedef of enum bfin_cpu.
8446 (bfin_cpu_type): New declaration.
8447 * config/bfin/elf.h (STARTFILE_SPEC): Add support for
8448 -msim and -mcpu= options.
8449 (LIB_SPEC): Likewise.
8450 * config/bfin/bfin.c (bfin_cpu_type): Define.
8451 (bfin_handle_option): Handle -mcpu= option.
8452 * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
8453 (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
8454 __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
8456 2007-04-12 Richard Sandiford <richard@codesourcery.com>
8458 * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
8459 (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
8460 (powerpc-wrs-vxworksae): Use ${tm_file}.
8461 (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
8462 after elfos.h. Remove i386/sysv4.h and add i386/vx-common.h.
8463 * config/i386/vx-common.h: New file.
8465 2007-04-12 Richard Sandiford <richard@codesourcery.com>
8467 * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
8470 2007-04-12 Andreas Krebbel <krebbel1@de.ibm.com>
8472 * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
8475 2007-04-12 Douglas Gregor <doug.gregor@gmail.com>
8479 * c-common.c (c_build_qualified_type): Set canonical type
8482 2007-04-12 Richard Guenther <rguenther@suse.de>
8484 * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
8485 lower bound and element size if lower bound is not zero
8486 or either of the ARRAY_REF operands is set.
8488 2007-04-12 Richard Guenther <rguenther@suse.de>
8490 PR tree-optimization/24689
8491 PR tree-optimization/31307
8492 * fold-const.c (operand_equal_p): Compare INTEGER_CST array
8494 * gimplify.c (canonicalize_addr_expr): To be consistent with
8495 gimplify_compound_lval only set operands two and three of
8496 ARRAY_REFs if they are not gimple_min_invariant. This makes
8497 it never at this place.
8498 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
8500 2007-04-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
8502 * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
8503 null before emitting a .nsubspa directive.
8505 2007-04-11 Diego Novillo <dnovillo@redhat.com>
8507 * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
8508 need_to_partition_p if there are no memory statements in the
8511 2007-04-11 Zdenek Dvorak <dvorakz@suse.cz>
8513 * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
8514 (gcd_of_steps_may_divide_p): New function.
8515 (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
8517 2007-04-11 Bernd Schmidt <bernd.schmidt@analog.com>
8519 * reload.c (find_reloads_toplev, find_reloads_address,
8520 find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
8521 not a pointer equality test, to decide if we need to call
8522 push_reg_equiv_alt_mem.
8524 2007-04-11 Sebastian Pop <sebastian.pop@inria.fr>
8526 * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
8527 insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
8529 (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
8531 2007-04-11 Zdenek Dvorak <dvorakz@suse.cz>
8533 * tree-data-ref.c (add_multivariate_self_dist): Force the distance
8534 vector to be positive.
8536 2007-04-11 Diego Novillo <dnovillo@redhat.com>
8540 * doc/invoke.texi: Document --params max-aliased-vops and
8542 * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
8543 debug_memory_partitions): Move to tree-flow.h
8544 * params.h (AVG_ALIASED_VOPS): Define.
8545 * tree-ssa-alias.c (struct mp_info_def): Remove. Update all
8547 (mp_info_t): Likewise.
8548 (get_mem_sym_stats_for): New.
8549 (set_memory_partition): Move from tree-flow-inline.h.
8550 (mark_non_addressable): Only clear the set of symbols for the
8551 partition if it exists.
8552 (dump_memory_partitions): Move from tree-ssa-operands.c
8553 (debug_memory_partitions): Likewise.
8554 (need_to_partition_p): New.
8555 (dump_mem_ref_stats): New.
8556 (debug_mem_ref_stats): New.
8557 (dump_mem_sym_stats): New.
8558 (debug_mem_sym_stats): New.
8559 (update_mem_sym_stats_from_stmt): New.
8560 (compare_mp_info_entries): New.
8561 (mp_info_cmp): Call it.
8562 (sort_mp_info): Change argument to a list of mem_sym_stats_t
8564 (get_mpt_for): Move from tree-ssa-operands.c.
8565 (find_partition_for): New.
8566 (create_partition_for): Remove.
8567 (estimate_vop_reduction): New.
8568 (update_reference_counts): New.
8569 (build_mp_info): New.
8570 (compute_memory_partitions): Refactor.
8571 Document new heuristic.
8572 Call build_mp_info, update_reference_counts,
8573 find_partition_for and estimate_vop_reduction.
8574 (compute_may_aliases): Populate virtual operands before
8575 calling debugging dumps.
8576 (delete_mem_sym_stats): New.
8577 (delete_mem_ref_stats): New.
8578 (init_mem_ref_stats): New.
8579 (init_alias_info): Call it.
8580 (maybe_create_global_var): Remove alias_info argument.
8581 Get number of call sites and number of pure/const call sites
8582 from gimple_mem_ref_stats().
8583 (dump_alias_info): Call dump_memory_partitions first.
8584 (dump_points_to_info_for): Show how many times a pointer has
8586 * opts.c (decode_options): For -O2 set --param
8587 max-aliased-vops to 500.
8588 For -O3 set --param max-aliased-vops to 1000 and --param
8589 avg-aliased-vops to 3.
8590 * fortran/options.c (gfc_init_options): Remove assignment to
8592 * tree-flow-inline.h (gimple_mem_ref_stats): New.
8593 * tree-dfa.c (dump_variable): Dump memory reference
8595 Dump NO_ALIAS* settings.
8596 (referenced_var_lookup): Tidy.
8597 (mem_sym_stats): New.
8598 * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
8599 and ORIG are different SSA names for a memory partition.
8600 * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
8601 * tree-flow.h (struct mem_sym_stats_d): Define.
8602 (mem_sym_stats_t): Define.
8603 (struct mem_ref_stats_d): Define.
8604 (struct gimple_df): Add field mem_ref_stats.
8605 (enum noalias_state): Define.
8606 (struct var_ann_d): Add bitfield noalias_state.
8607 (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
8608 debug_mem_ref_stats, debug_memory_partitions,
8609 debug_mem_sym_stats): Declare.
8610 * tree-ssa-structalias.c (update_alias_info): Update call
8611 sites, pure/const call sites and asm sites in structure
8612 returned by gimple_mem_ref_stats.
8613 Remove local variable IS_POTENTIAL_DEREF.
8614 Increase NUM_DEREFS if the memory expression is a potential
8616 Call update_mem_sym_stats_from_stmt.
8617 If the memory references memory, call
8618 update_mem_sym_stats_from_stmt for all the direct memory
8619 symbol references found.
8620 (intra_create_variable_infos): Set noalias_state field for
8621 pointer arguments according to the value of
8622 flag_argument_noalias.
8623 * tree-ssa-structalias.h (struct alias_info): Remove fields
8624 num_calls_found and num_pure_const_calls_found.
8625 (update_mem_sym_stats_from_stmt): Declare.
8626 * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
8627 Set default value to 100.
8628 (PARAM_AVG_ALIASED_VOPS): Define.
8630 2007-04-11 Richard Guenther <rguenther@suse.de>
8633 * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
8634 a * -b + c as c - a * b if we honor sign dependent rounding.
8636 2007-04-11 Bernd Schmidt <bernd.schmidt@analog.com>
8638 * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
8640 * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
8641 bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
8643 (initialize_trampoline): Don't use old-style function definition.
8644 (bfin_secondary_reload): Mark IN_P argument as unused.
8646 2007-04-10 Sebastian Pop <sebastian.pop@inria.fr>
8648 PR tree-optimization/31343
8649 * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
8650 (build_polynomial_chrec): Return a scalar when the evolution is zero.
8651 * testsuite/gcc.dg/vect/pr31343.c: New.
8653 2007-04-10 Eric Christopher <echristo@apple.com>
8655 * config/i386/i386.h (X87_FLOAT_MODE_P): New.
8656 * config/i386/i386.md (*cmpfp0): Use.
8657 (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
8658 (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
8659 (fix_trunc<mode>_i386_fisttp): Ditto.
8660 (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
8661 (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
8662 (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
8663 (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
8664 (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
8665 (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
8666 (unnamed_splitters): Ditto.
8667 * config/i386/i386.c (output_fix_trunc): Assert that
8668 we're not being passed a TFmode operand.
8670 2007-04-10 Zdenek Dvorak <dvorakz@suse.cz>
8672 PR tree-optimization/31526
8673 * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
8674 n_basic_blocks to find newly added blocks.
8676 2007-04-10 Uros Bizjak <ubizjak@gmail.com>
8678 * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
8680 (fix_trunc<mode>si_sse): Ditto.
8681 (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
8682 (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
8683 (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
8684 (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
8685 (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
8686 expander using SSEMODEF mode macro.
8687 (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
8688 expander using SSEMODEF mode macro.
8689 (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
8690 *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
8691 (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
8692 *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
8693 (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
8694 *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
8695 (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
8696 Macroize insn using X87MODEF mode macro.
8698 2007-04-09 H.J. Lu <hongjiu.lu@intel.com>
8700 * config/i386/sse.md (sse2_pinsrw): Removed.
8701 (sse2_pextrw): Renamed to ...
8702 (*sse2_pextrw): This.
8704 2007-04-09 Jan Hubicka <jh@suse.cz>
8707 * config/i386/sse.md
8708 (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
8709 (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
8710 (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
8711 (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
8713 2007-04-09 Jan Hubicka <jh@suse.cz>
8715 * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
8716 multiple fields of union.
8718 2007-04-09 Zdenek Dvorak <dvorakz@suse.cz>
8720 * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
8721 (create_preheaders): Check that loops are available.
8722 (fix_loop_structure): Clean up, improve comments.
8723 * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
8724 Check that loops are available. Set LOOP_CLOSED_SSA to the loops
8726 * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
8727 * predict.c (tree_estimate_probability): Do not call
8728 calculate_dominance_info. Call create_preheaders.
8729 * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
8730 rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
8732 * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
8733 * cfgloop.h (LOOP_CLOSED_SSA): New constant.
8734 * tree-cfg.c (tree_split_edge): Make an assert more precise.
8735 * tree-ssa-threadedge.c (thread_across_edge): Comment the function
8738 2007-04-08 Jan Hubicka <jh@suse.cz>
8740 * tree.h (maybe_fold_offset_to_component_ref): Declare.
8741 * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
8742 * fold-const.c (fold_unary): Use it.
8744 2007-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
8746 * varasm.c (assemble_variable): Remove call to
8747 lang_hooks.decls.prepare_assemble_variable.
8748 * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
8749 (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
8750 * langhooks.h (lang_hooks_for_decls): Remove
8751 prepare_assemble_variable.
8753 2007-04-08 Mike Stump <mrs@apple.com>
8755 * config/i386/i386.c: Use inc/dec on Core2.
8757 2007-04-08 Steven Bosscher <steven@gcc.gnu.org>
8759 * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
8760 lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
8761 lhd_tree_inlining_end_inlining): Remove.
8762 * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
8763 add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
8765 * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
8766 lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
8767 lhd_tree_inlining_end_inlining): Remove prototypes.
8768 (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
8769 LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
8770 LANG_HOOKS_TREE_INLINING_START_INLINING,
8771 LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
8773 * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
8776 2007-04-08 Anatoly Sokolov <aesok@post.ru>
8779 * config/avr/predicates.md (io_address_operand): Delete predicate.
8780 (low_io_address_operand): Don't use 'mode' argument.
8781 (higth_io_address_operand): Rename ...
8782 (high_io_address_operand): ... to this. Don't use 'mode' argument.
8783 * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
8786 2007-04-07 Daniel Berlin <dberlin@dberlin.org>
8788 Revert change removing staticp.
8790 2007-04-07 Anatoly Sokolov <aesok@post.ru>
8793 * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
8796 2007-04-07 Bruce Korb <bkorb@gnu.org>
8798 * c.opt: Add -Wformat-contains-nul.
8799 * c-format.c (set_Wformat): Set warn_format_contains_nul to the
8801 (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
8802 the NUL byte warning.
8804 2007-04-07 H.J. Lu <hongjiu.lu@intel.com>
8806 * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
8808 2007-04-06 Daniel Berlin <dberlin@dberlin.org>
8810 * tree.c (staticp): No longer use staticp langhook.
8811 * langhooks.c (lhd_staticp): Removed.
8812 * langhooks.h (struct lang_hooks): Remove staticp.
8813 * c-common.c (c_staticp): Remove.
8814 * c-common.h (c_staticp): Ditto.
8815 * langhooks-defs.h (lhd_staticp): Ditto.
8816 (LHD_HOOKS_STATICP): Ditto
8817 * tree.h (gcc_assert_lowered): New macro.
8819 2007-04-06 Zdenek Dvorak <dvorakz@suse.cz>
8821 * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
8822 argument "reliable".
8823 (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
8824 Add argument "reliable". Propagate it through calls.
8825 (infer_loop_bounds_from_undefined): Derive number of iterations
8826 estimates from references in blocks that do not dominate loop latch.
8827 (gcov_type_to_double_int): New function.
8828 (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
8829 and expected_loop_iterations_unbounded.
8830 * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
8831 (expected_loop_iterations): Use expected_loop_iterations_unbounded.
8832 * tree-data-ref.c (estimated_loop_iterations): Export.
8833 (get_references_in_stmt): Fix -- do not return addresses of local
8835 * cfgloop.h (expected_loop_iterations_unbounded,
8836 estimated_loop_iterations): Declare.
8838 2007-04-06 Andreas Tobler <a.tobler@schweiz.org>
8840 * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
8842 2007-04-06 Uros Bizjak <ubizjak@gmail.com>
8844 * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
8845 and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
8846 (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
8847 Use output_387_reg_move().
8848 (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
8849 expander using X87MODEF12 mode macro.
8850 (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
8851 choosing register preferences. Use output_387_reg_move().
8852 (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
8853 instead of "x". Use output_387_reg_move().
8854 (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
8855 *truncxfdf2_i387_noop. Macroize insn using X87MODEF12 mode macro.
8856 (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
8857 *truncxfdf2_i387. Macroize insn using X87MODEF12 mode macro.
8858 Use output_387_reg_move().
8859 (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
8861 (*truncxf?f_i387 splitter): Ditto.
8863 2007-04-06 Daniel Berlin <dberlin@dberlin.org>
8865 * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
8866 LANG_HOOKS_SAFE_FROM_P.
8867 * expr.c (safe_from_p): Remove langhook call.
8868 * langhooks.h (lang_hooks): Remove safe_from_p.
8869 (lhd_safe_from_p): Remove prototype.
8870 * langhooks.c (lhd_safe_from_p): Remove.
8872 2007-04-06 Jan Hubicka <jh@suse.cz>
8874 * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
8877 2007-04-06 Uros Bizjak <ubizjak@gmail.com>
8879 * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
8880 * config/i386/i386.md (*movsf_1, *movdf_nointeger,
8881 *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
8882 *movxf_integer): Use output_387_reg_move() for x87 reg->mem
8884 (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
8885 *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
8887 2007-04-05 Richard Henderson <rth@redhat.com>
8889 * config/alpha/alpha.c (print_operand) [+]: Remove.
8890 (alpha_end_function): Print nop if call at end of function.
8891 * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
8892 * config/alpha/alpha.md (UNSPEC_LDGP1): New.
8893 (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
8894 (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
8895 (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
8896 the call pattern. Update peepholes to match.
8898 2007-04-05 Janis Johnson <janis187@us.ibm.com>
8900 * doc/extend.texi (Other Builtins): Add decimal float variants
8902 * builtins.def: Ditto.
8903 * builtins.c (expand_builtin): Ditto.
8905 2007-04-05 Uros Bizjak <ubizjak@gmail.com>
8906 H.J. Lu <hongjiu.lu@intel.com>
8909 * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
8910 of V8HImode when calling ix86_binary_operator_ok.
8911 (sse2_pmaddwd): Call ix86_binary_operator_ok.
8912 (sdot_prodv8hi): Operands 1 and 2 must be register.
8914 2007-04-05 Alexandre Oliva <aoliva@redhat.com>
8916 * tree-sra.c (try_instantiate_multiple_fields): Needlessly
8917 initialize align to silence bogus warning.
8919 2007-04-05 Alexandre Oliva <aoliva@redhat.com>
8922 * tree-sra.c (struct sra_elt): Add in_bitfld_block. Remove
8924 (struct sra_walk_fns): Remove use_all parameter from use.
8925 (sra_hash_tree): Handle BIT_FIELD_REFs.
8926 (sra_elt_hash): Don't hash bitfld blocks.
8927 (sra_elt_eq): Skip them in parent compares as well. Handle
8929 (sra_walk_expr): Don't maintain or pass down use_all_p.
8930 (scan_use): Remove use_all parameter.
8931 (scalarize_use): Likewise. Re-expand assignment to
8932 BIT_FIELD_REF of gimple_reg. De-scalarize before input or
8933 output, and re-scalarize after output. Don't mark anything
8935 (scalarize_ldst): Adjust.
8936 (scalarize_walk_gimple_modify_statement): Likewise.
8937 (build_element_name_1): Handle BIT_FIELD_REFs.
8938 (instantiate_element): Don't warn for any element whose parent
8940 (instantiate_missing_elements_1): Return the sra_elt.
8941 (canon_type_for_field): New.
8942 (try_instantiate_multiple_fields): New.
8943 (instantiate_missing_elemnts): Use them.
8944 (mark_no_warning): Removed.
8945 (generate_one_element_ref): Handle BIT_FIELD_REFs.
8946 (REPLDUP, sra_build_elt_assignment): New.
8947 (generate_copy_inout): Use them.
8948 (generate_element_copy): Likewise. Handle bitfld differences.
8949 (generate_element_zero): Don't recurse for blocks. Use
8950 sra_build_elt_assignment.
8951 (generate_one_element_int): Take elt instead of var. Use
8952 sra_build_elt_assignment.
8953 (generate_element_init_1): Adjust.
8954 (scalarize_use, scalarize_copy): Use REPLDUP.
8955 (scalarize_ldst): Move assert before dereference.
8956 (dump_sra_elt_name): Handle BIT_FIELD_REFs.
8958 2007-04-05 Steven Bosscher <steven@gcc.gnu.org>
8960 * regmove.c: Fix unused variable warnings due to previous commit.
8962 2007-04-05 Steven Bosscher <steven@gcc.gnu.org>
8964 * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
8965 (regmove_bb_head): Remove.
8966 (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
8967 (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
8968 problems with fixup_match_1.
8969 Don't initialize/free regmove_bb_head.
8971 (reg_is_remote_constant_p): If an insn is in the same basic block
8972 but not before INSN, consider it remote, too.
8974 2007-04-05 Anatoly Sokolov <aesok@post.ru>
8977 * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
8978 DECL_ASSEMBLER_NAME, not the DECL_NAME.
8980 2007-04-05 H.J. Lu <hongjiu.lu@intel.com>
8982 * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
8983 (CONDITIONAL_REGISTER_USAGE): Likewise.
8985 2007-04-04 Richard Henderson <rth@redhat.com>
8987 * config/alpha/lib1funcs.asm: Remove unused file.
8989 2007-04-04 Brooks Moses <brooks.moses@codesourcery.com>
8992 * opts.c (print_specific_help): Fix --help=<language>
8994 (common_handle_option): Support --help=common.
8996 2007-04-04 Brooks Moses <brooks.moses@codesourcery.com>
8999 * gcc.c (main): Do not run the linker if
9000 print_subprocess_help indicates that it shouldn't be
9003 2007-04-04 Brooks Moses <brooks.moses@codesourcery.com>
9006 * doc/invoke.texi (--help=): Document <languages> value, fix
9007 formatting in tables of values.
9009 2007-04-04 Danny Smith <dannysmith.users.sourceforge.net>
9011 * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
9012 dllimport attribute of virtual methods.
9014 2007-04-04 Chen Liqin <liqin@sunnorth.com.cn>
9016 * config/score/crti.asm: Change _bss_start to __bss_start.
9017 * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
9018 (OUTGOING_REG_PARM_STACK_SPACE) update.
9019 * config/score/score.opt: add options to make backend support
9020 score5, score5u, score7 and score7d.
9021 * config/score/score.md: Likewise.
9022 * config/score/misc.md: Likewise.
9023 * config/score/mac.md: Likewise.
9024 * doc/invoke.texi: Likewise.
9025 * doc/md.texi: update constraints define.
9027 2007-04-03 Richard Henderson <rth@redhat.com>
9029 * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
9030 an appropriate type, use the mode instead.
9032 2007-04-03 Richard Sandiford <richard@codesourcery.com>
9034 * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
9035 Set the default --with-arch setting to mips2.
9036 * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
9037 (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
9038 (MULTILIB_OSDIRNAMES): Delete.
9039 (MULTILIB_DIRNAMES): Define.
9040 * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
9041 (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
9042 (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
9043 definitions, except for _WRS_R3K_EXC_SUPPORT. Call
9044 VXWORKS_OS_CPP_BUILTINS.
9045 (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
9046 (MIPS_DEBUGGING_INFO): Undefine.
9047 (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
9049 2007-04-03 Jakub Jelinek <jakub@redhat.com>
9052 * fold-const.c (native_encode_real): Encode real.c provided longs
9053 as a series of 32-bit native integers.
9054 (native_interpret_real): Interpret buffer as a series of 32-bit
9057 2007-04-03 Richard Guenther <rguenther@suse.de>
9059 * genpreds.c (write_insn_constraint_len): Write function
9060 optimized for CONSTRAINT_LEN implementation.
9061 (write_tm_preds_h): Output insn_constraint_len inline and
9062 use it for CONSTRAINT_LEN.
9063 (write_insn_preds_c): Don't output insn_constraint_len.
9064 * doc/md.texi (define_register_constraint): Document multi-letter
9065 constraints shall have the same length if they start with the same
9068 2007-04-03 Uros Bizjak <ubizjak@gmail.com>
9071 * config/i386/i386.md (isinf<mode>2): Expand only when
9072 TARGET_C99_FUNCTIONS is set.
9074 2007-04-03 Uros Bizjak <ubizjak@gmail.com>
9076 * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
9077 (x86_64-*-linux*): Ditto.
9078 * config/i386/i386.opt (mpc): New option.
9079 * config/i386/i386.c (overrride_options): Handle
9080 ix87_precision_string.
9081 * config/i386/crtprec.c: New file.
9082 * config/i386/t-crtpc: Ditto.
9083 * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
9085 * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
9086 * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
9087 crtprec32.o, crtprec64.o and crtprec80.o.
9089 * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
9091 (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
9093 2007-04-02 Eric Christopher <echristo@apple.com>
9095 * doc/invoke.texi (i386 and x86-64 Options): Document -m64
9096 limitations on darwin.
9098 2007-04-02 Anatoly Sokolov <aesok@post.ru>
9101 * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
9103 2007-04-02 Dave Korn <dave.korn@artimi.com>
9105 * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
9107 2007-04-02 Dave Korn <dave.korn@artimi.com>
9109 * libgcc2.h (exception_descriptor): Don't forward-declare.
9110 (__get_eh_table_language, __get_eh_table_version): Delete
9111 prototypes of long-dead functions.
9113 2007-04-01 Daniel Berlin <dberlin@dberlin.org>
9115 * ebitmap.h: New file
9116 * ebitmap.c: New file
9117 * Makefile.in (ebitmap.o): New target.
9119 2007-04-01 Jan Hubicka <jh@suse.cz>
9121 * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
9122 before very first instruction.
9124 2007-04-01 Jan Hubicka <jh@suse.cz>
9126 * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
9127 waring on 64bit hosts.
9128 * bitmap.h: Fix typo in bitmap_head_def.
9130 2007-04-01 Steven Bosscher <steven@gcc.gnu.org>
9132 PR rtl-optimization/31391
9133 * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
9134 into a DELETED_LABEL note, and the label is in an empty basic
9135 block, update BB_END as well as BB_HEAD.
9137 2007-04-01 Richard Henderson <rth@redhat.com>
9139 PR tree-optimization/31169
9140 * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
9141 to varying if the range is outside [0, prec-1].
9143 2007-04-01 Richard Sandiford <richard@codesourcery.com>
9146 * config/mips/mips.md (load_const_gp): New insn.
9147 * config/mips/mips.c (mips_split_symbol): Avoid using or creating
9148 the MIPS16 GP pseudo register if no_new_pseudos.
9149 (mips16_gp_pseudo_reg): Use gen_load_const_gp.
9151 2007-03-31 Andrew Pinski <andrew_pinski@playstation.sony.com>
9154 * config/rs6000/rs6000.md (call): Convert to LR hard reg for
9156 (call_value): Likewise.
9158 2007-03-31 Wolfgang Bangerth <bangerth@dealii.org>
9159 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
9162 * doc/invoke.texi: (optimization options): Reword description
9163 of -ffast-math. Document its primary purpose.
9165 2007-03-31 Richard Guenther <rguenther@suse.de>
9167 * omp-low.c (splay-tree.h): Include.
9168 (lookup_decl): Replace splay-tree usage by pointer-map.
9169 (maybe_lookup_decl): Likewise.
9170 (new_omp_context): Likewise.
9171 (delete_omp_context): Likewise.
9172 * gimplify.c (splay-tree.h): Include.
9173 * tree-inline.c (insert_decl_map): Replace splay-tree usage by
9175 (remap_ssa_name): Likewise.
9176 (remap_decl): Likewise.
9177 (remap_type_1): Likewise.
9178 (remap_type): Likewise.
9179 (copy_body_r): Likewise.
9180 (expand_call_inline): Likewise.
9181 (clone_body): Likewise.
9182 (copy_tree_r): Likewise.
9183 (remap_save_expr): Likewise.
9184 (unsave_r): Likewise.
9185 (unsave_expr_now): Likewise.
9186 (tree_function_versioning): Likewise.
9187 (build_duplicate_type): Likewise.
9188 * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
9189 (struct copy_body_data): Replace splay-tree by pointer-map.
9190 * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
9191 not $(SPLAY_TREE_H).
9192 (gimplify.o): Depend on $(SPLAY_TREE_H).
9193 (omp-low.p): Likewise.
9195 2007-03-31 Anatoly Sokolov <aesok@post.ru>
9197 * config/avr/predicates.md (even_register_operand,
9198 odd_register_operand): New predicates.
9199 * config/avr/avr.md (movw peephole2): New.
9200 (movw_r peephole2): New.
9202 2007-03-30 Rafael Avila de Espindola <espindola@google.com>
9204 * tree.h (get_signed_or_unsigned_type): New.
9205 * fold-const.c (operand_equal_for_comparison_p): Use
9206 get_signed_or_unsigned_type instead of
9207 lang_hooks.types.signed_or_unsigned_type.
9208 * expr.c (store_expr): Ditto.
9209 * langhooks.c (get_signed_or_unsigned_type): New.
9210 (lhd_signed_or_unsigned_type): New.
9211 * langhooks.h (lhd_signed_or_unsigned_type): New.
9212 * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
9214 2007-03-30 Richard Henderson <rth@redhat.com>
9216 * tree-ssa-loop-ivopts.c: Include target.h.
9217 (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
9218 (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
9219 (force_expr_to_var_cost): Use produce_memory_decl_rtl.
9220 * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
9222 2007-03-30 Richard Henderson <rth@redhat.com>
9223 Kai Tietz <kai.tietz@onevision.com>
9225 * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
9227 (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
9228 (TARGET_64BIT_MS_ABI): New.
9229 (DBX_REGISTER_NUMBER): Handle 64-bit.
9230 (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
9231 (LONG_TYPE_SIZE): Force to 32.
9232 (REG_PARM_STACK_SPACE): New.
9233 (OUTGOING_REG_PARM_STACK_SPACE): New.
9234 (REGPARM_MAX, SSE_REGPARM_MAX): New.
9235 (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
9236 (STACK_BOUNDARY): Use 128 for 64-bit.
9237 * config/i386/cygwin.asm: Use push/ret to preserve call stack.
9238 Add 64-bit implementation.
9239 * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
9241 * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
9242 (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
9243 Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
9244 for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
9245 (ix86_handle_cconv_attribute): Don't warn when ignoring if
9246 TARGET_64BIT_MS_ABI.
9247 (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
9248 (ix86_pass_by_reference): Likewise.
9249 (ix86_function_value_regno_p): Likewise.
9250 (ix86_build_builtin_va_list): Likewise.
9251 (ix86_va_start, ix86_gimplify_va_arg): Likewise.
9252 (function_arg_advance_ms_64): New.
9253 (function_arg_advance): Call it.
9254 (function_arg_ms_64): New.
9255 (function_arg): Call it.
9256 (function_value_ms_64): New.
9257 (ix86_function_value_1): Call it.
9258 (return_in_memory_ms_64): New.
9259 (ix86_return_in_memory): Call it.
9260 (setup_incoming_varargs_ms_64): New.
9261 (ix86_setup_incoming_varargs): Call it.
9262 (ix86_expand_prologue): Handle 64-bit stack probing.
9263 (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
9264 (output_pic_addr_const): Likewise.
9265 (x86_this_parameter): Likewise.
9266 (x86_output_mi_thunk): Likewise.
9267 (x86_function_profiler): Likewise.
9268 (TARGET_STRICT_ARGUMENT_NAMING): New.
9269 * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
9270 (TARGET_64BIT_MS_ABI): New.
9271 (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
9272 * config/i386/i386.md (allocate_stack_worker): Remove.
9273 (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
9274 describe the clobber of eax without a match_scratch.
9275 (allocate_stack_worker_postreload): Remove.
9276 (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
9277 describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
9278 (allocate_stack_worker_rex64_postreload): Remove.
9279 (allocate_stack): Handle 64-bit.
9280 * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
9281 * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
9282 (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
9283 (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
9284 (STANDARD_STARTFILE_PREFIX_1): Likewise.
9285 * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
9286 * config.build (x86_64-*-mingw*): New host.
9287 * config.host (x86_64-*-mingw*): New host.
9288 * config.gcc (x86_64-*-mingw*): New target.
9289 * gthr-win32.h (__gthread_key_create): Mark dtor unused.
9291 2007-03-30 Richard Henderson <rth@redhat.com>
9292 Kai Tietz <kai.tietz@onevision.com>
9294 * c-pragma.c (struct def_pragma_macro_value): New.
9295 (struct def_pragma_macro): New.
9296 (pushed_macro_table): New.
9297 (dpm_hash, dpm_eq): New.
9298 (handle_pragma_push_macro, handle_pragma_pop_macro): New.
9299 (init_pragma): Install them.
9300 * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
9302 2007-03-30 Anatoly Sokolov <aesok@post.ru>
9304 * config/avr/avr.c (avr_override_options): Clear
9305 'flag_delete_null_pointer_checks'.
9307 2007-03-30 Paolo Carlini <pcarlini@suse.de>
9310 * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
9311 RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
9312 RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
9313 RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
9314 RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
9315 RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
9316 RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
9318 * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
9320 2007-03-30 Steven Bosscher <steven@gcc.gnu.org>
9322 * regmove.c: Move all of pass_stack_adjustments from here...
9323 * combine-stack-adj.c: ...to this new file.
9324 * Makefile.in: Add rules for combine-stack-adj.o.
9326 2007-03-30 Zdenek Dvorak <dvorakz@suse.cz>
9328 PR tree-optimization/31383
9329 * tree-data-ref.c (affine_function_equal_p): Do not require the
9330 vectors to have the same length.
9332 2007-03-30 Jan Hubicka <jh@suse.cz>
9335 * dwarf2out.c (reference_to_unused): Ask cgraph for functions
9336 availablility; add more sanity checking; ask varpool only about
9339 2007-03-29 Richard Henderson <rth@redhat.com>
9341 * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
9342 to decide, but __SIZEOF_LONG_LONG__.
9344 2007-03-29 Richard Henderson <rth@redhat.com>
9346 * emutls.c (struct __emutls_array): New.
9347 (emutls_destroy): Use it instead of casting element 0 from void*.
9348 (__emutls_get_address): Likewise.
9350 2007-03-29 Richard Henderson <rth@redhat.com>
9352 * varasm.c (initializer_constant_valid_p): Don't deny
9353 DECL_DLLIMPORT_P on functions.
9355 * config/i386/cygming.h: Remove function declarations.
9356 (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
9357 (ASM_OUTPUT_LABELREF): Remove.
9358 (COMMON_ASM_OP): Remove.
9359 (ASM_OUTPUT_COMMON): Remove.
9360 (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
9361 (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
9362 (ASM_DECLARE_FUNCTION_NAME): Likewise.
9363 * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
9364 Rename from TARGET_ENCODE_SECTION_INFO.
9365 * config/i386/netware.h: Likewise.
9366 * config/i386/i386-protos.h: Update.
9367 * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
9368 of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
9369 (legitimate_constant_p): Reject dllimports.
9370 (dllimport_map, get_dllimport_decl): New.
9371 (legitimize_dllimport_symbol): New.
9372 (legitimize_address, ix86_expand_move): Use it.
9373 (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
9374 * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
9375 (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
9376 (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
9377 * config/i386/predicates.md (constant_call_address_operand): Only
9378 accept symbols; reject dllimport_p symbols.
9379 * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
9380 i386_pe_maybe_record_exported_symbol.
9381 * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
9382 (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
9383 (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
9384 trust the setting of DECL_DLLIMPORT_P.
9385 (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
9386 (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
9387 (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
9388 tidy the argument scanning loop.
9389 (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
9390 SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
9391 (i386_pe_strip_name_encoding): Remove.
9392 (i386_pe_binds_local_p): New.
9393 (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
9394 (i386_pe_output_labelref): Remove.
9395 (i386_pe_asm_output_aligned_decl_common): New.
9396 (i386_pe_maybe_record_exported_symbol): Rename from
9397 i386_pe_record_exported_symbol; check for dllexported symbols.
9399 2007-03-29 Zack Weinberg <zack@mrtock.ucsd.edu>
9401 * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
9402 add comment explaining why vsnprintf cannot be used.
9404 2007-03-29 Douglas Gregor <doug.gregor@gmail.com>
9406 PR tree-optimization/30666
9407 * tree.c (build_complex_type): When creating type names for DWARF2
9408 debug info, create TYPE_DECLs for TYPE_NAME instead of
9410 (build_common_tree_nodes_2): Use build_complex_type when building
9411 predefined complex types, to preserve canonical types.
9413 2007-03-29 Steven Bosscher <steven@gcc.gnu.org>
9415 * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
9416 (noce_get_alt_condition): Look at it to determine whether to
9417 reverse the condition or not.
9418 (noce_get_condition): Substitute the truth for lies.
9419 (noce_find_if_block): Set the then_else_reversed field.
9421 2007-03-29 Lars Poeschel <larsi@wh2.tu-dresden.de>
9423 * config/fr30/fr30.md (movdi): Do not accept immediates as the
9424 destination of this insn.
9425 * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
9426 than calling gen_rtx_SET directly. Use r0 to hold the value of
9427 'address + 4' rather than a stack based temporary which can be
9430 2007-03-29 Andreas Krebbel <krebbel1@de.ibm.com>
9432 * config/s390/s390.c (s390_secondary_input_reload_class,
9433 s390_secondary_output_reload_class): Functions removed.
9434 (s390_secondary_reload): New function.
9435 (TARGET_SECONDARY_RELOAD): Target macro defined.
9436 * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
9437 SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
9438 * config/s390/s390.md ("reload_outti", "reload_outdi",
9439 "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
9440 "reload_out<mode>"): Expanders removed.
9441 ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
9442 "reload<mode>_nonoffmem_out"): Expanders added.
9444 2007-03-29 Andreas Krebbel <krebbel1@de.ibm.com>
9446 * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
9447 action if SRC->DEST replacement failed anyway.
9449 2007-03-28 Mike Stump <mrs@apple.com>
9451 * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
9452 * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
9453 * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
9455 2007-03-28 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
9457 * config.gcc: Accept barcelona as a variant of amdfam10.
9458 * config/i386/i386.c (override_options): Likewise.
9459 * doc/invoke.texi: Likewise.
9461 2007-03-28 Eric Botcazou <ebotcazou@adacore.com>
9463 * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
9464 offsets for BIT_FIELD_REF and COMPONENT_REF.
9466 2007-03-28 Richard Guenther <rguenther@suse.de>
9468 * tree.c (is_global_var): Move ...
9469 * tree-flow-inline.h (is_global_var): ... here.
9470 * tree.h (is_global_var): Remove declaration.
9472 2007-03-28 Uros Bizjak <ubizjak@gmail.com>
9474 * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
9476 (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
9477 * config/i386/i386.c (ix86_tune_features): Initialize new
9479 * config/i386/predicates.md (promotable_binary_operator): Use
9480 TARGET_TUNE_PROMOTE_HIMODE_IMUL.
9482 2007-03-28 Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
9485 * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
9487 2007-03-28 Lars Poeschel <larsi@wh2.tu-dresden.de>
9489 * config/fr30/fr30.md (movsi_internal): Change destination
9490 constraint from m to V and add m to the end.
9492 2007-03-28 Christian Bruel <christian.bruel@st.com>
9494 * config/sh/sh.md (movsi_i): Fix type attribute.
9496 2007-03-28 Christian Bruel <christian.bruel@st.com>
9498 * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
9499 (movsf_ie): Likewise.
9501 2007-03-28 Christian Bruel <christian.bruel@st.com>
9503 * config.gcc: Add sh4-300 to multilib.
9504 * config/sh/t-mlib-sh4-300: New file.
9506 2007-03-28 Andreas Krebbel <krebbel1@de.ibm.com>
9508 * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
9509 ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
9511 ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
9512 fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
9513 ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
9514 "fixuns_trunctddi2"): Whitespace fix.
9516 2007-03-28 Kaz Kojima <kkojima@gcc.gnu.org>
9518 * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
9519 the definition of struct sh_args.
9520 (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
9521 CALL_COOKIE_INT_REG_GET): Likewise.
9523 2007-03-28 Steven Bosscher <steven@gcc.gnu.org>
9525 * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
9526 transformations are applied successfully.
9528 2007-03-27 Douglas Gregor <doug.gregor@gmail.com>
9530 * tree.c (tree_contains_struct): Permit 512 tree codes.
9531 * tree.h (tree_contains_struct): Ditto.
9532 (MAX_TREE_CODES): Ditto.
9533 (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
9534 SPARE member to store remaining padding bits.
9536 2007-03-27 Anatoly Sokolov <aesok@post.ru>
9538 * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
9541 2007-03-27 Janis Johnson <janis187@us.ibm.com>
9543 * configure.ac: Fix assembler test for powerpc*-linux decimal float.
9544 * configure: Regenerate.
9546 * configure: Regenerate using the correct version of autoconf.
9548 2007-03-27 Anatoly Sokolov <aesok@post.ru>
9550 * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
9552 * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
9553 regs to "__SP_L__" and "__SP_H__".
9555 2007-03-27 Richard Guenther <rguenther@suse.de>
9557 * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
9558 computations with it with a HOST_WIDE_INT variable.
9560 2007-03-26 Mike Stump <mrs@apple.com>
9562 * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
9563 objective-c-header, objective-c++-header and objc++-cpp-output
9565 * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
9567 2007-03-26 Richard Henderson <rth@redhat.com>
9570 * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
9571 IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
9572 IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
9573 IX86_BUILTIN_PSRLQ128): New.
9574 (ix86_init_mmx_sse_builtins): Add them.
9575 (ix86_expand_builtin): Expand them.
9576 * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
9577 operand 2 be TImode.
9578 * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
9579 _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
9580 _mm_srli_epi64): Mark __B const.
9581 (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
9582 (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
9583 _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
9584 new two-vector shift builtins.
9586 2007-03-26 Ian Lance Taylor <iant@google.com>
9588 PR tree-optimization/31345
9589 * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
9590 [+INF, +INF(OVF)] into VARYING.
9592 2007-03-26 Zack Weinberg <zackw@panix.com>
9594 * gengtype-parse.c: New file.
9595 * gengtype-yacc.y: Delete.
9596 * gengtype-lex.l: Don't include gengtype-yacc.h.
9597 Define YY_DECL and yyterminate appropriately for recursive
9598 descent parser. yylval is now a string out-parameter to yylex.
9599 (HWS, EOID): New shorthand.
9600 (IWORD): Add a couple more types.
9601 (yylex): Add a setup stanza. Remove the complex rules for
9602 detecting GTY'ed types and typedefs; replace with simple
9603 keyword detectors. Adjust everything for the changed
9604 definition of yylval. Ignore all pp-directives, not just #define.
9606 (parse_file): Rename yybegin; do not call yyparse.
9608 * gengtype.c (xasprintf): Export again.
9609 (this_file): New. Use everywhere __FILE__ was being used.
9610 (get_lang_bitmap): Special case types defined in gengtype.c.
9611 (do_typedef, new_structure): Suppress definition of certain types.
9612 (new_structure): Improve diagnostics of duplicate definitions.
9613 Make sure location_s is associated with input.h.
9614 (nreverse_pairs, define_location_structures): New functions.
9615 (main): Improve tagging of kludge types. Remove old kludges
9616 for input.h types; use define_location_structures.
9617 * gengtype.h: Update prototypes. Define token codes here.
9618 * Makefile.in: Remove all references to gengtype-yacc.
9619 Add rules for gengtype-parse.o. Adjust rules for gengtype-lex.o
9621 * bitmap.h (struct bitmap_head_def): Coalesce definitions,
9622 add GTY((skip)) to the field that's only conditionally there.
9623 * doc/install.texi: Document that Bison is no longer required
9624 unless building treelang.
9626 * gengtype.c: Don't include gtyp-gen.h.
9627 (srcdir): Declare here.
9628 (base_files, lang_dir_names): Allocate dynamically.
9629 (gt_files, num_gt_files, num_lang_dirs): New globals.
9630 (measure_input_list, read_input_line, read_input_list)
9631 (set_lang_bitmap): New functions.
9632 (get_base_file_bitmap): Rename get_lang_bitmap and drastically
9633 simplify, relying on read_input_list to set up the bitmaps.
9634 (main): Arguments are no longer unused. Check for correct number
9635 of command line arguments, set srcdir and srcdir_len, then call
9636 read_input_list, before doing anything else. No need to worry
9637 about duplicates in main loop.
9638 * configure.ac: Simplify the calculation of all_gtfiles.
9639 Put language tags in there. Don't set or substitute
9640 all_gtfiles_files_langs or all_gtfiles_files_frags.
9641 * Makefile.in: Revamp the way gengtype is invoked, now that it
9642 takes a file on its command line with a much simpler format.
9643 Remove or replace with gtyp-input.list all references to gtyp-gen.h.
9644 (GTFILES): Remove duplicates and C source files.
9645 * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
9646 * objcp/config-lang.in: Add c-pragma.h to gtfiles.
9647 * configure: Regenerate.
9649 * gengtype.h: Remove all type definitions to gengtype.c; leave
9650 only definitions of options_p, type_p, and pair_p as opaque
9651 pointers. Update prototypes.
9652 * gengtype.c: Many type definitions moved here from gengtype.h.
9653 Consolidate type definitions at the top of the file.
9654 (xvasprintf): Delete.
9655 (xasprintf): Make static.
9656 (create_nested_pointer_option): Add 'next' parameter.
9657 (create_field_all, create_field_at): New functions.
9658 (create_field): Now a thin wrapper around create_field_all.
9659 (create_optional_field): Rename create_optional_field_ and add
9660 line argument. Original name is now a macro which supplies
9662 (oprintf): Use vsnprintf directly.
9663 (close_output_files): Use fatal rather than perror/exit.
9664 (note_def_vec, note_def_vec_alloc): Use create_field_at.
9665 (main): Set progname. Don't use exit.
9666 * gengtype-yacc.y (struct_fields): Use create_field_at.
9667 (option, optionseqopt): Delete.
9668 (optionseq): Consolidate productions from option here so we
9669 can use the first argument to create_option.
9671 * gengtype-lex.l: Distinguish unions from structures in the
9672 token type. Don't call find_structure; return the tag as a string.
9673 * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
9674 ENT_UNION. Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
9675 string. Reorganize typedef_struct production accordingly.
9676 Use create_nested_ptr_option.
9677 * gengtype.c (create_nested_ptr_option): New function.
9678 * gengtype.h: Declare it.
9680 * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
9681 (string_type): Don't declare.
9682 (do_scalar_typedef): Declare.
9683 (create_scalar_type): Update prototype.
9684 * gengtype.c (string_type): Make static.
9685 (scalar_nonchar, scalar_char): New.
9686 (do_scalar_typedef): Export. Always use scalar_nonchar for the type.
9687 (resolve_typedef): Use scalar_nonchar for error recovery.
9688 (create_scalar_type): Remove name_len field. Return scalar_char
9689 or scalar_nonchar as appropriate.
9690 (adjust_field_type): Look at scalar_is_char boolean to decide whether
9692 (throughout): Use scalar_nonchar instead of calling
9693 create_scalar_type, whenever possible.
9694 (main): Initialize scalar_char and scalar_nonchar before calling
9696 * gengtype-lex.l: Adjust for removal of second argument to
9697 create_scalar_type. Use yylval.s instead of yylval.t when
9699 * gengtype-yacc.y: Type of SCALAR is string. Call
9700 create_scalar_type from type:SCALAR rule. Adjust for removal of
9701 second argument to create_scalar_type.
9703 * vec.h: Remove all #if IN_GENGTYPE blocks.
9704 Add comment saying that changes may require adjustments to gengtype.
9705 * gengtype.c: Don't include coretypes.h or tm.h.
9706 Add comment to inclusion of errors.h.
9707 (note_def_vec, note_def_vec_alloc): New functions.
9708 * gengtype.h: Declare new functions.
9709 * gengtype-lex.l: Don't include coretypes.h.
9710 (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
9712 (update_lineno): Remove unnecessary prototype.
9713 (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
9714 (VEC rule): Just return VEC_TOKEN.
9715 * gengtype-yacc.y (VEC_TOKEN): New token type.
9716 (type): Add a production for VEC(a,b).
9717 * Makefile.in: Update dependencies.
9719 * gengtype-lex.l: Remove rules for parsing pointer-to-function
9720 typedefs that use the old PARAMS macro.
9722 * gengtype-lex.l: Remove all rules and states relating to yacc
9724 * gengtype-yacc.y: Similarly.
9725 * gengtype.c (note_yacc_type): Delete function.
9726 * gengtype.h: Update prototypes.
9728 2007-03-26 Joseph Myers <joseph@codesourcery.com>
9730 * tree-pretty-print.c (dump_generic_node): Report precision of
9731 unnamed integer types.
9733 2007-03-26 Steven Bosscher <steven@gcc.gnu.org>
9735 * ifcvt.c (noce_try_store_flag_constants): Don't check
9736 no_new_pseudos here.
9737 (noce_try_store_flag_constants): Don't check no_new_pseudos.
9738 (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
9739 noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
9740 noce_try_sign_mask): Likewise.
9741 (if_convert): Check no_new_pseudos here.
9743 (cond_exec_process_if_block, noce_process_if_block, find_if_block):
9745 (struct noce_if_info): Add then_bb, else_bb, join_bb members.
9746 (noce_get_condition): Handle new then_else_reversed argument.
9747 (noce_init_if_info): Remove, fold into noce_find_if_block.
9748 (noce_process_if_block): Take a struct noce_if_info as the
9749 argument. Don't set up one based on ce_if_info. Update pointer
9750 references accordingly.
9751 (cond_move_process_if_block): Likewise.
9752 (process_if_block): Removed.
9753 (find_if_block): Removed. Move functionality two new functions,
9754 noce_find_if_block and cond_exec_find_if_block.
9755 (noce_find_if_block): New function. Be aware of IF-THEN-JOIN
9756 blocks and the symmetric IF-ELSE-JOIN case.
9757 (cond_exec_find_if_block): Also new function mostly based on old
9758 find_if_block and process_if_block.
9759 (find_if_header): Replace find_if_block call with separately
9760 guarded calls to noce_find_if_block and cond_exec_find_if_block.
9761 (find_cond_trap): Update noce_get_condition call.
9762 (dead_or_predicable): Likewise.
9764 2007-03-26 Jakub Jelinek <jakub@redhat.com>
9766 * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
9768 (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
9769 IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
9770 IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
9771 (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
9772 v4si_ftype_v4si_v2di. Remove __builtin_ia32_psllw128,
9773 __builtin_ia32_pslld128, __builtin_ia32_psllq128,
9774 __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
9775 __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
9776 __builtin_ia32_psrad128 builtins.
9778 2007-03-26 Uros Bizjak <ubizjak@gmail.com>
9780 * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
9781 * config/i386/constraints.md
9782 (define_constraint "I"): Use IN_RANGE macro.
9783 (define_constraint "J"): Ditto.
9784 (define_constraint "K"): Ditto.
9785 (define_constraint "M"): Ditto.
9786 (define_constraint "N"): Ditto.
9787 (define_constraint "O"): Ditto.
9788 * config/i386/predicates.md
9789 (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
9790 (define_predicate "const_0_to_3_operand"): Ditto.
9791 (define_predicate "const_0_to_7_operand"): Ditto.
9792 (define_predicate "const_0_to_15_operand"): Ditto.
9793 (define_predicate "const_0_to_63_operand"): Ditto.
9794 (define_predicate "const_0_to_255_operand"): Ditto.
9795 (define_predicate "const_1_to_31_operand"): Ditto.
9796 (define_predicate "const_2_to_3_operand"): Ditto.
9797 (define_predicate "const_4_to_7_operand"): Ditto.
9799 2007-03-25 David Edelsohn <edelsohn@gnu.org>
9801 * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
9802 in SImode for save_world.
9803 * config/rs6000/altivec.md (save_world, restore_world): Convert to
9806 2007-03-25 Dorit Nuzman <dorit@il.ibm.com>
9808 PR tree-optimization/30784
9809 * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
9812 2007-03-25 Revital Eres <eres@il.ibm.com>
9814 * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
9815 Fold movement_possibility function into it.
9817 2007-03-25 David Edelsohn <edelsohn@gnu.org>
9819 * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
9820 (load_macho_picbase_{si,di}): Convert to LR hard reg.
9821 (call_indirect_nonlocal_darwin64): Same.
9822 (call_nonlocal_darwin64): Same.
9823 (call_value_indirect_nonlocal_darwin64): Same.
9824 (call_value_nonlocal_darwin64): Same.
9825 (sibcall_nonlocal_darwin64): Same.
9826 (sibcall_value_nonlocal_darwin64): Same.
9827 (sibcall_symbolic_64): Same.
9828 (sibcall_value_symbolic_64): Same.
9829 * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
9831 (rs6000_emit_load_toc_table): Same.
9832 * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
9833 * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
9839 (load_toc_v4_pic_si): Same
9840 (load_toc_v4_PIC_1): Same.
9841 (load_toc_v4_PIC_1b): Same.
9842 (call_indirect_aix{32,64}): Same.
9843 (call_value_indirect_aix{32,64}): Same.
9846 (call_local{32,64}): Same.
9847 (call_value_local{32,64}): Same.
9848 (call_indirect_nonlocal_aix{32,64}): Same.
9849 (call_nonlocal_aix{32,64}): Same.
9850 (call_value_indirect_nonlocal_aix{32,64}): Same.
9851 (call_value_nonlocal_aix{32,64}): Same.
9852 (call_indirect_nonlocal_sysv<mode>): Same.
9853 (call_nonlocal_sysv<mode>): Same.
9854 (call_value_indirect_nonlocal_sysv<mode>): Same.
9855 (call_value_nonlocal_sysv<mode>): Same.
9857 (sibcall_local{32,64}): Same.
9858 (sibcall_value_local{32,64}): Same.
9859 (sibcall_nonlocal_aix{32,64}): Same.
9860 (sibcall_value_nonlocal_aix{32,64}): Same.
9861 (sibcall_nonlocal_sysv<mode>): Same.
9862 (sibcall_value): Same.
9863 (sibcall_value_nonlocal_sysv<mode>): Same.
9865 2007-03-24 Paul Brook <paul@codesourcery.com>
9867 * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
9868 * config/arm/linux-eabi.h: Remove legacy syscall hack.
9870 2007-03-24 Richard Henderson <rth@redhat.com>
9872 * config/ia64/constraints.md: New file.
9873 * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
9874 satisfies_constraint_?.
9875 * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
9876 ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
9877 ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
9878 ia64_output_mi_thunk): Likewise.
9879 (ia64_const_ok_for_letter_p): Remove.
9880 (ia64_const_double_ok_for_letter_p): Remove.
9881 (ia64_extra_constraint): Remove.
9882 * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
9883 (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
9884 CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
9885 CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
9886 CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
9887 EXTRA_MEMORY_CONSTRAINT): Remove.
9888 * config/ia64/ia64.md: Include constriants.md. Replace
9889 CONST_OK_FOR_? with satisfies_constraint_?.
9891 2007-03-23 Michael Meissner <michael.meissner@amd.com>
9892 H.J. Lu <hongjiu.lu@intel.com>
9894 * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
9896 (name macros): Use DPD_BID_NAME to convert names properly.
9898 * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
9899 decimal floating point format.
9900 (init_floating_libfuncs): Change decimal functions so that they
9901 have a "bid_" prefix if the decimal system uses the BID format,
9902 and "dpd_" prefix if the decimal system uses the DPD format.
9903 (init_interclass_conv_libfuncs): Ditto.
9904 (init_intraclass_conv_libfuncs): Ditto.
9906 * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
9907 using the BID format.
9909 * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
9910 whether we are using the BID decimal format.
9911 * configure: Regenerate.
9913 * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
9914 the compiler has decimal floating point enabled. Define
9915 __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
9918 * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
9919 using the BID format.
9921 * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
9922 whether we are using the BID decimal format.
9923 * configure: Regenerate.
9925 * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
9926 the compiler has decimal floating point enabled. Define
9927 __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
9930 * doc/install.texi (--enable-decimal-float): Document BID and DPD
9931 options, and that it is enabled for i386/x86_64 systems.
9933 * Makefile.in (enable_decimal_float): New.
9935 (DECNUMINC): Add -I$(DECNUMFMT).
9936 (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
9937 to $(DECNUMFMT) from $(DECNUM).
9939 * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
9940 Substitute enable_decimal_float.
9941 * configure: Regenerated.
9944 * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
9947 * configure.ac: Enable decimal float for x86_64-*-linux*.
9948 * configure: Regenerated.
9951 * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
9952 decimal128ClearSign to flip and clear the sign bit in decimal128.
9953 (decimal_real_maxval): Set decimal128SetSign to set the sign
9956 2007-03-23 Ian Lance Taylor <iant@google.com>
9958 * fold-const.c (fold_binary): Correct warning for X - c >= X.
9960 2007-03-23 Ian Lance Taylor <iant@google.com>
9962 * tree-dump.c (dump_files): Correct comment.
9964 2007-03-23 Ian Lance Taylor <iant@google.com>
9966 * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
9968 2007-03-23 Steven Bosscher <steven@gcc.gnu.org>
9970 * tracer.c (tracer): Don't take FLAGS argument. Assert we are
9971 in cfglayout mode. Don't go into and out of cfglayout mode.
9972 Link the blocks in the order of the constructed traces.
9973 (rest_of_handle_tracer): Adjust call to tracer.
9974 * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
9975 Don't go into cfglayout mode.
9976 (rtl_loop_done): Don't go out of cfglayout mode.
9977 * cfglayout.c (relink_block_chain): New function, split out from...
9978 (fixup_reorder_chain): ...here. Remove redundant checking.
9979 (cfg_layout_finalize): Don't clear the header, footer, and aux
9980 fields here, move the code to do so to relink_block_chain. Likewise
9981 for free_original_copy_tables.
9982 * rtl.h (tracer): Update prototype.
9983 * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
9984 Assert we are in cfglayout mode. Don't go into and out of cfglayout
9985 mode. Use relink_block_chain to serialize the CFG according to the
9986 new basic block order. Move targetm.cannot_modify_jumps_p check from
9988 (gate_handle_reorder_blocks): ...to here.
9989 (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
9991 (gate_duplicate_computed_gotos): ...to here.
9992 (rest_of_handle_reorder_blocks): Don't see if anything has changed,
9993 something always changes when going into and out of cfglayout mode.
9994 Perform an expensive cfg cleanup while going into cfglayout mode.
9995 Always update liveness information on HAVE_conditional_execution
9996 targets. Reserialize the basic blocks and go out of cfglayout mode.
9997 * reg-stack.c: Include cfglayout.h.
9998 (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
9999 the call to reorder_basic_blocks.
10000 * basic-block.h (reorder_basic_blocks): Update prototype.
10001 (relink_block_chain): New prototype.
10002 * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
10004 2007-03-23 Joseph Myers <joseph@codesourcery.com>
10006 * config/mips/mips.md (type, hazard, *movdi_32bit,
10007 *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
10008 *movhi_internal, *movqi_internal, *movsf_hardfloat,
10009 *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
10010 movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
10011 mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
10013 (movcc): Change first xfer to multi.
10014 * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
10015 config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
10016 config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
10017 config/mips/generic.md: Change reservations using "xfer" to use
10019 * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
10020 using match_operand.
10021 (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
10022 * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
10024 (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
10026 2007-03-22 Richard Henderson <rth@redhat.com>
10028 * config/i386/i386.c: Remove unnecessary function declarations.
10029 Move targetm definition, and all related macros, to the end of
10030 the file. Resort some functions to put definitions before uses.
10031 (ix86_attribute_table): Make static. Move to end of file.
10032 (ix86_gimplify_va_arg): Make static.
10034 2007-03-22 Richard Henderson <rth@redhat.com>
10036 * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
10037 don't increase local_regparm with force_align_arg_pointer check.
10038 (ix86_function_sseregparm): Assert 32-bit.
10039 (type_has_variadic_args_p): New.
10040 (ix86_return_pops_args): Early exit for 64-bit. Reindent; use
10041 type_has_variadic_args_p.
10042 (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
10043 (init_cumulative_args): Remove TARGET_DEBUG_ARG. Remove zero_cum;
10044 use memset instead. Do maybe_vaarg check first; skip attribute
10045 tests if true; skip attribute tests for 64-bit.
10046 (construct_container): Remove TARGET_DEBUG_ARG.
10047 (function_arg_advance_32, function_arg_advance_64): Split out ...
10048 (function_arg_advance): ... from here.
10049 (function_arg_32, function_arg_64): Split out ...
10050 (function_arg): ... from here.
10051 (ix86_pass_by_reference): Tidy.
10052 (ix86_function_value_regno_p): Rearrange w/ switch on regno.
10053 (function_value_32): New, from parts of ix86_function_value
10054 and ix86_value_regno.
10055 (function_value_64): New, from parts of ix86_function_value
10056 and ix86_libcall_value.
10057 (ix86_function_value_1): New.
10058 (ix86_function_value, ix86_libcall_value): Use it.
10059 (return_in_memory_32, return_in_memory_64): Split out ...
10060 (ix86_return_in_memory): ... from here.
10061 (ix86_struct_value_rtx): Skip for 64-bit.
10062 (ix86_libcall_value, ix86_value_regno): Remove.
10063 (setup_incoming_varargs_64): Split out ...
10064 (ix86_setup_incoming_varargs): ... from here.
10065 (ix86_va_start): Remove TARGET_DEBUG_ARG.
10066 (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
10067 * config/i386/i386-protos.h (ix86_function_value): Remove.
10068 * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
10070 2007-03-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
10073 * c-lex.c (interpret_float): On overflow, emit pedantic warning if
10074 infinities not supported, otherwise emit warning if -Woverflow. On
10075 underflow, emit warning if -Woverflow.
10076 * real.c (real_from_string): Return -1 if underflow, +1 if overflow
10078 * real.h (real_from_string): Update declaration
10080 2007-03-22 Kai Tietz <kai.tietz@onevision.com>
10081 Richard Henderson <rth@redhat.com>
10083 * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
10084 * calls.c (compute_argument_block_size, expand_call,
10085 emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
10086 * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
10087 * function.c (STACK_DYNAMIC_OFFSET): Likewise.
10088 * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
10089 * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
10090 config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
10091 config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
10092 config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
10095 2007-03-22 Joseph Myers <joseph@codesourcery.com>
10097 * c-incpath.c (add_sysroot_to_chain): New.
10098 (merge_include_chains): Add sysroot argument. Call
10099 add_sysroot_to_chain if sysrooted.
10100 (register_include_chains): Update call to merge_include_chains.
10101 * doc/cppopts.texi: Document use of '=' in include directory
10104 2007-03-22 Uros Bizjak <ubizjak@gmail.com>
10106 * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
10107 Macroize expander using SSEMODEF mode macro. Use SSE_FLOAT_MODE_P.
10108 (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
10109 insn pattern using X87MODEF12 mode macro.
10111 2007-03-21 Seongbae Park <seongbae.park@gmail.com>
10113 * regmove.c (regmove_optimize): Use reg_mentioned_p
10114 instead of reg_overlap_mentioned_p for DST.
10116 2007-03-21 Mike Stump <mrs@apple.com>
10118 * c.opt: Fixup for Objective-C/C++.
10120 2007-03-21 Steve Ellcey <sje@cup.hp.com>
10122 * explow.c (convert_memory_address): Fold memory reference when
10123 POINTERS_EXTEND_UNSIGNED < 0
10125 2007-03-21 Richard Henderson <rth@redhat.com>
10128 * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
10129 * config/i386/mmintrin.h (__m64): Likewise.
10130 * config/i386/xmmintrin.h (__m128): Likewise.
10132 2007-03-21 Richard Sandiford <richard@codesourcery.com>
10134 * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
10135 (VXWORKS_OS_CPP_BUILTINS): Define.
10136 * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
10137 (TARGET_OS_CPP_BUILTINS): ...here. Use VXWORKS_OS_CPP_BUILTINS.
10139 2007-03-21 Richard Sandiford <richard@codesourcery.com>
10141 * rtl.h (constant_pool_reference_p): Delete.
10142 (find_constant_src): Declare.
10143 * rtlanal.c (find_constant_src): New function.
10144 * simplify-rtx.c (constant_pool_reference_p): Delete.
10145 * config/i386/i386.md: Use find_constant_src instead of
10146 constant_pool_reference_p/avoid_constant_pool_reference pairs.
10148 2007-03-21 Richard Sandiford <richard@codesourcery.com>
10150 * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
10151 * c-cppbuiltin.c (c_cpp_builtins): Define them.
10153 2007-03-20 Mark Mitchell <mark@codesourcery.com>
10155 * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
10156 * config/arm/arm.c (arm_elf_asm_cdtor): New function.
10157 (arm_elf_asm_constructor): Use it.
10158 (arm_elf_asm_destructor): New function.
10160 2007-03-20 Bernd Schmidt <bernd.schmidt@analog.com>
10162 * jump.c (mark_jump_label): Treat SEQUENCE specially.
10164 2007-03-20 Nathan Sidwell <nathan@codesourcery.com>
10166 * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
10168 2007-03-19 Andrew Haley <aph@redhat.com>
10170 PR tree-optimization/31264
10171 * tree-vrp.c (register_edge_assert_for_1): Don't look though
10172 VIEW_CONVERT_EXPRs.
10174 2007-03-19 Paolo Bonzini <bonzini@gnu.org>
10176 PR rtl-optimization/30907
10177 * fwprop.c (forward_propagate_into): Never propagate inside a loop.
10178 (fwprop_init): Always call loop_optimizer_initialize.
10179 (fwprop_done): Always call loop_optimizer_finalize.
10180 (fwprop): We always have loop info now.
10181 (gate_fwprop_addr): Remove.
10182 (pass_fwprop_addr): Use gate_fwprop as gate.
10184 PR rtl-optimization/30841
10185 * df-problems.c (df_ru_local_compute, df_rd_local_compute,
10186 df_chain_alloc): Call df_reorganize_refs unconditionally.
10187 * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
10188 refs_organized to refs_organized_size.
10189 (df_ref_create_structure): Use refs_organized_size instead of
10190 bitmap_size if refs had been organized, and keep refs_organized_size
10192 * df.h (struct df_ref_info): Change refs_organized to
10193 refs_organized_size.
10194 (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
10197 2007-03-19 Mark Mitchell <mark@codesourcery.com>
10199 * except.c (output_function_exception_table): Do not reference the
10200 EH personality routine for functions that do not require an
10203 2007-03-20 Jakub Jelinek <jakub@redhat.com>
10206 * c-typeck.c (convert_for_assignment): Call comptypes for
10207 RECORD_TYPE or UNION_TYPE.
10209 PR inline-asm/30505
10210 * reload1.c (reload): Do invalid ASM checking after
10211 cleanup_subreg_operands.
10213 2007-03-19 Jeff Law <law@redhat.com>
10215 * tree-cfg.c (find_taken_edge): Tighten conditions for
10216 optimizing computed gotos.
10218 2007-03-19 Michael Matz <matz@suse.de>
10220 * builtins.c (expand_builtin_sync_operation,
10221 expand_builtin_compare_and_swap,
10222 expand_builtin_lock_test_and_set): Care for extending CONST_INTs
10225 * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
10226 sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
10229 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
10231 * doc/tm.texi: Add brackets around the return type of
10232 TARGET_SECONDARY_RELOAD.
10234 2007-03-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
10235 Richard Guenther <rguenther@suse.de>
10237 PR tree-optimization/31254
10238 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
10239 Use handled_component_p () where appropriate. Continue
10240 propagating into the rhs if we propagated into an INDIRECT_REF
10243 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
10245 * config/s390/s390.md (op_type attribute): RRR instruction type added.
10246 (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
10247 (xde, xdee): Mode attributes adjusted to support DFP modes.
10248 (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
10249 ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
10250 DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
10251 "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
10252 "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
10253 "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
10254 "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
10256 ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
10257 "movsf"): Insn definitions removed.
10258 ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
10259 "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
10260 "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
10262 ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
10263 "reload_in<mode>", "reload_out<mode>"): Expander added.
10264 ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
10267 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
10269 * config/s390/s390.md: Only non-functional changes. Renamed
10270 FPR mode macro to BFP all over the file.
10272 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
10274 * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
10275 (op_type attribute): RRF instruction type added.
10276 (fT0): New mode attribute.
10277 ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
10278 "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
10279 * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
10280 instruction no secondary memory is needed when moving DFmode values
10281 between GPRs and FPRs.
10283 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
10285 * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
10286 inverted and documentation adjusted.
10287 ("mhard-dfp", "msoft-dfp"): New options.
10288 * config/s390/s390.c (s390_handle_arch_option): New architecture
10290 (override_options): Sanity checks for the new options added.
10291 * config.gcc: New architecture switch: z9-ec.
10292 * config/s390/s390.h (processor_flags): PF_DFP added.
10293 (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
10294 (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
10295 when the bit is NOT set so remove it from the defaults.
10297 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
10299 * genemit.c (main): Print include statement for dfp.h.
10300 * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
10303 2007-03-19 Hans-Peter Nilsson <hp@axis.com>
10305 * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
10307 2007-03-19 Kaz Kojima <kkojima@gcc.gnu.org>
10310 * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
10311 instead of PATTERN.
10313 2007-03-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
10315 * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
10316 attr_length_call, output_call, output_indirect_call): Cleanup
10317 formatting of targetm calls.
10319 2007-03-19 Hans-Peter Nilsson <hp@axis.com>
10321 * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
10323 2007-03-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
10325 * pa.md: Add fpstore_load and store_fpload instruction types. Provide
10326 reservation, bypass and anti-bypass descriptions for these
10327 instructions. Update move patterns.
10328 * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
10331 2007-03-18 Dorit Nuzman <dorit@il.ibm.com>
10333 * tree-vect-transform.c (get_initial_def_for_induction): Replace
10334 GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
10335 (get_initial_def_for_reduction): Likewise.
10337 2007-03-16 Daniel Berlin <dberlin@dberlin.org>
10339 Fix PR tree-optimization/29922
10340 * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
10341 (get_representative): Removed.
10342 (value_dies_in_block_x): Update for rvuse removal.
10343 (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
10344 (compute_antic_aux): Handle when PHI nodes appear in
10345 non-single-successors.
10346 (dump_bitmap_of_names): Removed.
10347 (compute_antic_safe): Renamed and removed rvuse calculation.
10348 Calculate only antic safe.
10349 (insert_into_preds_of_block): Remove assert.
10350 (execute_pre): Update for renamed functions.
10351 (defer_or_phi_translate_block): New function.
10353 2007-03-17 Kazu Hirata <kazu@codesourcery.com>
10355 * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
10356 config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
10358 * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
10359 Follow spelling conventions.
10361 * tree-data-ref.h: Remove the prototype for analyze_array.
10363 2007-03-17 Dorit Nuzman <dorit@il.ibm.com>
10365 PR tree-optimization/31041
10366 * tree-vect-transform.c (get_initial_def_for_induction): Call
10367 force_gimple_operand.
10369 2007-03-17 Olga Golovanevsky <olga@il.ibm.com>
10371 * ipa-type-escape.c (look_for_casts) : Revert code to use
10372 handled_component_p due to ada test a-numaux.adb.
10374 2007-03-17 Kazu Hirata <kazu@codesourcery.com>
10376 * final.c (final_scan_insn): Alter the condition of a
10377 conditional trap if we have nonstandard CC.
10379 2007-03-16 Alexandre Oliva <aoliva@redhat.com>
10381 * configure.ac: Remove excess quoting from asm line 0 test.
10382 * configure: Rebuilt.
10384 2007-03-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
10386 * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
10387 * c-common.c (convert_and_check): Move warning logic to...
10388 (warnings_for_convert_and_check): ...here. Define.
10389 * c-common.h (warnings_for_convert_and_check): Declare.
10391 2007-03-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
10393 * pa.c (attr_length_call): Partially revert change of 2007-03-09.
10394 (output_call): Likewise.
10396 2007-03-16 Richard Sandiford <richard@codesourcery.com>
10398 * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
10400 2007-03-16 Richard Sandiford <richard@codesourcery.com>
10402 * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
10404 2007-03-16 Uros Bizjak <ubizjak@gmail.com>
10406 * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
10407 opteron, athlon-64 and athlon-fx processor_alias_table entries.
10409 2007-03-16 Sebastian Pop <sebastian.pop@inria.fr>
10411 PR tree-optimization/31183
10412 * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
10413 Use double_int instead of unsigned int for representing access_strides.
10414 * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
10416 2007-03-16 Richard Guenther <rguenther@suse.de>
10418 PR tree-optimization/31146
10419 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
10420 to allow recursion of forward_propagate_addr_expr.
10421 (forward_propagate_addr_into_variable_array_index): Likewise.
10422 (forward_propagate_addr_expr): Likewise.
10423 (tree_ssa_forward_propagate_single_use_vars): Likewise.
10424 (forward_propagate_addr_expr_1): Recurse on simple copies
10425 instead of propagating into them. Do so for useless conversions
10427 (forward_propagate_addr_expr): Clean up unused statements after
10430 2007-03-16 Richard Guenther <rguenther@suse.de>
10432 * builtins.c (expand_builtin_cexpi): Use the right argument
10433 for the expansion via cexp.
10435 2007-03-16 Alexandre Oliva <aoliva@redhat.com>
10437 * configure.ac: Don't require ELF binutils to tolerate # 0 "".
10438 * configure: Rebuilt.
10440 2007-03-16 Alexandre Oliva <aoliva@redhat.com>
10443 * dwarf2out.c (force_type_die): Adjust comment.
10444 (dwarf2out_imported_module_or_decl): Handle base AT_import types.
10446 2007-03-15 DJ Delorie <dj@redhat.com>
10448 * config/frv/predicates.md (minmax_operator): Don't check operands
10451 2007-03-15 Zdenek Dvorak <dvorakz@suse.cz>
10453 * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
10454 Update constant estimates of number of iterations.
10455 (record_nonwrapping_iv): Add "upper" argument. "data_size_bounds_p"
10456 argument renamed to "realistic".
10457 (compute_estimated_nb_iterations): Removed.
10458 (record_niter_bound): New function.
10459 (idx_infer_loop_bounds): For possible but unlikely tail arrays,
10460 call record_nonwrapping_iv with upper = false.
10461 (infer_loop_bounds_from_signedness): Pass upper argument to
10462 record_nonwrapping_iv.
10463 (estimate_numbers_of_iterations_loop): Do not call
10464 compute_estimated_nb_iterations. Record estimate based on profile
10465 information. Initialize the constant estimates of number of
10467 * tree-data-ref.c (estimated_loop_iterations): Return the recorded
10469 * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
10470 number of iterations is too small.
10471 * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
10472 (EST_NOT_AVAILABLE): Removed.
10473 (struct loop): Replace estimated_nb_iterations by any_upper_bound,
10474 nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
10477 2007-03-15 Zdenek Dvorak <dvorakz@suse.cz>
10479 * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
10480 Handle NE_EXPR guards.
10482 2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
10485 * c-opts.c (c_common_post_options): Handle C++ post-processing here.
10486 Set also -pedantic-errors by default for the preprocessor unless
10487 -fpermissive is given.
10489 2007-03-15 Richard Guenther <rguenther@suse.de>
10491 PR middle-end/29719
10492 PR middle-end/31161
10493 * builtins.c (expand_builtin_cexpi): As a fallback if we
10494 don't have builtins for sincos or cexp create a function
10495 declaration for cexp and expand to a call to that.
10496 (expand_builtin_int_roundingfn): Always fall
10497 back to floor/ceil and its variants even if they may be
10500 2007-03-15 Steven Bosscher <steven@gcc.gnu.org>
10502 PR middle-end/31159
10503 * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
10504 jump tables, move the call to delete_dead_jumptables from here...
10505 (cfg_layout_finalize): ...to here. But rebuild jump labels first.
10506 * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
10507 don't allow merging of blocks that try_redirect_by_replacing_jump
10508 also does not handle when not optimizing.
10510 2007-03-15 Uros Bizjak <ubizjak@gmail.com>
10511 Francois-Xavier Coudert <coudert@clipper.ens.fr>
10513 * config/i386/i386.md (x86_sahf_1): Correctly handle
10516 2007-03-15 Uros Bizjak <ubizjak@gmail.com>
10519 * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
10520 x86_64_general_operand as operand[2] predicate. Remove "iF"
10521 from operand constraints and use "e" constraint instead.
10522 (*subti3_1, *subti3_1 splitter): Ditto.
10523 (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
10524 operand[1] predicate.
10526 2007-03-14 Sebastian Pop <sebastian.pop@inria.fr>
10528 * tree-loop-linear.c (gather_interchange_stats): For multidimensional
10529 arrays, multiply the access strides by the size of the sub-array.
10530 * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
10532 2007-03-14 Uros Bizjak <ubizjak@gmail.com>
10534 * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
10535 the configured assembler supports the sahf mnemonic.
10536 * configure: Regenerate.
10537 * config.in: Regenerate.
10539 * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
10540 emit "sahf" or ".byte\t0x9e" as asm template.
10542 2007-03-14 Michael Meissner <michael.meissner@amd.com>
10545 * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
10546 option to replace hard coded TARGET_xxx in md file.
10547 (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
10548 (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
10549 (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
10550 (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
10551 (X86_TUNE_NOT_UNPAIRABLE): Ditto.
10552 (X86_TUNE_NOT_VECTORMODE): Ditto.
10553 (TUNE_SHORTEN_X87_SSE): Use new tuning option.
10554 (TUNE_AVOID_VECTOR_DECODE): Ditto.
10555 (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
10556 (TUNE_SLOW_IMUL_IMM8): Ditto.
10557 (TUNE_MOVE_M1_VIA_OR): Ditto.
10558 (TUNE_NOT_UNPAIRABLE): Ditto.
10559 (TUNE_NOT_VECTORMODE): Ditto.
10561 * config/i386/i386.c (ix86_tune_features): Fill in new tuning
10564 * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
10565 tuning options instead of hard coded TARGET_xxx.
10566 (fix ssemode peephole2's): Ditto.
10567 (imul peephole2's): Ditto.
10569 (movdi_or_rex64): Ditto.
10570 (move peephole2): Ditto.
10571 (not peephole2's): Ditto.
10573 2007-03-14 Dirk Mueller <dmueller@suse.de>
10575 * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
10576 * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
10577 * c-parser.c (c_parser_if_body): Always add an empty statement in case
10579 * c-parser.c (c_parser_do_statement): Warn about empty body in
10580 do/while statement.
10581 * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
10582 * doc/invoke.texi (-Wempty-body): Update documentation.
10584 2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
10587 * c-common.h (warn_for_div_by_zero): Declare.
10588 * c-common.c (warn_for_div_by_zero): Define.
10589 * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
10592 2007-03-14 Richard Sandiford <richard@codesourcery.com>
10594 * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
10595 to PREFIX and STANDARD_PREFIX.
10597 2007-03-14 Richard Sandiford <richard@codesourcery.com>
10598 Phil Edwards <phil@codesourcery.com>
10600 * gthr-vxworks.h: Add an extern "C" wrapper for C++.
10601 (__gthread_once_t): Remove busy field for RTPs.
10602 (__GTHREAD_ONCE_INIT): Update accordingly.
10604 2007-03-14 Richard Sandiford <richard@codesourcery.com>
10606 * doc/invoke.texi: Document VxWorks options.
10608 2007-03-14 Uros Bizjak <ubizjak@gmail.com>
10610 * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
10612 2007-03-13 Seongbae Park <seongbae.park@gmail.com>
10614 PR tree-optimization/30590
10615 * tree-nrv.c (tree_nrv): Check for the partial update of the
10618 2007-03-13 Alexandre Oliva <aoliva@redhat.com>
10620 * flags.h (flag_random_seed): Remove declaration, in favor of...
10621 * toplev.h (get_random_seed, set_random_seed): ... these.
10622 * tree.c (get_file_function_name): Use the former.
10623 * opts.c (common_handle_option): Use the latter.
10626 2007-03-13 Steven Bosscher <steven@gcc.gnu.org>
10628 PR middle-end/31127
10629 * cse.c (cse_find_path): Do not bail out if a basic block that
10630 we already visited now becomes part of a path that starts at a
10631 different basic block. Just disallow this, to make sure we
10632 visit each basic block at most once.
10634 2007-03-13 Jan Hubicka <jh@suse.cz>
10636 * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
10637 attributes, when profile esitmate is present, calls with very low
10638 frequency are cold.
10640 2007-03-13 Zdenek Dvorak <dvorakz@suse.cz>
10642 PR tree-optimization/30730
10643 PR tree-optimization/26900
10644 * tree-ssa-loop-niter.c: Include gmp.h.
10645 (bounds): New type.
10646 (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
10647 split_to_var_and_offset, determine_value_range,
10648 bound_difference_of_offsetted_base, refine_bounds_using_guard,
10649 bound_difference, bounds_add, bounds_negate,
10650 number_of_iterations_ne_max, dump_affine_iv): New functions.
10651 (number_of_iterations_ne, number_of_iterations_lt_to_ne,
10652 assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
10653 difference of initial and final value of control iv to validate
10655 (number_of_iterations_cond): Add loop parameter. Determine bounds
10656 on the difference of the extremes of the control iv. Add dumps.
10657 (expand_simple_operations): Handle phi nodes.
10658 (simplify_using_initial_conditions): Do not record used conditions.
10659 (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
10660 Do not set additional_info.
10661 (implies_nonnegative_p, implies_ge_p): Removed.
10662 (derive_constant_upper_bound): Do not use parameter `additional'.
10663 (record_estimate): Parameter `additional' removed. Parameter
10664 `i_bound' added. Do not call derive_constant_upper_bound.
10665 (record_nonwrapping_iv): Use derive_constant_upper_bound to
10666 bound the number of iterations estimate.
10667 (estimate_numbers_of_iterations_loop): Pass the estimate from
10668 the number of iterations analysis to record_estimate.
10669 * tree.h (multiple_of_p): Declare.
10670 * tree-scalar-evolution.c (expression_expensive_p): Removed.
10671 (scev_const_prop): Do not check expression_expensive_p.
10672 * fold-const.c (multiple_of_p): Exported.
10673 * double-int.c (double_int_mask): Exported.
10674 * double-int.h (double_int_mask): Declare.
10675 * tree-flow.h (struct tree_niter_desc): Removed additional_info
10676 field. Added max field.
10678 2007-03-13 David Taylor <taylor@candd.org>
10681 * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
10684 2007-03-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
10687 * pa.md (vdepi_ior): Don't allow zero length deposit. Likewise for
10688 two unamed patterns.
10690 2007-03-13 Uros Bizjak <ubizjak@gmail.com>
10692 * config/i386/i386.opt (mcx16, msahf): New options.
10693 * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
10694 (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
10696 * config/i386/driver-i386.c (bit_LAHF_LM): New define.
10697 (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
10698 Output -mcx16 and -msahf options when corresponding bit is set.
10700 * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
10701 and -msahf options.
10703 2007-03-13 Alexandre Oliva <aoliva@redhat.com>
10705 * configure.ac: Test for assembler tolerance to # 0 "".
10706 * configure, config.in: Rebuilt.
10707 * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
10709 2007-03-13 Geoffrey Keating <geoffk@apple.com>
10711 * doc/invoke.texi (Spec Files): Update for '%{,' spec.
10713 * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
10714 (handle_syscall): Handle direct system calls.
10715 * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
10717 2007-03-12 Brooks Moses <brooks.moses@codesourcery.com>
10719 * doc/invoke.texi: Fix cpp.info cross-reference.
10720 * doc/passes.texi: Fix gcc.info cross-reference.
10722 2007-03-12 Zdenek Dvorak <dvorakz@suse.cz>
10724 PR tree-optimization/30835
10725 * lambda-code.c (can_convert_to_perfect_nest): Check whether
10726 bb_for_stmt is not NULL before accessing it.
10728 2007-03-12 Joseph Myers <joseph@codesourcery.com>
10730 * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
10733 2007-03-12 Brooks Moses <brooks.moses@codesourcery.com>
10736 * doc/install.texi: Document --enable-stage1-languages
10738 2007-03-12 Steven Bosscher <steven@gcc.gnu.org>
10740 * tree-pass.h (pass_into_cfg_layout_mode,
10741 pass_outof_cfg_layout_mode): Declare.
10742 * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
10743 pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
10744 * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
10745 (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
10747 2007-03-12 Seongbae Park <seongbae.park@gmail.com>
10749 * c-decl.c (warn_variable_length_array): New function.
10750 Refactored from grokdeclarator to handle warn_vla
10751 and handle unnamed array case.
10752 (grokdeclarator): Refactored VLA warning case.
10753 * c.opt (Wvla): New flag.
10754 * doc/invoke.texi (Wvla): New warning.
10756 2007-03-12 Richard Henderson <rth@redhat.com>
10758 * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
10759 (TARGET_SECTION_TYPE_FLAGS): New.
10761 2007-03-12 Richard Henderson <rth@redhat.com>
10763 * config/darwin.c (machopic_reloc_rw_mask): New.
10764 * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
10765 * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
10767 2007-03-12 Mark Mitchell <mark@codesourcery.com>
10769 * cppdefault.c (cpp_EXEC_PREFIX): New variable.
10770 * cppdefault.h (cpp_PREFIX): Document.
10771 (cpp_PREFIX_len): Likewise.
10772 (cpp_EXEC_PREFIX): New variable.
10773 * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
10774 * c-incpath.c (add_standard_paths): Correct logic for relocating
10775 paths within prefix.
10777 2007-03-12 Uros Bizjak <ubizjak@gmail.com>
10779 * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
10780 fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
10782 (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
10783 fix_truncdfdi_sse using SSEMODEF mode macro.
10784 (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
10785 fix_truncdfsi_sse using SSEMODEF mode macro.
10786 (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
10787 (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
10789 2007-03-12 Richard Sandiford <richard@codesourcery.com>
10791 * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
10792 elfos.h to tm_file.
10794 2007-03-12 Olga Golovanevsky <olga@il.ibm.com>
10796 * tree.h : Add multiple_of_p declaration.
10797 * fold-const.c (multiple_of_p): Make multiple_of_p public.
10798 * ipa-type-escape.c (results_of_malloc): Redundant.
10799 (visited_stmts): New. Visited stmt for walk_use_def_chains.
10800 (cast_type): Extended with new members.
10801 (check_cast): Returns cast_type.
10802 (cast): New structure for data of walk_use_def_chains.
10803 (is_malloc_result, is_cast_from_non_pointer_1,
10804 is_cast_from_non_pointer,
10805 is_array_access_through_pointer_and_index): New functions.
10806 (look_for_casts): Returns cast types.
10807 (check_call): Returns void.
10808 (okay_pointer_operation): Use support of pointer plus index,
10809 pointer plus constant and allow all multiplications.
10811 2007-03-11 Richard Guenther <rguenther@suse.de>
10813 PR tree-optimization/31115
10814 * tree-vrp.c (extract_range_from_binary_expr): Make sure
10815 the shift count is positive and non-anti-range for RSHIFT_EXPR.
10816 A shift count of zero is not special as with *_DIV_EXPR.
10817 (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
10820 2007-03-11 Ian Lance Taylor <iant@google.com>
10822 * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
10823 the *_DIV_EXPR codes correctly with overflow infinities.
10825 2007-03-11 Ira Rosen <irar@il.ibm.com>
10827 * tree-data-ref.c (analyze_offset): Add a return value (bool) to
10828 indicate success/failure of the analysis. Add negation to subtrahend
10829 in case of subtraction. Fail if both operands contain constants.
10830 (create_data_ref): Fail if analyze_offset fails.
10832 2007-03-11 Uros Bizjak <ubizjak@gmail.com>
10834 * config/i386/i386.md (frndintxf2): Rename to ...
10835 (rintxf2): ... this. Remove expander having same name.
10836 (rintsf2, rintdf2): Implement using SSEMODEF macro.
10837 (roundsf2, rounddf2): Ditto.
10838 (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
10839 (lround<mode>di2, lround<mode>si2): Ditto.
10841 2007-03-11 Steven Bosscher <steven@gcc.gnu.org>
10843 * lower-subreg.c: Include except.h.
10844 (decompose_multiword_subregs): Verify that the only control flow
10845 insns we can split are loads to multi-words pseudos.
10846 Handle breaking such blocks after splitting, instead of calling
10847 find_many_sub_basic_blocks.
10849 * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
10850 on the new basic block. Add a lengthy comment explaining why we
10851 thought this was necessary.
10852 * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
10854 2007-03-10 Mark Mitchell <mark@codesourcery.com>
10857 * tree.c (walk_type_fields): Recurse into the element type of
10858 ARRAY_TYPEs if there is a pointer set.
10860 2007-03-10 Dirk Mueller <dmueller@suse.de>
10862 * c-common.c (warn_logical_operator): Fix condition.
10864 2007-03-10 Tobias Schl�ter <tobi@gcc.gnu.org>
10866 * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
10868 * config/darwin.c (machopic_select_section): Remove superfluous
10869 argument in call to categorize_decl_for_section. Remove unused
10872 2007-03-10 Joseph Myers <joseph@codesourcery.com>
10874 * configure.ac (glibc_header_dir): Set using with_build_sysroot if
10876 * configure: Regenerate.
10878 2007-03-10 Uros Bizjak <ubizjak@gmail.com>
10881 * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
10882 (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
10883 (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
10884 Add LABEL_NUSES to emitted label.
10885 * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
10886 branch probability value to emitted jump insn.
10887 * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
10888 Do not check life information and do not re-arrange input operands
10889 for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
10891 2007-03-10 Kaz Kojima <kkojima@gcc.gnu.org>
10893 * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
10894 the change of decode_asm_operands.
10896 2007-03-10 Kaz Kojima <kkojima@gcc.gnu.org>
10898 * mode-switching.c (create_pre_exit): Skip blockage insn.
10900 2007-03-09 Diego Novillo <dnovillo@redhat.com>
10902 * tree-pass.h (TODO_update_smt_usage): Remove.
10904 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
10908 2007-03-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
10910 * pa.c (attr_length_call): Revise condition for long
10911 pc-relative branch.
10912 (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
10913 local calls on the SOM target. Don't use "LONG_PIC_PCREL" call
10914 sequence on SOM target.
10916 2007-03-09 Geoffrey Keating <geoffk@apple.com>
10918 * gcc.c: Document %{, in big comment at top.
10919 (input_suffix_matches): Remove special handling for .s and
10921 (input_spec_matches): New.
10922 (handle_braces): Handle %{,.
10923 (validate_switches): ',' indicates a value which is not a switch.
10924 * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
10925 to detect assembler input.
10926 * config/i386/sol2.h (CPP_SPEC): Likewise.
10927 * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
10928 * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
10929 * config/rs6000/lynx.h (ASM_SPEC): Likewise.
10930 * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
10931 * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
10932 -m64 causes deployment target to default to 10.5.
10933 * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
10935 2007-03-09 Richard Henderson <rth@redhat.com>
10938 * target.h (targetm.asm.out.reloc_rw_mask): New.
10939 * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
10940 (TARGET_ASM_OUT): Use it.
10941 * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
10942 * varasm.c (categorize_decl_for_section): Remove shlib argument;
10943 use the new reloc_rw_mask target hook instead.
10944 (default_section_type_flags_1): Merge into...
10945 (default_section_type_flags): ... here.
10946 (decl_readonly_section_1): Merge into...
10947 (decl_readonly_section): ... here.
10948 (default_elf_select_section_1): Merge into...
10949 (default_elf_select_section): ... here.
10950 (default_unique_section_1): Merge into...
10951 (default_unique_section): ... here.
10952 (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
10953 (default_select_rtx_section): Use it.
10954 (default_elf_select_rtx_section): Likewise.
10955 * output.h: Update to match.
10956 * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
10957 * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
10958 (TARGET_ASM_RELOC_RW_MASK): New.
10959 * config/i386/i386.c (x86_64_elf_select_section): Adjust call
10960 to categorize_decl_for_section.
10961 (x86_64_elf_unique_section): Likewise.
10962 * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
10963 TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
10964 (TARGET_ASM_RELOC_RW_MASK): New.
10965 * config/ia64/ia64.c (ia64_rwreloc_select_section,
10966 ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
10967 (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
10968 (TARGET_RWRELOC): Remove.
10969 (ia64_section_type_flags): Adjust call to default_section_type_flags.
10970 * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
10971 * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
10972 (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
10973 (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
10974 (rs6000_xcoff_select_section): Use decl_readonly_section.
10975 (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
10976 * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
10977 (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
10978 (TARGET_SECTION_TYPE_FLAGS): Remove.
10979 * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
10981 2007-03-09 Roger Sayle <roger@eyesopen.com>
10983 * fold-const.c (fold_comparison): Remove compile-time evaluation of
10984 complex constant equality/inequality comparisons for here.
10985 (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
10986 known at compile-time or can be simplified to a scalar comparison.
10987 (fold_relational_const): Move compile-time evaluation of complex
10988 constant equality/inequality comparisons to here.
10990 2007-03-09 Alexandre Oliva <aoliva@redhat.com>
10992 PR rtl-optimization/30643
10993 * cse.c (cse_insn): Recompute dest_hash after insert_regs for
10995 (fold_rtx): Recurse, like before 2006-11-03.
10997 2007-03-09 DJ Delorie <dj@redhat.com>
10999 * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
11002 2007-03-09 Aldy Hernandez <aldyh@redhat.com>
11004 PR tree-optimization/30375
11005 * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
11006 LHS of statements is not the same.
11007 * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
11009 2007-03-09 Chao-ying Fu <fu@mips.com>
11011 * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
11013 * doc/invoke.texi (-mdspr2): Document new option.
11014 * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
11015 New unspec for DSP REV 2.
11016 (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
11017 these instructions are extended in DSP REV 2.
11018 (mips-dspr2.md): Include.
11019 * config/mips/mips.opt (mdspr2): New option.
11020 * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
11021 MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
11022 MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
11023 (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
11024 (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
11025 (dsp_bdesc): Add DSP REV 2 builtins. Remove 32-bit only DSP builtins.
11026 (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
11028 (bdesc_map): Add one field of unsupported_target_flags.
11029 (bdesc_arrays): Update entries to have extra fields. Add
11031 (mips_init_builtins): Initialize new function types.
11032 Check unsupported_target_fileds to filter out builtins.
11033 * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
11035 (ASM_SPEC): Pass mdspr2 to the assembler.
11036 * config/mips/mips-dspr2.md: New file.
11038 2007-03-09 Sa Liu <saliu@de.ibm.com>
11040 * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
11042 2007-03-09 Ian Lance Taylor <iant@google.com>
11044 * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
11045 argument) like -Wstrict-overflow=2.
11046 * doc/invoke.texi (Warning Options): Update documentation.
11048 2007-03-09 Dirk Mueller <dmueller@suse.de>
11051 * doc/invoke.texi (-Wlogical-op): Document.
11052 * common.opt (-Wlogical-op): New.
11053 * c-common.h (warn_logical_operator): Declare.
11054 * c-common.c (warn_logical_operator): Define.
11055 * c-typeck.c (parser_build_binary_op): Call
11056 warn_logical_operator.
11058 2007-03-09 Alexandre Oliva <aoliva@redhat.com>
11060 * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
11061 * final.c (final_scan_insn): Test for non-"" file name.
11063 2007-03-09 Sebastian Pop <sebastian.pop@inria.fr>
11065 * doc/loop.texi: Document the Omega linear constraints solver.
11066 * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
11067 omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
11068 omega-hash-table-size, omega-max-keys, and
11069 omega-eliminate-redundant-constraints.
11070 * tree-pass.h (pass_check_data_deps): Declared.
11073 * timevar.def (TV_CHECK_DATA_DEPS): Declared.
11074 * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
11075 pass_check_data_deps): New.
11076 * tree-data-ref.c (init_data_ref): Remove declaration.
11077 (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
11078 (analyze_array): Renamed init_array_ref, move up initializations.
11079 (init_data_ref): Renamed init_pointer_ref. Moved before its call.
11080 Removed arguments that are set to NULL.
11081 (analyze_indirect_ref): Correct indentation, correct call to
11083 (object_analysis): Call init_array_ref instead of analyze_array.
11084 (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
11085 (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
11086 of DR_ACCESS_FNS_ADDR.
11087 (init_omega_eq_with_af, omega_extract_distance_vectors,
11088 omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
11089 ddr_consistent_p): New.
11090 (compute_affine_dependence): Check consistency of ddrs when
11091 flag_check_data_deps is passed.
11092 (analyze_all_data_dependences): Uncomment.
11093 (tree_check_data_deps): New.
11094 * tree-data-ref.h: Include omega.h.
11095 (DR_ACCESS_FNS_ADDR): Removed.
11096 (data_dependence_relation): Add inner_loop.
11097 (DDR_INNER_LOOP): New.
11098 * common.opt (fcheck-data-deps): New.
11099 * tree-flow.h (tree_check_data_deps): Declare.
11100 * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
11101 (OBJS-common): Depend on omega.o.
11103 * passes.c (pass_check_data_deps): Scheduled.
11104 * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
11105 PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
11106 PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
11107 PARAM_VECT_MAX_VERSION_CHECKS,
11108 PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
11110 2007-03-09 Richard Guenther <rguenther@suse.de>
11112 PR tree-optimization/30904
11113 PR middle-end/31058
11114 * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
11115 the same way as *_DIV_EXPR.
11117 2007-03-09 Alexandre Oliva <aoliva@redhat.com>
11119 * recog.c (decode_asm_operands): No mixed declarations and code.
11121 2007-03-09 Alexandre Oliva <aoliva@redhat.com>
11123 * rtl.def (ASM_INPUT): Add location.
11124 * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
11125 (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
11126 (decode_asm_operands): Add loc operand.
11127 (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
11128 * stmt.c (expand_asm): Rename to...
11129 (expand_asm_loc): ... this. Add locus argument. Pass it on to
11130 gen_rtx_ASM_INPUT_loc.
11131 (expand_asm_expr): Adjust.
11132 * recog.c (decode_asm_operands): Add loc operand.
11133 (check_asm_operands, extract_insn): Adjust.
11134 * reload1.c (maybe_fix_stack_asms): Likewise.
11135 * final.c (asm_insn_count): Likewise.
11136 (final_scan_insn): Output # line before and after asm.
11138 2007-03-09 Daniel Berlin <dberlin@dberlin.org>
11140 * tree-ssa-structalias.c (variable_info): Remove
11142 (new_var_info): Ditto.
11143 (shared_bitmap_info_t): New structure.
11144 (shared_bitmap_table): New variable.
11145 (shared_bitmap_hash): New function.
11146 (shared_bitmap_eq): Ditto
11147 (shared_bitmap_lookup): Ditto.
11148 (shared_bitmap_add): Ditto.
11149 (merge_smts_into): Change to take bitmap directly.
11150 (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
11151 (init_alias_vars): Init shared bitmap hashtable.
11152 (delete_points_to_sets): Delete shared bitmap hashtable.
11153 * tree-ssa-operands.c (add_virtual_operand): Partially revert the
11154 is_aliased removal as a change that was still necessary was
11157 2007-03-09 Uros Bizjak <ubizjak@gmail.com>
11159 * config/i386/i386.h (override_options): Conditionally disable
11160 x86_sahf for 64bit targets only.
11162 2007-03-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
11165 * c-decl.c (merge_decls): Don't call make_var_volatile.
11166 * varasm.c (make_var_volatile): Remove.
11167 * output.h (make_var_volatile): Remove.
11169 2007-03-08 Zdenek Dvorak <dvorakz@suse.cz>
11171 PR tree-optimization/31085
11172 * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
11174 2007-03-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
11176 * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
11177 llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
11178 ATTR_CONST_NOTHROW_LIST.
11180 * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
11183 2007-03-08 Diego Novillo <dnovillo@redhat.com>
11185 * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
11187 2007-03-08 Geoffrey Keating <geoffk@apple.com>
11190 * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
11192 * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
11193 passed, use shared libgcc.
11195 2007-03-08 Roger Sayle <roger@eyesopen.com>
11197 * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
11198 instead of calling build2 with a GIMPLE_MODIFY_STMT.
11199 (honor_protect_cleanup_actions, lower_try_finally_switch):
11201 * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
11202 ifc_temp_var): Likewise.
11203 * tree-inline.c (setup_one_parameter): Likewise.
11204 * tree-mudflap.c (mf_decl_cache_locals,
11205 mf_build_check_statement_for): Likewise.
11206 * tree-nested.c (init_tmp_var, save_tmp_var,
11207 finalize_nesting_tree_1): Likewise.
11208 * tree-outof-ssa.c (insert_copy_on_edge,
11209 insert_backedge_copies): Likewise.
11210 * tree-profile.c (tree_gen_edge_profiler,
11211 tree_gen_ic_profiler): Likewise.
11212 * tree-scalar-evolution.c (scev_const_prop): Likewise.
11213 * tree-sra.c (sra_build_assignment): Likewise.
11214 * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
11215 * tree-ssa-math-opts.c (insert_reciprocals,
11216 execute_cse_sincos_1): Likewise.
11217 * tree-tailcall.c (adjust_accumulator_values,
11218 adjust_return_value): Likewise.
11219 * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
11220 * tree-vect-transform.c (vect_create_data_ref_ptr,
11221 bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
11222 vect_create_epilog_for_reduction, vectorizable_reduction,
11223 vectorizable_call, vectorizable_conversion,
11224 vectorizable_assignment, vectorizable_operation,
11225 vectorizable_type_demotion, vect_gen_widened_results_half,
11226 vect_permute_store_chain, vectorizable_store,
11227 vect_setup_realignment, vect_permute_load_chain,
11228 vectorizable_load, vectorizable_condition,
11229 vect_create_cond_for_align_checks): Likewise.
11230 * tree-vrp.c (build_assert_expr_for): Likewise.
11232 2007-03-08 Ian Lance Taylor <iant@google.com>
11234 * tree-vrp.c: Include "intl.h".
11235 (usable_range_p): New static function.
11236 (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
11237 overflowed values, juts set *strict_overflow_p.
11238 (compare_values): Only return -2 if one of the operands is not a
11240 (compare_ranges): Call usable_range_p.
11241 (compare_range_with_value): Likewise.
11242 (vrp_evaluate_conditional_warnv): Rename from
11243 vrp_evaluate_conditional. Make static. Change all callers.
11244 (vrp_evaluate_conditional): New function.
11245 (simplify_div_or_mod_using_ranges): Issue warning about reliance
11246 on signed overflow.
11247 (simplify_abs_using_ranges): Likewise.
11248 (simplify_stmt_for_jump_threading): Add within_stmt parameter.
11249 * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
11250 within_stmt parameter.
11251 * tree-ssa-propagate.c (fold_predicate_in): Update call to
11252 vrp_evaluate_conditional.
11253 * tree-ssa-threadedge.c
11254 (record_temporary_equivalences_from_stmts_at_dest): Change
11255 simplify parameter to take a second tree parameter.
11256 (simplify_control_stmt_condition): Likewise.
11257 (thread_across_edge): Likewise.
11258 * tree-flow.h (vrp_evaluate_conditional): Update declaration.
11259 (thread_across_edge): Likewise.
11260 * Makefile.in (tree-vrp.o): Depend upon intl.h.
11262 2007-03-08 Uros Bizjak <ubizjak@gmail.com>
11264 * config/i386/i386.h (TARGET_SAHF): New define.
11265 * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
11266 Also enable for m_K8, m_AMDFAM10 and m_CORE2.
11267 (x86_sahf): New global variable.
11268 (override_options): Add PTA_NO_SAHF to pta_flags enum. Recode
11269 pta_flags masks using shifts. Add PTA_NO_SAHF to x86_64 and
11270 nocona processor flags. Set x86_sahf when PTA_NO_SAHF is not set
11271 in processor flags. Do not unconditionally disable TARGET_USE_SAHF
11273 (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
11274 (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
11275 when expanding fcomi/sahf based tests.
11276 (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
11277 expanding sahf based alternative. Emit sahf based sequence when
11278 optimizing for code size.
11279 * config/i386/i386.md (x86_sahf_1): Do not disable for
11280 TARGET_64BIT, enable for TARGET_SAHF.
11282 2007-03-08 Martin Michlmayr <tbm@cyrius.com>
11284 * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
11285 spurious whitespace from error message.
11287 2007-03-08 Volker Reichelt <reichelt@netcologne.de>
11290 * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
11292 2007-03-08 Alexandre Oliva <aoliva@redhat.com>
11294 * c-decl.c (grokdeclarator): Disable warnings for anonymous
11296 * tree-sra.c (instantiate_element): Propagate disabled warnings
11297 from the element itself to the created variable.
11299 2007-03-07 Richard Henderson <rth@redhat.com>
11302 * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
11303 silently fix up the stack in the case of a missing register.
11305 2007-03-07 Paul Brook <paul@codesourcery.com>
11307 * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
11309 2007-03-07 Joseph Myers <joseph@codesourcery.com>
11311 * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
11313 (phase1_vrs): Use them.
11314 (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
11315 (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
11316 __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
11317 (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
11318 __gnu_Unwind_Restore_WMMXC if required.
11319 (_Unwind_VRS_Pop): Implement iWMMXt support.
11320 * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
11321 gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
11322 gnu_Unwind_Save_WMMXC): Define.
11324 2007-03-07 Richard Sandiford <richard@codesourcery.com>
11326 * config/vxworks.h (vxworks_override_options): Declare.
11327 (VXWORKS_OVERRIDE_OPTIONS): Use it.
11328 * config/vxworks.c: Include target.h and toplev.h.
11329 (vxworks_override_options): New function.
11330 * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
11332 2007-03-07 Andreas Krebbel <krebbel1@de.ibm.com>
11334 * config/s390/s390.c (override_options): Don't emit an error when
11335 -mstack-size is used without providing -mstack-guard.
11336 (s390_emit_prologue): Choose stack_guard value automatically if not
11337 provided via command line.
11338 * doc/invoke.texi: Adjust description of -mstack-guard and
11341 2007-03-07 Richard Sandiford <richard@codesourcery.com>
11343 * config/i386/i386.c (output_set_got): Add a GOT initialization
11344 sequence for VxWorks PIC.
11345 (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
11346 around labels as well as symbols. Use gotoff_operand instead
11347 of local_symbolic_operand.
11348 (legitimize_pic_address): Use gotoff_operand instead of
11349 local_symbolic_operand. Use @GOT accesses for labels as
11351 (ix86_output_addr_diff_elt): Use PC-relative rather than
11352 GP-relative offsets for VxWorks PIC.
11353 (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
11354 no_new_pseudos. Check whether the returned register is op0.
11355 * config/i386/i386.md (tablejump): Use PC-relative rather than
11356 GP-relative offsets for VxWorks PIC.
11357 * config/i386/predicates.md (gotoff_operand): New predicate.
11359 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11361 * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
11363 * config/vxworks-dummy.h: New file.
11364 * config/i386/i386.h: Include it.
11366 2007-03-07 Alexandre Oliva <aoliva@redhat.com>
11368 * dwarf2out.c (is_inlined_entry_point): New
11369 (add_high_low_attributes): Emit DW_AT_entry_pc along with
11370 DW_AT_ranges if the first subblock is the entry point.
11372 2007-03-06 David Daney <ddaney@avtrex.com>
11374 * doc/install.texi (mips-*-*): Change recommended binutils
11377 2007-03-06 Anatoly Sokolov <aesok@post.ru>
11379 * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
11380 ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
11382 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
11383 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
11385 2007-03-06 Jan Hubicka <jh@suse.cz>
11387 * errors.h (warning, error, fatal, internal_error): Mark as cold.
11388 * predict.c (maybe_hot_bb): Cold functions are never hot; hot
11390 (probably_cold_bb_p): Cold functions are cold.
11391 (probably_never_executed_bb_p): Cold functions are cold.
11392 (tree_bb_level_predictions): Predict calls to cold functions as not
11394 (compute_function_frequency): Check hot/cold attributes.
11395 * function.h (function_frequency): Update comments.
11396 * predict.def (PRED_COLD_FUNCTION): Predict cold function.
11397 * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
11398 (c_common_att): Add cold and hot.
11400 * doc/extend.texi (hot,cold attributes): Document.
11402 2007-03-06 Andrew Haley <aph@redhat.com>
11404 * function.c (expand_function_end): Move blockage to just after we
11405 emit the label for the naked return from the function.
11407 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11409 * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
11412 2007-03-06 Jan Hubicka <jh@suse.cz>
11414 * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
11415 loaded for constant large models. Non-large 64bit PIC can do.
11416 * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
11417 * cmodel.h: Add LARGE PIC.
11418 * i386.md (UNSPEC_PLTOFF): New.
11419 (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
11421 (*call_1_rex64): Disable for large models.
11422 (*call_1_rex64_large): New.
11423 (*call_value_1_rex64): Disable for large models.
11424 (*call_value_1_rex64_large): New.
11425 (set_rip_rex4): New.
11426 (set_got_offset_rex64): New.
11427 * predicates.md (constant_call_address_operand): For large model
11428 constant calls are not possible.
11429 * i386-protos.h (construct_plt_address): Declare.
11430 * i386.c (override_options): Accept large models.
11431 (ix86_expand_prologue): Expand large PIC GOT pointer load.
11432 (legitimate_constant_p): Add new UNSPECs.
11433 (legitimate_pic_operand_p): Likewise.
11434 (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
11435 (legitimize_pic_address): Do easy RIP relative way for TLS only for
11437 (output_pic_addr_const): Add PLTOFF.
11438 (ix86_output_addr_diff_elt): Output 64bit tables when needed.
11439 (ix86_expand_move): Legitimize pic address when in PIC mode.
11440 (construct_plt_address): New function.
11441 (ix86_expand_call): Offload the address to register and use GOT
11442 pointer for large model.
11443 * invoke.texi (mcmodel=large): Update documentation.
11445 2007-03-06 Richard Henderson <rth@redhat.com>
11447 * config/i386/i386.c (x86_use_leave, x86_push_memory,
11448 x86_zero_extend_with_and, x86_movx, x86_double_with_add,
11449 x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
11450 x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
11451 x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
11452 x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
11453 x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
11454 x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
11455 x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
11456 x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
11457 x86_partial_reg_dependency, x86_memory_mismatch_stall,
11458 x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
11459 x86_sse_partial_reg_dependency, x86_sse_split_regs,
11460 x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
11461 x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
11462 x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
11463 x86_schedule, x86_use_bt, x86_pad_returns,
11464 x86_use_xchgb): Merge into ...
11465 (ix86_tune_features): ... here. New array.
11466 (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
11467 x86_bswap): Merge into ...
11468 (ix86_arch_features): ... here. New array.
11469 (x86_3dnow_a): Remove.
11470 (x86_accumulate_outgoing_args): Make static.
11471 (x86_arch_always_fancy_math_387): Make static.
11472 (ix86_tune_mask, ix86_arch_mask): Move ...
11473 (override_options): ... to local variables here. Apply the
11474 appropriate mask to each element of ix86_arch_features and
11475 ix86_tune_features. Adjust TARGET_CMOVE and TARGET_USE_SAHF
11476 as were done in the old macros.
11477 (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
11478 * config/i386/i386.h (x86_use_leave, x86_push_memory,
11479 x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
11480 x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
11481 x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
11482 x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
11483 x86_read_modify_write, x86_read_modify, x86_split_long_moves,
11484 x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
11485 x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
11486 x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
11487 x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
11488 x86_partial_reg_dependency, x86_memory_mismatch_stall,
11489 x86_accumulate_outgoing_args, x86_prologue_using_move,
11490 x86_epilogue_using_move, x86_decompose_lea,
11491 x86_arch_always_fancy_math_387, x86_shift1,
11492 x86_sse_partial_reg_dependency, x86_sse_split_regs,
11493 x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
11494 x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
11495 x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
11496 x86_use_incdec, x86_pad_returns, x86_bswap,
11497 x86_partial_flag_reg_stall): Remove.
11498 (enum ix86_tune_indices): New.
11499 (ix86_tune_features): New.
11500 (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
11501 TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
11502 TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
11503 TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
11504 TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
11505 TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
11506 TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
11507 TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
11508 TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
11509 TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
11510 TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
11511 TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
11512 TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
11513 TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
11514 TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
11515 TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
11516 TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
11517 TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
11518 TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
11519 TARGET_EXT_80387_CONSTANTS): Use it.
11520 (enum ix86_arch_indices): New.
11521 (ix86_arch_features): New.
11522 (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
11523 TARGET_BSWAP): Use it.
11524 (ix86_tune_mask, ix86_arch_mask): Remove.
11526 2007-03-06 Joseph Myers <joseph@codesourcery.com>
11529 * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
11530 Define using $${sysroot_headers_suffix}.
11531 * configure: Regenerate.
11532 * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
11533 multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
11535 * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
11536 * gcc.c (print_sysroot_headers_suffix): New.
11537 (option_map): Include --print-sysroot-headers-suffix.
11538 (display_help): Mention -print-sysroot-headers-suffix.
11539 (process_command): Handle -print-sysroot-headers-suffix.
11540 (do_spec_1): Append multilib directory to include-fixed path if
11541 sysroot suffixes in use.
11542 (main): Handle -print-sysroot-headers-suffix.
11543 * Makefile.in (start.encap): Don't depend on xlimits.h
11544 (xlimits.h): Remove.
11545 (stmp-int-hdrs): Don't depend on xlimits.h. Inline generation of
11546 limits.h for each multilib in fixinc_list.
11547 (fixinc_list, s-fixinc_list): New.
11548 (stmp-fixinc): Depend on fixinc_list. If not copying headers,
11549 generate them for each multilib in fixinc_list.
11550 (stmp-fixproto): Use include-fixed. Run fixproto for each
11551 multilib in fixinc_list.
11552 (mostlyclean): Don't remove xlimits.h.
11553 (clean): Remove include-fixed.
11554 (real-install-headers-tar, real-install-headers-cpio,
11555 real-install-headers-cp): Don't copy include, only include-fixed.
11556 (install-mkheaders): Depend on fixinc_list. Don't depend on
11557 xlimits.h. Save limits.h files for each multilib in fixinc_list.
11558 Always save mkinstalldirs. Preserve ${sysroot_headers_suffix} in
11559 SYSTEM_HEADER_DIR setting in mkheaders.conf.
11561 2007-03-06 Jan Hubicka <jh@suse.cz>
11563 * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
11566 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11568 * configure.ac: Allow tm_file to contain build-directory files.
11569 * configure: Regenerate.
11570 * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
11571 * config/m68k/t-uclinux (sysroot-suffix.h): New target.
11572 * config/m68k/print-sysroot-suffix.sh: New file.
11574 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11576 * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
11577 of pic_offset_table_rtx if reload_completed.
11578 (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
11579 PIC_OFFSET_TABLE_REGNUM.
11580 * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
11582 (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
11583 (m68k_output_mi_thunk): Rewrite to use RTL. Honor vcall_offset.
11585 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11587 * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
11588 functions that call eh_return.
11590 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11592 * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
11593 functions that need a constant pool.
11595 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11598 * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
11599 (m68k_preferred_reload_class): Likewise.
11600 * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
11601 (SECONDARY_RELOAD_CLASS): Define.
11602 (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
11603 (LIMIT_RELOAD_CLASS): Delete.
11604 * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
11605 registers from storing bytes.
11606 (m68k_secondary_reload_class): New function.
11607 (m68k_preferred_reload_class): Likewise.
11609 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11611 * config/m68k/m68k.c (m68k_save_reg): Remove special case for
11613 (m68k_expand_prologue): Likewise.
11615 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11617 * config/m68k/m68k-protos.h (output_sibcall): Declare.
11618 (mips_expand_epilogue): Add a bool parameter.
11619 (m68k_legitimize_sibcall_address): Declare.
11620 * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
11621 (m68k_expand_epilogue): Add a parameter to select between sibling
11622 and normal epilogues. Only generate a return for the latter.
11623 (m68k_ok_for_sibcall_p): New function.
11624 (m68k_legitimize_sibcall_address, output_sibcall): New functions.
11625 * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
11626 (sibcall_value, *sibcall_value): Likewise.
11627 (*call, *call_value): Require !SIBLING_CALL_P.
11628 (epilogue): Update call to m68k_expand_epilogue.
11629 (sibcall_epilogue): New pattern.
11630 * config/m68k/predicates.md (const_call_operand): Say that this
11631 predicate applies to sibling calls too.
11632 (sibcall_operand): New predicate.
11634 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11636 * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
11637 alternatives as movsi_cf.
11638 (movsf_cf_hard): Add commentary.
11640 2007-03-06 Kazu Hirata <kazu@codesourcery.com>
11641 Richard Sandiford <richard@codesourcery.com>
11643 * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
11644 (m68k_movem_pattern_p, m68k_output_movem): Likewise.
11645 (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
11646 * config/m68k/m68k.h (EPILOGUE_USES): Define. Treat all registers
11647 as being live on exit from an interrupt function.
11648 (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
11649 * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
11650 (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
11651 (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
11652 (m68k_interrupt_function_p): Globalize.
11653 (m68k_compute_frame_layout): Remove reverse mask code.
11654 (m68k_emit_movem, m68k_set_frame_related): New functions.
11655 (m68k_output_function_prologue): Delete in favor of...
11656 (m68k_expand_prologue): ...this new function.
11657 (m68k_output_function_epilogue): Delete in favor of...
11658 (m68k_expand_epilogue): ...this new function.
11659 (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
11661 (print_operand): Handle %?.
11662 * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
11663 (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
11664 (prologue, epilogue): New patterns.
11665 (return): Turn into a define_expand.
11666 (*return): New pattern, derived from old "return" pattern. Use rte
11667 rather than rts for interrupt functions. Only use rtd if the pop
11669 (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
11670 (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
11671 (link, *link, unlink, *unlink, load_got): Likewise.
11673 2007-03-06 Richard Sandiford <richard@codesourcery.com>
11677 * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
11678 (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
11679 (m68k_matches_q_p, m68k_matches_u_p): Likewise.
11680 * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
11681 and m68k_matches_u_p.
11682 (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
11683 (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
11684 (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
11685 (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
11686 (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
11687 (REG_STRICT_P): New macro.
11688 (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
11689 PCREL_GENERAL_OPERAND_OK.
11690 (REG_OK_FOR_BASE_P): Merge definitions. Use REG_STRICT_P and
11691 m68k_legitimate_base_reg_p.
11692 (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
11693 (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
11694 (PIC_CASE_VECTOR_ADDRESS): Update comment.
11695 * config/m68k/m68k.c (m68k_address): New structure.
11696 (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
11697 (m68k_decompose_index, m68k_legitimate_constant_address_p)
11698 (m68k_jump_table_ref_p, m68k_decompose_address)
11699 (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
11700 (m68k_matches_u_p): New functions.
11701 (print_operand_address): Rewrite to use m68k_decompose_index.
11703 2007-03-05 David Taylor <dtaylor@emc.com>
11705 * gcc.c: Correct copyright date in --version output.
11707 2007-03-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
11709 * pa.md: In unamed move patterns, disparge copies between general
11710 and floating point registers using '?' modifier. Don't include 'f'
11711 constraint for register preferences in DImode, SImode, HImode and
11712 QImode patterns. Likewise for 'r' in DFmode and SFmode patterns.
11713 Remove constraints for copies between general and floating registers
11714 in soft-float DFmode pattern.
11715 (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
11719 2007-03-05 Mike Stump <mrs@apple.com>
11721 * c-common.c (targetcm): Add.
11722 * c-opts.c (c_common_handle_option): Handle language specific
11724 * opts.c (handle_option): Verify language for target options, if
11726 * opth-gen.awk: Add CL_LANG_ALL.
11727 * target-def.h (TARGET_HANDLE_C_OPTION): Add.
11728 (TARGETCM_INITIALIZER): Add.
11729 * target.h (struct gcc_targetcm): Add.
11731 * targhooks.c (default_handle_c_option): Add.
11732 * targhooks.h (default_handle_c_option): Add.
11733 * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
11735 * config/darwin.opt (iframework): Add.
11736 * config/darwin.h (TARGET_HAS_TARGETCM): Add.
11737 * config/darwin-c.c (handle_c_option): Add.
11738 (TARGET_HANDLE_C_OPTION): Add.
11740 * doc/invoke.texi (Darwin Options): Add -iframework.
11742 2007-03-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
11744 * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
11747 2007-03-05 Ian Lance Taylor <iant@google.com>
11749 * c.opt (fgnu89-inline): New option.
11750 * c-opts.c (c_common_post_options): Set default value for
11752 * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
11753 (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
11755 (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
11756 (grokdeclarator, start_function): Likewise.
11757 * c-cppbuiltin.c (c_cpp_builtins): Define either
11758 __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
11759 * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
11760 (C Dialect Options): Document -fgnu89-inline.
11761 * doc/extend.texi (Function Attributes): Explain what the
11762 gnu_inline attribute does.
11763 * doc/cpp.texi (Common Predefined Macros): Document
11764 __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
11766 2007-03-05 Ian Lance Taylor <iant@google.com>
11768 PR tree-optimization/31034
11769 * tree-vrp.c (extract_range_from_assert): Don't try to handle a
11770 half-range if the other side is an overflow infinity.
11772 2007-03-05 Bernd Schmidt <bernd.schmidt@analog.com>
11774 * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
11775 (bfin*-linux-uclibc*): New configuration.
11776 * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
11778 * config/bfin/linux.h: New file.
11779 * config/bfin/libgcc-bfin.ver: New file.
11780 * config/bfin/t-bfin-uclinux: New file.
11781 * config/bfin/t-bfin-linux: New file.
11782 * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
11783 (TARGET_OS_CPP_BUILTINS): New macro.
11785 2007-03-05 Richard Guenther <rguenther@suse.de>
11787 * fold-const.c (fold_binary): Remove duplicate folding
11788 of comparison of non-null ADDR_EXPR against null.
11790 2007-03-05 Richard Guenther <rguenther@suse.de>
11791 Dorit Nuzman <dorit@il.ibm.com>
11793 PR tree-optimization/26420
11794 * tree-vectorizer.c (vectorize_loops): Bail out early if there
11795 are no loops in the function. Only print the number of
11796 vectorized loops if it is greater than zero or we are supposed
11797 to print information about unvectorized loops.
11799 2007-03-05 Revital Eres <eres@il.ibm.com>
11801 * gcc.dg/var-expand1.c: New test.
11802 * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
11803 when an accumulator is expanded.
11805 2007-03-04 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
11808 * c-common.c (convert_and_check): Don't give warnings for
11809 conversion if 'expr' already overflowed.
11811 2007-03-04 Roger Sayle <roger@eyesopen.com>
11813 PR middle-end/30744
11814 * fold-const.c (fold_comparison): Enforce type consistency when
11815 transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
11817 2007-03-04 Zdenek Dvorak <dvorakz@suse.cz>
11819 * tree-ssa-address.c (create_mem_ref): Do not put an expression
11820 containing a cast to the base of TARGET_MEM_REF.
11822 2007-03-04 Martin Michlmayr <tbm@cyrius.com>
11824 * tree.c (tree_contains_struct_check_failed): Remove spurious
11825 whitespace from error message.
11827 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
11830 * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
11831 instead of precision.
11833 2007-03-04 Roman Zippel <zippel@linux-m68k.org>
11834 Nathan Sidwell <nathan@codesourcery.com>
11836 * emit-rtl.c (find_auto_inc): New.
11837 (try_split): recreate REG_INC notes,
11838 Use regular for loops rather than whiles.
11840 2007-03-03 Andreas Schwab <schwab@suse.de>
11842 * configure.ac (HAVE_AS_REL16): Move test back to correct place.
11843 * configure: Regenerate.
11845 2007-03-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
11847 * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
11848 flag_rounding_math, not flag_unsafe_math_optimizations.
11850 * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
11852 * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
11853 alpha_fold_vector_minmax): Likewise.
11854 * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11855 * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
11857 2007-03-02 Eric Botcazou <ebotcazou@adacore.com>
11859 * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
11860 (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
11861 if the lhs has side-effects.
11862 <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
11864 2007-03-02 Uros Bizjak <ubizjak@gmail.com>
11866 * config/i386/i386.h (TUNEMASK): Remove define.
11867 (ARCHMASK): Remove define.
11868 (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
11869 Use ix86_arch_mask variable instead of ARCHMASK.
11870 * config/i386/i386.c (override_options): Ditto.
11871 (standard_80387_constant_p): Ditto.
11873 2007-03-02 Ian Lance Taylor <iant@google.com>
11875 Used signed infinities in VRP.
11876 * tree-vrp.c (uses_overflow_infinity): New static function.
11877 (supports_overflow_infinity): New static function.
11878 (make_overflow_infinity): New static function.
11879 (negative_overflow_infinity): New static function.
11880 (positive_overflow_infinity): New static function.
11881 (is_negative_overflow_infinity): New static function.
11882 (is_positive_overflow_infinity): New static function.
11883 (is_overflow_infinity): New static function.
11884 (overflow_infinity_range_p): New static function.
11885 (compare_values_warnv): New function split out of compare_values.
11886 (compare_value): Call it.
11887 (set_value_range_to_nonnegative): Add overflow_infinity
11888 parameter. Change caller.
11889 (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
11891 (vrp_expr_computes_nonzero): Likewise.
11892 (compare_ranges, compare_range_with_value): Likewise.
11893 (compare_name_with_value, compare_names): Likewise.
11894 (vrp_evaluate_conditional): Likewise.
11895 (set_value_range): Handle infinity
11896 (vrp_operand_equal_p, operand_less_p): Likewise.
11897 (extract_range_from_assert): Likewise.
11898 (vrp_int_const_binop): Likewise.
11899 (extract_range_from_binary_expr): Likewise.
11900 (extract_range_from_unary_expr): Likewise.
11901 (extract_range_from_comparison): Likewise.
11902 (extract_range_from_expr): Likewise.
11903 (dump_value_range): Likewise.
11904 (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
11905 (test_for_singularity): Likewise.
11906 (vrp_int_const_binop): Remove inline qualifier.
11907 (adjust_range_with_scev): Add comment.
11908 * tree-flow.h (vrp_evaluate_conditional): Update declaration.
11910 2007-03-02 Diego Novillo <dnovillo@redhat.com>
11912 * tree-ssa-structalias.c (could_have_pointers): Tidy.
11913 (get_constraint_for): Likewise.
11914 (do_structure_copy): Likewise.
11915 (find_func_aliases): Fix references to MODIFY_EXPR.
11916 (intra_create_variable_infos): Tidy.
11917 * tree-ssa-operands.c (add_virtual_operand): Add argument
11919 When adding members of alias sets, if IS_CALL_SITE is true and
11920 the symbol is not call-clobbered, skip it.
11921 Adjust all callers.
11923 2007-03-02 Eric Botcazou <ebotcazou@adacore.com>
11925 * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
11926 entry by means of emit_insn_at_entry.
11928 2007-03-02 Richard Henderson <rth@redhat.com>
11930 * expr.h (promoted_input_arg): Remove decl.
11931 * function.c (promoted_input_arg): Merge into ...
11932 * combine.c (setup_incoming_promotions): ... only caller.
11933 Rearrange to avoid double loop.
11935 2007-03-02 Ben Elliston <bje@au.ibm.com>
11936 Peter Bergner <bergner@vnet.ibm.com>
11937 Janis Johnson <janis187@us.ibm.com>
11939 * config/rs6000/dfp.md: New file.
11940 * config/rs6000/rs6000.md: Include dfp.md.
11941 (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
11942 * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
11943 and TDmode decimal float modes in FP registers.
11944 (num_insns_constant): Likewise.
11945 (rs6000_legitimate_offset_address_p): Likewise.
11946 (rs6000_legitimize_address): Likewise.
11947 (rs6000_legitimize_reload_address): Likewise.
11948 (rs6000_legitimate_address): Likewise.
11949 (rs6000_emit_move): Likewise.
11950 (function_arg_boundary): Likewise.
11951 (function_arg_advance): Likewise.
11952 (rs6000_darwin64_record_arg_recurse): Likewise.
11953 (function_arg): Likewise.
11954 (rs6000_gimplify_va_arg): Likewise.
11955 (rs6000_split_multireg_move): Likewise.
11956 (rs6000_output_function_epilogue): Likewise.
11957 (rs6000_output_function_epilogue): Likewise.
11958 (rs6000_register_move_cost): Likewise.
11959 (rs6000_function_value): Likewise.
11960 (rs6000_libcall_value): Likewise.
11962 2007-03-02 Richard Sandiford <richard@codesourcery.com>
11964 * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
11966 2007-03-02 Richard Sandiford <richard@codesourcery.com>
11968 * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
11969 Use $MULTIDIR to choose between the kernel and RTP headers,
11970 and use $WIND_BASE and $WIND_USR to locate them.
11972 2007-03-02 Uros Bizjak <ubizjak@gmail.com>
11974 * config/i386/i386.c (override_options): Put initialization of
11975 ix86_tune_mask and ix86_arch_mask to the correct place.
11977 2007-03-02 Uros Bizjak <ubizjak@gmail.com>
11978 Michael Meissner <michael.meissner@amd.com>
11981 * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
11982 (ARCHMASK): Define.
11983 (TARGET_CMOVE): Use ARCHMASK.
11984 (TARGET_CMPXCHG): Ditto.
11985 (TARGET_CMPXCHG8B): Ditto.
11986 (TARGET_XADD): Ditto.
11987 (TARGET_BSWAP): Ditto.
11988 * config/i386/i386.c (ix86_tune_mask): New global variable.
11989 (ix86_arch_mask): Ditto.
11990 (override_options): Initialize ix86_tune_mask and
11991 ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
11994 2007-03-02 Ben Elliston <bje@au.ibm.com>
11997 * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
11999 2007-03-02 Joseph Myers <joseph@codesourcery.com>
12001 * target.h (init_dwarf_reg_sizes_extra): New target hook.
12002 * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
12003 * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
12004 * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
12006 * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
12007 rs6000_init_dwarf_reg_sizes_extra): New.
12008 * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
12009 SPE register high parts.
12011 2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
12013 * Makefile.in: Add install-pdf target as
12014 copied from automake v1.10 rules.
12015 * configure.ac: Add install-pdf to target list.
12016 * configure: Regenerate.
12018 2007-03-01 Paul Brook <paul@codesourcery.com>
12020 * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
12021 modes to LDRD for DImode.
12022 (output_move_double): Fixup out of range ldrd/strd.
12023 (vfp_secondary_reload_class): Rename...
12024 (coproc_secondary_reload_class): ... to this. Add wb argument.
12025 * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
12026 coproc_secondary_reload_class for CLASS_IWMMXT.
12027 (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
12028 * arm-protos.h (coproc_secondary_reload_class): Update prototype.
12030 2007-03-01 Zdenek Dvorak <dvorakz@suse.cz>
12032 * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
12033 unroll factor by the estimated number of iterations.
12034 (loop_prefetch_arrays): Do not prefetch in loops that iterate less
12035 than prefetch latency.
12037 * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
12038 decode_caches_intel, detect_caches_intel): New functions.
12039 (host_detect_local_cpu): Use detect_caches_amd and
12040 detect_caches_intel.
12042 2007-03-01 Richard Henderson <rth@redhat.com>
12044 * expr.c (emit_move_complex_push): Export.
12045 (emit_move_complex_parts): Split out from ...
12046 (emit_move_complex): ... here.
12047 * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
12048 * config/i386/i386.md (movcdi): New.
12050 2007-03-01 Uros Bizjak <ubizjak@gmail.com>
12052 * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
12053 size of mode1 to check for tieable modes in MMX case.
12055 2007-03-01 Richard Sandiford <richard@codesourcery.com>
12057 * Makefile.in (rtlanal.o): Depend on tree.h.
12058 * rtl.h (offset_within_section_p, split_const): Declare.
12059 * rtlanal.c: Include tree.h.
12060 (offset_within_block_p): New function, taken from
12061 mips_offset_within_object_p.
12062 (split_const): New function, taken from mips_split_const.
12063 * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
12065 * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
12066 (CONSTANT_ADDRESS_P): Only accept legitimate constants.
12067 (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
12068 * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
12069 (m68k_illegitimate_symbolic_constant_p): New function.
12070 * config/m68k/m68k.md (movsi): Remove misleading predicates.
12071 If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
12072 symbolic constant that might be outside the symbol's section,
12073 move the symbol first and then add the offset.
12074 * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
12076 * config/mips/mips.c (mips_split_const): Delete.
12077 (mips_offset_within_object_p): Delete.
12078 (mips_symbolic_constant_p): Use offset_within_section_p and
12079 split_const instead of mips_offset_within_object_p and
12081 (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
12082 (mips_legitimize_const_move, print_operand_reloc)
12083 (mips_dangerous_for_la25_p): Use split_const instead of
12086 2007-02-28 Eric Christopher <echristo@apple.com>
12088 * Makefile.in (install-include-dir): Don't rm -rf include.
12090 2007-02-28 Richard Guenther <rguenther@suse.de>
12092 PR middle-end/30364
12093 * fold-const.c (fold_binary): Do not associate expressions
12094 with more than one variable for integer types that do not wrap.
12096 2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
12098 * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
12099 Delete, and replace with...
12100 (fold_builtin_call_array): This. Update callers to use it.
12101 * fold-const.c (fold_build_call_list): Delete, and replace with...
12102 (fold_build_call_array): This.
12103 (fold_build_call_list_initializer): Delete, and replace with...
12104 (fold_build_call_array_initializer): This.
12105 * tree.h: Update declarations to reflect above changes.
12107 * c-typeck.c (build_function_call): Store converted arguments
12108 in a stack-allocated array instead of building a list.
12109 (convert_arguments): Store arguments in the array passed in as an
12110 argument, and return the actual number of arguments.
12111 * c-format.c: (check_function_format): Pass arguments in an
12112 array instead of a list.
12113 * c-common.c (check_function_nonnull): Likewise.
12114 (check_function_sentinel): Likewise.
12115 (check_function_arguments): Likewise.
12116 * c-common.h: Update declarations to reflect above changes.
12118 2007-02-28 Jan Hubicka <jh@suse.cz>
12120 * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
12121 PRED_NEGATIVE_RETURN): Update outcomes.
12123 2007-02-28 Bernd Schmidt <bernd.schmidt@analog.com>
12125 * calls.c (emit_library_call_value_1): Handle partial registers
12126 correctly when building up CALL_INSN_FUNCTION_USAGE.
12128 2007-02-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
12130 * pa/predicates.md (move_src_operand): Allow zero for mode.
12131 * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
12134 2007-02-27 Uros Bizjak <ubizjak@gmail.com>
12137 * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
12138 *movv2df_internal): Enable pattern only for valid operand
12140 * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
12141 tie only 128bit modes. For MMX registers, tie only 64bit modes.
12143 2007-02-27 Mike Stump <mrs@apple.com>
12145 * config/darwin-crt3.c: Avoid compilation when compiling for a
12148 2007-02-27 Joseph Myers <joseph@codesourcery.com>
12150 * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
12152 (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
12153 for fixed headers and limits.h.
12154 (install-include-dir, install-headers-tar, install-headers-cpio,
12155 install-headers-cp, real-install-headers-tar,
12156 real-install-headers-cpio, real-install-headers-cp): Handle
12157 include-fixed as well as include.
12158 (install-mkheaders): Don't install files that go only in include
12160 * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
12161 from GCC_INCLUDE_DIR.
12162 * gcc.c (process_command): Remove special -BstageN/ handling.
12163 (do_spec_1): Add include-fixed directories.
12165 2007-02-27 Bernd Schmidt <bernd.schmidt@analog.com>
12167 * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
12169 * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
12171 * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
12174 2007-02-27 Mark Mitchell <mark@codesourcery.com>
12176 * c-common.c (get_priority): Add check for
12177 SUPPORTS_INIT_PRIORITY.
12179 2007-02-27 Bernd Schmidt <bernd.schmidt@analog.com>
12181 * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
12183 * config/bfin/bfin.c: Include "cfglayout.h".
12184 (MAX_LSETUP_DISTANCE): New macro.
12185 (struct loop_info): New members incoming, incoming_src and
12186 incoming_dest. Delete member predecessor.
12187 (length_for_loop): New function.
12188 (bfin_optimize_loop): Handle more different loop structures.
12189 (bfin_discover_loop): Rework detection of predecessor blocks by
12190 examining incoming edges.
12191 (bfin_discover_loops, bfin_free_loops): New functions, broken out of
12193 (bfin_reorder_loops): New function.
12194 (bfin_reorg_loops): Use these three new functions.
12196 * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
12197 REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
12198 (CONSTRAINT_LEN): Add entry for 'q'.
12199 (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
12200 Add 'q' constraints.
12201 (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
12202 (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
12204 * config/bfin/bfin.md (add_with_carry): New pattern.
12205 (s_or_u, su_optab, su_modifier): New code macros/attrs.
12206 (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
12207 <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
12208 support unsigned multiplies too. Removed incorrect commutativity from
12209 operand 1 constraint where appropriate.
12210 (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
12212 (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
12213 <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
12215 (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
12216 usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
12217 usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
12218 usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
12219 usmulhisi_hh_huh): New patterns.
12221 * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
12222 lshifthi3): Fix output template to use half reg for operand 2.
12224 * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
12227 * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
12229 2007-02-27 Andreas Schwab <schwab@suse.de>
12231 * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
12233 2007-02-27 Jan Hubicka <jh@suse.cz>
12235 * predict.c (last_basic_block_p): Remove.
12236 (tree_estimate_probability): Update return heuristic for commonized
12239 2007-02-26 Brooks Moses <brooks.moses@codesourcery.com>
12241 * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
12243 2007-02-26 Brooks Moses <brooks.moses@codesourcery.com>
12245 * doc/include/gcc-common.texi (versionsubtitle): New macro.
12246 * doc/cpp.texi: Standardize title page.
12247 * doc/cppinternals.texi: Likewise.
12248 * doc/gcc.texi: Standardize title page, remove version number
12249 from copyright page.
12250 * doc/gccint.texi: Likewise.
12251 * doc/install.texi: Standardize title page, add table of
12254 2007-02-26 Jan Hubicka <jh@suse.cz>
12256 * predict.def: Set outcomes according to more recent results.
12257 (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
12258 Remove dead predictors.
12259 * predict.c (return_prediction): Fix pasto.
12261 2007-02-27 Bernd Schmidt <bernd.schmidt@analog.com>
12263 * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
12264 change; avoid a memory leak when returning early.
12266 2007-02-26 Mark Mitchell <mark@codesourcery.com>
12268 * c-decl.c (static_ctors): Move to c-common.c.
12269 (static_dtors): Likewise.
12270 (finish_function): Use c_record_cdtor_fn.
12271 (build_cdtor): Move to c-common.c.
12272 (c_write_global_declarations): Use c_build_cdtor_fns.
12273 * c-common.h (static_ctors): Declare.
12274 (static_dtors): Likewise.
12275 (c_record_cdtor_fn): Likewise.
12276 (c_build_cdtor_fns): Likewise.
12277 * c-common.c (static_ctors): New variable.
12278 (static_dtors): Likewise.
12279 (c_record_cdtor_fn): New function.
12280 (build_cdtor): Move from c-decl.c
12281 (c_build_cdtor_fns): New function.
12283 * output.h (assemble_addr_to_section): Declare.
12284 (get_cdtor_priority_section): Likewise.
12285 * varasm.c (assemble_addr_to_section): New function.
12286 (get_cdtor_priority_section): Likewise.
12287 (default_named_section_asm_out_destructor): Use them.
12288 (destor_dtor_section_asm_out_destructor): Likewise.
12289 (default_named_section_asm_out_constructor): Likewise.
12290 (default_ctor_section_asm_out_constructor): Likewise.
12291 * config.gcc (*-*-vxworks*): Include vxworks.o.
12292 * config/t-vxworks (vxworks.o): New target.
12293 * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
12294 (TARGET_ASM_CONSTRUCTOR): Define.
12295 (TARGET_ASM_DESTRUCTOR): Likewise.
12296 (vxworks_asm_out_constructor): Declare.
12297 (vxworks_asm_out_destructor): Likewise.
12299 * c-common.c (get_priority): Check that we have not just an
12300 INTEGER_CST, but an integer constant with integeral type.
12302 2007-02-25 Uros Bizjak <ubizjak@gmail.com>
12304 PR tree-optimization/30938
12305 * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
12306 use &dt[nargs-1] instead of &dt[nargs] in the call to
12307 vect_is_simple_use().
12309 2007-02-25 Ulrich Weigand <uweigand@de.ibm.com>
12311 * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
12312 from register elimination as PRE_MODIFY / POST_MODIFY increments.
12313 Do not attempt to handle MEM inside auto-inc expressions.
12314 * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
12315 of a register modified by an auto-inc expression. However, do handle
12316 elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
12317 (elimination_effects): Prohibit elimination of a register modified
12318 by an auto-inc expression. Disable register elimination rules whose
12319 target register is modified by an auto-inc expression with variable
12322 2007-02-25 Zdenek Dvorak <dvorakz@suse.cz>
12324 * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
12326 (array_at_struct_end_p): New function.
12327 (idx_infer_loop_bounds): Use it.
12328 (estimate_numbers_of_iterations_loop): Export.
12329 * predict.c (predict_loops): Use estimated_loop_iterations_int.
12330 Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
12331 (tree_estimate_probability): Call record_loop_exits.
12332 * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
12333 (estimated_loop_iterations, estimated_loop_iterations_int,
12334 estimated_loop_iterations_tree): New functions.
12335 (analyze_siv_subscript_cst_affine,
12336 compute_overlap_steps_for_affine_1_2,
12337 analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
12338 (analyze_miv_subscript): Use estimated_loop_iterations_tree.
12339 * predict.def (PRED_LOOP_ITERATIONS): Update comment.
12340 (PRED_LOOP_ITERATIONS_GUESSED): New.
12341 * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
12342 * cfgloop.h (estimate_numbers_of_iterations_loop,
12343 estimated_loop_iterations_int): Declare.
12345 2007-02-25 Mark Mitchell <mark@codesourcery.com>
12347 * doc/extend.texi: Document optional priority argument to
12348 constructors and destructors.
12349 * tree.c (init_priority_for_decl): Adjust GTY markers.
12350 (init_ttree): Use priority-info hash functions for
12351 init_priority_for_decl.
12352 (tree_map_eq): Rename to ...
12353 (tree_map_base_eq): ... this.
12354 (tree_map_marked_p): Rename to ...
12355 (tree_map_base_marked_p): ... this.
12356 (tree_map_base_hash): New function.
12357 (decl_init_priority_lookup): Rework.
12358 (decl_fini_priority_lookup): New function.
12359 (decl_priority_info): New function.
12360 (decl_init_priority_insert): Use it.
12361 (decl_fini_priority_insert): Likewise.
12362 (decl_restrict_base_lookup): Adjust for refactoring of tree_map
12364 (decl_restrict_base_insert): Likewise.
12365 (decl_debug_expr_insert): Likewise.
12366 (decl_value_expr_lookup): Likewise.
12367 (decl_value_expr_insert): Likewise.
12368 * tree.h (priority_type): New type.
12369 (decl_init_priority_lookup): Use priority_type.
12370 (decl_fini_priority_lookup): New function.
12371 (decl_init_priority_insert): Use priority_type.
12372 (decl_fini_priority_insert): New function.
12373 (DECL_HAS_INIT_PRIORITY): Tweak comments.
12374 (DECL_INIT_PRIORITY): Likewise.
12375 (SET_DECL_INIT_PRIORITY): Add comment.
12376 (DECL_FINI_PRIORITY): New macro.
12377 (SET_DECL_FINI_PRIORITY): Likewise.
12378 (DEFAULT_INIT_PRIORITY): Document.
12379 (MAX_INIT_PRIORITY): Likewise.
12380 (MAX_RESERVED_INIT_PRIORITY): Likewise.
12381 (tree_map_base): New type.
12382 (tree_map_base_eq): New function.
12383 (tree_map_base_hash): Likewise.
12384 (tree_map_base_marked_p): Likewise.
12385 (tree_map): Inherit from tree_map_base.
12386 (tree_map_eq): Make it a macro.
12387 (tree_map_marked_p): Likewise.
12388 (tree_int_map): Inherit from tree_map_base.
12389 (tree_int_map_eq): Make it a macro.
12390 (tree_int_map_hash): Likewise.
12391 (tree_int_map_marked_p): Likewise.
12392 (tree_priority_map): New type.
12393 (tree_priority_map_eq): New macro.
12394 (tree_priority_map_hash): Likewise.
12395 (tree_priority_map_marked_p): Likewise.
12396 * varasm.c (emults_decl): Adjust for refactoring of tree_map
12398 (emutls_common_1): Likewise.
12399 * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
12400 * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
12401 of tree_map hierarchy.
12402 * tree-cfg.c (move_stmt_r): Likewise.
12403 (new_label_mapper): Likewise.
12404 * c-tree.h (c_expand_body): Move to ...
12405 * c-common.h (c_expand_body): ... here.
12406 * c-decl.c (c_expand_body): Move to ...
12407 * c-common.c (c_expand_body): ... here.
12408 (c_common_attribute_table): Allow 1 argument for the constructor
12409 and destructor attributes.
12410 (get_priority): New function.
12411 (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
12412 (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
12414 2007-02-24 Jan Hubicka <jh@suse.cz>
12416 PR middle-end/30509
12417 * tree-inline.c (copy_bb): Produce exact copy of EH info when
12418 copying for inlining.
12420 2007-02-24 Uros Bizjak <ubizjak@gmail.com>
12421 Jan Hubicka <jh@suse.cz>
12424 * i386.c (counter_mode): New function.
12425 (expand_set_or_movmem_via_loop): Use it.
12426 (expand_movmem_epilogue): Likewise; fix pasto.
12427 (ix86_expand_movmem): Do emit guard even for constant counts.
12428 (ix86_expand_setmem): Likewise.
12430 2007-02-25 Nick Clifton <nickc@redhat.com>
12432 * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
12433 (JUMP_TABLES_IN_TEXT_SECTION): Define.
12435 2007-02-24 Uros Bizjak <ubizjak@gmail.com>
12438 * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
12439 count argument with 0x10, not with 0x16.
12440 (expand_setmem_epilogue): Ditto.
12442 2007-02-24 Mike Stump <mrs@apple.com>
12444 * config/i386/i386.c (output_pic_addr_const): Stubify optimized
12447 2007-02-24 Richard Guenther <rguenther@suse.de>
12449 PR middle-end/30951
12450 * fold-const.c (fold_binary): Fold x +- CST op x for
12451 EQ_EXPR and NE_EXPR.
12453 2007-02-24 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
12455 * pa.md (muldi3): Force subregs to registers in 64-bit expander.
12457 2007-02-24 Jan Hubicka <jh@suse.cz>
12459 * cgraphunit.c (decide_is_function_needed): Honor
12460 -fkeep-inline-functions.
12462 2007-02-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12464 * builtins.c (fold_builtin_modf): New.
12465 (fold_builtin_2): Use it.
12467 2007-02-24 Bernd Schmidt <bernd.schmidt@analog.com>
12469 * loop-iv.c (implies_p): Detect additional cases where A implies B.
12470 (determine_max_iter): Take additional LOOP arg; all callers changed.
12471 Lose broken logic dealing with PLUS. Try to limit the upper bound by
12472 one using simplifications.
12473 (simplify_using_initial_values): Return if the expression becomes
12474 invalid due to altered regs.
12476 2007-02-23 DJ Delorie <dj@redhat.com>
12478 * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
12480 2007-02-23 Mike Stump <mrs@apple.com>
12482 * tlink.c (scan_linker_output): Parse linker messages from
12483 darwin9's linker better.
12485 2007-02-23 Steve Ellcey <sje@cup.hp.com>
12488 * varpool.c (varpool_assemble_pending_decls): Set
12489 varpool_last_needed_node to null.
12491 2007-02-23 DJ Delorie <dj@redhat.com>
12493 * config/i386/i386.c (ix86_data_alignment): Don't specify an
12494 alignment bigger than the object file can handle.
12496 2007-02-23 Uros Bizjak <ubizjak@gmail.com>
12499 * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
12500 zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
12501 (*movsf_1): Penalize MMX moves.
12503 2007-02-23 Bernd Schmidt <bernd.schmidt@analog.com>
12505 * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
12506 2^32-1 or more times unless flag_unsafe_loop_optimizations.
12508 * loop-iv.c (determine_max_iter): Moved in front of its sole user.
12510 2007-02-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12512 * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
12513 (fold_builtin_1): Use them.
12514 * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
12515 BUILT_IN_SIGNIFICAND.
12517 2007-02-23 H.J. Lu <hongjiu.lu@intel.com>
12519 * config/i386/i386.c (bdesc_1arg): Initialize
12520 IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
12521 "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
12522 (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
12523 and IX86_BUILTIN_MOVSLDUP.
12525 2007-02-22 Paolo Bonzini <bonzini@gnu.org>
12527 PR rtl-optimization/30841
12528 * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
12530 2007-02-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12532 * builtins.c (fold_builtin_frexp): New.
12533 (fold_builtin_2): Use it.
12535 2007-02-22 Mark Mitchell <mark@codesourcery.com>
12537 * doc/invoke.texi (Spec Files): Document getenv spec function.
12539 * gcc.c (getenv_spec_function): New function.
12540 (static_spec_functions): Add it.
12541 * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
12542 (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
12545 2007-02-22 Michael Matz <matz@suse.de
12548 * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
12549 (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
12551 2007-02-22 Ian Lance Taylor <iant@google.com>
12554 * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
12555 (mem_loc_descriptor): Call it.
12557 2007-02-22 Zdenek Dvorak <dvorakz@suse.cz>
12558 Ira Rosen <irar@il.ibm.com>
12560 * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
12562 2007-02-22 Ira Rosen <irar@il.ibm.com>
12564 PR tree-optimization/30843
12565 * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
12566 stores only after all the group is vectorized.
12568 2007-02-22 Dorit Nuzman <dorit@il.ibm.com>
12570 PR tree-optimization/30858
12571 * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
12572 in the reduction cycle have a single use in the loop.
12573 * tree-vectorizer.h (relevant): Add documentation.
12575 2007-02-20 Mike Stump <mrs@apple.com>
12577 * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
12578 * configure: Regenerate.
12580 2007-02-21 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
12582 Change the defaults of some parameters and options.
12583 * config/spu/spu-protos.h (spu_optimization_options): Declare.
12584 * config/spu/spu.c (spu_optimization_options): Add.
12585 (spu_override_options): Change params in spu_optimization_options.
12586 * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
12588 Register 127 is only 16 byte aligned when used as a frame pointer.
12589 * config/spu/spu-protos.h (spu_init_expanders): Declare.
12590 * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
12591 HARD_FRAME_POINTER_REGNUM.
12592 (spu_legitimate_address): Use regno_aligned_for_reload.
12593 (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
12594 aligned when frame_pointer_needed is true.
12595 (spu_init_expanders): New. Set alignment of HARD_FRAME_POINTER_REGNUM
12597 * config/spu/spu.h (INIT_EXPANDERS): Define.
12599 Make sure shift and rotate instructions have valid immediate operands.
12600 * config/spu/predicates.md (spu_shift_operand): Remove.
12601 * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
12602 * config/spu/constraints.md (W, O): Extend range.
12603 * config/spu/spu.md (umask, nmask): Define.
12604 (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
12605 lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
12606 rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
12607 rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
12608 spu_nonmem_operand instead of spu_shift_operands. Use new modifiers.
12609 (lshr<mode>3_reg): Fix rtl description.
12611 Make sure mulhisi immediate operands are valid.
12612 * config/spu/predicates.md (imm_K_operand): Add.
12613 * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
12615 Generate constants using fsmbi and andi.
12616 * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
12617 (print_operand, spu_split_immediate, classify_immediate,
12618 fsmbi_const_p): Handle IC_FSMBI2.
12620 Correctly handle a CONST_VECTOR containing symbols.
12621 * config/spu/spu.c (print_operand): Handle HIGH correctly.
12622 (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
12623 (immediate_load_p): Allow symbols that use 2 instructions to create.
12624 (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
12625 with symbols when flag_pic is set.
12626 (const_vector_immediate_p): New.
12627 (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
12628 accept a CONST_VECTOR with symbols.
12629 (spu_legitimate_constant_p): Use const_vector_immediate_p. Don't
12630 accept a CONST_VECTOR with symbols when flag_pic is set. Handle HIGH
12632 * config/spu/spu.md (high, low): Delete.
12633 (low_<mode>): Define.
12635 Remove INTRmode and INTR_REGNUM, which didn't work.
12636 * config/spu/spu.c (spu_conditional_register_usage): Remove reference
12638 * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
12639 set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
12640 peephole2 pattern): Don't use INTR or 131.
12641 (movintrcc): Delete.
12642 * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
12643 CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
12644 * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
12645 (UNSPEC_SET_INTR): Add.
12646 * config/spu/spu-modes.def (INTR): Remove.
12648 More accurate warnings about run-time relocations.
12649 * config/spu/spu.c (reloc_diagnostic): Test in_section.
12651 Correctly warn about immediate arguments to specific intrinsics.
12652 * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
12653 (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
12654 the instruction predicate.
12656 Fix tree check errors with latest update.
12657 * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
12659 (spu_expand_builtin): Use CALL_EXPR_FN.
12661 Add missing specific intrinsics.
12662 * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
12664 * config/spu/spu_internals.h: Ditto.
12666 Fix incorrect operand modifiers.
12667 * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
12668 * config/spu/spu.md (xor<mode>3): Change %S to %J.
12670 Optimize one case of zero_extend of a vec_select.
12671 * config/spu/spu.md (_vec_extractv8hi_ze): Add.
12673 Accept any immediate for hbr.
12674 * config/spu/spu.md (hbr): Change s constraints to i.
12676 2007-02-21 Paul Brook <paul@codesourcery.com>
12678 * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
12679 condexec_count when skipping USE and CLOBBER.
12681 2007-02-21 Nick Clifton <nickc@redhat.com>
12683 * common.opt (Warray-bounds): Add Warning attribute.
12684 (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
12686 (fsized-zeroes): Add Optimization attribute.
12687 (fsplit-wide-types, ftree-scev-cprop): Likewise.
12688 * c.opt (Wc++0x-compat): Add Warning attribute.
12690 2007-02-21 Ulrich Weigand <uweigand@de.ibm.com>
12692 PR middle-end/30761
12693 * reload1.c (eliminate_regs_in_insn): In the single_set special
12694 case, attempt to re-recognize the insn before falling back to
12695 having reload fix it up.
12697 2007-02-20 Eric Christopher <echristo@gmail.com>
12699 * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
12700 Rewrite accordingly.
12701 (frv_read_iacc_argument): Ditto.
12702 (frv_expand_set_builtin): Take a call instead of arglist, update for
12704 (frv_expand_unop_builtin): Ditto.
12705 (frv_expand_binop_builtin): Ditto.
12706 (frv_expand_cut_builtin): Ditto.
12707 (frv_expand_binopimm_builtin): Ditto.
12708 (frv_expand_voidbinop_builtin): Ditto.
12709 (frv_expand_int_void2arg): Ditto.
12710 (frv_expand_prefetches): Ditto.
12711 (frv_expand_voidtriop_builtin): Ditto.
12712 (frv_expand_voidaccop_builtin): Ditto.
12713 (frv_expand_load_builtin): Ditto.
12714 (frv_expand_store_builtin): Ditto.
12715 (frv_expand_mdpackh_builtin): Ditto.
12716 (frv_expand_mclracc_builtin): Ditto.
12717 (frv_expand_mrdacc_builtin): Ditto.
12718 (frv_expand_mwtacc_builtin): Ditto.
12719 (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
12722 2007-02-20 Janis Johnson <janis187@us.ibm.com>
12724 * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
12725 * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
12727 (HAVE_GAS_DFP): Check for assembler support of decimal floating
12728 point instructions.
12729 * configure: Regenerate.
12730 * config.in: Regenerate.
12731 * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
12732 * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
12733 masks to power6 and power6x and to POWERPC_MASKS.
12734 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
12736 * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
12737 * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
12738 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
12739 Access PROTOTYPE as variable, not mask.
12741 2007-02-20 Steven Bosscher <steven@gcc.gnu.org>
12743 * rtl.h (remove_reg_equal_equiv_notes): New prototype.
12744 * rtlanal.c (remove_reg_equal_equiv_notes): New function.
12745 * combine.c (adjust_for_new_dest): Use it.
12746 * postreload.c (reload_combine): Likewise.
12748 2007-02-20 Steven Bosscher <steven@gcc.gnu.org>
12750 * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
12751 notes on an insn with multiple sets, even if single_set returns
12752 non-NULL for that insn.
12754 2007-02-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12756 * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
12757 scalbn and scalbln.
12759 2007-02-20 Geoffrey Keating <geoffk@apple.com>
12761 * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
12762 if user didn't pass it.
12763 * config/i386/darwin.h (CC1_SPEC): Likewise.
12764 * config/rs6000/darwin.h (CC1_SPEC): Likewise.
12765 (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
12766 -mmacosx-version-min.
12768 2007-02-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12769 Uros Bizjak <ubizjak@gmail.com>
12771 * optabs.h (enum optab_index): Add new OTI_scalb.
12772 (scalb_optab): Define corresponding macro.
12773 * optabs.c (init_optabs): Initialize scalb_optab.
12774 * genopinit.c (optabs): Implement scalb_optab using scalb?f3
12776 * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
12777 BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
12778 (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
12779 and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
12780 flag_unsafe_math_optimizations is set.
12782 * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
12783 to implement scalbf, scalb and scalbl built-ins as inline x87
12786 2007-02-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
12787 DJ Delorie <dj@redhat.com>
12790 * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
12791 (diagnostic_report_diagnostic): ... here, and turn them into real
12792 errors. If warnings are inhibited, no need to do anything.
12794 2007-02-20 Uros Bizjak <ubizjak@gmail.com>
12796 * config/i386/i386.md (expm1xf2): Reorder insn sequence for
12797 better code generation.
12799 2007-02-20 Ben Elliston <bje@au.ibm.com>
12801 * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
12803 2007-02-20 Kazu Hirata <kazu@codesourcery.com>
12805 * config/alpha/alpha.c, config/alpha/alpha.md,
12806 config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
12807 config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
12808 config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
12809 config/arm/lib1funcs.asm: Follow spelling conventions.
12811 * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
12812 config/fr30/fr30.md, config/i386/i386.h,
12813 config/iq2000/iq2000.h, config/iq2000/predicates.md,
12814 config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
12815 config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
12816 config/pdp11/pdp11.c, config/pdp11/pdp11.h,
12817 config/rs6000/altivec.md, config/rs6000/rs6000.c,
12818 config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
12819 config/sparc/sparc.c, config/sparc/sparc.h,
12820 config/sparc/sparc.md, config/spu/constraints.md,
12821 config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
12824 2007-02-20 Alan Modra <amodra@bigpond.net.au>
12827 * varasm.c (use_blocks_for_decl_p): Return false for decls with
12830 2007-02-19 Kazu Hirata <kazu@codesourcery.com>
12832 * doc/invoke.texi (-ftree-lrs): Remove.
12834 2007-02-19 Diego Novillo <dnovillo@redhat.com>
12836 * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
12839 2007-02-19 Lee Millward <lee.millward@codesourcery.com>
12841 * config/ia64/ia64.c (ia64_expand_builtin): Use the
12842 new CALL_EXPR_FN macro for retrieving the function
12843 declaration of the input expression.
12845 2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
12847 * c.opt (Waddress): New.
12848 * common.opt (Walways-true): Delete.
12849 (Wstring-literal-comparison): Delete.
12850 * doc/invoke.texi (Warning Options): Delete -Walways-true and
12851 -Wstring-literal-comparison. Add -Waddress.
12853 (Walways-true): Delete.
12854 (Wstring-literal-comparison): Delete.
12855 * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
12856 consistently instead of -Walways-true in example.
12857 * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
12858 * c-typeck.c (parser_build_binary_op): Replace
12859 -Wstring-literal-comparison and -Walways-true with -Waddress.
12860 * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
12863 2007-02-19 Eric Botcazou <ebotcazou@adacore.com>
12865 * tree-cfg.c (dump_function_to_file): Be prepared for functions
12866 without DECL_STRUCT_FUNCTION initialized.
12868 2007-02-19 Eric Botcazou <ebotcazou@adacore.com>
12870 * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
12871 due to calls to functions taking pointers as parameters.
12873 2007-02-19 Richard Henderson <rth@redhat.com>
12876 * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
12879 2007-02-19 Andreas Krebbel <krebbel1@de.ibm.com>
12881 * config/s390/s390.c (s390_call_saved_register_used,
12882 s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
12883 accessed to the new scheme.
12885 2007-02-19 Jan-Benedict Glaw <jbglaw@lug-owl.de>
12887 * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
12888 (cris_print_index, cris_print_operand, cris_print_operand_address)
12889 (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
12890 (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
12891 (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
12892 GET_CODE () == xxx.
12893 * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
12894 EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
12895 GO_IF_LEGITIMATE_ADDRESS): Ditto.
12896 * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
12897 (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
12898 (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
12899 (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
12900 (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
12901 (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
12902 (uminsi3, call, call_value): Ditto.
12903 (define_split: indir_to_reg_split, unnamed): Ditto.
12905 2007-02-19 Dorit Nuzman <dorit@il.ibm.com>
12907 PR tree-optimization/30975
12908 * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
12911 2007-02-18 Eric Christopher <echristo@gmail.com>
12913 * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
12914 Remove use of arglist.
12915 (mips_expand_builtin): Remove use of arglist, pass in expr.
12916 (mips_expand_builtin_direct): Rewrite handling for arglist removal.
12917 (mips_expand_builtin_movtf): Ditto.
12918 (mips_expand_builtin_compare): Ditto.
12920 2007-02-19 Alexandre Oliva <aoliva@redhat.com>
12922 * tree-sra.c (sra_build_assignment): Replace assertion
12923 checking with a comment explaining why it can't be done.
12925 2007-02-18 Sandra Loosemore <sandra@codesourcery.com>
12927 PR middle-end/30833
12928 * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
12929 during CALL_EXPR representation conversion.
12930 * tree-ssa-propagate.c (set_rhs): Likewise.
12932 2007-02-19 Alexandre Oliva <aoliva@redhat.com>
12934 * tree-sra.c (sra_build_assignment): Disable assertion checking
12937 2007-02-18 Roger Sayle <roger@eyesopen.com>
12939 * function.c (gimplify_parameters): Call build_gimple_modify_stmt
12940 instead of calling build2 with a GIMPLE_MODIFY_STMT.
12941 * gimple-low.c (lower_function_body, lower_builtin_setjmp):
12943 * gimplify.c (build_stack_save_restore, gimplify_return_expr,
12944 gimplify_decl_expr, gimplify_self_mod_expr, gimplify_cond_expr,
12945 gimplify_init_ctor_eval_range, gimple_push_cleanup,
12946 gimplify_omp_for, gimplify_omp_atomic_pipeline,
12947 gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
12948 force_gimple_operand): Likewise.
12949 * ipa-cp.c (constant_val_insert): Likewise.
12950 * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
12951 lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
12952 perfect_nestify): Likewise.
12953 * langhooks.c (lhd_omp_assignment): Likewise.
12954 * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
12955 lower_copyprivate_clauses, lower_send_clauses,
12956 lower_send_shared_vars, expand_parallel_call,
12957 expand_omp_for_generic, expand_omp_for_static_nochunk,
12958 expand_omp_for_static_chunk, expand_omp_sections,
12959 lower_omp_single_copy, lower_omp_for_lastprivate,
12960 lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
12961 * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
12962 tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
12965 2007-02-19 Kazu Hirata <kazu@codesourcery.com>
12967 * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
12968 config/sh/sh.md: Follow spelling conventions.
12970 * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
12971 config/frv/predicates.md: Follow spelling conventions.
12973 * config/m68k/linux-unwind.h: Fix a comment typo.
12974 * target.h: Follow spelling conventions.
12976 2007-02-18 Roger Sayle <roger@eyesopen.com>
12978 PR rtl-optimization/28173
12979 * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
12980 (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
12981 Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
12982 Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
12983 <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
12985 2007-02-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12987 * builtins.c (fold_builtin_load_exponent): New.
12988 (fold_builtin_2): Use it.
12990 2007-02-18 Steven Bosscher <steven@gcc.gnu.org>
12992 PR rtl-optimization/30773
12993 * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
12994 if we fail to attach a REG_EQUIV note.
12996 2007-02-18 David Edelsohn <edelsohn@gnu.org>
12997 Roger Sayle <roger@eyesopen.com>
12999 * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
13001 2007-02-18 Sandra Loosemore <sandra@codesourcery.com>
13003 * calls.c (initialize_argument_information): Pass original EXP
13004 and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments. Move
13005 code to split complex arguments here, as part of initializing the
13007 (expand_call): Remove code that builds a list of arguments and
13008 inserts implicit arguments into it. Instead, just count how many
13009 implicit arguments there will be so we can determine the size of
13010 the ARGS array, and let initialize_argument_information do the work.
13011 (split_complex_values): Delete unused function.
13013 2007-02-18 Eric Botcazou <ebotcazou@adacore.com>
13015 * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
13017 2007-02-18 Eric Botcazou <ebotcazou@adacore.com>
13019 * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
13020 for arg pointer based indexed addressing.
13022 2007-02-18 Kazu Hirata <kazu@codesourcery.com>
13024 * config/ia64/ia64.h, config/ia64/ia64.md,
13025 config/ia64/predicates.md, config/ia64/sysv4.h: Follow
13026 spelling conventions.
13028 2007-02-18 Roman Zippel <zippel@linux-m68k.org>
13030 * config/m68k/m68k.c (split_di): New.
13031 * config/m68k/m68k-protos.h: Declare split_di.
13032 * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
13033 Improve predicate handling and split constant shifts.
13035 2007-02-18 Roman Zippel <zippel@linux-m68k.org>
13037 * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
13038 parameter for register bitfield operations, general predicates
13041 2007-02-18 Roman Zippel <zippel@linux-m68k.org>
13043 * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
13044 * config/m68k/linux-unwind.h: New file.
13046 2007-02-18 Kazu Hirata <kazu@codesourcery.com>
13048 * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
13049 config/i386/athlon.md, config/ia64/ia64.md,
13050 config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
13051 df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
13052 ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
13053 tree-ssa-loop-niter.c, tree-vect-analyze.c,
13054 tree-vect-transform.c: Fix comment typos.
13056 2007-02-17 Kazu Hirata <kazu@codesourcery.com>
13058 * sched-deps.c (find_insn_list): Remove.
13059 * sched-int.h: Remove the prototype for find_insn_list.
13061 2007-02-16 Geoffrey Keating <geoffk@apple.com>
13063 * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
13065 (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
13066 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
13067 darwin_rs6000_override_options.
13068 (C_COMMON_OVERRIDE_OPTIONS): Expect
13069 darwin_macosx_version_min to be non-NULL always.
13070 (TARGET_C99_FUNCTIONS): Likewise.
13071 (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
13072 (DARWIN_MINVERSION_SPEC): New.
13073 * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
13074 * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
13076 (DARWIN_MINVERSION_SPEC): New.
13077 * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
13079 * config/darwin-c.c (darwin_cpp_builtins): Expect
13080 darwin_macosx_version_min to be non-NULL always.
13082 * config/rs6000/rs6000.c: Clean up trailing whitespace.
13084 2007-02-16 Uros Bizjak <ubizjak@gmail.com>
13086 * config/i386/i386.h (x86_use_xchgb): New.
13087 (TARGET_USE_XCHGB): New macro.
13088 * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
13089 * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
13090 Split after reload into bswaphi for shifts of 8.
13091 (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
13092 (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
13093 or when optimizing for size.
13095 2007-02-16 Richard Guenther <rguenther@suse.de>
13096 Christian Bruel <christian.bruel@st.com>
13098 * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
13099 DECLs but prefer SSA_NAMEs over DECLs.
13101 2007-02-16 Richard Guenther <rguenther@suse.de>
13103 * tree-flow-inline.h (single_imm_use_p): Remove.
13104 (zero_imm_uses_p): Likewise.
13105 * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
13106 instead of single_imm_use_p.
13107 * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
13110 2007-02-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
13113 * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
13114 nested double- and backquotes.
13116 2007-02-15 Roger Sayle <roger@eyesopen.com>
13118 PR middle-end/30391
13119 * tree.c (expr_align): Handle MODIFY_EXPR. GIMPLE_MODIFY_STMT
13120 should be unreachable.
13121 (build2_stat): Allow construction of MODIFY_EXPR at any time.
13122 For the time being redirect GIMPLE_MODIFY_STMT to the new
13123 (renamed) build_gimple_modify_stmt_stat.
13124 (build2_gimple_stat): Rename to...
13125 (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
13126 Always build a GIMPLE_MODIFY_STMT node.
13127 * tree.h (build2_gimple, build2_gimple_stat): Delete.
13128 (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
13131 * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
13132 gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
13133 * tree-complex.c (set_component_ssa_name, expand_complex_move,
13134 expand_complex_div_wide): Likewise.
13135 * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
13136 * tree-ssa-loop-im.c (schedule_sm): Likewise.
13137 * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
13138 * tree-ssa-loop-manip.c (create_iv): Likewise.
13139 * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
13140 abs_replacement): Likewise.
13141 * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
13142 realify_fake_stores): Likewise.
13144 * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
13145 node rather than a GIMPLE_MODIFY_STMT node.
13146 (std_gimpify_va_arg_expr, expand_builtin_va_copy,
13147 fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
13149 (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
13150 * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
13151 GIMPLE_MODIFY_STMT.
13153 2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
13155 PR middle-end/30433
13156 * fold-const.c (fold_comparison): Add back the
13157 folding of constant complex comparisions.
13159 2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
13161 PR middle-end/30729
13162 * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
13163 effects unknown to this function, return early.
13165 2007-02-15 Ian Lance Taylor <iant@google.com>
13167 * lower-subreg.c (move_eh_region_note): New static function.
13168 (resolve_simple_move): Call it.
13169 (decompose_multiword_subregs): Track blocks for which we resolve a
13170 simple move which is also a control flow insn. Pass them to
13171 find_many_sub_basic_blocks.
13172 (pass_lower_subreg): Add TODO_verify_flow.
13173 (pass_lower_subreg2): Likewise.
13175 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
13176 Brooks Moses <brooks.moses@codesourcery.com>
13177 Lee Millward <lee.millward@codesourcery.com>
13179 * tree.h (enum tree_code_class): Add tcc_vl_exp.
13180 (VL_EXP_CLASS_P): New.
13181 (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
13183 (TREE_OPERAND_CHECK_CODE): Likewise.
13184 (GIMPLE_STMT_OPERAND_CHECK): Likewise.
13185 (TREE_RTL_OPERAND_CHECK): Likewise.
13186 (tree_operand_check_failed): Make second parameter the whole tree
13187 instead of its code. Fixed callers.
13188 (VL_EXP_CHECK): New.
13189 (TREE_OPERAND_LENGTH): New.
13190 (VL_EXP_OPERAND_LENGTH): New.
13191 (CALL_EXPR_FN): New.
13192 (CALL_EXPR_STATIC_CHAIN): New.
13193 (CALL_EXPR_ARGS): New.
13194 (CALL_EXPR_ARG): New.
13195 (call_expr_nargs): New.
13196 (CALL_EXPR_ARGP): New.
13197 (build_nt_call_list): Declare.
13198 (build_vl_exp_stat): Declare.
13199 (build_vl_exp): New.
13200 (build_call_list): Declare.
13201 (build_call_nary): Declare.
13202 (build_call_valist): Declare.
13203 (build_call_array): Declare.
13204 (call_expr_arg): Declare.
13205 (call_expr_argp): Declare.
13206 (call_expr_arglist): Declare.
13207 (fold_build_call_list): Declare.
13208 (fold_build_call_list_initializer): Declare.
13209 (fold_call_expr): Declare to replace fold_builtin.
13210 (fold_builtin_fputs): Update to agree with modified definition.
13211 (fold_builtin_strcpy): Likewise.
13212 (fold_builtin_strncpy): Likewise.
13213 (fold_builtin_memory_chk): Likewise.
13214 (fold_builtin_stxcpy_chk): Likewise.
13215 (fold_builtin_strncpy_chk): Likewise.
13216 (fold_builtin_next_arg): Likewise.
13217 (fold_build_call_expr): Declare.
13218 (fold_builtin_call_list): Declare.
13219 (fold_builtin_call_valist): Declare.
13220 (build_call_expr): Declare.
13221 (validate_arglist): Update to agree with modified definition.
13222 (tree_operand_length): New.
13223 (call_expr_arg_iterator): New.
13224 (init_call_expr_arg_iterator): New.
13225 (next_call_expr_arg): New.
13226 (first_call_expr_arg): New.
13227 (more_call_expr_args_p): New.
13228 (FOR_EACH_CALL_EXPR_ARG): New.
13230 * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
13231 and tcc_gimple_stmt.
13232 (tree_code_size): Update documentation. Use sizeof (tree) rather
13233 than sizeof (char *).
13234 (tree_size): Likewise. Add case for tcc_vl_exp.
13235 (tree_node_structure): Add case for tcc_vl_exp.
13236 (contains_placeholder_p): Likewise.
13237 (substitute_in_expr): Likewise.
13238 (substitute_placeholder_in_expr): Likewise.
13239 (stabilize_reference_1): Likewise.
13240 (build3_stat): Remove logic for CALL_EXPRs. Replace with assertion
13241 to diagnose breakage of this interface for constructing CALL_EXPRs.
13242 (build_nt): Add similar assertion here.
13243 (build_nt_call_list): New.
13244 (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
13245 (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
13247 (get_callee_fndecl): Use new CALL_EXPR accessors.
13248 (tree_operand_check_failed): Change parameters to pass entire node
13249 instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
13250 (process_call_operands): New.
13251 (build_vl_exp_stat): New.
13252 (build_call_list): New.
13253 (build_call_nary): New.
13254 (build_call_valist): New.
13255 (build_call_array): New.
13256 (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13257 (call_expr_arglist): New.
13259 * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
13260 tcc_vl_exp instead of a fixed-size tcc_expression.
13262 * doc/c-tree.texi (CALL_EXPR): Document new representation and
13263 accessors for CALL_EXPRs.
13264 (AGGR_INIT_EXPR): Likewise.
13266 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
13267 Brooks Moses <brooks.moses@codesourcery.com>
13268 Lee Millward <lee.millward@codesourcery.com>
13270 * builtins.c (c_strlen): Return NULL_TREE instead of 0.
13271 (expand_builtin_nonlocal_goto): Change parameter to be entire
13272 CALL_EXPR instead of an arglist. Use new CALL_EXPR accessors.
13273 (expand_builtin_prefetch): Likewise.
13274 (expand_builtin_classify_type): Likewise.
13275 (mathfn_built_in): Return NULL_TREE instead of 0.
13276 (expand_errno_check): Use new CALL_EXPR accessors.
13277 (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
13278 Return NULL_RTX instead of 0.
13279 (expand_builtin_mathfn_2): Likewise.
13280 (expand_builtin_mathfn_3): Likewise.
13281 (expand_builtin_interclass_mathfn): Likewise.
13282 (expand_builtin_sincos): Likewise.
13283 (expand_builtin_cexpi): Likewise.
13284 (expand_builtin_int_roundingfn): Likewise.
13285 (expand_builtin_int_roundingfn_2): Likewise.
13286 (expand_builtin_pow): Likewise.
13287 (expand_builtin_powi): Likewise.
13288 (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
13289 of arglist, fixing callers appropriately. Use new CALL_EXPR
13290 accessors and constructors. Return NULL_RTX instead of 0.
13291 (expand_builtin_strstr): Likewise.
13292 (expand_builtin_strchr): Likewise.
13293 (expand_builtin_strrchr): Likewise.
13294 (expand_builtin_strpbrk): Likewise.
13295 (expand_builtin_memcpy): Likewise.
13296 (expand_builtin_mempcpy): Likewise.
13297 (expand_builtin_mempcpy_args): New.
13298 (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
13299 (expand_builtin_memmove_args): New.
13300 (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
13301 (expand_movstr): Likewise.
13302 (expand_builtin_strcpy): Likewise.
13303 (expand_builtin_strcpy_args): New.
13304 (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
13305 (expand_builtin_strncpy): Likewise.
13306 (expand_builtin_memset): Likewise.
13307 (expand_builtin_memset_args): New.
13308 (expand_builtin_bzero): Similarly to expand_builtin_memset.
13309 (expand_builtin_memcmp): Likewise.
13310 (expand_builtin_strcmp): Likewise.
13311 (expand_builtin_strncmp): Likewise.
13312 (expand_builtin_strcat): Likewise.
13313 (expand_builtin_strncat): Likewise.
13314 (expand_builtin_strspn): Likewise.
13315 (expand_builtin_strcspn): Likewise.
13316 (expand_builtin_args_info): Likewise.
13317 (expand_builtin_va_start): Likewise.
13318 (gimplify_va_arg_expr): Likewise.
13319 (expand_builtin_va_end): Likewise.
13320 (expand_builtin_va_copy): Likewise.
13321 (expand_builtin_frame_address): Likewise.
13322 (expand_builtin_alloca): Likewise.
13323 (expand_builtin_bswap): Likewise.
13324 (expand_builtin_unop): Likewise.
13325 (expand_builtin_fputs): Likewise.
13326 (expand_builtin_expect): Likewise.
13327 (expand_builtin_fabs): Likewise.
13328 (expand_builtin_copysign): Likewise.
13329 (expand_builtin_printf): Likewise.
13330 (expand_builtin_fprintf): Likewise.
13331 (expand_builtin_sprintf): Likewise.
13332 (expand_builtin_init_trampoline): Likewise.
13333 (expand_builtin_signbit): Likewise.
13334 (expand_builtin_fork_or_exec): Likewise.
13335 (expand_builtin_sync_operation): Likewise.
13336 (expand_builtin_compare_and_swap): Likewise.
13337 (expand_builtin_lock_test_and_set): Likewise.
13338 (expand_builtin_lock_release): Likewise.
13339 (expand_builtin): Likewise.
13340 (builtin_mathfn_code): Likewise.
13342 (fold_builtin_constant_p): Pass call arguments individually instead
13343 of as an arglist, fixing callers appropriately. Use new CALL_EXPR
13344 accessors and constructors. Return NULL_TREE instead of 0.
13345 (fold_builtin_expect): Likewise.
13346 (fold_builtin_classify_type): Likewise.
13347 (fold_builtin_strlen): Likewise.
13348 (fold_builtin_nan): Likewise.
13349 (integer_valued_real_p): Likewise.
13350 (fold_trunc_transparent_mathfn): Likewise.
13351 (fold_fixed_mathfn): Likewise.
13352 (fold_builtin_cabs): Likewise.
13353 (fold_builtin_sqrt): Likewise.
13354 (fold_builtin_cbrt): Likewise.
13355 (fold_builtin_cos): Likewise.
13356 (fold_builtin_cosh): Likewise.
13357 (fold_builtin_tan): Likewise.
13358 (fold_builtin_sincos): Likewise.
13359 (fold_builtin_cexp): Likewise.
13360 (fold_builtin_trunc): Likewise.
13361 (fold_builtin_floor): Likewise.
13362 (fold_builtin_ceil): Likewise.
13363 (fold_builtin_round): Likewise.
13364 (fold_builtin_int_roundingfn): Likewise.
13365 (fold_builtin_bitop): Likewise.
13366 (fold_builtin_bswap): Likewise.
13367 (fold_builtin_logarithm): Likewise.
13368 (fold_builtin_hypot): Likewise.
13369 (fold_builtin_pow): Likewise.
13370 (fold_builtin_powi): Likewise.
13371 (fold_builtin_exponent): Likewise.
13372 (fold_builtin_memset): Likewise.
13373 (fold_builtin_bzero): Likewise.
13374 (fold_builtin_memory_op): Likewise.
13375 (fold_builtin_bcopy): Deleted; call site changed to invoke
13376 fold_builtin_memory_op directly.
13377 (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
13378 (fold_builtin_strncpy): Likewise.
13379 (fold_builtin_memcmp): Likewise.
13380 (fold_builtin_strcmp): Likewise.
13381 (fold_builtin_strncmp): Likewise.
13382 (fold_builtin_signbit): Likewise.
13383 (fold_builtin_copysign): Likewise.
13384 (fold_builtin_isascii): Likewise.
13385 (fold_builtin_toascii): Likewise.
13386 (fold_builtin_isdigit): Likewise.
13387 (fold_builtin_fabs): Likewise.
13388 (fold_builtin_abs): Likewise.
13389 (fold_builtin_fmin_fmax): Likewise.
13390 (fold_builtin_carg): Likewise.
13391 (fold_builtin_classify): Likewise.
13392 (fold_builtin_unordered_cmp): Likewise.
13394 (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
13395 New functions split out from fold_builtin_1.
13396 (fold_builtin_n): New.
13397 (fold_builtin_varargs): New.
13398 (fold_builtin): Deleted. Most callers changed to use fold_call_expr
13400 (fold_call_expr): New.
13401 (build_function_call_expr): Rewrite to use new helper function.
13402 (fold_builtin_call_list): New.
13403 (build_call_expr): New.
13404 (fold_builtin_call_valist): New.
13405 (rewrite_call_expr): New.
13406 (validate_arg): New.
13407 (validate_arglist): Change parameter to be entire CALL_EXPR instead
13408 of an arglist. Change return type to bool. Use new CALL_EXPR
13411 (fold_builtin_strstr): Pass call arguments individually instead
13412 of as an arglist, fixing callers appropriately. Use new CALL_EXPR
13413 accessors and constructors. Return NULL_TREE instead of 0.
13414 (fold_builtin_strchr): Likewise.
13415 (fold_builtin_strrchr): Likewise.
13416 (fold_builtin_strpbrk): Likewise.
13417 (fold_builtin_strcat): Likewise.
13418 (fold_builtin_strncat): Likewise.
13419 (fold_builtin_strspn): Likewise.
13420 (fold_builtin_strcspn): Likewise.
13421 (fold_builtin_fputs): Likewise.
13422 (fold_builtin_next_arg): Likewise.
13423 (fold_builtin_sprintf): Likewise.
13425 (expand_builtin_object_size): Use new CALL_EXPR accessors. Use
13426 NULL_RTX instead of 0.
13427 (expand_builtin_memory_chk): Likewise.
13428 (maybe_emit_chk_warning): Likewise.
13429 (maybe_emit_sprintf_chk_warning): Likewise.
13431 (fold_builtin_object_size): Pass call arguments individually instead
13432 of as an arglist, fixing callers appropriately. Use new CALL_EXPR
13433 accessors and constructors. Return NULL_TREE instead of 0.
13434 (fold_builtin_memory_chk): Likewise.
13435 (fold_builtin_stxcpy_chk): Likewise.
13436 (fold_builtin_strncpy_chk): Likewise.
13437 (fold_builtin_strcat_chk): Likewise.
13438 (fold_builtin_strcat_chk): Likewise.
13439 (fold_builtin_strncat_chk): Likewise.
13440 (fold_builtin_sprintf_chk): Likewise.
13441 (fold_builtin_snprintf_chk): Likewise.
13442 (fold_builtin_printf): Likewise.
13443 (fold_builtin_vprintf): Likewise.
13445 * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
13447 (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
13448 (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13449 (extract_muldiv_1): Add VL_EXP_CLASS_P case.
13450 (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
13451 (fold_unary): Likewise.
13452 (fold_binary): Likewise.
13453 (fold_ternary): Remove CALL_EXPR case, since they are no longer
13454 ternary expressions.
13455 (fold): Add logic for tcc_vl_exp.
13456 (fold_checksum_tree): Make it know about tcc_vl_exp. Use
13457 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13458 (fold_build3_stat): Add assertion to flag broken interface for
13459 constructing CALL_EXPRs.
13460 (fold_build_call_list): New.
13461 (fold_build_call_list_initializer): New.
13462 (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
13464 (fold_strip_sign_ops): Likewise.
13466 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
13467 Brooks Moses <brooks.moses@codesourcery.com>
13468 Lee Millward <lee.millward@codesourcery.com>
13470 * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
13471 accessors and dump arguments explicitly.
13473 * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
13475 (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
13477 (print_call_name): Use new CALL_EXPR accessors.
13479 * print-tree.c (print_node): Add case tcc_vl_exp. Print
13480 CALL_EXPR arguments explicitly instead of as a list. Use
13481 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13483 * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
13484 (vrp_visit_stmt): Likewise.
13486 * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
13487 know about tcc_vl_exp. Use TREE_OPERAND_LENGTH instead of
13489 (force_move_till_expr): Likewise.
13491 * targhooks.c (default_external_stack_protect_fail): Use
13492 build_call_expr instead of build_function_call_expr.
13493 (default_hidden_stack_protect_fail): Likewise.
13495 * tree-complex.c (expand_complex_libcall): Use build_call_expr to
13498 * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
13499 and walk arguments explicitly.
13501 * tree-ssa-loop-niter.c (simplify_replace_tree): Use
13502 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13503 (expand_simple_operations): Likewise.
13504 (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
13506 * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
13507 of TREE_CODE_LENGTH.
13508 (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
13510 * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
13511 instead of TREE_CODE_LENGTH.
13513 * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
13514 (tree_ic_transform): Likewise.
13515 (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
13516 parameter instead of arglist. Fix callers.
13517 (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
13518 (tree_stringops_transform): Likewise.
13519 (tree_indirect_call_to_profile): Likewise.
13520 (tree_stringops_values_to_profile): Likewise.
13522 * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
13523 (eliminate_tail_call): Likewise.
13525 * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
13527 * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
13528 Use TREE_OPERAND_LENGTH and generalize to handle any number of
13530 (instantiate_parameters_1): Can't handle tcc_vl_exp here.
13532 * omp-low.c (build_omp_barrier): Use build_call_expr.
13533 (lower_rec_input_clauses): Likewise.
13534 (lower_reduction_clauses): Likewise.
13535 (expand_parallel_call): Likewise.
13536 (maybe_catch_exception): Likewise.
13537 (expand_omp_for_generic): Likewise.
13538 (expand_omp_for_static_nochunk): Likewise.
13539 (expand_omp_sections): Likewise.
13540 (lower_omp_single_simple): Likewise.
13541 (lower_omp_single_copy): Likewise.
13542 (lower_omp_master): Likewise.
13543 (lower_omp_ordered): Likewise.
13544 (lower_omp_critical): Likewise.
13546 * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
13547 (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
13549 * tree-gimple.c (is_gimple_call_addr): Fix doc.
13550 (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
13551 TREE_CODE_LENGTH. Add tcc_vl_exp case.
13553 * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
13554 and generalize to handle any number of operands.
13555 (chrec_contains_undetermined): Likewise.
13556 (tree_contains_chrecs): Likewise.
13557 (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
13559 * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
13561 * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors. Use
13562 fold_call_expr instead of fold_builtin.
13563 (ccp_fold_builtin): Likewise. Update calls into builtins.c to
13564 match declarations there.
13565 (fold_stmt): Use new CALL_EXPR constructor and accessors. Doc
13568 * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
13569 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13571 * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
13572 (scan_function): Add case tcc_vl_exp for CALL_EXPR.
13574 * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
13577 * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
13578 (execute_cse_sincos): Use new CALL_EXPR accessors.
13580 * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
13582 * gimple-low.c (lower_function_body): Use build_call_expr.
13583 (lower_builtin_setjmp): Likewise.
13585 * expr.c (emit_block_move_via_libcall): Use build_call_expr.
13586 (set_storage_via_libcall): Likewise.
13587 (safe_from_p): Add tcc_vl_exp case. Use TREE_OPERAND_LENGTH
13588 instead of TREE_CODE_LENGTH.
13589 (expand_expr_real_1): Use new CALL_EXPR accessors.
13591 * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
13592 generalize to handle any number of operands.
13593 (TB_parent_eq): Likewise.
13595 * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
13596 (strip_builtin_expect): Likewise.
13598 * function.c (gimplify_parameters): Use build_call_expr.
13600 * tree-vectorizer.c (vect_is_simple_reduction): Use
13601 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13603 * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
13604 (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
13606 * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
13609 * gimplify.c (build_stack_save_restore): Use build_call_expr.
13610 (gimplify_decl_expr): Likewise.
13611 (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
13612 Use new CALL_EXPR iterators.
13613 (gimplify_modify_expr_to_memcpy): Use build_call_expr.
13614 (gimplify_modify_expr_to_memset): Likewise.
13615 (gimplify_variable_sized_compare): Likewise.
13616 (gimplify_omp_atomic_fetch_op): Likewise.
13617 (gimplify_omp_atomic_pipeline): Likewise.
13618 (gimplify_omp_atomic_mutex): Likewise.
13619 (gimplify_function_tree): Likewise.
13621 * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
13622 (call_expr_flags): Likewise.
13623 (expand_call): Likewise.
13625 * except.c (expand_builtin_eh_return_data_regno): Pass entire
13626 CALL_EXPR as parameter instead of arglist. Use new CALL_EXPR
13629 * coverage.c (create_coverage): Use build_call_expr.
13631 * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
13632 (temp_call_expr_obstack): New.
13633 (pool_copy_list): Delete.
13634 (temp_copy_call_expr): New.
13635 (phi_translate): Add case tcc_vl_exp for CALL_EXPR. Use new
13636 CALL_EXPR accessors. Get rid of special goo for copying argument
13637 lists and use temp_copy_call_expr instead.
13638 (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR. Use new
13639 CALL_EXPR accessors.
13640 (create_expression_by_pieces): Likewise. Use build_call_array
13641 to construct the result instead of fold_build3.
13642 (create_value_expr_from): Add tcc_vl_exp. Delete special goo for
13643 dealing with argument lists.
13644 (init_pre): Remove references to expression_node_pool and
13645 list_node_pool. Init temp_call_expr_obstack instead.
13646 (fini_pre): Remove references to expression_node_pool and
13649 * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
13650 and walk arguments explicitly instead of as a list.
13652 * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
13653 (mx_register_decls): Likewise.
13654 (mudflap_register_call): Likewise.
13655 (mudflap_finish_file): Likewise.
13657 * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
13658 (ipa_callsite_compute_param): Likewise.
13660 * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
13661 accessors and constructor.
13663 * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
13664 accessors and constructor.
13665 (convert_tramp_reference): Likewise.
13666 (convert_call_expr): Likewise.
13667 (finalize_nesting_tree_1): Likewise.
13669 * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
13672 * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
13674 * tree-inline.c (initialize_inlined_parameters): Pass entire
13675 CALL_EXPR as parameter instead of arglist. Use new CALL_EXPR
13677 (estimate_num_insns_1): Use new CALL_EXPR accessors.
13678 (expand_call_inline): Tidy up call to initialize_inlined_parameters.
13680 * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
13681 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13682 (vectorizable_reduction): Likewise.
13683 (vectorizable_call): Use new CALL_EXPR iterators.
13684 (vectorizable_conversion): Use build_call_expr.
13685 (vectorizable_operation): Use TREE_OPERAND_LENGTH.
13686 (vect_gen_widened_results_half): Use build_call_expr.
13687 (vect_setup_realignment): Likewise.
13688 (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
13690 * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
13691 (pass_through_call): Likewise.
13692 (compute_object_sizes): Likewise. Use fold_call_expr instead of
13695 * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
13696 (tree_gen_pow2_profiler): Likewise.
13697 (tree_gen_one_value_profiler): Likewise.
13698 (tree_gen_ic_func_profiler): Likewise.
13699 (tree_gen_average_profiler): Likewise.
13700 (tree_gen_ior_profiler): Likewise.
13702 * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
13703 (find_func_aliases): Use new CALL_EXPR accessors. Add case
13704 tcc_vl_exp. Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13706 * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
13707 of TREE_CODE_LENGTH.
13709 * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
13710 of TREE_CODE_LENGTH.
13712 * convert.c (convert_to_real): Use new CALL_EXPR accessors and
13714 (convert_to_integer): Likewise.
13716 * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
13719 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
13720 Brooks Moses <brooks.moses@codesourcery.com>
13721 Lee Millward <lee.millward@codesourcery.com>
13723 * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
13725 * config/frv/frv.c (frv_expand_builtin): Likewise.
13726 * config/s390/s390.c (s390_expand_builtin): Likewise.
13728 * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
13729 (sparc_expand_builtin): Use new CALL_EXPR accessors.
13731 * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
13732 (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
13733 instead of arglist. Use new CALL_EXPR accessors on it. Fix callers.
13734 (ix86_expand_store_builtin): Likewise.
13735 (ix86_expand_unop_builtin): Likewise.
13736 (ix86_expand_unop1_builtin): Likewise.
13737 (ix86_expand_sse_compare): Likewise.
13738 (ix86_expand_sse_comi): Likewise.
13739 (ix86_expand_vec_init_builtin): Likewise.
13740 (ix86_expand_vec_ext_builtin): Likewise.
13741 (ix86_expand_vec_set_builtin): Likewise.
13742 (ix86_expand_builtin): Use new CALL_EXPR accessors.
13744 * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
13745 * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
13747 * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
13748 instead of arglist. Use new CALL_EXPR accessors. Fix callers.
13749 (iq2000_expand_builtin): Use new CALL_EXPR accessors.
13751 * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
13753 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
13754 (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
13755 arglist. Use new CALL_EXPR accessors. Fix callers.
13756 (altivec_expand_abs_builtin): Likewise.
13757 (rs6000_expand_binop_builtin): Likewise.
13758 (altivec_expand_predicate_builtin): Likewise.
13759 (altivec_expand_lv_builtin): Likewise.
13760 (spe_expand_stv_builtin): Likewise.
13761 (altivec_expand_stv_builtin): Likewise.
13762 (rs6000_expand_ternop_builtin): Likewise.
13763 (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
13764 (altivec_expand_st_builtin): Likewise.
13765 (altivec_expand_dst_builtin): Likewise.
13766 (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
13767 arglist. Use new CALL_EXPR accessors. Fix callers.
13768 (altivec_expand_vec_set_builtin): Likewise.
13769 (altivec_expand_vec_ext_builtin): Likewise.
13770 (altivec_expand_builtin): Use new CALL_EXPR accessors.
13771 (spe_expand_builtin): Likewise.
13772 (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
13773 arglist. Use new CALL_EXPR accessors. Fix callers.
13774 (spe_expand_evsel_builtin): Likewise.
13775 (rs6000_expand_builtin): Use new CALL_EXPR accessors. VCFUX and
13776 FCFSX cases must construct whole new CALL_EXPR, not just arglist.
13778 * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
13779 instead of arglist. Use new CALL_EXPR accessors. Fix callers.
13780 (arm_expand_unop_builtin): Likewise.
13781 (arm_expand_builtin): Use new CALL_EXPR accessors.
13783 * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
13786 * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
13787 CALL_EXPR instead of arglist. Use new CALL_EXPR accessors.
13789 (bfin_expand_unop_builtin): Likewise.
13790 (bfin_expand_builtin): Use new CALL_EXPR accessors.
13792 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
13793 Brooks Moses <brooks.moses@codesourcery.com>
13794 Lee Millward <lee.millward@codesourcery.com>
13796 * c-semantics.c (build_stmt): Add internal diagnostic check.
13798 * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
13799 accessors. Print arguments explicitly instead of as a list.
13801 * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
13803 * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
13804 (c_finish_omp_flish): Likewise.
13806 * c-common.c (verify_tree): Use new CALL_EXPR accessors. Traverse
13807 arguments explicitly instead of as a list. Use TREE_OPERAND_LENGTH
13808 instead of TREE_CODE_LENGTH.
13809 (check_function_arguments_recurse): Use new CALL_EXPR accessors.
13810 (c_warn_unused_result): Likewise.
13812 2007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
13815 * doc/invoke.texi (Warning Options): Remove
13816 -Werror-implicit-function-declaration.
13817 (Wimplicit-function-declaration): Update description.
13818 * opts.c (common_handle_option): Move handling of -Werror=* to...
13819 (enable_warning_as_error): ...here.
13820 * opts.h (enable_warning_as_error): Declare.
13821 * c-decl.c (implicit_decl_warning): Unless
13822 -Wno-implicit-function-declaration is given, emit a pedwarn if
13823 -std=c99 or emit a warning if -Wimplicit-function-declaration.
13824 * c.opt (Wimplicit-function-declaration): Replace
13825 mesg_implicit_function_declaration with
13826 warn_implicit_function_declaration.
13827 * c-opts.c (c_common_handle_option):
13828 -Werror-implicit-function-declaration is exactly equal as
13829 -Werror=implicit-function-declaration.
13830 (set_Wimplicit): Replace mesg_implicit_function_declaration with
13831 warn_implicit_function_declaration.
13832 (c_common_post_options): -Wimplict-function-declaration is enabled
13833 by default by -std=c99, otherwise is disabled by default.
13834 * c-objc-common.c (c_objc_common_init): Remove flawed logic.
13836 2007-02-15 Eric Botcazou <ebotcazou@adacore.com>
13838 * gimplify.c (gimplify_modify_expr): During gimplification, attach a
13839 DECL on the rhs to a DECL on the lhs for debug info purposes if the
13840 former is ignored but not the latter.
13842 2007-02-15 Eric Botcazou <ebotcazou@adacore.com>
13844 * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
13845 is made and the reference doesn't use the alias set of its type,
13846 do not create the temporary using that type.
13848 2007-02-15 Aldy Hernandez <aldyh@redhat.com>
13850 * jump.c: Remove prototypes for delete_computation and
13851 delete_prior_computation.
13853 2007-02-15 Paolo Bonzini <bonzini@gnu.org>
13855 * jump.c (get_label_after): Delete.
13856 (get_label_before, delete_computation, delete_jump,
13857 delete_prior_computation, follow_jumps): Move...
13858 * reorg.c (delete_computation, delete_prior_computation): ... here...
13859 (get_label_before, delete_jump): ... making these static ...
13860 (follow_jumps): ... and simplifying this since it only runs after
13862 * rtl.h (get_label_after, get_label_before, delete_jump,
13863 follow_jumps): Delete prototypes.
13865 2007-02-15 Paolo Bonzini <bonzini@gnu.org>
13867 * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
13869 2007-02-15 Nick Clifton <nickc@redhat.com>
13871 * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
13872 order to prevent it from being munged by the target.
13874 2007-02-15 Uros Bizjak <ubizjak@gmail.com>
13876 * config/i386/i386.md: Remove misleading comment.
13878 2007-02-15 Alexandre Oliva <aoliva@redhat.com>
13880 * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
13881 reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
13884 2007-02-15 Alexandre Oliva <aoliva@redhat.com>
13886 * tree-sra.c (instantiate_missing_elements): Canonicalize
13888 (sra_build_assignment): New.
13889 (generate_copy_inout, generate_element_copy,
13890 generate_element_zero, generate_one_element_init): Use it.
13892 2007-02-15 Alexandre Oliva <aoliva@redhat.com>
13894 * tree-sra.c (instantiate_missing_elements): Canonicalize
13896 (sra_build_assignment): New.
13897 (generate_copy_inout, generate_element_copy,
13898 generate_element_zero, generate_one_element_init): Use it.
13900 2007-02-15 Alexandre Oliva <aoliva@redhat.com>
13902 * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
13905 2007-02-14 Joseph Myers <joseph@codesourcery.com>
13907 * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
13908 types as aggregates not scalars.
13909 * function.c (assign_stack_temp_for_type): Likewise.
13911 2007-02-14 Roger Sayle <roger@eyesopen.com>
13912 Zdenek Dvorak <dvorakz@suse.cz>
13914 * tree-dump.c (dump_switch_p_1): Require exact match of the option
13917 2007-02-14 Zdenek Dvorak <dvorakz@suse.cz>
13919 * passes.c (next_pass_1): Clear the next field of the copied
13922 2007-02-14 Richard Henderson <rth@redhat.com>
13924 * tree-sra.c (early_sra): New.
13925 (decl_can_be_decomposed_p): Deny va_list if early_sra.
13926 (tree_sra_early, pass_sra_early): New.
13927 * tree-pass.h (pass_sra_early): Declare.
13928 * passes.c (init_optimization_passes): Use it.
13930 2007-02-14 Richard Guenther <rguenther@suse.de>
13932 * flags.h (issue_strict_overflow_warning): Convert to a macro.
13934 2007-02-14 Dorit Nuzman <dorit@il.ibm.com>
13936 PR tree-optimization/30771
13937 * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
13939 (vect_analyze_operations): Induction phis can now be marked as
13941 (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
13942 Update documentation accordingly.
13944 2007-02-14 Nick Clifton <nickc@redhat.com>
13946 * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
13947 most 3 arguments are supported.
13948 (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
13950 2007-02-13 Seongbae Park <seongbae.park@gmail.com>
13952 * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
13953 Ensure dst->current is valid.
13955 2007-02-13 Paul Brook <paul@codesourcery.com>
13957 * config.gcc: Add arm*-*-uclinux-*eabi.
13958 * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
13959 (SUBTARGET_EXTRA_LINK_SPEC): Define.
13960 (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
13961 (LINK_GCC_C_SEQUENCE_SPEC): Undef.
13962 (LINK_SPEC): Define.
13963 (LIB_SPEC): Define.
13964 * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
13966 * config/arm/uclinux-eabi.h: New file.
13967 * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
13968 * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
13971 2007-02-13 Ian Lance Taylor <iant@google.com>
13973 * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
13974 * flags.h (warn_strict_overflow): Declare.
13975 (enum warn_strict_overflow_code): Define.
13976 (issue_strict_overflow_warning): New static inline function.
13977 * opts.c (warn_strict_overflow): New variable.
13978 (common_handle_option): Handle OPT_Wstrict_overflow and
13979 OPT_Wstrict_overflow_.
13980 * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
13982 * fold-const.c: Include intl.h.
13983 (fold_deferring_overflow_warnings): New static variable.
13984 (fold_deferred_overflow_warning): New static variable.
13985 (fold_deferred_overflow_code): New static variable.
13986 (fold_defer_overflow_warnings): New function.
13987 (fold_undefer_overflow_warnings): New function.
13988 (fold_undefer_and_ignore_overflow_warnings): New function.
13989 (fold_deferring_overflow_warnings_p): New function.
13990 (fold_overflow_warning): New static function.
13991 (make_range): Add strict_overflow_p parameter. Change all
13993 (extract_muldiv, extract_muldiv_1): Likewise.
13994 (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
13995 tree_expr_nonnegative_p.
13996 (fold_negate_expr): Call fold_overflow_warning.
13997 (fold_range_test): Likewise.
13998 (fold_comparison): Likewise.
13999 (fold_binary): Likewise. Call tree_expr_nonnegative_warnv_p
14000 instead of tree_expr_nonnegative_p.
14001 (tree_expr_nonnegative_warnv_p): Rename from
14002 tree_expr_nonnegative_p, add strict_overflow_p parameter.
14003 (tree_expr_nonnegative_p): New function.
14004 (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
14005 strict_overflow_p parameter.
14006 (tree_expr_nonzero_p): New function.
14007 * passes.c (verify_interpass_invariants): New static function.
14008 (execute_one_pass): Call it.
14009 * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
14011 (number_of_iterations_exit, loop_niter_by_eval): Likewise.
14012 (estimate_numbers_of_iterations): Likewise.
14013 (scev_probably_wraps_p): Likewise.
14014 * tree-ssa-ccp.c: Include "toplev.h".
14015 (evaluate_stmt): Defer fold overflow warnings until we know we are
14017 (struct fold_stmt_r_data): Add stmt field.
14018 (fold_stmt_r): Defer fold overflow warnings until we know we
14020 (fold_stmt): Initialize stmt field of fold_stmt_r_data.
14021 (fold_stmt_inplace): Likewise.
14022 * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
14023 (cleanup_control_expr_graph): Defer fold overflow warnings until
14024 we know we are going to optimize.
14025 * tree-cfg.c (fold_cond_expr_cond): Likewise.
14026 * tree-ssa-threadedge.c (simplify_control_stmt_condition):
14028 * tree-vrp.c (vrp_expr_computes_nonnegative): Call
14029 tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
14030 * tree-ssa-loop-manip.c (create_iv): Likewise.
14031 * c-typeck.c (build_conditional_expr): Likewise.
14032 (build_binary_op): Likewise.
14033 * tree-vrp.c (vrp_expr_computes_nonzero): Call
14034 tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
14035 (extract_range_from_unary_expr): Likewise.
14036 * simplify-rtx.c (simplify_const_relational_operation): Warn when
14037 assuming that signed overflow does not occur.
14038 * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
14039 * tree.h (tree_expr_nonnegative_warnv_p): Declare.
14040 (fold_defer_overflow_warnings): Declare.
14041 (fold_undefer_overflow_warnings): Declare.
14042 (fold_undefer_and_ignore_overflow_warnings): Declare.
14043 (fold_deferring_overflow_warnings_p): Declare.
14044 (tree_expr_nonzero_warnv_p): Declare.
14045 * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
14046 of warning options.
14047 (Warning Options): Document -Wstrict-overflow.
14048 * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
14049 (tree-ssa-ccp.o): Likewise.
14050 (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
14051 (fold-const.o): Depend on intl.h.
14053 2007-02-13 Ian Lance Taylor <iant@google.com>
14055 PR middle-end/30751
14056 * lower-subreg.c (resolve_simple_move): Decompose subregs in
14059 2007-02-13 Stuart Hastings <stuart@apple.com>
14061 * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
14063 2007-02-13 Richard Henderson <rth@redhat.com>
14065 * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
14066 handled_component_p before looking for the indirect_ref.
14068 2007-02-13 Richard Henderson <rth@redhat.com>
14070 * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
14071 remove flags clobber.
14072 (bswapsi2): New expander, emit code for !TARGET_BSWAP.
14073 (bswaphi_lowpart): New.
14074 (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
14075 remove TARGET_BSWAP test. Delete expander of the same name.
14077 * optabs.c (widen_bswap, expand_doubleword_bswap): New.
14078 (expand_unop): Use them.
14080 2007-02-13 Uros Bizjak <ubizjak@gmail.com>
14082 * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
14083 *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
14084 *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
14085 *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
14086 *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
14087 *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
14088 *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
14089 assembler dialect choice from asm templates.
14091 2007-02-12 Richard Henderson <rth@redhat.com>
14093 * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
14094 (fixuns_trunc<SSEMODEF>si2): Use it.
14095 * config/i386/sse.md (vec_setv4sf_0): Export.
14096 * config/i386/i386.c (ix86_build_const_vector): Export.
14097 (ix86_split_convert_uns_si_sse): Rename from
14098 ix86_expand_convert_uns_si_sse and rewrite as a splitter.
14099 * config/i386/i386-protos.h: Update.
14101 2007-02-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14104 * c-typeck.c (c_finish_return): Improve warning message.
14106 2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14108 * alias.c (find_symbolic_term): Delete unused function.
14110 2007-02-12 Uros Bizjak <ubizjak@gmail.com>
14112 * config/i386/i386.md (paritydi2, paritysi2): New expanders.
14113 (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
14114 (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
14116 2007-02-12 Eric Botcazou <ebotcazou@adacore.com>
14118 * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
14119 * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
14120 the function, temporarily point the debug interface to the null one.
14122 2007-02-12 Eric Botcazou <ebotcazou@adacore.com>
14124 * dwarf2out.c (round_up_to_align): New static function.
14125 (field_byte_offset): Use it to round the offset.
14127 2007-02-12 Richard Henderson <rth@redhat.com>
14129 * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
14130 (inswl_const): Export.
14132 2007-02-12 Richard Henderson <rth@redhat.com>
14134 * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
14135 result mode of the libcall, convert back to outmode.
14137 2007-02-12 Roger Sayle <roger@eyesopen.com>
14139 * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
14140 (bswapdi2): New define_expand to implement 32-bit implementation.
14142 2007-02-12 Nick Clifton <nickc@redhat.com>
14144 * doc/invoke.texi (Overall Options): Document --help=.
14145 * gcc.c (target_help_flag): Rename to print_subprocess_flag.
14146 (cc1_options): Pass --help= on to cc1.
14147 (display_help): Add description of --help=.
14148 (process_command): Add code to handle --help=. Allow translated
14149 --help and --target-help switches to be passed on to compiler
14151 (main): Remove unused if statement.
14152 * opts.c (columns): Remove.
14153 (LEFT_COLUMN): Define.
14154 (wrap_help): Add columns argument.
14155 (print_filtered_help): Change parameters to be an include bitmask,
14156 an exclude bitmask, an any bitmask and the column width. Move the
14157 code to display the params list here. Add code to display the
14158 status of options rather than their descriptions if the quiet flag
14160 (print_specific_help): Change parameters to be an include bitmask,
14161 an exclude bitmask and an any bitmask. Move code to look up the
14162 column width here. Decide upon the title for an options listing.
14163 (common_handle_options): Add code to handle --help=. Adapt code
14164 for --help and --target-help to use the revised form of the
14165 print_specific_help function.
14166 (print_help): Delete.
14167 (print_param_help): Delete.
14168 (print_switch): Delete.
14169 * opts.h (cl_lang_count): Add prototype.
14170 (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
14171 CL_MAX_OPTION_CLASS): New defines.
14172 * optc-gen.awk: Add construction of cl_lang_count.
14173 * c.opt: Add Warning attribute to warning options and Optimization
14174 attribute to optimization options.
14175 * common.opt: Likewise.
14177 Add -fhelp and -ftarget-help as aliases for the transformed --help
14178 and --target-help options.
14179 * opt-functions.awk: Add code to handle Warning and Optimization
14182 2007-02-12 Richard Henderson <rth@redhat.com>
14184 * config/alpha/constraints.md: New file.
14185 * config/alpha/alpha.c: Include tm-constrs.h.
14186 (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
14187 alpha_extra_constraint): Remove.
14188 (alpha_emit_conditional_branch): Use satisfies_constraint_*.
14189 * config/alpha/alpha-protos.h: Update.
14190 * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
14191 (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
14192 (EXTRA_CONSTRAINT): Remove.
14193 * config/alpha/alpha.md: Include constraints.md.
14194 (adddi splitter): Use satisfies_constraint_*.
14195 * config/alpha/predicates.md (add_operand): Likewise.
14196 (sext_add_operand, addition_operation): Likewise.
14198 2007-02-12 Dorit Nuzman <dorit@il.ibm.com>
14200 PR tree-optimization/29145
14201 * tree-data-ref.c (base_addr_differ_p): Make us more conservative
14202 in our handling of restrict qualified pointers.
14204 2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14207 * doc/invoke.texi (Wunused-value): Update description.
14208 (Wextra): Delete item.
14209 * opts.c (set_Wextra): Don't use the value of Wextra to set the
14210 value of Wunused-value.
14211 * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
14212 (c_finish_stmt_expr): Don't check extra_warnings.
14213 (emit_side_effect_warnings): The caller is responsible to check
14216 2007-02-11 Roger Sayle <roger@eyesopen.com>
14217 Matt Thomas <matt@3am-software.com>
14219 * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
14221 2007-02-11 Roger Sayle <roger@eyesopen.com>
14223 * simplify-rtx.c (simplify_relational_operation_1): Optimize
14224 comparisons of POPCOUNT against zero.
14225 (simplify_const_relational_operation): Likewise.
14227 2007-02-11 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14229 * doc/invoke.texi (Wextra): Delete outdated paragraph.
14231 2007-02-11 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14233 * dwarf2out.c (root_type): Delete unused function.
14235 2007-02-11 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14237 * genattrtab.c (contained_in_p): Delete unused function.
14238 (write_expr_attr_cache): Likewise.
14240 2007-02-11 Jan Hubicka <jh@suse.cz>
14242 * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
14245 2007-02-11 Steven Bosscher <steven@gcc.gnu.org>
14247 * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
14248 to add the REG_EQ* note.
14249 * see.c (see_merge_one_use_extension): Likewise.
14250 * local-alloc.c (update_equiv_regs): Likewise. Also don't
14251 turn REG_EQUAL notes into REG_EQUIV notes if the target
14252 register may have more than one set.
14253 * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
14254 * gcse.c (try_replace_reg): Likewise.
14255 * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
14256 * calls.c (fixup_tail_calls): Likewise. Abort if there is
14257 more than one REG_EQUIV note.
14258 * reload1.c (gen_reload): Use set_unique_reg_note.
14260 2007-02-11 Uros Bizjak <ubizjak@gmail.com>
14262 * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
14263 (ix86_builtin_conversion): New function.
14265 2007-02-06 Mark Mitchell <mark@codesourcery.com>
14268 * tree.h (DECL_REPLACEABLE_P): New macro.
14269 * except.c (set_nothrow_function_flags): Likewise.
14271 2007-02-11 Tehila Meyzels <tehila@il.ibm.com>
14272 Ira Rosen <irar@il.ibm.com>
14273 Dorit Nuzman <dorit@il.ibm.com>
14275 * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
14276 * targhooks.c (default_builtin_vectorized_conversion): New.
14277 * targhooks.h (default_builtin_vectorized_function): New declaration.
14278 * target.h (struct vectorize): Add builtin_conversion field.
14279 * tree-vectorizer.h (type_conversion_vec_info_type): New enum
14280 stmt_vec_info_type value.
14281 (vectorizable_conversion): New declaration.
14282 * tree-vect-analyze.c (vect_analyze_operations): Add
14283 vectorizable_conversion call.
14284 * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
14285 * tree-vect-transform.c (vectorizable_conversion): New function.
14286 (vect_transform_stmt): Add case for type_conversion_vec_info_type.
14287 * tree-vect-generic.c (expand_vector_operations_1): Consider correct
14289 * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
14290 (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
14291 (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
14292 or ALTIVEC_BUILTIN_VCFSX.
14294 2007-02-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
14297 * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
14298 CONST_DOUBLE and operand 0 is a hard register.
14299 (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
14300 memory. Fail if operand 1 is a non-zero CONST_INT and operand 0
14301 is a hard floating-point register.
14303 2007-02-10 Richard Henderson <rth@redhat.com>
14304 Jakub Jelinek <jakub@redhat.com>
14305 Alexandre Oliva <aoliva@redhat.com>
14307 * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
14308 * builtin-types.def (BT_WORD): Make unsigned.
14309 (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
14310 * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
14311 (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
14312 * c-decl.c (grokdeclarator): Don't error if !have_tls.
14313 * c-parser.c (c_parser_omp_threadprivate): Likewise.
14314 * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
14316 * expr.c (emutls_var_address): New.
14317 (expand_expr_real_1): Expand emulated tls.
14318 (expand_expr_addr_expr_1): Likewise.
14319 * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
14320 * output.h (emutls_finish): Declare.
14321 * toplev.c (compile_file): Call it.
14322 * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
14323 address before wrapping in CONST.
14324 * varasm.c (emutls_htab, emutls_object_type): New.
14325 (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
14326 (get_emutls_object_name, get_emutls_object_type): New.
14327 (get_emutls_init_templ_addr, emutls_decl): New.
14328 (emutls_common_1, emutls_finish): New.
14329 (assemble_variable): When emulating tls, swap decls; generate
14330 constructor for the emutls objects.
14331 (do_assemble_alias): When emulating tls, swap decl and target name.
14332 (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
14334 * varpool.c (decide_is_variable_needed): Look at force_output.
14335 Recurse for emulated tls.
14336 (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
14337 with decide_is_variable_needed.
14338 * emutls.c: New file.
14339 * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
14340 tls_object for real tls.
14342 2007-02-10 Kaz Kojima <kkojima@gcc.gnu.org>
14344 PR rtl-optimization/29599
14345 * reload1.c (eliminate_regs_in_insn): Take the destination
14346 mode into account when computing the offset.
14348 2007-02-09 Stuart Hastings <stuart@apple.com>
14349 Richard Henderson <rth@redhat.com>
14351 * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
14352 * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
14353 * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
14354 fixuns_truncdfhi2): New.
14355 (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
14356 (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
14357 (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
14358 (floatunssidf2): Allow nonimmediate source.
14359 * config/i386/sse.md (movdi_to_sse): New.
14360 (vec_concatv2di): Drop '*'.
14361 * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
14362 ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
14363 ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
14365 * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
14366 ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
14367 ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
14368 ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
14369 (ix86_build_signbit_mask): Fix decl of v, refactor to call
14370 ix86_build_const_vector.
14371 (x86_emit_floatuns): Rewrite.
14373 2007-02-10 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14375 * genautomata.c (longest_path_length): Delete unused function.
14376 (struct state): Delete unused longest_path_length.
14377 (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
14378 (get_free_state): Delete unused.
14380 2007-02-09 Jan Hubicka <jh@suse.cz>
14382 * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
14383 * doc/invoke.texi (inline-unit-growth): Update default value.
14385 * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
14386 * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
14387 (rebuild_cgraph_edges): Likewise.
14388 * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
14389 (dump_cgraph_node): Dump frequencies.
14390 (cgraph_clone_edge): Add frequency scales.
14391 (cgraph_clone_node): Add freuqnecy.
14392 * cgraph.h (cgraph_edge): Add freuqnecy argument.
14393 (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
14394 (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
14395 * tree-pass.h (TODO_rebuild_frequencies): New constant.
14396 * cgraphunit.c (verify_cgraph_node): Verify frequencies.
14397 (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
14398 (save_inline_function_body): Likewise.
14399 * ipa-inline.c: inluce rtl.h
14400 (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
14401 (cgraph_edge_badness): Use frequencies.
14402 (cgraph_decide_recursive_inlining): Update clonning.
14403 (cgraph_decide_inlining_of_small_function): Dump frequency.
14404 * predict.c (estimate_bb_frequencies): Export.
14405 * predict.h (estimate_bb_frequencies): Declare.
14406 * tree-inline.c (copy_bb): Watch overflows.
14407 (expand_call_inline): Update call of cgraph_create_edge.
14408 (optimize_inline_calls): Use TODO flags to update frequnecies.
14409 * passes.h: Include predict.h
14410 (init_optimization_passes): Move profile ahead.
14411 (execute_function_todo): Handle TODO_rebuild_frequencies.
14413 2007-02-09 Roger Sayle <roger@eyesopen.com>
14415 * config/alpha/alpha.c (emit_insxl): Force the first operand of
14416 the insbl or inswl pattern into a register.
14418 2007-02-09 Roger Sayle <roger@eyesopen.com>
14420 * config/ia64/ia64.md (bswapdi2): New define_insn.
14422 2007-02-09 Richard Henderson <rth@redhat.com>
14424 * config/i386/constraints.md (Ym): New constraint.
14425 * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
14426 (movdi_1_rex64): Split sse and xmm general register moves from
14427 memory move alternatives. Use conditional register constraints.
14428 (movsf_1, movdf_integer): Likewise.
14429 (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
14430 (movdf_integer_rex64): New.
14431 (pushsf_rex64): Fix output constraints.
14432 * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
14433 (sse2_stored): Likewise.
14434 (sse2_storeq_rex64): New.
14435 * config/i386/i386.c (x86_inter_unit_moves): Enable for not
14436 amd and not generic.
14437 (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
14438 for optimize_size. Remove SF/DFmode hack.
14440 2007-02-09 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
14442 * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
14445 2007-02-09 Nathan Sidwell <nathan@codesourcery.com>
14446 Richard Sandiford <richard@codesourcery.com>
14448 * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
14449 (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
14450 (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
14451 m68k/t-mlib to tmake_file.
14452 (m68020-*-elf*, m68k-*-elf*): Likewise. Add t-m68kbare as well.
14453 (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
14454 (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
14455 Allow it to be cf or m68k. Set m68k_arch_family. If that
14456 variable is not empty, add t-$m68k_arch_family to tmake_file.
14457 Add t-mlibs to tmake_file.
14458 * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
14459 * config/m68k/t-cf: New file.
14460 * config/m68k/t-m68k: Likewise.
14461 * config/m68k/t-mlibs: Likewise.
14462 * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14463 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14464 (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
14465 * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14466 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
14468 * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
14469 (INSTALL_LIBGCC): Delete.
14470 (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
14471 * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14472 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14473 (M68K_MLIB_CPU): Define.
14474 * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14475 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14476 (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
14478 2007-02-09 Zdenek Dvorak <dvorakz@suse.cz>
14479 Richard Guenther <rguenther@suse.de>
14481 PR middle-end/23361
14482 * fold-const.c (fold_comparison): Handle obfuscated comparisons
14483 against INT_MIN/INT_MAX.
14484 * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
14485 file if a loop is removed.
14487 2007-02-09 Joseph Myers <joseph@codesourcery.com>
14489 * calls.c (store_one_arg): Pass correct alignment to
14490 emit_push_insn for non-BLKmode values.
14491 * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
14492 unaligned stack slot via a suitably aligned slot.
14494 2007-02-08 DJ Delorie <dj@redhat.com>
14496 * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
14498 (legal_subregs): Use unsigned char, make const.
14499 (m32c_illegal_subreg_p): Use ARRAY_SIZE. Delete unused variables.
14501 2007-02-08 Paul Brook <paul@codesourcery.com>
14503 * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
14504 special interworking needed.
14506 2007-02-08 Harsha Jagasia <harsha.jagasia@amd.com>
14508 * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
14509 conditional to __SSE2__.
14510 (Entries below should have been added to first ChangeLog
14511 entry for amdfam10 dated 2007-02-05)
14512 * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
14514 * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
14516 * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
14519 2007-02-08 DJ Delorie <dj@redhat.com>
14521 * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
14522 * config/m32c/m32c.c (legal_subregs): New.
14523 (m32c_illegal_subreg_p): New.
14524 * config/m32c/predicates.md (m32c_any_operand): Use it to reject
14525 unsupported subregs of hard regs.
14527 2007-02-08 Jan Hubicka <jh@suse.cz>
14529 * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
14530 the same one; always update histograms.
14532 2007-02-08 Diego Novillo <dnovillo@redhat.com>
14534 * passes.c (init_optimization_passes): Tidy comment.
14536 2007-02-08 Roger Sayle <roger@eyesopen.com>
14538 * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
14539 strip zero_extend, bswap and rotates from POCOUNT's argument.
14540 <PARITY>: Likewise, we can strip not, bswap, sign_extend,
14541 zero_extend and rotates from PARITY's argument.
14542 <BSWAP>: A byte-swap followed by a byte-swap is an identity.
14543 (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
14544 of an integer constant at compile-time.
14546 2007-02-08 Diego Novillo <dnovillo@redhat.com>
14549 * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
14551 * tree-ssa-alias.c (compute_is_aliased): Remove. Update all
14554 * tree-ssa-live.c (remove_unused_locals): Do not remove
14555 TREE_ADDRESSABLE variables.
14556 * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
14557 * tree-ssa-operands.c (add_virtual_operand): Remove argument
14558 FOR_CLOBBER. Update all users.
14559 If VAR has an associated alias set, add a virtual operand for
14560 it if no alias is found to conflict with the memory reference.
14562 2007-02-07 Jan Hubicka <jh@suse.cz>
14563 Robert Kidd <rkidd@crhc.uiuc.edu>
14565 * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
14567 2007-02-07 Ian Lance Taylor <iant@google.com>
14569 * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
14571 2007-02-07 Roger Sayle <roger@eyesopen.com>
14573 * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
14574 parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
14575 tablejumpdi, movsi_to_cr_one): Remove constraints from
14576 define_expand's match_operands.
14578 2007-02-07 Roger Sayle <roger@eyesopen.com>
14580 * global.c (compute_regsets): Move declatation of "i" inside of
14581 #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
14583 2007-02-07 Jakub Jelinek <jakub@redhat.com>
14586 * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
14587 of INDIRECT_REF <RESULT_DECL>.
14589 * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
14591 2007-02-06 J"orn Rennecke <joern.rennecke@arc.com>
14592 Kaz Kojima <kkojima@gcc.gnu.org>
14595 * config/sh/sh.c (expand_cbranchdi4): Use scratch register
14597 (sh_initialize_trampoline): Add parentheses to avoid a warning.
14599 2007-02-06 Zdenek Dvorak <dvorakz@suse.cz>
14601 * doc/loop.texi: Document possibility not to perform disambiguation
14602 of loops with multiple latches.
14603 * cfgloopmanip.c (alp_enum_p): Removed.
14604 (add_loop): Handle subloops. Use get_loop_body_with_size.
14605 (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
14606 * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
14607 the new forwarder block.
14608 (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
14609 Handle the case latch is NULL.
14610 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
14611 modifications when marking loop exits.
14612 * ifcvt.c (if_convert): Ditto. Mark loop exits even if cfg cannot
14614 * loop-init.c (loop_optimizer_init): Do not modify cfg. Call
14615 disambiguate_loops_with_multiple_latches.
14616 * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
14617 before fix_loop_structure.
14618 * cfgloop.c: Include pointer-set.h and output.h.
14619 (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
14620 update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
14621 (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
14622 find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
14623 mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
14624 disambiguate_multiple_latches, get_loop_body_with_size,
14625 disambiguate_loops_with_multiple_latches): New functions.
14626 (flow_loop_dump): Dump multiple latch edges.
14627 (flow_loop_nodes_find): Handle loops with multiple latches.
14628 (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
14629 (glb_enum_p): Modified.
14630 (get_loop_body): Use get_loop_body_with_size.
14631 * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
14632 (AVOID_CFG_MODIFICATIONS): New constant.
14633 (disambiguate_loops_with_multiple_latches, add_loop,
14634 get_loop_body_with_size): Declare.
14635 * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
14637 2007-02-06 Seongbae Park <seongbae.park@gmail.com>
14639 PR inline-asm/28686
14640 * global.c (compute_regsets): New function.
14641 (global_alloc): Refactored ELIMINABLE_REGSET
14642 and NO_GLOBAL_ALLOC_REGS computation out.
14643 (rest_of_handle_global_alloc): Call compute_regsets()
14644 for non-optimizing case.
14646 2007-02-06 Richard Henderson <rth@redhat.com>
14648 * config/i386/constraints.md (Y2): Rename from Y.
14649 (Yi): New constraint.
14650 * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
14651 pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
14652 zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
14653 (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
14654 truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
14655 fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
14656 floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
14657 absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
14658 fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
14659 * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
14660 mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
14661 vec_extractv2si_1): Change Y constraints to Y2.
14662 * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
14663 vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
14664 Change Y constraints to Y2.
14665 (sse2_loadld): Change Y constraints to x.
14667 2007-02-06 Roger Sayle <roger@eyesopen.com>
14669 * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
14670 (parity<mode>2): New define_expand using rs6000_emit_parity.
14671 * config/rs6000/rs6000.c (rs6000_emit_popcount,
14672 rs6000_emit_parity): New functions.
14673 * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
14674 rs6000_emit_parity): Prototype here.
14676 2007-02-06 Ian Lance Taylor <iant@google.com>
14678 * lower-subreg.c (simple_move_operand): Reject CONST.
14679 (resolve_clobber): Call validate_change rather than directly
14680 assigning to XEXP (pat, 0).
14682 2006-02-06 Paolo Bonzini <bonzini@gnu.org>
14684 * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
14685 (tree-ssa-reassoc.o): Add pointer-set.h dependency.
14686 (tree-cfg.o): Remove hashtab.h dependency.
14688 * tree-ssa-loop-ivopts.c: Include pointer-set.h.
14689 (struct ivopts_data): Change niters to pointer_map_t.
14690 (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
14691 (niter_for_exit): Create pointer_map on demand. Change for
14693 (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
14694 (free_loop_data): Destroy data->niters if created and reset field.
14695 (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
14696 (tree_ssa_iv_optimize_loop): Check for presence of stale data.
14698 * tree-ssa-reassoc.c: Include pointer-set.h.
14699 (bb_rank): Change to long *.
14700 (operand_rank): Change to pointer_map_t.
14701 (find_operand_rank): Return long, -1 if not found. Declare as inline.
14702 (insert_operand_rank): Accept long.
14703 (operand_entry_hash, operand_entry_eq): Remove.
14704 (get_rank): Return long. Adjust for changes above.
14705 (init_reassoc): Change rank type to long. Adjust creation of bb_rank
14707 (fini_reassoc): Delete operand_rank with pointer_map_destroy.
14709 * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
14710 (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
14711 (insert_vi_for_tree): Rewrite for pointer_map API. Assert argument
14713 (lookup_vi_for_tree): Rewrite for pointer_map API. Return varinfo_t
14714 directly since it cannot be NULL.
14715 (get_vi_for_tree): Rewrite for pointer_map API.
14716 (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
14717 (init_alias_vars): Create vi_for_tree as pointer_map.
14718 (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
14720 * tree-cfg.c: Don't include hashtab.h.
14721 (edge_to_cases): Declare as pointer_map.
14722 (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
14724 (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
14725 (start_recording_case_labels): Create edge_to_cases as pointer_map.
14726 (end_recoding_case_labels): Cleanup edge_to_cases manually before
14728 (record_switch_edge): Delete.
14729 (get_cases_for_edge): Adjust for pointer_map API, inline
14730 record_switch_edge (rewritten for new API), remove goto.
14732 2006-02-06 Paolo Bonzini <bonzini@gnu.org>
14734 * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
14735 * tree-nested.c: Include pointer-set.h.
14736 (var_map_elt, var_map_eq, var_map_hash): Delete.
14737 (struct nesting_info): Remove GTY marker. Change the two htab_t's
14738 to pointer_map_t's.
14739 (nesting_info_bitmap_obstack): New.
14740 (lookup_field_for_decl): Adjust for pointer_map API.
14741 (lookup_tramp_for_decl): Adjust for pointer_map API.
14742 (get_nonlocal_debug_decl): Adjust for pointer_map API.
14743 (get_local_debug_decl): Adjust for pointer_map API.
14744 (convert_nl_goto_reference): Adjust for pointer_map API.
14745 (convert_nl_goto_receiver): Adjust for pointer_map API.
14746 (create_nesting_tree): Create outside GGC space. Create bitmap on
14747 the new obstack. Create field_map and var_map as pointer_maps.
14748 (free_nesting_tree): Adjust for changes to create_nesting_tree.
14750 (lower_nested_functions): Move root here, no need to NULL it.
14751 Initialize and release the obstack.
14753 2007-02-06 Paolo Bonzini <bonzini@gnu.org>
14755 * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
14756 Remove prototypes and make them non-static.
14757 (struct tree_int_map): Remove.
14758 * tree.h (struct tree_int_map): Move here, turning TO into an
14760 (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
14762 * tree.h (TREE_COMPLEXITY): Remove.
14763 (struct tree_exp): Remove complexity field.
14764 * tree.c (build1_stat): Don't set it.
14766 2007-02-06 Dorit Nuzman <dorit@il.ibm.com>
14767 Victor Kaplansky <victork@il.ibm.com>
14769 * tree-vectorizer.c (vect_is_simple_use): Support induction.
14770 (vect_is_simple_reduction): Support reduction with induction as
14771 one of the operands.
14772 (vect_is_simple_iv_evolution): Fix formatting.
14773 * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
14774 formatting. Don't mark induction phis for vectorization.
14775 (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
14776 * tree-vect-transform.c (get_initial_def_for_induction): New function.
14777 (vect_get_vec_def_for_operand): Support induction.
14778 (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
14780 (vectorizable_reduction): Support reduction with induction as one of
14782 (vectorizable_type_demotion): Use def-type of stmt argument rather
14783 than dummy def-type.
14785 * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
14786 flag_tree_scev_cprop.
14787 * common.opt (tree-scev-cprop): New flag.
14789 * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
14790 call to vect_get_new_vect_var.
14792 2007-02-06 Ira Rosen <irar@il.ibm.com>
14794 * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
14795 vectype is not NULL.
14796 (vect_pattern_recog_1): Likewise.
14798 2007-02-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
14800 * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
14801 (fold_negate_expr): Likewise.
14803 2007-02-05 Alexandre Oliva <aoliva@redhat.com>
14806 * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
14807 even if cv-qualification is the same.
14809 2007-02-05 Geoffrey Keating <geoffk@apple.com>
14811 * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
14812 __enable_execute_stack on completion.
14814 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14816 * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
14817 athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
14818 athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
14819 athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
14820 athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
14821 athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
14822 athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
14823 athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
14825 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14827 * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
14828 cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
14829 swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
14830 fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
14831 x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
14832 floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
14833 floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
14834 mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
14835 umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
14836 umuldi3_highpart_rex64, umulsi3_highpart_insn,
14837 umulsi3_highpart_zext, smuldi3_highpart_rex64,
14838 smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
14839 x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
14840 sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
14841 sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
14842 sqrtextenddfxf2_i387): Added amdfam10_decode.
14844 * config/i386/athlon.md (athlon_idirect_amdfam10,
14845 athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
14846 athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
14847 athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
14848 athlon_ivector_store_amdfam10): New define_insn_reservation.
14849 (athlon_idirect_loadmov, athlon_idirect_movstore): Added
14852 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14854 * config/i386/athlon.md (athlon_call_amdfam10,
14855 athlon_pop_amdfam10, athlon_lea_amdfam10): New
14856 define_insn_reservation.
14857 (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
14858 athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
14859 athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
14861 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14863 * config/i386/athlon.md (athlon_sseld_amdfam10,
14864 athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
14865 athlon_mmxssest_short_amdfam10): New define_insn_reservation.
14867 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14869 * config/i386/athlon.md (athlon_sseins_amdfam10): New
14870 define_insn_reservation.
14871 * config/i386/i386.md (sseins): Added sseins to define_attr type
14872 and define_attr unit.
14873 * config/i386/sse.md: Set type attribute to sseins for insertq
14876 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14878 * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
14879 ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
14880 ssecomi_load_amdfam10, ssecomi_amdfam10,
14881 sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
14882 define_insn_reservation.
14883 (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
14885 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14887 * config/i386/athlon.md (cvtss2sd_load_amdfam10,
14888 cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
14889 cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
14890 cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
14891 cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
14892 cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
14893 define_insn_reservation.
14895 * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
14896 cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
14897 cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
14898 cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
14899 cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
14901 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14903 * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
14904 athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
14905 athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
14906 (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
14907 athlon_ssemul_load_k8): Added amdfam10.
14909 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14911 * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
14912 (x86_sse_unaligned_move_optimal): New variable.
14914 * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
14916 (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
14917 for unaligned vector SSE double/single precision loads for AMDFAM10.
14919 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14921 * config/i386/i386.h (TARGET_AMDFAM10): New macro.
14922 (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
14923 Define TARGET_CPU_DEFAULT_amdfam10.
14924 (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
14925 (processor_type): Add PROCESSOR_AMDFAM10.
14927 * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
14928 processor_type in config/i386/i386.h.
14929 Enable imul peepholes for TARGET_AMDFAM10.
14931 * config.gcc: Add support for --with-cpu option for amdfam10.
14933 * config/i386/i386.c (amdfam10_cost): New variable.
14934 (m_AMDFAM10): New macro.
14935 (m_ATHLON_K8_AMDFAM10): New macro.
14936 (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
14937 x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
14938 x86_promote_QImode, x86_integer_DFmode_moves,
14939 x86_partial_reg_dependency, x86_memory_mismatch_stall,
14940 x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
14941 x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
14942 x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
14943 x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
14944 Enable/disable for amdfam10.
14945 (override_options): Add amdfam10_cost to processor_target_table.
14946 Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
14947 processor_alias_table.
14948 (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
14949 (ix86_adjust_cost): Add code for amdfam10.
14951 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
14953 * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
14954 instruction set feature flag. Add new (-mpopcnt) flag for popcnt
14955 instruction. Add new SSE4A (-msse4a) instruction set feature flag.
14956 * config/i386/i386.h: Add builtin definition for SSE4A.
14957 * config/i386/i386.md: Add support for ABM instructions
14958 (popcnt and lzcnt).
14959 * config/i386/sse.md: Add support for SSE4A instructions
14960 (movntss, movntsd, extrq, insertq).
14961 * config/i386/i386.c: Add support for ABM and SSE4A builtins.
14962 Add -march=amdfam10 flag.
14963 * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
14964 * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
14966 * doc/extend.texi: Add documentation for SSE4A builtins.
14968 2007-02-05 Bob Wilson <bob.wilson@acm.org>
14970 * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
14972 2007-02-05 Richard Guenther <rguenther@suse.de>
14974 * tree-vectorizer.h (vectorizable_function): Add argument type
14975 argument, change return type.
14976 * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
14977 * tree-vect-transform.c (vectorizable_function): Handle extra
14978 argument, return vectorized function decl.
14979 (build_vectorized_function_call): Remove.
14980 (vectorizable_call): Handle calls with result and argument types
14981 differing. Handle loop vectorization factor correctly.
14982 * targhooks.c (default_builtin_vectorized_function): Adjust for
14984 * targhooks.h (default_builtin_vectorized_function): Likewise.
14985 * target.h (builtin_vectorized_function): Add argument type
14987 * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
14988 extra argument, allow vectorizing of lrintf.
14989 * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
14990 documentation of target hook.
14992 2007-02-05 Hans-Peter Nilsson <hp@axis.com>
14995 * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
14996 ("*andhi_clear", andu (casesi+45)): For size-changed operand where
14997 memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
14999 2007-02-05 Roger Sayle <roger@eyesopen.com>
15001 * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
15002 BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
15003 <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
15004 * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
15005 before canonicalizing sincos to cexpi.
15006 (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
15008 2007-02-05 Roger Sayle <roger@eyesopen.com>
15010 * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
15011 Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
15012 (alpha_init_builtins): Use alpha_add_builtins to process tables.
15014 2007-02-05 Roger Sayle <roger@eyesopen.com>
15016 * mips-tfile.c (initialize_init_file): Correct endianness test.
15018 2007-02-05 Kazu Hirata <kazu@codesourcery.com>
15020 * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
15021 the 'y' constraint.
15023 2007-02-05 Richard Sandiford <richard@codesourcery.com>
15025 * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
15026 saves in a PARALLEL before the register assignments.
15028 2007-02-05 Richard Sandiford <richard@codesourcery.com>
15030 * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
15031 DWARF_FRAME_RETURN_COLUMN to be a general register.
15032 * dwarf2out.c (init_return_column_size): New function, split from...
15033 (expand_builtin_init_dwarf_reg_sizes): ...here. Allow both
15034 DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
15035 to be nongeneral registers.
15036 * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
15038 (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
15039 (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
15041 2007-02-04 Zdenek Dvorak <dvorakz@suse.cz>
15043 * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
15045 2007-02-04 Zdenek Dvorak <dvorakz@suse.cz>
15047 * cfgloopmanip.c (loop_delete_branch_edge): Removed.
15048 (remove_path): Use can_remove_branch_p and remove_branch instead
15049 of loop_delete_branch_edge.
15050 * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
15051 (tree_transform_and_unroll_loop): Remove dead branches immediately.
15052 Update profile using scale_dominated_blocks_in_loop.
15053 * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
15054 * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
15055 (can_remove_branch_p, remove_branch): Declare.
15056 * tree-cfg.c (tree_can_remove_branch_p): New function.
15057 (tree_cfg_hooks): Add tree_can_remove_branch_p.
15058 * cfgrtl.c (rtl_can_remove_branch_p): New function.
15059 (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
15061 2007-02-05 Jan Hubicka <jh@suse.cz>
15063 PR middle-end/30696
15064 * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
15065 nodes in cgraph, don't remove offline copy of the function.
15067 2007-02-04 Jan Hubicka <jh@suse.cz>
15069 * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
15070 vectors might cause maybe_lookup_element_for_expr to be called
15071 on non-sra-candidate.
15073 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
15075 * config/bfin/bfin-modes.def, config/bfin/bfin.c,
15076 config/bfin/bfin.md, config/bfin/predicates.md: Follow
15077 spelling conventions.
15079 2007-02-04 Richard Guenther <rguenther@suse.de>
15081 PR middle-end/30636
15082 * fold-const.c (try_move_mult_to_index): Make sure to not
15083 overflow one dimension of a multi-dimensional array access.
15085 2007-02-04 Jan Hubicka <jh@suse.cz>
15087 * passes.c (init_optimization_passes): Reindent.
15089 2007-02-04 Jan Hubicka <jh@suse.cz>
15090 Eric Botcazou <ebotcazou@adacore.com>
15092 * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
15093 (execute_fixup_cfg): Break out the abnormal goto code.
15094 * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
15095 (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
15096 (optimize_inline_calls): Call make_nonlocal_label_edges.
15098 2007-02-04 Jan Hubicka <jh@suse.cz>
15100 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
15101 true when something was changed.
15102 (rename_ssa_copies): When something was changed, do
15103 TODO_remove_unused_locals.
15104 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
15105 add TODO_remove_unused_locals when instruction was removed.
15107 2007-02-04 Jan Hubicka <jh@suse.cz>
15109 * ipa-inline.c (try_inline): Improve debug output; work on already
15111 (cgraph_decide_inlining_incrementally): Indent; improve debug output;
15112 call try_inline for already inlined edges too when flattening;
15113 inline also functions that make callee growth but overall unit size
15116 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
15118 * config/m32c/bitops.md, config/m32c/jump.md,
15119 config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
15120 config/m32r/m32r.h, config/m32r/m32r.md,
15121 config/m32r/predicates.md, config/m68hc11/larith.asm,
15122 config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
15123 config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
15124 config/mips/mips-protos.h, config/mips/mips.c,
15125 config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
15126 config/mn10300/mn10300.h, config/mn10300/predicates.md,
15127 config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
15128 spelling conventions.
15130 * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
15131 Follow spelling conventions.
15133 2007-02-03 Douglas Gregor <doug.gregor@gmail.com>
15135 * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
15136 warn about C++0x compatibility.
15138 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
15140 * config/h8300/h8300.c, config/h8300/h8300.h,
15141 config/h8300/h8300.md: Follow spelling conventions.
15143 2007-02-03 Uros Bizjak <ubizjak@gmail.com>
15145 PR middle-end/30667
15146 * combine.c (try_combine): Do not substitute source operand
15147 with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
15149 2007-02-03 Jan Hubicka <jh@suse.cz>
15151 PR gcov-profile/30650
15152 * value-prof.c (stringop_block_profile): Fix handling of size counter;
15153 do not divide by zero for never executed counters.
15154 (tree_find_values_to_profile): Fix counters.
15155 * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
15157 2007-02-03 Ian Lance Taylor <iant@google.com>
15159 * lower-subreg.c (simple_move_operand): New static function,
15160 broken out of simple_move. Reject LABEL_REF, SYMBOL_REF, and HIGH
15162 (simple_move): Call simple_move_operand.
15163 (find_decomposable_subregs): Add special handling of MEMs.
15164 (can_decompose_p): Rename from cannot_decompose_p. Reverse
15165 meaning of return value. If we see a hard register, test whether
15166 it can store a word_mode value. Change all callers.
15168 2007-02-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
15170 * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
15171 ftrapv insns and expanders.
15172 (subdi3): Change define_expand operand 1 to arith11_operand, and
15173 operand 2 to reg_or_0_operand. Change constraints of 64-bit insn
15174 pattern to handle reg_or_0 operands. Revise 32-bit insn pattern to
15175 handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
15178 PR middle-end/30174
15179 * varasm.c (notice_global_symbol): Treat global objects as weak when
15180 flag_shlib is true.
15182 2007-02-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
15184 * emit-rtl.c (dconstpi): Delete.
15185 (dconstsqrt2): New.
15186 (init_emit_once): Delete dconstpi and init dconstsqrt2.
15187 * real.h (dconstpi): Delete.
15188 (dconstsqrt2): New.
15189 * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
15190 (fold_builtin_hypot): Likewise.
15192 2007-02-03 Tom Tromey <tromey@redhat.com>
15195 * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
15196 -gcoff3, -gxcoff3, -gvms3 implies -dD.
15198 2007-02-03 Kazu Hirata <kazu@codesourcery.com>
15200 * c-decl.c, config/avr/avr.c, config/avr/avr.h,
15201 config/m68k/m68k.c, config/m68k/netbsd-elf.h,
15202 config/mn10300/mn10300.c, config/pdp11/pdp11.h,
15203 config/rs6000/cell.md, config/rs6000/darwin.h,
15204 config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
15205 config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
15206 jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
15207 tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
15208 typos. Follow spelling conventions.
15209 * doc/invoke.texi: Follow spelling conventions.
15211 2007-02-03 Roger Sayle <roger@eyesopen.com>
15213 * simplify-rtx.c (simplify_relational_operation_1): Implement some
15214 canonicalization transformations that attempt to simplify integer
15215 constant comparisons to become comparisons against zero.
15217 2007-02-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
15219 * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
15221 * fold-const.c (fold_binary): Fix comment typos. Fold complex
15222 (x,0)-(0,y) into (x,-y). Likewise (0,y)-(x,0) into (-x,y).
15224 2007-02-02 Mike Stump <mrs@apple.com>
15226 * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
15227 * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
15228 (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
15229 generate a branch island.
15231 2007-02-02 Bob Wilson <bob.wilson@acm.org>
15233 * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
15234 (xtensa_legitimate_address_p): New.
15235 (xtensa_legitimize_address): New.
15236 (xtensa_output_addr_const_extra): New.
15237 * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
15239 (REG_OK_FOR_BASE_P): Use BASE_REG_P.
15240 (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
15241 (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
15242 (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
15243 * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
15244 (xtensa_legitimize_address): New.
15245 (xtensa_output_addr_const_extra): New.
15247 2007-02-02 Steve Ellcey <sje@cup.hp.com>
15249 * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
15251 2007-02-02 Ian Lance Taylor <iant@google.com>
15253 * expmed.c (expand_divmod): Add comment.
15255 2007-02-02 Kazu Hirata <kazu@codesourcery.com>
15257 * emit-rtl.c (renumber_insns): Remove.
15258 * flags.h: Remove the extern for flag_renumber_insns.
15259 * rtl.h: Remove the prototype for renumber_insns.
15260 * toplev.c (flag_renumber_insns): Remove.
15262 2007-02-02 Hui-May Chang <hm.chang@apple.com>
15264 Revert for x86 darwin:
15265 2005-06-19 Uros Bizjak <uros@kss-loka.si>
15267 * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
15268 code before the following patch under TARGET_MACHO.
15269 (ix86_function_value_regno_p): Likewise.
15271 2007-02-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
15273 * fold-const.c (negate_expr_p, fold_negate_expr): Handle
15276 2007-02-02 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
15279 * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
15280 loads to general or fp registers. Add comments.
15281 * config/ia64/ia64.md (reg_pred_prefix): Add comment.
15283 2007-02-02 Paolo Bonzini <bonzini@gnu.org>
15285 * pointer-set.c (insert_aux): Only return insertion slot.
15286 (pointer_set_insert): Adjust.
15287 (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
15288 pointer_map_destroy, pointer_map_insert, pointer_map_contains,
15289 pointer_map_traverse): New.
15290 * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
15291 pointer_map_create, pointer_map_destroy, pointer_map_insert,
15292 pointer_map_contains, pointer_map_traverse): Declare.
15294 2007-02-02 Jakub Jelinek <jakub@redhat.com>
15296 PR middle-end/30473
15297 * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
15298 sprintf (str, "%s"). Do not optimize sprintf (str, "nopercent", p++).
15300 2007-02-02 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
15302 * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
15304 (struct _dep): New type.
15305 (dep_t): New typedef.
15306 (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
15307 (DEP_STATUS): New access macro. The macro with the same name was
15308 renamed to DEP_LINK_STATUS.
15309 (dep_init): Declare function
15311 (struct _dep_link): New type.
15312 (dep_link_t): New typedef.
15313 (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
15314 (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
15315 (DEP_LINK_STATUS): New macro.
15316 (debug_dep_links): New debug function.
15318 (struct _deps_list): New type.
15319 (deps_list_t): New typedef.
15320 (DEPS_LIST_FIRST): New access macro.
15321 (FOR_EACH_DEP_LINK): New cycle macro.
15322 (create_deps_list, free_deps_list, delete_deps_list): Declare
15324 (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
15325 (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
15326 (copy_deps_list_change_con): Ditto.
15328 (move_dep_link): Declare function.
15330 (struct _dep_node): New type.
15331 (dep_node_t): New typedef.
15332 (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
15334 (struct haifa_insn_data.back_deps): New field to hold backward
15335 dependencies of the insn.
15336 (struct haifa_insn_data.depend): Rename to forw_deps. Change its type
15338 (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
15339 Change its type to deps_list_t.
15340 (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
15341 (INSN_DEPEND): Rename to INSN_FORW_DEPS.
15342 (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
15344 (INSN_COST): Move to haifa-sched.c. Use insn_cost () instead.
15346 (DEP_STATUS): Rename to DEP_LINK_STATUS. Fix typo in the comment.
15348 (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
15350 (dep_cost): Declare.
15352 * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
15353 (ds_to_dk, dk_to_ds): New functions.
15355 (init_dep_1): New static function.
15356 (init_dep): New function.
15357 (copy_dep): New static function.
15359 (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
15361 (detach_dep_link): New static function.
15362 (move_dep_link): New function.
15364 (dep_links_consistent_p, dump_dep_links): New static functions.
15365 (debug_dep_links): New debugging function.
15367 (deps_obstack, dl_obstack, dn_obstack): New static variables.
15369 (alloc_deps_list, init_deps_list): New static functions.
15370 (create_deps_list): New function.
15371 (clear_deps_list): New static function.
15372 (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
15373 (deps_list_consistent_p, dump_deps_list): New static functions.
15374 (debug_deps_list): New function.
15375 (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
15377 (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
15379 (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
15380 use new scheduler dependencies lists.
15381 (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
15382 (sched_analyze): Ditto. Initialize dependencies lists.
15383 (add_forw_dep, compute_forward_dependences): Update to use new
15384 scheduler dependencies lists.
15386 (init_dependency_caches): Init deps_obstack.
15387 (free_dependency_caches): Free deps_obstack.
15389 (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
15390 new scheduler dependencies lists.
15391 (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
15392 (add_back_forw_dep, delete_back_forw_dep): Ditto.
15394 * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
15395 Update to use new scheduler dependencies lists.
15396 (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
15397 (debug_dependencies): Ditto.
15398 (schedule_region): Update comments.
15400 * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
15401 scheduler dependencies lists.
15402 (schedule_ebb): Update comments.
15404 * rtl.def (DEPS_LIST): Remove.
15406 * lists.c (unused_deps_list): Remove.
15407 (free_list): Update assertions.
15409 (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
15410 (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
15412 * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
15413 (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
15415 * haifa-sched.c (comments): Update.
15416 (insn_cost1): Remove. Inline the code into insn_cost ().
15417 (insn_cost): Update to use new scheduler dependencies lists. Move
15418 processing of the dependency cost to dep_cost ().
15419 (dep_cost): New function. Use it instead of insn_cost () when
15420 evaluating cost of the dependency. Use compatible interface to
15421 interact with the target.
15422 (priority): Update to use new scheduler dependencies lists.
15423 (rank_for_schedule): Ditto. Optimize heuristic that prefers the insn
15424 with greater number of insns that depend on the insn.
15425 (schedule_insn): Update to use new scheduler dependencies lists. Add
15426 code to free backward dependencies lists. Inline and optimize code
15427 from resolve_dep () - see PR28071.
15428 (ok_for_early_queue_removal): Update to use new scheduler dependencies
15429 lists. Update call to targetm.sched.is_costly_dependence hook.
15431 (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
15432 scheduler dependencies lists.
15434 (resolve_dep): Remove. Move the logic to schedule_insn ().
15435 (init_h_i_d): Initialize dependencies lists.
15437 (process_insn_depend_be_in_spec): Rename to
15438 process_insn_forw_deps_be_in_spec. Update to use new scheduler
15439 dependencies lists.
15440 (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
15441 Update to use new scheduler dependencies lists.
15442 (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
15444 * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
15445 new scheduler dependencies lists.
15446 (build_intra_loop_deps): Ditto.
15448 * target.h (struct _dep): Declare to use in
15449 gcc_target.sched.is_costly_dependence.
15450 (struct gcc_target.sched.adjust_cost): Fix typo.
15451 (struct gcc_target.sched.is_costly_dependence): Change signature to
15452 use single dep_t parameter instead of an equivalent triad.
15453 (struct gcc_target.sched.adjust_cost_2): Remove.
15455 * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
15457 * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
15459 * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
15461 (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
15463 * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
15464 (REG_DEP_TRUE): Document.
15466 * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
15467 Change signature to correspond to the targetm.sched.adjust_cost hook.
15468 Update use in TARGET_SCHED_ADJUST_COST_2.
15469 (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
15470 (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
15471 new scheduler dependencies lists.
15472 (ia64_gen_check): Ditto.
15474 * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
15475 scheduler dependencies lists.
15477 * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
15478 signature to correspond to the targetm.sched.is_costly_dependence hook.
15479 (is_costly_group): Update to use new scheduler dependencies lists.
15481 * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
15482 instead of INSN_COST () macro.
15484 2007-02-01 Ian Lance Taylor <iant@google.com>
15486 * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
15488 2007-02-01 Guy Martin <gmsoft@gentoo.org>
15490 * pa.md (tp_load): Correct mfctl instruction syntax.
15492 2007-02-01 Geoffrey Keating <geoffk@apple.com>
15494 * config/rs6000/rs6000.c (rs6000_stack_info): Correct
15495 altivec_padding_size calculation on AIX. Improve comment, add
15496 assert to verify that it's right.
15498 * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
15501 2007-2-01 Seongbae Park <seongbae.park@gmail.com>
15503 PR inline-asm/28686
15504 * global.c (global_alloc): Add mising initialization of
15507 2007-02-01 Roger Sayle <roger@eyesopen.com>
15509 * alias.c (init_alias_analysis): Correct whitespace.
15510 * bb-reorder.c (fix_edges_for_rarely_executed_code,
15511 partition_hot_cold_basic_blocks): Likewise.
15512 * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
15513 expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
15514 maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
15515 fold_builtin_snprintf_chk, fold_builtin_printf,
15516 fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
15517 do_mpfr_arg3, do_mpfr_sincos): Likewise.
15518 * cfgcleanup.c (cleanup_cfg): Likewise.
15519 * cfgexpand.c (tree_expand_cfg): Likewise.
15520 * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
15521 * function.c (get_next_funcdef_no): Likewise.
15522 * gengtype.c (main): Likewise.
15523 * genmodes.c (main): Likewise.
15524 * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
15525 * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
15526 * ifcvt.c (noce_emit_move_insn): Likewise.
15527 * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
15529 * stor-layout.c (get_best_mode): Likewise.
15530 * tree-ssa-loop-niter.c (get_val_for): Likewise.
15531 * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
15532 scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
15533 perform_var_substitution, solve_graph): Likewise.
15534 * tree-vrp.c (vrp_finalize): Likewise.
15536 2007-02-01 Ian Lance Taylor <iant@google.com>
15538 * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
15539 high part of a paradoxical subreg, return a constant zero.
15541 2007-02-01 Zdenek Dvorak <dvorakz@suse.cz>
15543 * toplev.c (lang_dependent_init): Call init_set_costs.
15544 * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
15546 2007-02-01 Richard Guenther <rguenther@suse.de>
15548 PR middle-end/30656
15549 * fold-const.c (fold_negate_expr): Allow negating a
15550 constant if overflow does not change.
15552 2007-02-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
15554 * doc/c-tree.texi (Expression trees): Improve markup.
15555 * doc/tm.texi (Register Classes, Addressing Modes)
15556 (Floating Point): Fix spacing after abbreviations. Fix some
15559 2007-02-01 Ben Elliston <bje@au.ibm.com>
15561 * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
15562 * doc/contrib.texi: Likewise.
15563 * doc/install.texi: Likewise.
15565 2007-01-31 Richard Henderson <rth@redhat.com>
15566 Ian Lance Taylor <iant@google.com>
15568 * lower-subreg.c: New file.
15569 * rtl.def (CONCATN): Define.
15570 * passes.c (init_optimization_passes): Add pass_lower_subreg and
15571 pass_lower_subreg2.
15572 * emit-rtl.c (update_reg_offset): New static function, broken out
15573 of gen_rtx_REG_offset.
15574 (gen_rtx_REG_offset): Call update_reg_offset.
15575 (gen_reg_rtx_offset): New function.
15576 * regclass.c: Revert patch of 2006-03-05, restoring
15578 (clear_reg_info_regno): New function.
15579 * dwarf2out.c (concatn_loc_descriptor): New static function.
15580 (loc_descriptor): Handle CONCATN.
15581 * common.opt (fsplit_wide_types): New option.
15582 * opts.c (decode_options): Set flag_split_wide_types when
15584 * timevar.def (TV_LOWER_SUBREG): Define.
15585 * rtl.h (gen_reg_rtx_offset): Declare.
15586 (reg_scan_update): Declare.
15587 * regs.h (clear_reg_info_regno): Declare.
15588 * tree-pass.h (pass_lower_subreg): Declare.
15589 (pass_lower_subreg2): Declare.
15590 * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
15591 (Optimize Options): Add -fsplit-wide-types to -O1 list. Document
15592 -fsplit-wide-types.
15593 * doc/rtl.texi (Regs and Memory): Document concat and concatn.
15594 * Makefile.in (OBJS-common): Add lower-subreg.o.
15595 (lower-subreg.o): New target.
15597 2007-01-31 Kazu Hirata <kazu@codesourcery.com>
15599 * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
15601 2007-01-31 Anatoly Sokolov <aesok@post.ru>
15604 * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
15606 2007-01-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
15608 PR middle-end/29335
15609 * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
15611 2007-01-31 Zdenek Dvorak <dvorakz@suse.cz>
15613 * cfgloop.h: Include vec-prim.h.
15614 (enum li_flags): Remove LI_ONLY_OLD.
15615 (loop_iterator): Changed.
15616 (fel_next, fel_init): Iterate over loop tree.
15617 (FOR_EACH_LOOP_BREAK): New macro.
15618 * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
15620 * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
15621 * modulo-sched.c (sms_schedule): Ditto.
15622 * tree-vectorizer.c (vectorize_loops): Ditto.
15623 * doc/loop.texi: Update information on loop numbering and behavior of
15624 FOR_EACH_LOOP wrto new loops.
15625 * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
15626 add_to_evolution_1): Test nestedness of loops instead of comparing
15628 * tree-chrec.c (chrec_fold_plus_poly_poly,
15629 chrec_fold_multiply_poly_poly, chrec_evaluate,
15630 hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
15631 reset_evolution_in_loop): Ditto.
15632 * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
15634 2007-01-31 Dirk Mueller <dmueller@suse.de>
15636 * c-common.c (warn_about_parentheses): Separate warning about
15637 un-parenthized sequence of comparison operators from the one
15638 which is supposed to warn about x <= y <= z.
15640 2007-01-31 Uros Bizjak <ubizjak@gmail.com>
15642 * optabs.h (enum optab_index): Add new OTI_isinf.
15643 (isinf_optab): Define corresponding macro.
15644 * optabs.c (init_optabs): Initialize isinf_optab.
15645 * genopinit.c (optabs): Implement isinf_optab using isinf?f2
15647 * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
15648 (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
15650 (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
15651 expand_builtin_interclass_mathfn.
15652 * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
15653 * config/i386/i386.md (UNSPEC_FXAM): New constant.
15654 (fxam<mode>2_i387): New insn pattern.
15655 (isinf<mode>2) New expander to implement isinf, isinff and isinfl
15656 built-in functions as x87 inline asm.
15658 2007-01-31 Kazu Hirata <kazu@codesourcery.com>
15660 * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
15662 2007-01-30 Eric Christopher <echristo@apple.com>
15664 * config.gcc: Add geode.
15666 2007-01-31 Kazu Hirata <kazu@codesourcery.com>
15668 * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
15669 ipa-inline.c, tree-profile.c, tree-ssa-live.c,
15670 tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
15671 value-prof.c: Fix comment typos.
15673 2007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
15676 * doc/invoke.texi (Wpointer-arith): Document warning.
15678 2007-01-30 Janis Johnson <janis187@us.ibm.com>
15680 * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
15681 the list of discrepancies from the draft TR.
15683 2007-01-30 Dirk Mueller <dmueller@suse.de>
15686 * doc/invoke.texi (-Wreturn-type): Update description to
15687 match new behavior.
15689 2007-01-30 Richard Sandiford <richard@codesourcery.com>
15691 * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
15693 2007-01-30 Uros Bizjak <ubizjak@gmail.com>
15695 * builtins.c (expand_builtin_int_interclass_roundingfn): New function
15696 to handle optabs that operate on floating point input argument and
15697 output to integer output.
15698 (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
15699 (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
15700 (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
15701 expand_builtin_interclass_mathfn ().
15702 * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
15703 (ilogbsi2): Remove.
15704 (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
15705 ilogbl built-in functions as x87 intrinsics.
15707 2007-01-30 Richard Guenther <rguenther@suse.de>
15709 PR middle-end/27657
15710 * dwarf2out.c (reference_to_unused): Query varpool if the
15711 variable was output.
15713 2007-01-30 Richard Guenther <rguenther@suse.de>
15715 PR middle-end/30313
15716 * passes.c (execute_one_pass): Reset in_gimple_form to not
15717 confuse non-unit-at-a-time mode.
15719 2007-01-29 Roger Sayle <roger@eyesopen.com>
15720 Richard Guenther <rguenther@suse.de>
15722 * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
15723 avoid undefined behaviour on overflow. Use force_fit_type_double
15724 to construct the constant with the specified TREE_OVERFLOW.
15726 2007-01-29 Janis Johnson <janis187@us.ibm.com>
15728 * config/dfp-bit.c: Add parameterized support for fp exceptions.
15729 * config/dfp-bit.h: Ditto.
15731 2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
15733 * c-decl.c (pop_scope): Replace warnings with call to
15734 warn_for_unused_label.
15735 * c-common.h (warn_for_unused_label): Declare.
15736 * c-common.c (warn_for_unused_label): Define.
15738 2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
15740 * tree-optimize.c (update_inlined_to_pointers): Delete unused
15743 2007-01-29 Janis Johnson <janis187@us.ibm.com>
15745 * Makefile.in (USER_H): Remove decfloat.h.
15746 * ginclude/decfloat.h: Delete, moving contents to ...
15747 * ginclude/float.h: Add support for decimal floating point,
15748 guarded by __STDC_WANT_DEC_FP__.
15750 2007-01-29 Mike Stump <mrs@apple.com>
15752 * doc/gccint.texi (Top): Rename Loop Representation to Loop
15753 Analysis and Representation to resolve case insensitive conflict.
15754 * doc/loop.texi (Loop Analysis and Representation): Likewise.
15756 2007-01-28 Daniel Berlin <dberlin@dberlin.org>
15758 * tree.h (struct tree_memory_tag): Add aliases member.
15759 (MTAG_ALIASES): New macro.
15760 * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
15761 (add_may_alias): Remove pointer-set. Update for may_aliases being
15763 (mark_aliases_call_clobbered): Update for may_aliases being a
15765 (compute_tag_properties): Ditto.
15766 (create_partition_for): Ditto.
15767 (compute_memory_partitions): Ditto.
15768 (dump_may_aliases_for): Ditto.
15769 (is_aliased_with): Ditto.
15770 (add_may_alias_for_new_tag): Ditto.
15771 (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
15772 (compute_is_aliased): New function.
15773 (compute_may_aliases): Call compute_is_aliased).
15774 (init_alias_info): Initialize alias_bitmap_obstack.
15775 (union_alias_set_into): New function.
15776 (compute_flow_sensitive_aliasing): Use union_aliases_into.
15777 (have_common_aliases_p): Rewrite to take two bitmaps and use
15779 (compute_flow_insensitive_aliasing): Stop using pointer-sets.
15780 Update for bitmaps.
15781 (finalize_ref_all_pointers): Update for add_may_alias changes.
15782 (new_type_alias): Ditto.
15783 * tree-flow-inline.h (may_aliases): Return a bitmap.
15784 * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
15785 * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
15786 may_aliases being a bitmap.
15787 * tree-flow.h (struct var_ann_d): Remove may_aliases member.
15788 may_aliases now returns a bitmap.
15789 * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
15791 * tree-ssa-operands.c (add_virtual_operand): Update for
15792 may_aliases being a bitmap.
15794 2007-01-29 Daniel Berlin <dberlin@dberlin.org>
15796 PR tree-optimization/30630
15797 * tree-ssa-structalias.c (do_complex_constraint): Mark correct
15798 variable as changed.
15800 2007-01-29 Simon Martin <simartin@users.sourceforge.net>
15803 * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
15804 expanded only once even if an error occurs.
15806 2007-01-29 Ben Elliston <bje@au.ibm.com>
15808 * gcov-io.h (__gcov_indirect_call_profiler): Declare.
15809 (__gcov_average_profiler): Likewise.
15810 (__gcov_ior_profiler): Likewise.
15811 (__gcov_merge_ior): Likewise.
15813 2007-01-28 Jan Hubicka <jh@suse.cz>
15815 * builtins.c (expand_builtin_memset): Fix typo in my last patch.
15816 * value-prof.c (stringop_block_profile): Likewise.
15818 2007-01-28 Jan Hubicka <jh@suse.cz>
15820 * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
15821 Add variant handling histograms; add wrapper.
15822 (clear_storage_via_libcall): Export.
15823 (emit_block_move_hints): Break out from ...; add histograms.
15824 (emit_block_move): ... this one.
15825 (clear_storage_hints): Break out from ...; add histograms.
15826 (clear_storage): ... this one.
15827 (set_storage_via_memset): Handle histogram.
15828 * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
15829 (clear_storage_hints, clear_storage_via_libcall): Declare.
15830 (set_storage_via_setmem): Update prototype.
15831 * doc/md.texi (movmem, setmem): Document new arguments.
15833 * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
15834 Add new histograms.
15835 (stringop_block_profile): New global function.
15836 (tree_stringops_values_to_profile): Profile block size and alignment.
15837 * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
15839 (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
15840 (stringop_block_profile): Declare.
15841 * builtins.c: Include value-prof.h.
15842 (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
15843 * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
15844 (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
15845 (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
15846 * profile.c (instrument_values): Add new counters.
15847 * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
15849 * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
15850 (tree_init_edge_profiler): Build new profilers.
15851 (tree_gen_average_profiler, tree_gen_ior_profiler): New.
15852 (pass_tree_profile): Add dump.
15853 (tree_profile_hooks): Update.
15854 * Makefile.in (LIBGCOV): Add new constants.
15855 * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
15856 __gcov_ior_profiler): New.
15857 * i386.md (movmem/setmem expanders): Add new optional arguments.
15859 2007-01-28 David Edelsohn <edelsohn@gnu.org>
15861 * doc/md.texi (Standard Pattern Names): Document blockage pattern.
15863 2007-01-28 Zdenek Dvorak <dvorakz@suse.cz>
15865 * tree-ssa-loop-unswitch.c: Include tree-inline.h.
15866 (tree_unswitch_single_loop): Pass eni_size_weights to
15867 tree_num_loop_insns.
15868 * tree-ssa-loop-manip.c: Include tree-inline.h.
15869 (can_unroll_loop_p): Pass eni_size_weights to
15870 tree_num_loop_insns.
15871 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
15872 Pass eni_size_weights to estimate_num_insns.
15873 * tree.h (init_inline_once): Export.
15874 * toplev.c (backend_init): Call init_inline_once.
15875 * cgraphunit.c (cgraph_process_new_functions,
15876 cgraph_analyze_function): Pass eni_inlining_weights to
15877 estimate_num_insns.
15878 * ipa-inline.c (compute_inline_parameters): Ditto.
15879 * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
15880 to estimate_num_insns.
15881 (try_unroll_loop_completely): Pass eni_size_weights to
15882 tree_num_loop_insns.
15883 * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
15884 ot estimate_num_insns.
15885 * tree-ssa-loop-prefetch.c: Include tree-inline.h.
15886 (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
15887 * tree-inline.c (eni_inlining_weights, eni_size_weights,
15888 eni_time_weights): New variables.
15889 (init_inline_once): Initialize them.
15890 (struct eni_data): Mew.
15891 (estimate_num_insns_1, estimate_num_insns): Use weights.
15892 * tree-inline.h (struct eni_weights_d): New.
15893 (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
15894 (estimate_num_insns): Declaration changed.
15895 * cfgloop.h (tree_num_loop_insns): Declaration changed.
15896 * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
15897 tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
15899 2007-01-28 Zdenek Dvorak <dvorakz@suse.cz>
15901 * tree-data-ref.c (conflict_fn): Assert that the number of affine
15902 relations in the conflict function is valid.
15904 2007-01-27 Ian Lance Taylor <iant@google.com>
15906 * common.opt: Add fstrict-overflow.
15907 * opts.c (decode_options): Set flag_strict_overflow if -O2.
15908 * flags.h (TYPE_OVERFLOW_WRAPS): Define.
15909 (TYPE_OVERFLOW_UNDEFINED): Define.
15910 (TYPE_OVERFLOW_TRAPS): Define. This replaces TYPE_TRAP_SIGNED.
15912 * tree.h (TYPE_TRAP_SIGNED): Don't define.
15913 * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
15914 (fold_negate_expr): Likewise.
15915 (make_range): Likewise.
15916 (extract_muldiv_1): Likewise.
15917 (maybe_canonicalize_comparison): Likewise.
15918 (fold_comparison): Likewise.
15919 (fold_binary): Likewise.
15920 (tree_expr_nonnegative_p): Likewise.
15921 (tree_expr_nonzero_p): Likewise.
15922 * tree-vrp.c (compare_values): Likewise.
15923 (extract_range_from_binary_expr): Likewise.
15924 (extract_range_from_unary_expr): Likewise.
15925 * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
15927 (nowrap_type_p): Likewise.
15928 * tree-scalar-evolution.c (simple_iv): Likewise.
15929 * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
15930 (build_range_check): Likewise.
15931 (extract_muldiv_1): Likewise.
15932 (fold_comparison): Likewise.
15933 * tree-vrp.c (vrp_int_const_binop): Likewise.
15934 (extract_range_from_unary_expr): Likewise.
15935 * convert.c (convert_to_integer): Likewise.
15936 * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
15937 (fold_comparison): Likewise.
15938 (fold_binary): Likewise.
15939 * optabs.c (optab_for_tree_code): Likewise.
15940 * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
15941 * simplify-rtx.c (simplify_const_relational_operation): Check
15942 flag_strict_overflow and flag_trapv.
15943 (simplify_const_relational_operation): Likewise.
15944 * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
15945 (Optimize Options): Add -fstrict-overflow to -O2 list. Document
15948 2007-01-27 Roger Sayle <roger@eyesopen.com>
15950 * tree.c (tree_fold_gcd): Delete.
15951 * tree.h (tree_fold_gcd): Remove prototype.
15952 * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
15953 test whether one constant integer is a multiple of another. Instead
15954 call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
15955 * fold-const.c (multiple_of_p): We've determined both TOP and
15956 BOTTOM are integer constants so we can call int_const_binop directly
15957 instead of the more generic const_binop.
15959 2007-01-27 Roger Sayle <roger@eyesopen.com>
15961 * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
15962 1*X check that the constant hasn't overflowed, to preserve the
15964 (round_up): Provide an efficient implementation when rouding-up an
15965 INTEGER_CST to a power-of-two.
15967 2007-01-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
15969 * doc/sourcebuild.texi: Add comma for clarity.
15970 * doc/extend.texi: Fix some typos.
15971 * doc/passes.texi: Likewise.
15972 * doc/cppinternals.texi: Likewise.
15973 * doc/c-tree.texi: Likewise.
15974 * doc/tree-ssa.texi: Likewise.
15975 * doc/install.texi: Likewise.
15977 2007-01-27 Jan Hubicka <jh@suse.cz>
15979 * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
15980 (pass_sra): Do not require alias information.
15981 * passes.c (init_optimization_passes): Add SRA
15983 2007-01-27 Steven Bosscher <steven@gcc.gnu.org>
15985 * tracer.c (rest_of_handle_tracer): We already cleaned
15986 up the CFG in tracer() so don't do it here again.
15987 * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
15988 cleanup_cfg here, either. And don't call renumber_insns.
15990 * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
15991 and BB_HEAD are in the insn stream here. Instead make sure
15992 that BB_INSN is valid on all insns. Also, do check here that
15993 there are no pending branch predictions...
15994 (rtl_verify_flow_info): ...instead of doing it here. Checks
15995 for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
15998 2007-01-26 Roger Sayle <roger@eyesopen.com>
16000 * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
16001 function to simplify/factorize operand order canonicalization.
16002 (ix86_fixup_binary_operands): Reorganize using the above function.
16003 (ix86_binary_operator_ok): Likewise.
16005 2007-01-27 Jakub Jelinek <jakub@redhat.com>
16007 * genattrtab.c (struct attr_value_list, insn_code_values): Move to
16008 file scope from optimize_attrs.
16009 (simplify_test_exp): If insn_code_values is not NULL, use it to speed
16011 (optimize_attrs): Clear insn_code_values after freeing it.
16013 2007-01-26 Zdenek Dvorak <dvorakz@suse.cz>
16015 * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
16016 a parts.base assignment.
16018 2007-01-26 Zdenek Dvorak <dvorakz@suse.cz>
16020 * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
16021 (compute_subscript_distance, initialize_data_dependence_relation,
16022 finalize_ddr_dependent, analyze_ziv_subscript,
16023 analyze_siv_subscript_cst_affine,
16024 compute_overlap_steps_for_affine_univar,
16025 compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
16026 analyze_siv_subscript, analyze_miv_subscript,
16027 analyze_overlapping_iterations, subscript_dependence_tester_1,
16028 compute_self_dependence, free_dependence_relation): Work
16029 with affine_fn instead of chrecs.
16030 (dump_affine_function, dump_conflict_function, affine_function_equal_p,
16031 common_affine_function, affine_function_base,
16032 affine_function_constant_p, affine_fn_op, affine_fn_plus,
16033 affine_fn_minus, affine_fn_free, conflict_fn_not_known,
16034 conflict_fn_no_dependence, free_conflict_function, free_subscripts,
16035 conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
16036 (all_chrecs_equal_p): Removed.
16037 * tree-data-ref.h (affine_fn, conflict_function): New types.
16038 (struct subscript): Change type of conflicting_iterations_in_a
16039 and conflicting_iterations_in_b.
16041 2007-01-26 Steve Ellcey <sje@cup.hp.com>
16044 * config/pa/pa.h (TARGET_HPUX_11): New.
16045 * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
16046 * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
16048 2007-01-26 Daniel Berlin <dberlin@dberlin.org>
16049 Richard Guenther <rguenther@suse.de>
16051 * tree-ssa-structalias.c (solve_graph): Handle case
16052 we merged the variable to another.
16054 2007-01-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
16056 * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
16059 * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
16060 catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
16062 2007-01-25 DJ Delorie <dj@redhat.com>
16064 * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
16065 allow changes to modes which don't fit in those registers.
16067 * reload1.c (choose_reload_regs): Check for invalid subregs before
16068 computing their locations, not after.
16070 2007-01-25 Geoffrey Keating <geoffk@apple.com>
16073 * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
16074 save Altivec registers in an eh_return function.
16075 (compute_vrsave_mask): Likewise.
16076 (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
16077 for saving Altivec registers.
16078 (rs6000_emit_prologue): Don't allocate stack twice in
16079 eh_return function. Correct expected value of altivec_save_offset
16080 when using save_world. Describe save of R0 to stack when using
16081 save_world. Describe stack pointer adjustment when using
16082 save_world. Remove duplicated eh_return parameter register saving.
16083 Update sp_offset variable after save_world.
16084 * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
16086 (LIB2FUNCS_EXTRA): Add darwin-world.asm.
16087 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
16090 2007-01-25 Steve Ellcey <sje@cup.hp.com>
16092 * config.gcc (ia64*-*-hpux*): Make posix threads the default.
16094 2007-01-25 Steve Ellcey <sje@cup.hp.com>
16097 * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
16098 * config/ia64/ia64.c (ia64_init_builtins): Ditto.
16100 2007-01-25 Richard Guenther <rguenther@suse.de>
16102 * doc/invoke.texi (-Wcoverage-mismatch): Document.
16103 * common.opt (-Wcoverage-mismatch): New warning option.
16104 * coverage.c (get_coverage_counts): Ignore coverage mismatch
16105 if -Wcoverage-mismatch is given.
16107 2007-01-25 Razya Ladelsky <razya@il.ibm.com>
16109 * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
16110 (ipcp_driver): Change to static definition.
16111 Add dumping of the ifunctions.
16112 (constant_val_insert): Remove unused parameter. Support for SSA.
16113 (ipcp_propagate_const): Support for SSA.
16114 (ipcp_profile_bb_print): Print only analyzed nodes.
16115 (ipcp_replace_map_create): Remove support for Fortran constant
16117 * ipa-prop.c (ipa_method_modify_stmt,
16118 ipa_callsite_compute_param): Support for SSA.
16119 * ipa-prop.h (ipcp_driver): Remove declaration.
16120 (IS_VALID_TREE_MAP_INDEX): Add define.
16122 2007-01-24 Geoffrey Keating <geoffk@apple.com>
16124 * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
16126 2007-01-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
16128 PR middle-end/30447
16129 * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
16130 constant argument to cabs and do it without checking for
16131 -funsafe-math-optimizations.
16133 2007-01-24 Douglas Gregor <dgregor@osl.iu.edu>
16135 * c-common.h (RID_FIRST_CXX0X): New.
16136 (RID_LAST_CXX0X): New.
16137 * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
16139 * c.opt (Wc++0x-compat): New.
16140 * doc/invoke.texi (-Wc++0x-compat): Document.
16142 2007-01-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
16144 * builtins.c (fold_builtin_carg): New.
16145 (fold_builtin_1): Use it.
16147 2007-01-24 Jan Hubicka <jh@suse.cz>
16149 * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
16151 * ipa-inline.c (initial_insns, max_insns): Delete.
16152 (compute_max_insns): New function.
16153 (cgraph_decide_inlining_of_small_function): Use it; take minimal
16154 amount of insns as base for code growth.
16155 (cgraph_decide_inlining): Make initial_insns local; do not compute
16157 * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
16158 * doc/invoke.texi (inline-unit-growth): Update docs.
16160 2007-01-24 Jakub Jelinek <jakub@redhat.com>
16162 * config/i386/i386.h (x86_cmpxchg16b): Remove const.
16163 (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
16164 * config/i386/i386.c (x86_cmpxchg16b): Remove const.
16165 (override_options): Add PTA_CX16 flag. Set x86_cmpxchg16b
16166 for CPUs that have PTA_CX16 set.
16168 PR middle-end/27416
16169 * gimplify.c (omp_check_private): New function.
16170 (gimplify_scan_omp_clauses): Use it for
16171 firstprivate/lastprivate/reduction.
16173 PR middle-end/30494
16174 * gimplify.c (omp_add_variable): Don't call omp_notice_variable
16175 on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
16177 PR middle-end/30421
16178 * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
16179 If lower_lastprivate_clauses emits some statements, append them
16180 to dlist rather than body_p and to body_p append an initializer.
16181 (lower_omp_for): Adjust caller.
16183 2007-01-24 Steve Ellcey <sje@cup.hp.com>
16185 * target.h (globalize_decl_name): New.
16186 * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
16187 * output.h (default_globalize_decl_name): New.
16188 * varasm.c (asm_output_bss): Use globalize_decl_name instead of
16190 (globalize_decl): Ditto.
16191 (default_globalize_decl_name): New.
16192 * config/ia64/ia64.c (ia64_globalize_decl_name): New.
16193 (ia64_handle_version_id_attribute): New.
16194 (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
16195 (ia64_asm_output_external): Use globalize_decl_name instead
16196 of globalize_label.
16197 * doc/extend.texi (version_id): New pragma.
16198 * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
16200 2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com>
16202 * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
16203 _uleb128_t and _Unwind_SWord with _sleb128_t.
16204 * unwind-dw2.c (extract_cie_info, execute_stack_op,
16205 execute_cfa_program, uw_frame_state_for, uw_update_context_1):
16207 * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
16208 * unwind-pe.h (read_uleb128, read_sleb128,
16209 read_encoded_value_with_base): Likewise.
16210 * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
16212 2007-01-24 Richard Guenther <rguenther@suse.de>
16214 * builtins.c (expand_builtin_cexpi): Get the fndecl
16215 for cexp in the correct way.
16217 2007-01-24 Jan Hubicka <jh@suse.cz>
16219 * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
16222 2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com>
16224 * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
16225 (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
16226 __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
16227 __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
16228 __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
16229 __SIZEOF_PTRDIFF_T__.
16230 * doc/cpp.texi: Documentation for the new builtin macros added.
16232 2007-01-24 Uros Bizjak <ubizjak@gmail.com>
16234 * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
16235 log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
16236 instead of operands[2] to avoid access past the end of array.
16238 2007-01-24 Richard Sandiford <richard@codesourcery.com>
16240 * reload1.c (emit_reload_insns): Pass the reload register
16241 for a non-spill output reload through forget_old_reloads_1.
16243 2007-01-23 Joseph Myers <joseph@codesourcery.com>
16245 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
16246 _SOFT_DOUBLE if doubles use software floating-point.
16247 * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
16248 double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
16249 * config/rs6000/darwin-ldouble.c: Also compile functions for
16250 hard-float without FPRs. Use fmsub function for all __NO_FPRS__
16251 cases. Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
16252 * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
16253 commented-out long double override.
16254 (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
16255 * config/rs6000/eabispe.h: Likewise.
16256 * config/rs6000/rs6000.c (rs6000_override_options): Don't override
16257 long double for non-SPE.
16258 (rs6000_handle_option): Likewise.
16259 (invalid_e500_subreg): Disallow more subregs involding DImode,
16260 DFmode, TImode or TFmode.
16261 (rs6000_legitimate_offset_address_p): Check TFmode offsets for
16263 (legitimate_lo_sum_address_p): Also check for TFmode for E500
16265 (rs6000_legitimize_address): Also handle TFmode for E500 double.
16266 (rs6000_legitimize_reload_address): Also handle TFmode for E500
16268 (rs6000_legitimate_address): Also check for TFmode for E500
16270 (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
16271 (spe_build_register_parallel): Handle TFmode and TCmode.
16272 (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
16274 (function_arg): Handle TFmode and TCmode for E500 double.
16275 (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
16277 (print_operand): Handle TFmode and TImode for %y.
16278 (rs6000_generate_compare): Handle TFmode comparisons for E500
16280 (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
16281 (rs6000_function_value): Handle TFmode and TCmode for E500 double.
16282 (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
16283 * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
16284 TFmode for E500 double.
16285 * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
16286 (floatsidf2): Enable for E500 double.
16287 (movtf_softfloat): Use rs6000_nonimmediate_operand.
16288 (extenddftf2): Change to extenddftf2_fprs.
16289 (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
16290 depending on TARGET_E500_DOUBLE.
16291 (extendsftf2): Enable for E500 double.
16292 (trunctfdf2): Enable for E500 double.
16293 (trunctfsf2): Change to trunctfsf2_fprs.
16294 (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
16295 depending on TARGET_E500_DOUBLE.
16296 (floatsitf2): Enable for E500 double.
16297 (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
16298 (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
16299 gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
16300 (negtf2): Change to negtf2_internal.
16301 (negtf2): New expander.
16302 (abstf2): Enable for E500 double. Call gen_spe_abstf2_tst,
16303 gen_spe_abstf2_cmp or gen_abstf2_internal depending on
16304 TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
16305 (movdi_internal32): Use rs6000_nonimmediate_operand.
16306 (unnamed splitter): Likewise.
16307 * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
16308 TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
16309 (SPE64TF, DITI): New mode macros.
16310 (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
16313 (frob_<mode>_di_2): New.
16314 (frob_tf_di_8_2): New.
16315 (frob_di_df): Change to frob_di_<mode>; allow more modes.
16317 (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
16319 (frob_ti_<mode>_8_2): New.
16320 (frob_ti_tf_2): New.
16321 (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
16322 mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
16324 (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
16325 mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
16326 (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
16327 spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
16328 spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
16329 (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
16332 2007-01-23 Ian Lance Taylor <iant@google.com>
16334 * Makefile.in (OBJS-common): Reformat, alphabetize, but put
16336 (OBJS-archive): Reformat, alphabetize.
16337 (OBJS): Change out_object_file to OBJS-md.
16339 2007-01-23 Uros Bizjak <ubizjak@gmail.com>
16341 * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
16342 JUMP_P and CALL_P predicates where applicable.
16343 * config/i386/i386.c: Ditto.
16344 * config/i386/i386.md: Ditto.
16345 * config/i386/mmx.md: Ditto.
16346 * config/i386/predicates.md: Ditto.
16348 2007-01-22 Andreas Schwab <schwab@suse.de>
16350 * config/m68k/m68k.h: Fix comment.
16352 2007-01-22 Jan Hubicka <jh@suse.cz>
16354 * passes.c (init_optimization_passes): Do not rerun
16355 pass_early_warn_uninitialized.
16357 2007-01-22 Richard Guenther <rguenther@suse.de>
16359 PR tree-optimization/30038
16360 * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
16362 (execute_cse_sincos_1): Likewise.
16363 (execute_cse_sincos): Likewise.
16364 (gate_cse_sincos): Likewise.
16365 (pass_cse_sincos): New pass CSEing sin() and cos() calls using
16366 the cexpi() canonicalization of sincos().
16367 * tree-pass.h (pass_cse_sincos): Declare.
16368 * passes.c (init_optimization_passes): New pass pas_cse_sincos.
16370 2007-01-21 Eric Botcazou <ebotcazou@libertysurf.fr>
16372 PR rtl-optimization/29329
16373 * combine.c (replaced_rhs_insn): Rename to i2mod.
16374 (replaced_rhs_value): Rename to i2mod_new_rhs.
16375 (i2mod_old_rhs): New global variable.
16376 (combine_instructions): Adjust for above change. Save a copy of
16377 the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
16378 note are substituted in the second instruction.
16379 (distribute_notes) <REG_DEAD>: Adjust for above change. Do not
16380 ditch the note if it pertains to the second eliminated register
16381 and this register is mentioned in i2mod_old_rhs.
16384 2006-09-12 Eric Botcazou <ebotcazou@libertysurf.fr>
16386 * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
16387 the insn to which the note was originally attached.
16389 2007-01-21 Jan Hubicka <jh@suse.cz>
16391 * ipa-inline.c (inlining_mode): Comment, move up.
16392 (cgraph_decide_inlining_incrementally): Do not perform inlining
16393 itself; fix handling of flattening of self recursive functions.
16394 (cgraph_find_cycles): Remove.
16395 (cgraph_flatten_node): Remove.
16396 (cgraph_decide_inlining): Use incremental inliner to handle flattening.
16397 (try_inline): New function.
16398 (cgraph_early_inlining): Update call of
16399 cgraph_decide_inlining_incrementally. Apply inlining here.
16400 (apply_inline): Update call of cgraph_decide_inlining_incrementally.
16402 2007-01-21 Dirk Mueller <dmueller@suse.de>
16405 * tree-vrp.c (check_array_bounds): do not warn
16406 about ADDR_EXPR's of ARRAY_REF's which are immediately
16407 used in binary expressions.
16409 2007-01-21 Ira Rosen <irar@il.ibm.com>
16411 * tree-vectorizer.h (struct _stmt_vec_info): Add new field
16412 read_write_dep and macros for its access.
16413 * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
16414 * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
16415 argument, call vect_check_interleaving for every independent pair of
16416 data-refs. Mark loads that access the same memory location as a store
16418 (vect_check_dependences): Remove.
16419 (vect_analyze_data_ref_dependences): Remove vect_check_dependences
16420 call, fix the call to vect_analyze_data_ref_dependence.
16421 (vect_analyze_data_ref_access): For statements that access the same
16422 data-ref, check that they are not stores; for loads, check that there
16423 is no store that access the same location.
16425 2007-01-20 Roger Sayle <roger@eyesopen.com>
16426 Joseph Myers <joseph@codesourcery.com>
16428 * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
16429 (-fdump-rtl-stack): Likewise.
16430 (-fno-signed-zeros): Use @minus{} for a minus sign. Correct typo.
16431 (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
16432 (-mpt-fixed): Use @minus{} for minus sign.
16433 (Using Precompiled Headers): Fix under/overfull hbox.
16435 2007-01-20 Jan Hubicka <jh@suse.cz>
16437 * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
16438 place within annotation.
16440 2007-01-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
16442 * pa.c (output_move_double): Change array size of xoperands to 4.
16444 2007-01-20 Jan Hubicka <jh@suse.cz>
16446 * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
16449 2007-01-19 Ian Lance Taylor <iant@google.com>
16451 * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
16452 constant to unsigned HOST_WIDE_INT before negating.
16454 2007-01-19 Ian Lance Taylor <iant@google.com>
16456 * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
16458 (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
16459 (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
16460 (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
16461 (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
16462 (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
16463 (realloc_vdef, realloc_vuse): Change second parameter to
16465 (ssa_operand_iterator_d): Change vuse_index and mayuse_index
16466 fields to unsigned.
16467 * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
16468 unsigned. Change x and lim locals to unsigned.
16469 (realloc_vdef, realloc_vuse): Change num_elem parameter to
16471 (finalize_ssa_vuse_ops): Change old_i local to unsigned.
16472 (copy_virtual_operands): Change i and n locals to unsigned.
16474 2007-01-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
16476 PR middle-end/29335
16477 * builtins.c (fold_builtin_1): Handle builtin fdim.
16479 2007-01-20 Jan Hubicka <jh@suse.cz>
16481 * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
16482 * tree-ssa-structalias.c (compute_points_to_sets): Do call
16483 init_alias_heapvars.
16484 (init_alias_heapvars): Initialize only when not already initialized.
16485 (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
16487 2007-01-19 Roger Sayle <roger@eyesopen.com>
16489 * common.opt (fsigned-zeros): New command line option.
16490 * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
16491 of flag_unsafe_math_optimizations.
16492 * opts.c (set_fast_math_flags): The -ffast-math command line option
16493 implies -fno-signed-zeros.
16494 (fast_math_flags_set_p): Likewise.
16496 * doc/invoke.texi: Document new -fno-signed-zeros option, and update
16497 the documentation of -ffast-math appropriately. Wrap long lines.
16499 2007-01-19 Steve Ellcey <sje@cup.hp.com>
16501 * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
16502 * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
16504 2007-01-19 Tomas Bily <tbily@suse.cz>
16506 * cgraphunit.c (cgraph_finalize_function): Updating of pid
16508 (tree_init_ic_make_global_vars): New function
16509 (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
16510 (tree_gen_ic_profiler): New function
16511 (tree_gen_ic_func_profiler): New function
16512 (tree_profiling): Added calling of tree_gen_ic_func_profiler
16513 (tree_profile_hooks): Added hook for indirec/virtual calls
16514 * value-prof.c (tree_find_values_to_profile): New case for
16516 (tree_values_to_profile): Call for determining indirect/virtual
16518 (tree_indirect_call_to_profile): New function
16519 (tree_ic_transform): New function
16520 (tree_ic): New function
16521 (find_func_by_pid): New function
16522 (init_pid_map): New function
16523 (tree_value_profile_transformations): Added check for
16524 indirect/virtual call transformation
16525 * value-prof.h (enum hist_type): New counter type for
16526 indirect/virtual calls
16527 (profile_hooks): Added new hook for profiling indirect/virtual
16529 * profile.c (instrument_values): New case for indirect/virtual
16531 * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
16532 (GCOV_COUNTER_V_INDIR): New counter type
16533 (GCOV_COUNTER_NAMES): New name of counter "indirect" added
16534 (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
16536 * cgraph.c: Definition of cgraph_max_pid
16537 (cgraph_create_node): Default init of pid attribute
16538 * cgraph.h: Declaration of cgraph_max_pid
16539 (struct cgraph_node): Added pid attribute
16540 * libgcov.c (__gcov_indirect_call_profiler): New function
16541 (__gcov_one_value_profiler_body): New function
16542 (__gcov_one_value_profiler): Body was moved to
16543 __gcov_one_value_profiler_body and calls it
16545 2007-01-19 Basile Starynkevitch <basile@starynkevitch.net>
16547 * doc/gty.texi (Options): Document the mark_hook option to GTY.
16548 * gengtype.c (write_types_data, write_func_for_structure,
16549 write_types, ggc_wtd, pch_wtd): Add skip_hooks to
16550 write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
16551 (walk_type, write_func_for_structure): Generate the mark_hook if
16554 2007-01-19 Jan Hubicka <jh@suse.cz>
16556 * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
16557 'early' argument take inlining mode argument specifying whether to
16558 inline for size/speeed or all functions; add support for flattening;
16560 (cgraph_early_inlining): Update call of decide_inlining_incrementally.
16562 2007-01-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
16565 * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
16566 the name of the declared identifier.
16568 2007-01-19 Dirk Mueller <dmueller@suse.de>
16570 * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
16571 result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
16572 duplicate evaluation.
16574 2007-01-19 Uros Bizjak <ubizjak@gmail.com>
16576 * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
16577 Macroize expander using X87MODEF12 mode macro. Extend operand 1
16578 to XFMode, use acosxf2 and truncate result to requested mode.
16579 Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
16580 (asin<mode>2): Similarly, with asin expanders.
16581 (*fscalexf4_i387): Rename from *fscalexf4.
16582 (expNcorexf3): New expander.
16583 (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
16584 (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
16585 X87MODEF12 mode macro. Extend operand 1 to XFMode, use expxf2 and
16586 truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
16587 patterns for SSE math.
16588 (exp10<mode>2): Similarly, with exp10 expanders.
16589 (exp2<mode>2): Similarly, with exp2 expanders.
16590 (expm1<mode>2): Similarly, with expm1 expanders.
16591 (ldexp<mode>3): Similarly, with ldexp expanders.
16592 (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
16593 Use gen_truncxf<mode>2_i387_noop to truncate result.
16595 2007-01-19 Richard Sandiford <richard@codesourcery.com>
16597 * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
16598 for ColdFire targets.
16600 2007-01-19 Nathan Sidwell <nathan@codesourcery.com>
16601 Richard Sandiford <richard@codesourcery.com>
16603 * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
16604 (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
16605 (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
16606 * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
16607 (M68K_STATIC_CHAIN_REG_NAME): Likewise.
16608 * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
16610 2007-01-19 Richard Sandiford <richard@codesourcery.com>
16612 * config/m68k/m68k.md (adddi_dilshr32): Rename to...
16613 (*adddi_dilshr32): ...this. Fix formatting. Remove commented-out
16614 non-canonical pattern. Restrict to !TARGET_COLDFIRE.
16615 (*adddi_dilshr32_cf): New pattern.
16616 (adddi3, subdi3): Remove first alternatives.
16618 2007-01-19 Richard Sandiford <richard@codesourcery.com>
16620 * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
16621 implemented using move.l, do not use its cc result for floating-point
16624 2007-01-19 Richard Sandiford <richard@codesourcery.com>
16626 * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
16627 from accepting 's' constraints if flag_pic.
16629 2007-01-19 Richard Sandiford <richard@codesourcery.com>
16631 * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
16632 (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
16633 (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
16634 condition from TARGET_68881 to TARGET_HARD_FLOAT.
16636 2007-01-19 Sandra Loosemore <sandra@codesourcery.com>
16638 * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
16639 ColdFire alternatives.
16640 * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
16641 * config/m68k/m68k.md (clzsi2): Define for ColdFire
16642 architectures that support ff1 instruction.
16644 2007-01-19 Richard Sandiford <richard@codesourcery.com>
16645 Julian Brown <julian@codesourcery.com>
16647 * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
16648 * config/m68k/m68k.md (*movsi_cfv4): Fold into...
16649 (*movsi_cf): ...here. Remove unnecessary 'R' from 'Rg'.
16652 2007-01-19 Richard Sandiford <richard@codesourcery.com>
16654 * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
16656 (output_move_const_into_data_reg, output_move_simode_const): Delete.
16657 * config/m68k/m68k.c (const_method, const_int_cost): Take a
16658 HOST_WIDE_INT instead of an rtx.
16659 (m68k_rtx_costs): Update call accordingly.
16660 (output_move_const_into_data_reg): Likewise. Fix formatting.
16661 (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
16663 (output_move_simode_const): Update calls after above changes.
16664 Rework to use automatic variables and predicates like MEM_P.
16665 * config/m68k/m68k.md (pushexthisi_const): Update call to
16668 2007-01-19 Dirk Mueller <dmueller@suse.de>
16670 * tree-ssa-alias.c (perform_var_substitution): Fix typo
16671 in dump_flags test.
16673 2007-01-19 Richard Guenther <rguenther@suse.de>
16675 * builtins.c (expand_builtin_cexpi): Fall back to expanding
16676 via cexp in case sincos is not available.
16678 2007-01-19 Richard Guenther <rguenther@suse.de>
16680 * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
16681 * defaults.h (TARGET_HAS_SINCOS): Default to off.
16682 * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
16683 * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
16684 * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
16685 * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
16686 * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
16687 * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
16689 2007-01-19 Uros Bizjak <ubizjak@gmail.com>
16691 * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
16693 (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
16694 (atan2xf3): Directly generate RTL pattern.
16695 (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
16696 patterns using X87MODEF12 mode macro. Use fpatan_extend<mode>xf3_i387
16697 and truncate result to requested mode. Use SSE_FLOAT_MODE_P to
16698 disable patterns for SSE math.
16699 (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
16700 patterns using X87MODEF12 mode macro. Use fpatan_extend<mode>xf3_i387
16701 and truncate result to requested mode. Use SSE_FLOAT_MODE_P to
16702 disable patterns for SSE math.
16704 2007-01-19 Alexandre Oliva <aoliva@redhat.com>
16706 * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
16708 2007-01-18 Roger Sayle <roger@eyesopen.com>
16710 * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
16711 VIEW_CONVERT_EXPR to the same type as it's operand.
16713 2007-01-18 David Edelsohn <edelsohn@gnu.org>
16715 * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
16716 configured for long double 128.
16718 2007-01-18 Mike Stump <mrs@apple.com>
16720 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
16723 2007-01-18 Michael Meissner <michael.meissner@amd.com>
16725 * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
16728 2007-01-18 Jan Hubicka <jh@suse.cz>
16730 * tree-ssa-operands.c (vop_free_bucket_size): Never return value
16731 greater than NUM_VOP_FREE_BUCKETS.
16733 2007-01-18 Daniel Berlin <dberlin@dberlin.org>
16735 * tree-ssa-structalias.c: Update comments.
16736 (ptabitmap_obstack): Removed.
16737 (pta_obstack): New.
16738 (oldpta_obstack): Ditto.
16739 (stats): Add a few members.
16740 (struct variable_info): Remove node, complex, address_taken, and
16741 indirect_target members. Add oldsolution member.
16742 (new_var_info): Do not initialize removed members.
16743 (constraint_expr_type): Remove INCLUDES.
16744 (constraint_graph): Add size, implicit_preds, rep,
16745 indirect_cycles, eq_rep, label, direct_nodes, and complex members.
16746 (FIRST_REF_NODE): New macro.
16747 (LAST_REF_NODE): Ditto.
16748 (FIRST_ADDR_NODE): Ditto.
16749 (find): New function.
16751 (dump_constraint): Do not handle INCLUDES.
16752 (insert_into_complex): Do not insert duplicate constraints.
16753 (condense_varmap_nodes): Renamed and rewritten into ...
16754 (merge_node_constraints): This. Also fix bug in handling of
16755 offseted copy constraints.
16756 (clear_edges_for_node): No longer need to deal with preds at all,
16757 or removing associated preds/succs.
16758 (merge_graph_nodes): Deal with indirect_cycles.
16759 Don't deal with predecessors.
16760 (add_implicit_graph_edge): New function.
16761 (add_pred_graph_edge): Ditto.
16762 (add_graph_edge): Don't deal with predecessors.
16763 (build_constraint_graph): Removed.
16764 (build_pred_graph): New function.
16765 (build_succ_graph): Ditto.
16766 (struct scc_info): Removed in_component. Added roots, dfs, and
16767 node_mapping. Remove visited_index, unification_queue.
16768 (scc_visit): Deal with union-find we do now.
16769 Deal with cycles with REF nodes.
16770 (collapse_nodes): Renamed and rewritten to ...
16771 (unify_nodes): This.
16772 (process_unification_queue): Removed.
16773 (topo_visit): Cleanup
16774 (do_da_constraint): Use find.
16775 (do_sd_constraint): Ditto.
16776 (do_ds_constraint): Ditto.
16777 (do_complex_constraint): Ditto.
16778 (init_scc_info): Update for removed and added members.
16779 (find_and_collapse_graph_cycles): Renamed and rewritten into ...
16780 (find_indirect_cycles): This.
16781 (equivalence_class): New variable.
16782 (label_visit): New function.
16783 (perform_variable_substitution): Rewritten.
16784 (free_var_substitution_info): New function.
16785 (find_equivalent_node): Ditto.
16786 (move_complex_constraints): Ditto.
16787 (eliminate_indirect_cycles): Ditto.
16788 (solve_graph): Only propagate changed bits.
16789 Use indirect cycle elimination.
16791 (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
16792 (tree_id_eq): Renamed to ...
16793 (tree_vi_eq): This. Update for member change
16794 (insert_id_for_tree): Renamed and rewritten to ...
16795 (insert_vi_for_tree): This.
16796 (lookup_id_for_tree): Renamed and rewritten to ...
16797 (lookup_vi_for_tree): This.
16798 (get_id_for_tree): Renamed and rewritten to ...
16799 (get_vi_for_tree): Ditto.
16800 (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
16801 (process_constraint): Don't handle INCLUDES.
16802 Remove special ADDRESSOF case.
16803 (find_func_aliases): Rewrite to use vi functions instead of id
16805 (create_function_info_for): Ditto.
16806 (create_variable_info_for): Ditto.
16807 (intra_create_variable_infos): Ditto.
16808 (merge_smts_into): Ditto.
16809 (find_what_p_points_to): Ditto.
16810 (init_base_vars): Ditto.
16811 (init_alias_vars): Ditto.
16812 (remove_preds_and_fake_succs): New function.
16813 (dump_sa_points_to_info): Dump new stats.
16814 (dump_solution_for_var): Use find.
16815 (set_used_smts): Fix formatting.
16816 (compute_points_to_sets): Updated for new functions.
16817 (ipa_pta_execute): Ditto.
16819 2007-01-18 Kazu Hirata <kazu@codesourcery.com>
16820 Richard Sandiford <richard@codesourcery.com>
16822 * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
16824 * calls.c (expand_call): If the return value is a PARALLEL,
16825 extract its first member.
16826 * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
16827 * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
16828 use FUNCTION_EXTRA_EPILOGUE.
16829 (m68k_function_value): Return a PARALLEL if the return value
16830 is of a pointer type.
16831 * config/m68k/netbsd-elf.h (current_function_returns_pointer)
16832 (FUNCTION_EXTRA_EPILOGUE): Remove.
16833 * config/m68k/m68k.md (D0_REG): New constant.
16835 2007-01-18 Kazu Hirata <kazu@codesourcery.com>
16837 * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
16838 output a NOP for empty epilogues.
16840 2007-01-18 Richard Sandiford <richard@codesourcery.com>
16842 * config/m68k/m68k.c (m68k_use_return_insn): Update comments
16843 before function. Extend register save check to include all
16844 registers, not just integer ones.
16846 2007-01-18 Kazu Hirata <kazu@codesourcery.com>
16848 * config/m68k/m68k-protos.h (use_return_insn): Rename to...
16849 (m68k_use_return_insn): ...this.
16850 * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
16851 * config/m68k/m68k.c (use_return_insn): Rename to...
16852 (m68k_use_return_insn): ...this.
16853 * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
16854 of USE_RETURN_INSN.
16856 2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
16858 * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
16859 nearest even, fix denormal rounding overflow.
16861 2007-01-18 Richard Sandiford <richard@codesourcery.com>
16863 * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
16864 f%$smove and f%$move.
16865 (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
16866 (extendsfdf2_cf): Use fdmove instead of f%&move.
16867 (truncdfsf2_cf): Use fsmove instead of f%$smove.
16868 (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
16870 2007-01-18 Richard Sandiford <richard@codesourcery.com>
16872 * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
16875 2007-01-18 Richard Sandiford <richard@codesourcery.com>
16877 * real.h (real_format): Add a canonical_nan_lsbs_set field.
16878 (coldfire_single_format): Declare.
16879 (coldfire_double_format): Likewise.
16880 * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
16881 of qnan_msb_set to determine the lower bits of a canonical
16883 (encode_ieee_double): Likewise.
16884 (encode_ieee_quad): Likewise.
16885 (ieee_single_format): Initialize canonical_nan_lsbs_set.
16886 (mips_single_format): Likewise.
16887 (ieee_double_format): Likewise.
16888 (mips_double_format): Likewise.
16889 (ieee_extended_motorola_format): Likewise.
16890 (ieee_extended_intel_96_format): Likewise.
16891 (ieee_extended_intel_128_format): Likewise.
16892 (ieee_extended_intel_96_round_53_format): Likewise.
16893 (ibm_extended_format): Likewise.
16894 (mips_extended_format): Likewise.
16895 (ieee_quad_format): Likewise.
16896 (mips_quad_format): Likewise.
16897 (vax_f_format): Likewise.
16898 (vax_d_format): Likewise.
16899 (vax_g_format): Likewise.
16900 (i370_single_format): Likewise.
16901 (i370_double_format): Likewise.
16902 (decimal_single_format): Likewise.
16903 (decimal_double_format): Likewise.
16904 (decimal_quad_format): Likewise.
16905 (c4x_single_format): Likewise.
16906 (c4x_extended_format): Likewise.
16907 (real_internal_format): Likewise.
16908 (coldfire_single_format): New real_format.
16909 (coldfire_double_format): Likewise.
16910 * config/pdp11/pdp11.c (pdp11_f_format): Initialize
16911 canonical_nan_lsbs_set.
16912 (pdp11_d_format): Likewise.
16913 * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
16914 if TARGET_COLDFIRE_CPU.
16916 2007-01-18 Richard Sandiford <richard@codesourcery.com>
16918 * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
16919 (output_call, m68k_legitimize_call_address): Declare.
16920 * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
16921 parenthesees. Add support for a 'W' constraint.
16922 (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
16923 (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
16924 (m68k_symbolic_call, m68k_symbolic_jump): Declare.
16925 * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
16927 (override_options): Initialize them. Do not set flag_no_function_cse
16928 for TARGET_ID_SHARED_LIBRARY.
16929 (m68k_output_pic_call): Delete.
16930 (m68k_legitimize_call_address): New function.
16931 (print_operand): Remove the %o prefix. Handle the %p prefix.
16932 (output_call): New function.
16933 (m68k_output_mi_thunk): Use m68k_symbolic_jump. Always load the
16934 target address from the GOT if symbolic jumps are not allowed.
16935 * config/m68k/m68k.md (call, general_operand): Do not set
16936 SYMBOL_REF_FLAG. Use m68k_legitimize_call_address instead.
16937 Merge separate flag_pic and !flag_pic define_insns into...
16938 (*call, *call_value): ...these new patterns. Match the address
16939 rather than the containing MEM and require it to be a call_operand.
16940 Use output_call to generate the asm template.
16941 * config/m68k/predicates.md (const_call_operand): New predicate.
16942 (call_operand): Likewise.
16944 2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
16946 * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
16947 (STACK_GROWS_DOWNWARD): Define to 1.
16948 (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
16949 comments, emphasizing that these values are only defaults.
16950 * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
16951 * config/m68k/m68k.c (const_method): Remove trailing whitespace.
16953 2007-01-18 Richard Sandiford <richard@codesourcery.com>
16955 * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
16957 2007-01-18 Kazu Hirata <kazu@codesourcery.com>
16958 Richard Sandiford <richard@codesourcery.com>
16960 * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
16961 (FP_REGNO_P): New macros.
16962 (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
16963 (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
16964 (EH_RETURN_STACKADJ_RTX): Use A0_REG.
16965 * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
16967 2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
16969 * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
16970 (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
16972 * config/m68k/t-floatlib: New file, extracting common code from...
16973 * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
16974 * config/m68k/t-uclinux: Here.
16975 * config/m68k/fpgnulib.c: Do not compile extendeed precision
16976 routines on ColdFire targets.
16978 2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
16980 * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
16981 (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
16982 (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
16983 (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
16984 explicitly set MOTOROLA to 1.
16985 * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
16987 2007-01-18 Richard Sandiford <richard@codesourcery.com>
16988 Nathan Sidwell <nathan@codesourcery.com>
16990 * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
16991 (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
16992 * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
16993 * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
16994 * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
16995 * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
16996 (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
16997 (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
16998 (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
16999 * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
17000 * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
17001 (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
17002 (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
17003 (DBX_REGISTER_NUMBER): Delete.
17004 * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
17005 (PCC_STATIC_STRUCT_RETURN): Don't undefine.
17006 * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
17008 2007-01-18 Richard Sandiford <richard@codesourcery.com>
17010 * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
17011 * config/flat.h: New file.
17012 * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
17013 OBJECT_FORMAT_FLAT.
17014 * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
17015 indirect references for -msep-data or -mid-shared-library.
17016 Do not use PC-relative code addresses either.
17017 * config/m68k/m68k.c (override_options): Restrict -fPIC error
17019 * config/m68k/uclinux.h (STARTFILE_SPEC): Define. Use Scrt1.o
17020 for shared libraries and crt1.o for executables. Use crti.o and
17022 (ENDFILE_SPEC): Use crtend.o and crtn.o.
17023 (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
17024 Do not add -elf2flt or -shared-lib-id options here.
17025 (LINK_SPEC): Define. Pass -elf2flt if no -elf2flt option is given.
17026 Pass -shared-lib-id if -mid-shared-library, taking the library
17027 identifier from -mshared-library-id if given, otherwise
17029 (EH_FRAME_IN_DATA_SECTION): Do not undefine.
17030 (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
17031 (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
17032 and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
17033 (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
17034 * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
17036 * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
17037 jump sequence for ISA A and ISA A+.
17038 (PICJUMP): Likewise.
17040 2007-01-18 Richard Sandiford <richard@codesourcery.com>
17042 * config.gcc (m68k-*-uclinux*): Base the port on the common
17043 and m68k GNU/Linux files rather than on the generic ELF ones.
17044 * config/m68k/uclinux.h (TARGET_VERSION): Override.
17045 (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
17047 2007-01-18 Julian Brown <julian@codesourcery.com>
17048 Richard Sandiford <richard@codesourcery.com>
17050 * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
17051 (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
17052 * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
17054 * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
17055 80 unconditionally.
17056 (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
17058 2007-01-18 Richard Sandiford <richard@codesourcery.com>
17060 * doc/install.texi: Document m68k-uclinuxoldabi.
17061 * config.gcc (m68k-*-uclinuxoldabi): New configuration.
17062 * config/m68k/uclinux-oldabi.h: New file, copied from
17063 config/m68k/uclinux.h.
17065 2007-01-18 Kaz Kojima <kkojima@rr.iij4u.or.jp>
17067 * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
17068 * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
17069 (m32r_compute_frame_size): Use unsigned for regno.
17070 (m32r_reload_lr): Use gen_frame_mem.
17072 (m32r_output_function_epilogue): Don't output the function epilogue
17074 (m32r_expand_epilogue): New.
17075 (direct_return): Return false if the function has the interrupt
17077 (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
17078 * config/m32r/m32r.md (epilogue): New expander.
17079 (return_lr, return_rte): New insns.
17080 (return): Make it expander.
17081 (return_normal): New expander.
17083 2007-01-18 Josh Conner <jconner@apple.com>
17086 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
17087 support for UNLE, UNLT, UNGE, and UNGT.
17089 2007-01-18 Jan Hubicka <jh@suse.cz>
17091 * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
17092 * tree-tailcall (add_virtual_phis): Likewise.
17093 (optimize_tail_call): Return TODOs.
17094 (execute_tail_calls): Return TODOs.
17095 * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
17096 * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
17098 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
17099 Cleanup cfg using TODO.
17100 * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
17101 * passes.c (execute_function_todo): When cleanup did something, remove
17103 * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
17104 (make_edges): Don't cleanup_cfg.
17106 2007-01-18 Uros Bizjak <ubizjak@gmail.com>
17108 * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
17109 UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
17110 operate on the top of stack.
17111 [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
17112 register handling of instructions that output to the second
17114 [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
17115 (move_for_stack_reg): Special-case check for dead destination
17116 stack slot for constant load of 1.0 inside UNSPEC_TAN.
17118 * config/i386/i386.md (UNSPEC_TAN): New constant.
17119 (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
17120 (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
17121 to correctly model move of constant 1.0 to top stack slot.
17122 (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
17123 (unnamed peephole2 pattern): Remove corresponding peephole2
17124 pattern that optimizes tan insn and loading of constant 1.0.
17125 (tanxf2): Use fptanxf4_i387.
17126 (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
17127 patterns using X87MODEF12 mode macro. Use fptan_extend<mode>xf4_i387
17128 and truncate result to requested mode. Use SSE_FLOAT_MODE_P to
17129 disable patterns for SSE math.
17130 (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
17131 (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
17133 2007-01-18 Dirk Mueller <dmueller@suse.de>
17134 Richard Guenther <rguenther@suse.de>
17137 * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
17138 * common.opt (Warray-bounds): Add new warning option.
17139 * c-opts.c (c_common_handle_option): Define -Warray-bounds
17141 * Makefile.in: make tree-vrp.o depend on toplev.h
17142 * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
17144 (check_array_refs, check_array_bounds, check_array_ref): New.
17146 2007-01-18 Jan Hubicka <jh@suse.cz>
17148 * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
17149 (execute_ssa_ccp): Return flags conditionally.
17150 * tree-ssa-propagate.c (substitue_and_fold): Return if something was
17152 * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
17154 2007-01-18 Steven Bosscher <steven@gcc.gnu.org>
17156 * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
17157 the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
17159 * Makefile.c (GTFILES): Add cfglayout.h.
17160 * gengtype.c (open_base_files): Likewise.
17161 * cfglayout.c (cfg_layout_function_footer,
17162 cfg_layout_function_header) Reindent to make gengtype happy.
17163 * cfglayout.h (cfg_layout_function_footer,
17164 cfg_layout_function_header): Add GTY(()) marker.
17166 * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
17168 2007-01-18 Ben Elliston <bje@au.ibm.com>
17170 * genautomata.c (write_automata): Include xstrerror output in the
17171 error message if writing the DFA description file fails.
17173 2007-01-17 H.J. Lu <hongjiu.lu@intel.com>
17175 * config/mips/mips-protos.h (mips_output_external): Make it
17177 * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
17178 * config/mips/mips.c (irix_output_external_libcall): Likewise.
17179 (extern_list): Likewise.
17180 (extern_head): Likewise.
17181 (TARGET_ASM_FILE_END): Likewise.
17182 (mips_file_end): Likewise.
17183 (mips_output_external): Rewritten.
17185 2007-01-18 Ben Elliston <bje@au.ibm.com>
17187 * genpreds.c (write_insn_preds_c): Only write out the function
17188 body for regclass_for_constraint if we have register constraints.
17190 2007-01-17 Tom Tromey <tromey@redhat.com>
17192 * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
17193 * doc/install.texi (Testing): Use sourceware.org.
17194 (Binaries): Likewise.
17195 (Specific): Likewise.
17196 * doc/contrib.texi (Contributors): Use sourceware.org.
17198 2007-01-17 Anatoly Sokolov <aesok@post.ru>
17200 * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
17201 (AVR_ENHANCED): Rename to ...
17202 (AVR_HAVE_MUL): ... new.
17203 (avr_enhanced_p): Rename to ...
17204 (avr_have_mul_p): ... new.
17205 (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
17206 'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
17207 * config/avr/avr.c (avr_enhanced_p): Rename to ...
17208 (avr_have_mul_p): ... new.
17209 (base_arch_s): Rename 'enhanced' to 'have_mul'.
17210 (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
17211 'avr_enhanced_p' and 'enhanced'.
17212 (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
17213 AVR_HAVE_MUL instead of AVR_ENHANCED.
17214 * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
17215 (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
17216 *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
17217 instead of AVR_ENHANCED.
17218 (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
17219 * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
17220 (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
17222 2007-01-17 Ian Lance Taylor <iant@google.com>
17224 * vec.h (VEC_reserve_exact): Define.
17225 (vec_gc_p_reserve_exact): Declare.
17226 (vec_gc_o_reserve_exact): Declare.
17227 (vec_heap_p_reserve_exact): Declare.
17228 (vec_heap_o_reserve_exact): Declare.
17229 (VEC_OP (T,A,reserve_exact)): New static inline function, three
17231 (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
17232 negative parameter.
17233 (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
17234 (VEC_OP (T,A,copy)) [all versions]: Likewise.
17235 (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
17236 * vec.c (calculate_allocation): Add exact parameter. Change all
17238 (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
17239 (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
17240 (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
17241 (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
17242 (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
17243 (vec_heap_p_reserve_exact): New function.
17244 (vec_heap_o_reserve_exact): New function.
17246 2007-01-17 Jan Hubicka <jh@suse.cz>
17248 * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
17250 2007-01-17 Eric Christopher <echristo@apple.com>
17252 * config.gcc: Support core2 processor.
17254 2007-01-16 Jan Hubicka <jh@suse.cz>
17256 * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
17257 the names, just unlink the chain so we don't crash on dangling
17261 2007-01-16 Jan Hubicka <jh@suse.cz>
17263 * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
17264 * tree-pass.h: Reorder to make IPA passes appear toegher.
17265 (pass_early_inline, pass_inline_parameters, pass_apply_inline):
17267 * cgraphunit.c (cgraph_finalize_function): Do not compute inling
17268 parameters, do not call early inliner.
17269 * ipa-inline.c: Update comments. Include tree-flow.h
17270 (cgraph_decide_inlining): Do not compute inlining parameters.
17271 (cgraph_decide_inlining_incrementally): Return TODOs; assume to
17272 be called with function context set up.
17273 (pass_ipa_inline): Remove unreachable functions before pass.
17274 (cgraph_early_inlining): Simplify assuming to be called from the
17276 (pass_early_inline): New pass.
17277 (cgraph_gate_ipa_early_inlining): New gate.
17278 (pass_ipa_early_inline): Turn into simple wrapper.
17279 (compute_inline_parameters): New function.
17280 (gate_inline_passes): New gate.
17281 (pass_inline_parameters): New pass.
17282 (apply_inline): Move here from tree-optimize.c
17283 (pass_apply_inline): New pass.
17284 * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
17286 * tree-inline.c (optimize_inline_calls): Return TODOs rather than
17287 doing them by hand.
17288 (tree_function_versioning): Do not allocate dummy struct function.
17289 * tree-inline.h (optimize_inline_calls): Update prototype.
17290 * tree-optimize.c (execute_fixup_cfg): Export.
17291 (pass_fixup_cfg): Remove
17292 (tree_rest_of_compilation): Do not apply inlines.
17293 * tree-flow.h (execute_fixup_cfg): Declare.
17294 * Makefile.in (gt-passes.c): New.
17295 * passes.c: Include gt-passes.h
17296 (init_optimization_passes): New passes.
17297 (nnodes, order): New static vars.
17298 (do_per_function_toporder): New function.
17299 (execute_one_pass): Dump current pass here.
17300 (execute_ipa_pass_list): Don't dump current pass here.
17302 2007-01-16 Janis Johnson <janis187@us.ibm.com>
17304 * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
17305 (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
17307 2007-01-16 David Edelsohn <edelsohn@gnu.org>
17309 * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
17310 (strong_alias): Define.
17311 (__gcc_qmul): Provide non-FMA for soft-float.
17312 (__gcc_qdiv): Same.
17317 (__gcc_qunord): New.
17327 * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
17328 soft-float functions.
17329 * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
17330 * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
17331 about long double soft float.
17333 2007-01-16 Dorit Nuzman <dorit@il.ibm.com>
17334 Tehila Meyzels <tehila@il.ibm.com>
17336 * tree-vectorizer.h (is_pattern_stmt_p): New.
17337 * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
17338 formatting (tabs instead of spaces). Cleanup and clarify setting
17339 of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
17340 * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
17341 (vectorizable_type_demotion): Check that types are integral.
17342 (vectorizable_type_promotion): Likewise.
17343 (vectorizable_store): Fix typo. Eliminate new-line at end of
17346 2007-01-16 Jan Hubicka <jh@suse.cz>
17348 * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
17351 2007-01-15 Eric Christopher <echristo@apple.com>
17353 * ifcvt.c: Include vec.h, vecprim.h.
17354 (check_cond_move_block): New argument regs.
17355 Reorganize. Add registers used to regs.
17356 (cond_move_process_if_block): Use regs set above as
17359 2007-01-15 Eric Christopher <echristo@apple.com>
17361 * config/darwin.h: Update copyright.
17362 (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
17363 (LINK_COMMAND_SPEC): Add -u.
17364 (LINK_SPEC): Fix umbrella for above.
17366 2007-01-15 Joseph S. Myers <joseph@codesourcery.com>
17368 * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
17371 2007-01-15 Tom Tromey <tromey@redhat.com>
17373 * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
17374 * doc/install.texi (Testing): Don't mention jacks.
17375 (Configuration): Document --enable-java-maintainer-mode. Move
17376 --with-java-home to libgcj-specific section. Document
17378 (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
17380 2007-01-15 Jan Hubicka <jh@suse.cz>
17382 * tree-ssa-dce.c (DCE_TODOs): New.
17383 (propagate_necessity): Return if something changed.
17384 (eliminate_unnecessary_stmts): Likewise.
17385 (perform_tree_ssa_dce): Return TODO flags when needed.
17386 (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
17388 2007-01-15 Uros Bizjak <ubizjak@gmail.com>
17390 * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
17391 (fyl2x_extend<mode>xf3_i387): New insn pattern.
17392 (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
17393 patterns using X87MODEF12 mode macro. Extend operand 1
17394 to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
17395 (log10<mode>2): Ditto.
17396 (log2<mode>2): Ditto.
17397 (log1p<mode>2): Ditto.
17398 (logb<mode>2): Ditto.
17399 (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
17400 (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
17401 (*fxtractxf3_i387): Rename from *fxtractxf3.
17402 (fxtract_extend<mode>xf3_i387): New insn pattern.
17403 (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
17404 * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
17405 and gen_fyl2xxf3_i387().
17407 2007-01-14 Zdenek Dvorak <dvorakz@suse.cz>
17409 * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
17410 * cfgloopmanip.c (fix_loop_placement): Made static. Use
17411 get_loop_exit_edges. Changed return type to bool.
17412 * cfgloop.h (fix_loop_placement): Declaration removed.
17414 2007-01-14 Dorit Nuzman <dorit@il.ibm.com>
17416 * param.h (MIN_VECT_LOOP_BOUND): New.
17417 * params.def (MIN_VECT_LOOP_BOUND): New.
17418 * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
17419 argument - minimum threshold for number of iterations.
17420 * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
17421 argument to declaration.
17422 * tree-vect-analyze.c (vect_analyze_operations): Check value of
17423 MIN_VECT_LOOP_BOUND.
17424 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
17425 slpeel_tree_peel_loop_to_edge with additional argument.
17426 (vect_do_peeling_for_alignment): Likewise.
17427 * doc/invoke.texi (min-vect-loop-bound): Document new param option.
17429 2007-01-14 Uros Bizjak <ubizjak@gmail.com>
17432 * config/i386/i386.c (print_operand) ['z']: Output 'b' for
17433 operands of size 1.
17435 2007-01-14 Jan Hubicka <jh@suse.cz>
17437 * tree-dfa.c (remove_referenced_var): New function.
17438 * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
17439 prune referenced vars list too.
17440 * tree-flow.h (remove_referenced_var): Declare.
17442 2007-01-14 Jan Hubicka <jh@suse.cz>
17444 * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
17446 (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
17447 (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
17448 * except.h (verify_eh_throw_table_statements): Kill prototype.
17449 * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
17450 into call exrepssions.
17451 * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
17453 * tree-cfg.c: Include pointer-set.h.
17454 (verify_node_sharing): Work on pointer set.
17455 (verify_eh_throw_stmt_node): New.
17456 (verify_stmts): Use pointers sets, verify throw_stmt.
17458 2007-01-13 Zdenek Dvorak <dvorakz@suse.cz>
17460 * ipa-reference.c (analyze_function): Consider also addresses taken
17463 2007-01-12 Roger Sayle <roger@eyesopen.com>
17465 * c-typeck.c (null_pointer_constant_p): Replace use of
17466 TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
17467 (build_c_cast): Likewise.
17469 2007-01-12 Roger Sayle <roger@eyesopen.com>
17471 * tree.h (force_fit_type_double): Remove unused final argument.
17472 * c-common.c (constant_expression_warning): Replace use of
17473 TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
17474 (convert_and_check): Likewise.
17475 (shorten_compare): Update call to force_fit_type_double.
17476 (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
17477 * convert.c (convert_to_pointer): Update call to
17478 force_fit_type_double.
17479 * fold-const.c (force_fit_type_double): Remove overflowed_const
17481 (int_const_binop, fold_convert_const_int_from_int,
17482 fold_convert_const_int_from_real, fold_div_compare,
17483 fold_sign_changed_comparison, fold_unary, fold_negate_const,
17484 fold_abs_const, fold_not_const): Remove the final argument from
17485 calls to force_fit_type_double.
17487 2007-01-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
17489 * configure.ac: Set insn to "nop" for spu-*-* also.
17490 * configure: Regenerate.
17492 2007-01-12 Olga Golovanevsky <olga@il.ibm.com>
17494 * builtins.def : Add BUILT_IN_FREE.
17496 2007-01-12 Jan Hubicka <jh@suse.cz>
17498 PR tree-optimization/30443
17499 * tree-inline.c (tree_function_versioning): Do not optimize when
17500 cloning for inlining.
17502 2007-01-12 Zdenek Dvorak <dvorakz@suse.cz>
17504 * doc/loop.texi: Document recording of loop exits.
17505 * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
17506 (update_single_exits_after_duplication,
17507 update_single_exit_for_duplicated_loop,
17508 update_single_exit_for_duplicated_loops): Removed.
17509 (duplicate_loop_to_header_edge): Do not call
17510 update_single_exits_after_duplication and
17511 update_single_exit_for_duplicated_loops.
17512 (loop_version): Do not update single_exit information.
17513 (fix_loop_structure): Use record_loop_exits instead of
17514 mark_single_exit_loops.
17515 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
17516 the lists of loop exits.
17517 * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
17518 split_edge, merge_blocks): Update the lists of loop exits.
17519 * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
17520 loop_optimizer_init.
17521 * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
17522 of mark_single_exit_loops.
17523 (loop_optimizer_finalize): Call release_recorded_exits.
17524 * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
17525 LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
17526 * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
17527 update single exit information.
17528 * lambda-code.c (perfect_nestify): Ditto.
17529 * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
17530 (mark_single_exit_loops): Removed.
17531 (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
17532 get_exit_descriptions, rescan_loop_exit, record_loop_exits,
17533 dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
17535 (get_loop_exit_edges, single_exit): Use recorded exit lists.
17536 (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
17537 (verify_loop_structure): Verify consistency of the exit lists.
17538 (flow_loops_find): Use alloc_loop. Initialize exits hash.
17539 (set_single_exit): Removed.
17540 * cfgloop.h (struct loop_exit): New function.
17541 (struct loop): single_exit_ field replaced by exits field.
17542 (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
17543 LOOPS_HAVE_RECORDED_EXITS.
17544 (struct loops): Added exits hash.
17545 (mark_single_exit_loops, set_single_exit): Declaration removed.
17546 (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
17548 2007-01-12 Richard Sandiford <richard@codesourcery.com>
17550 * doc/invoke.texi: Avoid use of @headitem.
17552 2007-01-12 Richard Sandiford <richard@codesourcery.com>
17554 * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
17556 2007-01-12 Richard Sandiford <richard@codesourcery.com>
17558 * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
17561 2007-01-12 Nathan Sidwell <nathan@codesourcery.com>
17562 Richard Sandiford <richard@codesourcery.com>
17564 * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
17565 * config/m68k/m68k.opt: Resort options.
17566 (mbitfield, mrtd, mshort): Remove RejectNegative properties.
17568 2007-01-12 Nathan Sidwell <nathan@codesourcery.com>
17569 Richard Sandiford <richard@codesourcery.com>
17571 * doc/invoke.texi: Document the macros that are defined by
17572 m68k's -mtune and -mhard-float options.
17573 * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
17574 (m68k_cpp_cpu_family): Likewise.
17575 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
17576 of __ucfv*__ macros. Define __mcffpu__ if generating code for
17577 ColdFire FPUs. Define __mcf_cpu_* and __mcf_family_* macros.
17578 * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
17579 (m68k_cpp_cpu_family): Likewise.
17581 2007-01-12 Richard Sandiford <richard@codesourcery.com>
17583 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
17584 macros besides mc68000 as tuning macros. Use a switch statement
17585 to set them and mcpu32.
17587 2007-01-12 Julian Brown <julian@codesourcery.com>
17589 * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
17590 (TARGET_68040_ONLY): Rename to...
17591 (TARGET_68040): ...this.
17592 * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
17593 * config/m68k/m68k.md: Likewise.
17595 2007-01-12 Julian Brown <julian@codesourcery.com>
17596 Nathan Sidwell <nathan@codesourcery.com>
17597 Richard Sandiford <richard@codesourcery.com>
17599 * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
17600 the -mcpu= argument associated with the --with-cpu setting.
17601 Define M68K_DEFAULT_TUNE to the default -mtune= option,
17602 if different from the one implied by the -mcpu setting.
17603 Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
17604 using mcpu=FOO as the default CPU option. Set target_cpu_default2.
17605 * doc/invoke.texi: Mention ColdFire in the introduction to the
17606 m68k options. Document the new -march, -mcpu, -mtune, -mdiv,
17607 -mno-div and -mhard-float options. Make -m68881 a synonym for
17608 -mhard-float. Document the previously-undocumented -m5206e,
17609 -m528x, -m5307 and -m5407 options. Tweak the existing option
17610 documentation for consistency.
17611 * doc/install.texi: Mention new --with-cpu arguments.
17612 * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
17613 default CPU if neither -mcpu nor -march are specified.
17614 (ASM_CPU_SPEC): Pass down -mcpu and -march options.
17615 (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
17616 TARGET_ISA*. Set the legacy __mcf*__ cpu macros in the same way,
17617 using m68k_tune to decide between families that implement the
17618 same ISA. Use m68k_tune to set __mcfv4e__.
17619 (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
17620 (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
17621 (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
17622 (FL_ISA_C, FL_ISA_MMU): New macros.
17623 (MASK_COLDFIRE): Delete.
17624 (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
17625 (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
17626 (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
17627 (TARGET_HARD_FLOAT): Do not define here.
17628 (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
17629 (TUNE_68000): New macro.
17630 (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
17631 (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
17632 (TUNE_CFV2): Redefine in terms of m68k_tune.
17633 (uarch_type, target_device, fpu_type): New enums.
17634 (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
17635 * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
17636 (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
17637 (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
17638 (FL_FOR_isa_c): New macros.
17639 (m68k_isa): New enum.
17640 (m68k_target_selection): New structure.
17641 (all_devices, all_isas, all_microarchs): New tables.
17642 (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
17643 (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
17644 (MASK_ALL_CPU_BITS): Delete.
17645 (m68k_find_selection): New function.
17646 (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
17647 Map the legacy target options to a combination of the new ones.
17648 (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
17649 m68k_cpu_flags. Handle M68K_DEFAULT_TUNE. Use m68k_cpu_flags
17650 to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
17652 * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
17653 (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
17655 (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
17656 (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
17657 * config/m68k/m68k-devices.def: New file.
17659 2007-01-12 Richard Sandiford <richard@codesourcery.com>
17660 Nathan Sidwell <nathan@codesourcery.com>
17662 * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
17663 (SUBTARGET_EXTRA_SPECS): New macros.
17664 * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
17665 use %(asm_cpu_spec) instead.
17666 * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
17667 * config/m68k/openbsd.h (ASM_SPEC): Likewise.
17668 * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
17669 (EXTRA_SPECS): Rename to...
17670 (SUBTARGET_EXTRA_SPECS): ...this.
17672 2007-01-12 Nathan Sidwell <nathan@codesourcery.com>
17673 Richard Sandiford <richard@codesourcery.com>
17674 Julian Brown <julian@codesourcery.com>
17676 * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
17677 (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
17678 to the configuration's default CPU.
17679 (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
17680 Remove default masks.
17681 (m680[012]0-*-*): Set the default with_cpu to the first part of
17683 (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
17684 (m68k*-*-linux): Extend the --with-cpu handling to...
17685 (m680[012]0-*-*, m68k*-*-*): ...these configurations. Allow m68000
17686 and m68010. Don't set target_cpu_default2.
17687 * doc/install.texi: Document --with-cpu for m68k.
17688 * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
17689 * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
17690 (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
17691 (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
17692 (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
17693 (ASM_SPEC): Remove use of %(asm_cpu_default).
17694 (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
17695 * config/m68k/linux.h (TARGET_DEFAULT): Delete.
17696 (CPP_SPEC): Merge definitions. Do not handle __HAVE_68881__ here.
17697 * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
17698 __HAVE_FPU__ if TARGET_HARD_FLOAT.
17699 (TARGET_DEFAULT): Delete.
17700 (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
17701 cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
17702 (CPP_CPU_SPEC): Delete.
17703 (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
17704 the appropriate string.
17705 (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
17706 (CPP_SPEC): Define to NETBSD_CPP_SPEC.
17707 (ASM_SPEC): Don't use %(asm_default_spec).
17708 * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
17709 TARGET_DEFAULT and add MASK_68881.
17710 * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
17712 2007-01-12 Richard Sandiford <richard@codesourcery.com>
17714 * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
17715 (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
17716 MASK_68010 alongside MASK_68020.
17717 * doc/invoke.texi: Document -m68010.
17718 * config/m68k/m68k.opt (m68010): New.
17719 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
17721 (TUNE_68010): New macro.
17722 * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
17723 (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
17724 (M68K_CPU_m68332): Add MASK_68010.
17725 * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
17726 fallback definition.
17727 * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
17729 * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
17730 (m68k_handle_option): Handle OPT_m68010. Add MASK_68010
17731 to all entries that use MASK_68020.
17732 (output_move_simode_const, output_move_himode, output_move_qimode)
17733 (output_move_stricthi, output_move_strictqi): Use TARGET_68010
17734 instead of TARGET_68020 to select clr behavior. Remove comment
17735 about there being no TARGET_68010.
17736 * config/m68k/m68k.md: Likewise throughout.
17738 2007-01-12 Julian Brown <julian@codesourcery.com>
17740 * config/m68k/m68k.h (TARGET_ISAB): New macro.
17741 * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
17742 * config/m68k/m68k.md: Likewise.
17744 2007-01-12 Julian Brown <julian@codesourcery.com>
17746 * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
17747 TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
17749 2007-01-12 Julian Brown <julian@codesourcery.com>
17751 * config/m68k/m68k.h (TUNE_68040_60): New macro.
17752 * config/m68k/m68k.c (standard_68881_constant_p): Use it.
17753 * config/m68k/m68k.md: Likewise.
17755 2007-01-12 Julian Brown <julian@codesourcery.com>
17756 Richard Sandiford <richard@codesourcery.com>
17758 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
17759 instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
17760 TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
17762 (TARGET_CPU32): Rename to...
17763 (TUNE_CPU32): ...this.
17764 (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
17765 (TUNE_CFV2): New macros.
17766 * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
17767 remove conditions that are implied by TARGET_68020.
17768 * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
17769 instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
17770 (m68k_output_function_epilogue): Likewise.
17771 (m68k_rtx_costs): Likewise. Use TUNE_68060 instead of TARGET_68060
17772 and TUNE_CFV2 instead of TARGET_5200. Use TUNE_68000_10 instead of
17773 "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
17774 non-68000 timings. Refactor multiplication and division costs.
17775 (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
17776 TUNE_CPU32 instead of TARGET_CPU32.
17777 (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
17778 and TUNE_68060 instead of TARGET_68060.
17779 * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
17780 TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
17782 (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
17783 && !TARGET_COLDFIRE" to choose between moveq and clr.
17784 Likewise in the unnamed movsf pattern.
17785 (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
17786 "!TARGET_68020 && !TARGET_COLDFIRE". Likewise the unnamed
17789 2007-01-12 Richard Sandiford <richard@codesourcery.com>
17791 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
17792 of tabbing before backslashes.
17794 2007-01-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
17796 * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
17797 * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
17798 (ASM_OUTPUT_INTERNAL_LABEL): Define.
17800 2007-01-11 Zdenek Dvorak <dvorakz@suse.cz>
17802 * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
17803 find_interesting_uses_cond.
17804 (find_interesting_uses_cond): Use extract_cond_operands.
17805 (rewrite_use_compare): Use extract_cond_operands and
17806 force_gimple_operand_bsi. Do not call update_stmt.
17807 (determine_use_iv_cost_condition): Use extract_cond_operands.
17808 Return cheaper of using original bound and changing the exit bound.
17810 2007-01-11 Zdenek Dvorak <dvorakz@suse.cz>
17812 PR tree-optimization/29516
17813 * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
17814 most_expensive_mult_to_index, addr_to_parts,
17815 create_mem_ref, maybe_fold_tmr): Make the type of
17816 fields of TARGET_MEM_REF sizetype.
17817 (move_fixed_address_to_symbol, move_pointer_to_base):
17819 * tree.def (TARGET_MEM_REF): Add comment on types of
17822 2007-01-11 Joseph Myers <joseph@codesourcery.com>
17824 * c-common.c (vector_types_convertible_p): Treat opaque types as
17825 always convertible if they have the same size, but not otherwise.
17827 2007-01-11 Steven Bosscher <steven@gcc.gnu.org>
17829 * ifcvt.c (struct noce_if_info): Add comments to the fields.
17830 Remove the b_unconditional field.
17831 (noce_try_sign_mask): Do not look at b_unconditional.
17832 (noce_process_if_block): Do not use merge_if_blocks. Update
17833 the CFG here. Do not set b_unconditional.
17834 (cond_move_process_if_block): Likewise.
17835 (find_cond_trap): Likewise.
17836 (check_cond_move_block): Require simple jump insns at the end
17837 of the basic block.
17839 2007-01-11 Jan Hubicka <jh@suse.cz>
17841 PR tree-optimization/1046
17842 * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
17843 when alias info is not ready.
17844 (pass_tail_recursion): Do not require aliasing.
17845 * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
17846 * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
17847 * tree-ssa-copy.c (pass_copy_prop): Likewise.
17848 * tree-ssa-forwprop.c (pass_forwprop): Likewise.
17849 * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
17850 * passes.c (init_optimization_passes): Execute rename_ssa_copies,
17851 ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
17853 * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
17854 When aliasing is not build, mark statement as volatile.
17856 2007-01-11 Tom Tromey <tromey@redhat.com>
17858 PR preprocessor/15185, PR preprocessor/20989:
17859 * doc/cppopts.texi <-MT>: Update description of algorithm for
17860 computing default target.
17861 <-M, -MD>: Reword "basename" text.
17863 2007-01-11 Roger Sayle <roger@eyesopen.com>
17865 * builtins.c (expand_builtin_pow, expand_builtin_powi,
17866 fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
17867 fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
17868 fold_builtin_int_int_roundingfn, fold_builtin_bitop,
17869 fold_builtin_bswap, real_constp, fold_builtin_pow,
17870 fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
17871 do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
17872 uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
17873 * convert.c (convert_to_pointer): Likewise.
17874 * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
17875 * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
17876 const_binop, fold_convert_const_int_from_int,
17877 fold_convert_const_int_from_real,
17878 fold_convert_const_real_from_real, sign_bit_p,
17879 optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
17880 fold_sign_changed_comparison, fold_unary, fold_comparison,
17881 fold_binary, multiple_of_p, tree_Expr_non_zero_p,
17882 fold_negate_const, fold_abs_const, fold_not_const): Likewise.
17883 * print-tree.c (print_node_brief, print_node): Likewise.
17884 * stor-layout.c (place_field, layout_type): Likewise.
17885 * tree-chrec.c (keep_cast): Likewise.
17886 * tree.c (build_vector, build_real, build_real_from_int_cst,
17887 build_complex): Likewise.
17889 2007-01-11 Roger Sayle <roger@eyesopen.com>
17891 * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete. For the time being,
17892 treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
17894 2007-01-11 Paolo Bonzini <bonzini@gnu.org>
17896 * configure.ac (strict1_warn): Rename to strict_warn.
17897 (WERROR, --enable-werror, symlink hacks, stage1_cflags,
17898 cc_set_by_configure, quoted_cc_set_by_configure,
17899 stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
17900 all_boot_languages, all_stagestuff): Remove.
17901 (target_list): Remove bootstrap targets.
17902 * Makefile.in (quickstrap): Unconditionally make a synonym of all.
17903 (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
17904 REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
17905 SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
17906 VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
17907 STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
17908 stage1_copy, stage2_build, stage2_copy, stageprofile_build,
17909 stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
17910 stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
17911 bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
17912 bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
17913 unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
17914 restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
17915 cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
17916 *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
17917 stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
17918 stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
17919 risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
17920 (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
17921 (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
17922 (mostlyclean): Adjust.
17923 (clean, distclean): Don't mention bootstrap stuff.
17924 * configure: Regenerate.
17925 * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
17926 java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
17927 treelang/config-lang.in (stagestuff): Remove.
17928 * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
17929 stageprofile, stagefeedback, stagestuff): Remove mention.
17931 2007-01-11 Nick Clifton <nickc@redhat.com>
17933 * config/mcore/predicates.md (mcore_general_movesrc_operand):
17935 (mcore_general_movdst_operand): Do not accept CONST_INTs.
17936 (mcore_arith_K_S_operand): Run the test for the S constraint not
17937 the test for the M constraint.
17938 (mcore_addsub_operand): Do not accept integer values that are
17939 larger than 32 bits.
17940 * config/mcore/mcore.md: Remove unused constraints from split.
17941 (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
17942 (addsi3): Likewise.
17943 (allocate_stack): Likewise.
17944 * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
17945 operands to 32 bits.
17946 (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
17948 (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
17949 mcore_const_ok_for_inline, mcore_const_trick_uses_not,
17950 try_constant_tricks, mcore_num_ones, mcore_num_zeros,
17951 mcore_output_bclri, mcore_output_andn, output_inline_const,
17952 mcore_output_move, mcore_output_movedouble): Likewise.
17953 (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
17954 (output_inline_const): Likewise.
17955 (output_inline_const): Fix format strings used in sprintf
17957 * config/mcore/mcore-protos.h: Update prototypes for changed
17958 functions in mcore.c.
17959 * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
17960 HOST_WIDE_INT and not int.
17961 (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
17962 CONST_OK_FOR_N): Likewise.
17963 (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
17964 (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
17967 2007-01-10 Jan Hubicka <jh@suse.cz>
17969 * tree-vrp.c (remove_range_assertions): Release defs.
17970 * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
17971 * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
17973 2007-01-10 Paul Brook <paul@codesourcery.com>
17975 * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
17976 * config/arm/arm.md (mulsi3subsi): New insn.
17978 2007-01-10 Zdenek Dvorak <dvorakz@suse.cz>
17980 * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
17981 (tree_transform_and_unroll_loop): New.
17982 * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
17985 2007-01-10 Robert Kennedy <jimbob@google.com>
17987 * fold-const.c (fold_comparison): Fold comparisons like (x *
17988 1000 < 0) to (x < 0).
17990 2007-01-10 Ian Lance Taylor <iant@google.com>
17992 * tree-pretty-print.c (dump_generic_node): Print parentheses when
17993 operands have the same priority.
17995 2007-01-10 Tom Tromey <tromey@redhat.com>
17997 * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
17998 (fold_binary): Likewise.
17999 * langhooks.c (lhd_can_use_bit_fields_p): Removed.
18000 * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
18001 (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
18002 (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
18003 * langhooks.h (struct lang_hooks): Removed field
18004 'can_use_bit_fields_p'.
18006 2007-01-10 Ralf Corsépius <ralf.corsepius@rtems.org>
18008 * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
18010 2007-01-10 Razya Ladelsky <razya@il.ibm.com>
18012 * function.c (get_last_funcdef_no): New function.
18013 * function.h (get_last_funcdef_no): Declare.
18014 * tree-inline.c (initialize_cfun): Add initialization.
18015 (tree_function_versioning): Cleanup.
18017 2007-01-10 Jan Hubicka <jh@suse.cz>
18019 * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
18022 2007-01-10 Sa Liu <saliu@de.ibm.com>
18023 Ben Elliston <bje@au.ibm.com>
18025 * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
18026 for SAVE_NONLOCAL and Pmode for any other save level.
18027 * spu-protos.h (spu_restore_stack_block): Declare.
18028 * spu.md (save_stack_block): Remove.
18029 (restore_stack_block): Call spu_restore_stack_block.
18030 * spu.c (spu_restore_stack_block): New function.
18031 (spu_expand_epilogue): Remove old comment.
18033 2007-01-09 Zdenek Dvorak <dvorakz@suse.cz>
18035 PR tree-optimization/30322
18036 * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
18037 (cand_value_at): Return the value as aff_tree.
18038 (may_eliminate_iv): Convert the bound from aff_tree to tree.
18039 * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
18040 aff_combination_mult): New functions.
18041 (aff_combination_add): Use aff_combination_add_cst.
18042 (aff_combination_convert): Allow conversions to a wider type.
18043 (tree_to_aff_combination): Handle BIT_NOT_EXPR.
18044 * tree-affine.h (aff_combination_mult): Declare.
18046 2007-01-09 Carlos O'Donell <carlos@codesourcery.com>
18048 * doc/tm.texi: Update documentation to reflect reality of exec
18049 and start file search behaviours. Update copyright year.
18050 * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
18051 header file directories.
18053 2007-01-09 Uros Bizjak <ubizjak@gmail.com>
18055 * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
18056 (*cosxf2): Rename to cosxf2_i387.
18057 (*sindf2, *sinsf2): Extend operand 1 to XFmode. Macroize patterns
18058 using X87MODEF12 mode macro. Rename patterns to
18059 *sin_extend<mode>xf2_i387. Use SSE_FLOAT_MODE_P to disable patterns
18061 (*cosdf2, *cossf2): Ditto.
18062 (sincosdf3, sincossf3): Ditto. Rewrite corresponding splitters
18063 to match extended input operands.
18064 (sincos<mode>3): New expander.
18065 (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
18066 insn patterns and corresponding splitters.
18068 2007-01-09 Kaz Kojima <kkojima@gcc.gnu.org>
18070 * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
18071 (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
18073 2007-01-09 Nicolas Pitre <nico@cam.org>
18076 * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
18078 2007-01-08 Geoffrey Keating <geoffk@apple.com>
18080 * target.h (struct gcc_target): New field library_rtti_comdat.
18081 * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
18082 (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
18083 * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
18084 * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
18086 2007-01-08 Geoffrey Keating <geoffk@apple.com>
18088 * doc/invoke.texi (Optimize Options): Correct description of -O0.
18090 2007-01-08 Richard Guenther <rguenther@suse.de>
18092 * tree.h (force_fit_type_double): Export.
18093 (force_fit_type): Remove.
18094 * fold-const.c (force_fit_type_double): New function.
18095 (force_fit_type): Remove.
18096 (int_const_binop): Use it.
18097 (fold_convert_const_int_from_int): Likewise.
18098 (fold_convert_const_int_from_real): Likewise.
18099 (fold_div_compare): Likewise.
18100 (fold_sign_changed_comparison): Likewise.
18101 (fold_unary): Likewise.
18102 (fold_negate_const): Likewise.
18103 (fold_abs_const): Likewise.
18104 (fold_not_const): Likewise.
18105 * c-common.c (shorten_compare): Use force_fit_type_double.
18106 * convert.c (convert_to_pointer): Likewise.
18108 2007-01-08 Richard Guenther <rguenther@suse.de>
18110 * tree.h (build_int_cst_wide_type): Export.
18111 * tree.c (build_int_cst_wide_type): New function.
18112 (build_int_cst_wide): Fix comment.
18113 * builtins.c (fold_builtin_object_size): Use build_int_cst
18114 to build -1 or 0 of the correct type. Use fit_double_type
18115 to check for overflow.
18116 * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
18118 (decode_field_reference): Likewise.
18119 (all_ones_mask_p): Likewise.
18120 (native_interpret_int): Use build_int_cst_wide_type.
18121 (fold_binary): Use build_int_cst_type to build an all-ones
18123 * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
18125 2007-01-08 Daniel Jacobowitz <dan@codesourcery.com>
18127 * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
18129 2007-01-09 Ben Elliston <bje@au.ibm.com>
18131 * genautomata.c (STATS_OPTION): New option.
18132 (stats_flag): New flag.
18133 (gen_automata_option): Handle it.
18134 (initiate_automaton_gen): Ditto.
18135 (write_automata): Output statistics only if stats_flag is
18136 set. Likewise, output time statistics only if time_flag is set.
18137 * doc/md.texi (Processor pipeline description): Document new flag.
18139 2007-01-08 Richard Guenther <rguenther@suse.de>
18141 * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
18142 * tree.c (build_int_cst_type): Likewise.
18143 (size_in_bytes): Don't call force_fit_type on the result.
18144 (int_fits_type_p): Use fit_double_type.
18145 * fold-const.c (fit_double_type): New function.
18146 (force_fit_type): Use it.
18147 * tree.h (fit_double_type): Export.
18149 2007-01-08 Jan Hubicka <jh@suse.cz>
18151 * tree-vectorizer.c (gate_increase_alignment): Fix return type.
18152 * ipa.c (function_and_variable_visibility): Fix return type.
18154 2007-01-08 Richard Guenther <rguenther@suse.de>
18156 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
18157 of offset to build the index.
18158 * tree-pretty-print.c (dump_generic_node): Don't build negated
18159 const just for printing.
18160 * c-pretty-print.c (pp_c_integer_constant): Likewise.
18161 * builtins.c (fold_builtin_int_roundingfn): Check if result
18162 fits the type by using force_fit_type and comparing the result.
18163 * predict.c (predict_loops): Use compare_tree_int for comparison.
18164 * tree.c (build_int_cst): Fall back to integer_type_node for
18166 (build_int_cst_wide): Assert type is non-null.
18168 2007-01-08 Roberto Costa <roberto.costa@st.com>
18170 * tree-vrp.c (extract_range_from_cond_expr): New.
18171 (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
18172 * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
18174 (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
18175 * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
18176 tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
18177 used as expressions.
18178 * tree-object-size.c (cond_expr_object_size): New.
18179 (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
18181 2007-01-08 Jan Hubicka <jh@suse.cz>
18183 * tree-ssa-forwprop.c (forward_propagate_into_cond,
18184 tree_ssa_forward_propagate_single_use_va): Release defs of propagated
18187 2007-01-08 Richard Guenther <rguenther@suse.de>
18189 PR tree-optimization/23603
18190 * tree-vrp.c (set_value_range_to_truthvalue): New function.
18191 (extract_range_from_binary): Fall back to truthvalue instead of
18192 varying for TRUTH_*_EXPR.
18193 (extract_range_from_comparison): Fall back to truthvalue instead of
18195 (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
18196 if all visited PHI values were constant.
18198 2007-01-08 Jan Hubicka <jh@suse.cz>
18200 * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
18201 (cgraph_analyze_function): break out from ...
18202 (cgraph_finalize_compilation_unit): ... here.
18203 (cgraph_expand_function): Remove forgoten commented out line.
18204 (cgraph_optimize): Analyze functions.
18206 2007-01-08 Jan Hubicka <jh@suse.cz>
18208 * tree-pas.h (TODO_remove_function): New flag.
18209 (TODO_update*): Renumber.
18210 (pass_ipa_increase_alignment,
18211 pass_ipa_function_and_variable_visibility): New passes.
18212 * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
18213 (cgraph_function_and_variable_visibility): Move to ipa.c
18214 (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
18215 cgraph_increase_alignment.
18216 * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
18217 (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
18218 calling tree-inline.
18219 (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
18220 (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
18221 * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
18222 (gate_increase_alignment): New function.
18223 (pass_ipa_increase_alignment): New pass.
18224 * ipa.c: Inline tree-pass.h and timevar.h
18225 (function_and_variable_visibility): Move here from cgraphunit.c
18226 * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
18227 * passes.c (init_optimization_passes): Add the two new passes.
18228 (execute_todo): Handle cgraph_remove_functions.
18230 2007-01-08 Nick Clifton <nickc@redhat.com>
18232 * config/frv/predicates.md (reg_or_0_operand): Accept
18235 2007-01-08 Ralf Corsépius <ralf.corsepius@rtems.org>
18237 * config/bfin/rtems.h, config/bfin/t-rtems: New.
18238 * config.gcc: Add bfin*-rtems*.
18240 2007-01-08 Mark Shinwell <shinwell@codesourcery.com>
18242 * c.opt: Add -flax-vector-conversions.
18243 * c-typeck.c (convert_for_assignment): Pass flag to
18244 vector_types_convertible_p to allow emission of note.
18245 (digest_init): Likewise.
18246 * c-opts.c: Handle -flax-vector-conversions.
18247 * c-common.c (flag_lax_vector_conversions): New.
18248 (vector_types_convertible_p): Unless -flax-vector conversions
18249 has been passed, disallow conversions between vectors with
18250 differing numbers of subparts and/or element types. If such
18251 a conversion is disallowed, possibly emit a note on the first
18252 occasion only to inform the user of -flax-vector-conversions.
18253 The new last argument specifies this.
18254 * c-common.h (flag_lax_vector_conversions): New.
18255 (vector_types_convertible_p): Add extra argument.
18256 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
18257 char_type_node for V*QI type vectors.
18258 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
18259 Update to satisfy new typechecking rules.
18260 * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
18261 C and C++ variants.
18262 * doc/invoke.texi (C Dialect Options): Document
18263 -flax-vector-conversions.
18265 2007-01-08 Mark Shinwell <shinwell@codesourcery.com>
18267 PR tree-optimization/29877
18268 * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
18269 a register variable on the RHS to not be replaceable.
18271 2007-01-08 Chen Liqin <liqin@sunnorth.com.cn>
18272 * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
18273 * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
18274 const_simm15, const_pow2, const_npow2): Added.
18275 * config/score/misc.md (insv, extv, extzv, movmemsi,
18276 move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
18277 * config/score/score.c (score_address_cost, score_select_cc_mode):
18279 Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
18280 Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
18281 Update score_print_operand.
18282 * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
18283 Adjust register allocate order and update some macro define.
18284 * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
18285 mdx_block_move_straight, mdx_block_move_loop_head,
18286 mdx_block_move_loop_body, mdx_block_move_loop_foot,
18287 mdx_block_move_loop, mdx_block_move): Added.
18288 (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
18289 mdp_limm): Updated and fix some bug and typo.
18290 * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
18291 (movsf, movdf, doloop_end): Added.
18293 2007-01-08 Kazu Hirata <kazu@codesourcery.com>
18295 * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
18296 config/arm/thumb2.md: Fix comment typos.
18297 * doc/extend.texi: Fix a typo.
18299 2007-01-07 Eric Christopher <echristo@apple.com>
18301 * configure.ac: Check for __stack_chk_fail for darwin.
18302 * configure: Regenerate.
18304 2007-01-07 Richard Guenther <rguenther@suse.de>
18306 * tree-vrp.c (extract_range_from_assert): CSE calls to
18307 compare_values where possible.
18308 (extract_range_from_unary_expr): Likewise.
18310 2007-01-07 Anatoly Sokolov <aesok@post.ru>
18312 * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
18313 * config/avr/avr.c (call_insn_operand): Delete function.
18314 * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
18315 instead of register number. Use predicates.
18316 * config/avr/predicates.md (const0_operand, reg_or_0_operand,
18317 call_insn_operand): Add.
18319 2007-01-06 Jan Hubicka <jh@suse.cz>
18321 * tree-pass.h (pass_build_cgraph_edges): Declare.
18322 * cgraphunit.c (record_refernece): Move to cgraphbuild.c
18323 (visited_nodes): Remove.
18324 (cgraph_create_edges): Move to cgraphbuild.c; rename to
18325 build_cgrpah_edges; make visited_nodes local.
18326 (cgraph_process_new_functions): DO not call initialize_inline_failed.
18327 (record_references_in_initializer): Move to cgraphbuild.c
18328 (initialize_inline_failed, rebuild_cgraph_edges,
18329 pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
18330 (verify_cgraph_node): Make visited_nodes local.
18331 (cgraph_analyze_function): Do not call cgraph_create_edges and
18332 initialize_inline_failed.
18333 (cgraph_expand_function): Do not call cgraph_lower_function;
18334 assert that function is already lowered.
18335 * Makefile.in (cgraphbuild.o): New.
18336 * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
18337 at the end of lowering passes.
18339 2007-01-06 Steven Bosscher <steven@gcc.gnu.org>
18341 * ifcvt.c (cond_move_convert_if_block): New function, code
18342 factored out from...
18343 (cond_move_process_if_block): ...here. Call the new function
18344 on the THEN and ELSE blocks.
18345 (merge_if_block): Do not copy global_live_at_end, merge_blocks
18346 already takes care of this.
18348 2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18351 * tree.h (TREE_OVERFLOW_P): New.
18352 * c-typeck.c (parser_build_unary_op): Warn only if result
18353 overflowed and operands did not.
18354 (parser_build_binary_op): Likewise.
18355 (convert_for_assignment): Remove redundant overflow_warning.
18356 * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
18358 2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18360 * c-typeck.c (store_init_value): Split over two lines to follow
18361 the GNU coding style.
18363 2007-01-05 Benjamin Kosnik <bkoz@redhat.com>
18365 * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
18366 __GXX_EXPERIMENTAL_CXX0X__.
18367 * doc/cpp.texi: Same.
18369 2007-01-05 Richard Guenther <rguenther@suse.de>
18371 PR middle-end/27826
18372 * tree.c (get_narrower): Do not construct COMPONENT_REFs
18373 with mismatched types. Instead explicitly build a
18374 conversion NOP_EXPR.
18376 2007-01-05 Ian Lance Taylor <iant@google.com>
18378 * c-common.c (decl_with_nonnull_addr_p): New function.
18379 (c_common_truthvalue_conversion): Call it.
18380 * c-typeck.c (build_binary_op): Likewise.
18381 * c-common.h (decl_with_nonnull_addr_p): Declare.
18383 2007-01-05 Jakub Jelinek <jakub@redhat.com>
18386 * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
18389 2007-01-05 Joel Brobecker <brobecker@adacore.com>
18391 * doc/install.texi (Final install): Document the fact that
18392 the GNAT runtime should not be stripped.
18394 2007-01-04 Jan Hubicka <jh@suse.cz>
18396 * tree-inline.c (fold_marked_statements): Update operand caches
18397 and EH after folding
18399 2007-01-04 Ian Lance Taylor <iant@google.com>
18401 * c-common.c (check_function_nonnull): Whitespace fix.
18403 2007-01-04 Jan Hubicka <jh@suse.cz>
18405 * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
18406 comitted older version of patch.
18407 (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
18408 function, celanup cfg and collect garbage.
18410 2007-01-04 Mike Stump <mrs@apple.com>
18412 * Makefile.in (mostlyclean): Don't remove libgcc anymore.
18415 2007-01-04 Eric Christopher <echristo@apple.com>
18417 * libgcc2.c (__bswapsi2): Use SItype.
18418 (__bswapdi2): Use DItype.
18419 * libgcc2.h: Update for above.
18421 2007-01-04 Paul Brook <paul@codesourcery.com>
18423 * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
18424 mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
18425 mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
18426 umulsidi3, umulsidi3adddi, smulsi3_highpart,
18427 umulsi3_highpart): Make conditional on !arm_arch6.
18428 (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
18429 mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
18430 mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
18431 umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
18432 umulsi3_highpart_v6): New insns.
18434 2007-01-04 Roger Sayle <roger@eyesopen.com>
18436 * fold-const.c (fold_convert): When casting an expression to void,
18437 fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
18438 have a type. Instead of attempting to build a NOP_EXPR, return
18439 these "special" trees directly.
18441 2007-01-04 Joseph Myers <joseph@codesourcery.com>
18443 * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
18444 MULT inside MINUS as either argument. Use rs6000_cost->dmul -
18445 rs6000_cost->fp not 0 as adjustment for outer NEG.
18447 2007-01-04 Jan Hubicka <jh@suse.cz>
18449 * cgraph.c (cgraph_release_function_body): New function.
18450 (cgraph_remove_node): Use it.
18451 * cgraph.h (cgraph_release_function_body): Declare.
18452 * cgraphunit.c (cgraph_expand_function): Use it.
18453 * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
18454 * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
18455 is initialized and while compilation of other function is running.
18456 * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
18457 statement CFG annotations from here to ...
18458 * tree-cfg.c (delete_tree_cfg_annotations): ... here.
18460 2007-01-04 Zdenek Dvorak <dvorakz@suse.cz>
18462 * cfgloop.h (enum li_flags): Make the constants powers of two.
18464 2007-01-04 Jan Hubicka <jh@suse.cz>
18466 * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
18468 (fold_marked_statements): New function.
18469 (optimize_inline_calls, tree_function_versioning): Fold new statements.
18470 * tree-inline.h (copy_body_data): Add statements_to_fold.
18472 2007-01-03 Daniel Jacobowitz <dan@codesourcery.com>
18474 * config.gcc: Mention libgcc/config.host.
18475 * Makefile.in: Update comments mentioning libgcc.
18476 (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
18477 (all.cross, start.encap, rest.encap, rest.cross): Update
18478 dependencies for libgcc move.
18479 (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
18480 (clean-target, clean-target-libgcc): Delete.
18481 (srcdirify, GCC_EXTRA_PARTS): New macros.
18482 (libgcc-support, libgcc.mvars): New rules.
18483 (distclean): Remove mention of mklibgcc.
18484 (install): Don't reference INSTALL_LIBGCC.
18485 (install-common): Don't reference EXTRA_PARTS.
18486 (install-libgcc, install-multilib): Delete rules.
18487 * mklibgcc.in: Delete file.
18488 * doc/configfiles.texi: Don't mention mklibgcc.
18490 * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
18491 * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
18492 * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
18493 * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
18494 (mklibgcc, ldblspecs): Likewise.
18496 * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
18497 (posixpre.def): Use $(T).
18498 (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
18499 (SHLIB_SRC, SHLIB_INSTALL): Delete.
18500 (SHLIB_LINK): Make dummy.
18501 * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
18503 * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
18505 * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
18506 * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
18507 config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
18508 config/rs6000/t-newas, config/sparc/t-elf: Likewise.
18510 * configure.ac (all_outputs): Remove mklibgcc.
18511 * configure: Regenerated.
18513 2007-01-03 Josh Conner <jconner@apple.com>
18515 PR middle-end/29683
18516 * calls.c (compute_argument_addresses): Set stack and stack_slot
18517 for partial args, too.
18518 (store_one_arg): Use locate.size.constant for the size when
18519 generating a save_area.
18521 2007-01-03 Robert Kennedy <jimbob@google.com>
18523 * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
18524 whose definitions are deleted due to basic block merging.
18526 2007-01-03 Paul Brook <paul@codesourcery.com>
18529 * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
18531 (use_return_insn): Return 0 for Thumb interrupt functions.
18532 (print_multi_reg): Add rfe argument for IRQ returns.
18533 (arm_output_epilogue): Pop interrupt return address directly into PC.
18534 (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
18536 2007-01-03 Paul Brook <paul@codesourcery.com>
18538 Merge from sourcerygxx-4_1.
18539 * config/arm/thumb2.md: New file.
18540 * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
18542 * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
18543 * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
18544 (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
18545 * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
18547 (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
18548 * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
18550 * config/arm/ieee754-sf.S: Ditto.
18551 * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
18552 (thumb1_base_register_rtx_p): ... to this.
18553 (thumb_index_register_rtx_p): Rename...
18554 (thumb1_index_register_rtx_p): ... to this.
18555 (thumb_output_function_prologue): Rename...
18556 (thumb1_output_function_prologue): ... to this.
18557 (thumb_legitimate_address_p): Rename...
18558 (thumb1_legitimate_address_p): ... to this.
18559 (thumb_rtx_costs): Rename...
18560 (thumb1_rtx_costs): ... to this.
18561 (thumb_compute_save_reg_mask): Rename...
18562 (thumb1_compute_save_reg_mask): ... to this.
18563 (thumb_final_prescan_insn): Rename...
18564 (thumb1_final_prescan_insn): ... to this.
18565 (thumb_expand_epilogue): Rename...
18566 (thumb1_expand_epilogue): ... to this.
18567 (arm_unwind_emit_stm): Rename...
18568 (arm_unwind_emit_sequence): ... to this.
18569 (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
18570 thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
18571 thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
18572 arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
18573 thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
18574 thumb2_output_casesi): New functions.
18575 (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
18576 (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
18577 FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
18578 THUMB2_WORK_REGS): Define.
18579 (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
18580 arm_condexec_mask, arm_condexec_masklen)): New variables.
18581 (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
18582 (arm_override_options): Check new CPU capabilities.
18583 Set new architecture flag variables.
18584 (arm_isr_value): Handle v7m interrupt functions.
18585 (user_return_insn): Return 0 for v7m interrupt functions. Handle
18587 (const_ok_for_arm): Handle Thumb-2 constants.
18588 (arm_gen_constant): Ditto. Use movw when available.
18589 (arm_function_ok_for_sibcall): Return false for v7m interrupt
18591 (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
18592 (thumb_find_work_register, arm_load_pic_register,
18593 legitimize_tls_address, arm_address_cost, load_multiple_sequence,
18594 emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
18595 print_multi_reg, output_mov_long_double_fpa_from_arm,
18596 output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
18597 output_mov_double_fpa_from_arm, output_move_double,
18598 arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
18599 output_return_instruction, arm_output_function_prologue,
18600 arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
18601 arm_output_mi_thunk, thumb_set_return_address): Ditto.
18602 (arm_expand_prologue): Handle Thumb-2. Use arm_save_coproc_regs.
18603 (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
18604 (arithmetic_instr, shift_op): Use arm_shift_nmem.
18605 (arm_print_operand): Use arm_print_condition. Handle '(', ')', '.',
18607 (arm_final_prescan_insn): Use extract_constrain_insn_cached.
18608 (thumb_expand_prologue): Use thumb_set_frame_pointer.
18609 (arm_file_start): Output directive for unified syntax.
18610 (arm_unwind_emit_set): Handle stack alignment instruction.
18611 * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
18612 Add v6t2, v7, v7a, v7r and v7m.
18613 (RETLDM): Add Thumb-2 code.
18614 (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
18615 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
18616 (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
18617 TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
18618 THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
18619 ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
18620 THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
18621 CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
18622 ADJUST_INSN_LENGTH): Define.
18623 (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
18624 STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
18625 BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
18626 PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
18627 SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
18628 TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
18629 HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
18630 HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
18631 REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
18632 REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
18633 LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
18634 GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
18635 ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
18636 FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
18637 PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
18638 (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
18639 * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
18641 * config/arm/arm-tune.md: Regenerate.
18642 * config/arm/arm-protos.h: Update prototypes.
18643 * config/arm/vfp.md: Enable patterns for Thumb-2.
18644 (arm_movsi_vfp): Add movw alternative. Use output_move_vfp.
18645 (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
18646 (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
18647 thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
18648 * config/arm/libunwind.S: Add Thumb-2 code.
18649 * config/arm/constraints.md: Update include Thumb-2.
18650 * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
18651 * config/arm/ieee754-df.S: Ditto.
18652 * config/arm/bpabi.S: Ditto.
18653 * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
18654 * config/arm/predicates.md (low_register_operand,
18655 low_reg_or_int_operand, thumb_16bit_operator): New.
18656 (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
18657 (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
18658 * config/arm/t-arm-elf: Add armv7 multilib.
18659 * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
18661 (UNSPEC_STACK_ALIGN, ce_count): New.
18662 (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
18663 arm_zero_extendsidi2, arm_zero_extendqidi2): New
18665 * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
18666 (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
18667 thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
18668 * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
18669 (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
18670 thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
18672 * doc/extend.texi: Document ARMv7-M interrupt functions.
18673 * doc/invoke.texi: Document Thumb-2 new cores+architectures.
18675 2007-01-03 Jakub Jelinek <jakub@redhat.com>
18677 * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
18678 (struct _Unwind_Context): Rename args_size to flags, remove
18679 signal_frame field, add a new args_size field and version field.
18680 (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
18681 _Unwind_IsExtendedContext): New inline functions.
18682 (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
18683 Assume by_value array is only present if _Unwind_IsExtendedContext.
18684 (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
18685 _Unwind_IsSignalFrame.
18686 (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
18687 (uw_update_context_1): Use _Unwind_SetSignalFrame.
18688 (uw_init_context_1): Initialize context->flags to
18689 EXTENDED_CONTEXT_BIT.
18690 * config/rs6000/linux-unwind.h (frob_update_context): Use
18691 _Unwind_SetSignalFrame.
18693 2007-01-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
18695 PR middle-end/30353
18696 * gimplify.c (gimplify_modify_expr_complex_part): Move below
18697 tree_to_gimple_tuple. Call tree_to_gimple_tuple when we need
18700 2007-01-03 Kazu Hirata <kazu@codesourcery.com>
18702 * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
18703 REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
18704 RET, AT_SP): Remove.
18705 * config/i386/i386.md (*sse_prologue_save_insn): Use return
18708 * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
18709 * cfgbuild.c (find_basic_blocks): Likewise.
18710 * cfgrtl.c (rtl_create_basic_block): Likewise.
18711 * function.c (temp_slots_at_level): Likewise.
18712 * reg-stack.c (stack_regs_mentioned): Likewise.
18713 * regclass.c (allocate_reg_info): Likewise.
18714 * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
18715 set_bb_for_stmt, move_block_to_fn): Likewise.
18716 * tree-complex.c (tree_lower_complex): Likewise.
18717 * vec.h (VEC_safe_grow_cleared): New.
18719 * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
18721 2007-01-03 Zdenek Dvorak <dvorakz@suse.cz>
18723 * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
18724 * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
18726 * cfgloopmanip.c (scale_loop_frequencies): Export.
18727 (loopify): Scale the frequencies by prescribed coefficients.
18728 (set_zero_probability): New function.
18729 (duplicate_loop_to_header_edge): Improve updating of frequencies.
18730 (lv_adjust_loop_entry_edge, loop_version): Set probabilities
18731 and frequencies according to arguments.
18732 * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
18734 * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
18735 * modulo-sched.c (sms_schedule): Set probabilities for entering
18736 versioned loop correctly.
18737 * tree-vect-transform.c (vect_transform_loop): Ditto.
18738 * cfgloop.h (loopify, loop_version): Declaration changed.
18739 (scale_loop_frequencies): Declared.
18741 2007-01-02 Jan Hubicka <jh@suse.cz>
18743 * cgraph.c: Include tree-flow.h
18744 (cgraph_add_new-function): Handle IPA_SSA mode; execute
18745 early_local_passes.
18746 * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
18747 * tree-pass.h (pass_all_early_optimizations): Declare.
18748 * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
18749 early_local_passes.
18750 (cgraph_analyze_function): Do early_local_passes.
18751 * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
18752 Do not add referenced vars.
18753 * tree-optimize.c (gate_all_optimizations): Do not execute when not in
18755 (gate_all_early_local_passes): New gate.
18756 (pass_early_local_passes): Use new gate.
18757 (execute_early_local_optimizations): New functions.
18758 (gate_all_early_optimizations): New gate.
18759 (pass_all_early_optimizations): New pass.
18760 (execute_free_datastructures): Free SSA only when initialized.
18761 (gate_init_datastructures): Init only when optimizing.
18762 (tree_lowering_passes): Do early local passes when called late.
18763 * tree-profile.c (do_tree_profiling): Don't profile functions added
18765 (do_early_tree_profiling, pass_early_tree_profile): Kill.
18766 * tree-cfg.c (update_modified_stmts): Do not update when operands are
18768 * passes.c (init_optimizations_passes): Reorder so we go into SSA
18769 during early_local_passes.
18770 * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
18773 2007-01-02 Carlos O'Donell <carlos@codesourcery.com>
18775 * Makefile.in: Update copyright year.
18777 2007-01-02 Carlos O'Donell <carlos@codesourcery.com>
18779 * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
18780 in $(lang_checks) and check-consistency targets.
18782 2007-01-02 Jan Hubicka <jh@suse.cz>
18784 * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
18785 Do not add referenced vars.
18786 * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
18788 * passes.c (init_optimization_passes): Put mudflap_2 after
18789 free_datastructures.
18791 2007-01-02 Jan Hubicka <jh@suse.cz>
18793 * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
18794 Set NOTHROW flag on call statements proved to be nothrow.
18795 Update statement of local calls so new pure/const functions are
18796 updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
18798 (tree_rest_of_compilation): Register hooks and initialize bitmap
18799 early. Do not set after_inlining flag.
18801 2007-01-02 Steve Ellcey <sje@cup.hp.com>
18803 * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
18804 HOST_BITS_PER_LONGLONG
18806 2007-01-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18809 * c-typeck.c (store_init_value): Don't emit pedantic overflow
18810 warning for non-static initializers.
18812 2007-01-02 Steven Bosscher <steven@gcc.gnu.org>
18814 * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
18815 m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
18816 rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
18817 Always use set_unique_reg_note to add REG_EQUAL notes.
18819 2007-01-02 Kazu Hirata <kazu@codesourcery.com>
18822 2007-01-02 Kazu Hirata <kazu@codesourcery.com>
18824 * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
18825 * cfgbuild.c (find_basic_blocks): Likewise.
18826 * cfgrtl.c (rtl_create_basic_block): Likewise.
18827 * function.c (temp_slots_at_level): Likewise.
18828 * reg-stack.c (stack_regs_mentioned): Likewise.
18829 * regclass.c (allocate_reg_info): Likewise.
18830 * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
18831 set_bb_for_stmt, move_block_to_fn): Likewise.
18832 * tree-complex.c (tree_lower_complex): Likewise.
18833 * vec.h (VEC_safe_grow_cleared): New.
18835 2007-01-02 Ian Lance Taylor <iant@google.com>
18837 * c-common.c (c_common_truthvalue_conversion): When warning about
18838 using an assignment as a truth value, set TREE_NO_WARNING.
18840 2007-01-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18843 * c.opt (Wold-style-declaration): New.
18844 * doc/invoke.texi (C-only Warning Options): New.
18845 (Wold-style-declaration): Document it.
18846 (Wextra): Enabled by -Wextra.
18847 * c-opts.c (c_common_post_options): Enabled by -Wextra.
18848 * c-decl.c (declspecs_add_scspec): Replace -Wextra with
18849 -Wold-style-declaration.
18851 2007-01-02 Kazu Hirata <kazu@codesourcery.com>
18853 * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
18854 * cfgbuild.c (find_basic_blocks): Likewise.
18855 * cfgrtl.c (rtl_create_basic_block): Likewise.
18856 * function.c (temp_slots_at_level): Likewise.
18857 * reg-stack.c (stack_regs_mentioned): Likewise.
18858 * regclass.c (allocate_reg_info): Likewise.
18859 * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
18860 set_bb_for_stmt, move_block_to_fn): Likewise.
18861 * tree-complex.c (tree_lower_complex): Likewise.
18862 * vec.h (VEC_safe_grow_cleared): New.
18864 2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
18866 * c-common.c (c_common_nodes_and_builtins): Since variants of
18867 void_type_node get built before it is given a name, we need to
18868 give those variants the name, too.
18869 (complete_array_type): We need to work with the canonical main
18870 type of the array, from which we will build the qualified version.
18871 * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
18872 * print-tree.c (print_node): Display canonical type information
18874 * stor-layout.c (layout_type): When we don't know the
18875 alignment of a type for which we're building an array, we end up
18876 guessing wrong, so make the type require structural equality.
18877 * tree.c (make_node_stat): When we build a new type, it is its
18878 own canonical type.
18879 (build_type_attribute_qual_variant): When building an attribute
18880 variant, its canonical type is the non-attribute variant. However,
18881 if the attributes are target-dependent and they differ, we need to
18882 use structural equality checks for this type.
18883 (build_qualified_type): A qualified type is not equivalent to its
18884 unqualified variant; set the canonical type appropriately.
18885 (build_distinct_type_copy): When building a distinct type from
18886 another type, the new type is its own canonical type.
18887 (build_variant_type_copy): When building a new type variant, we
18888 assume that it is equivalent to the original type.
18889 (build_pointer_type_for_mode): When building a pointer type, also
18890 build a canonical type pointer.
18891 (build_reference_type_for_mode): When building a reference type,
18892 also build a canonical type reference.
18893 (build_index_type): When we can't hash an index type (e.g.,
18894 because its maximum value is negative), the index type requires
18895 structural equality tests.
18896 (build_array_type): Build the canonical form of an array type.
18897 (build_function_type): Function types require structural equality,
18898 because they contain default arguments, attributes, etc.
18899 (build_method_type_directly): Ditto for method types.
18900 (build_offset_type): Build the canonical offset type.
18901 (build_complex_type): Build the canonical vector type.
18902 (make_vector_type): Build the canonical vector type.
18903 * tree.h (TYPE_CANONICAL): New.
18904 (TYPE_STRUCTURAL_EQUALITY_P): New.
18905 (SET_TYPE_STRUCTURAL_EQUALITY): New.
18906 (struct tree_type): Added "canonical" field.
18907 * params.h (VERIFY_CANONICAL_TYPES): New.
18908 * doc/c-tree.texi (TYPE_CANONICAL): Document.
18909 (TYPE_STRUCTURAL_EQUALITY_P): Document.
18910 (SET_TYPE_STRUCTURAL_EQUALITY): Document.
18911 * doc/invoke.texi (verify-canonical-types): Document --param
18912 parameter for verifying canonical types.
18914 2007-01-02 Joseph Myers <joseph@codesourcery.com>
18916 * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
18917 powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
18918 powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
18919 powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
18921 * config/rs6000/e500.h: New.
18922 * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
18923 TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
18925 * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
18926 TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
18927 TARGET_E500_DOUBLE): Remove.
18928 * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
18929 TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
18930 * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
18931 * config/rs6000/rs6000.c (rs6000_override_options): Use
18932 CHECK_E500_OPTIONS.
18934 2007-01-02 Joseph Myers <joseph@codesourcery.com>
18936 * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
18937 TARGET_E500_DOUBLE), not TARGET_E500, for %y.
18938 (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
18939 rs6000_emit_cmove): Don't check TARGET_E500.
18940 * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
18941 sordered): Don't check TARGET_E500.
18943 2007-01-01 Eric Christopher <echristo@apple.com>
18945 * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
18946 HARD_REGISTER_NUM_P.
18948 2007-01-01 Roger Sayle <roger@eyesopen.com>
18950 * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
18951 "X eq/ne (C1^C2)". Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
18952 has no side-effects. Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
18955 2007-01-01 Mike Stump <mrs@apple.com>
18957 * configure.ac: Remove support for building with Apple's gcc-3.1.
18959 2007-01-02 Joseph Myers <joseph@codesourcery.com>
18961 PR middle-end/30311
18962 * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
18963 REG is a hard register. Do not modify REG before calling
18965 * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
18966 multiple of the size of YMODE for certain lowpart cases.
18968 2007-01-01 Andrew Pinski <pinskia@gmail.com>
18970 PR middle-end/30253
18971 * gimplify (voidify_wrapper_expr): Update for
18972 GIMPLE_MODIFY_STMT.
18974 2007-01-01 Andreas Schwab <schwab@suse.de>
18977 * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
18978 save of BR0 in extra_spill_size instead of spill_size.
18979 (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
18981 (ia64_expand_epilogue): Restore BR0 from its new location.
18983 2007-01-01 Andrew Pinski <pinskia@gmail.com>
18985 * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
18986 Use a temporary variable if the left hand side is not a gimple
18989 2007-01-01 Andrew Pinski <pinskia@gmail.com>
18991 * gimplify.c (gimplify_return_expr): Make the temporary variable
18992 for the return expression, a gimple register variable.
18994 2007-01-01 Jan Hubicka <jh@suse.cz>
18996 * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
18999 2007-01-01 Mike Stump <mrs@apple.com>
19001 * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
19003 * config/darwin.c (machopic_select_rtx_section): Use
19004 HAVE_GAS_LITERAL16.
19005 (darwin_mergeable_constant_section): Likewise.
19006 * configure: Regenerate.
19007 * config.in: Regenerate.
19009 2007-01-01 Jan Hubicka <jh@suse.cz>
19010 Andrew Pinski <pinskia@gmail.com>
19012 * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
19013 before starting IPA passes.