1 2008-11-03 Sebastian Pop <sebastian.pop@amd.com>
3 * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
6 2008-11-03 Bernd Schmidt <bernd.schmidt@analog.com>
8 * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
9 where we have one entry point in the loop which isn't the head.
11 2008-11-03 Richard Guenther <rguenther@suse.de>
14 * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
16 2008-11-03 Jakub Jelinek <jakub@redhat.com>
19 * passes.c (execute_one_pass): Don't look at cfun->curr_properties
20 for ipa and simple ipa passes.
22 2008-11-02 Richard Guenther <rguenther@suse.de>
24 PR tree-optimization/37542
25 * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
26 * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
27 (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
28 (vn_nary_op_insert_stmt): Likewise.
29 (visit_use): Likewise.
31 2008-11-02 Anatoly Sokolov <aesok@post.ru>
33 * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
35 (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
36 rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
37 (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
38 ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
39 lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
40 peephole2's): Replace unspec with rotate.
41 * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
43 2008-11-02 Richard Guenther <rguenther@suse.de>
45 PR tree-optimization/37991
46 * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
47 * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
48 (set_ssa_val_to): Print if the value changed.
49 (simplify_binary_expression): Strip useless conversions.
51 2008-11-01 Hans-Peter Nilsson <hp@axis.com>
54 * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
57 2008-11-01 Richard Guenther <rguenther@suse.de>
60 * builtins.c (fold_builtin_strspn): Return a size_t.
61 (fold_builtin_strcspn): Likewise.
63 2008-10-31 Nathan Froyd <froydnj@codesourcery.com>
65 * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
66 attribute for struct return convention.
68 2008-10-31 Nathan Froyd <froydnj@codesourcery.com>
70 * config/rs6000/crtsavres.asm: Really, really delete.
72 2008-10-31 Nathan Froyd <froydnj@codesourcery.com>
74 * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
76 (rs6000_emit_prologue): Invert logic.
77 * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
78 (reg:P 11) instead of match_operand.
79 (*save_fpregs_<mode>): Likewise.
80 (*restore_gpregs_<mode>): Likewise.
81 (*return_and_restore_gpregs_<mode>): Likewise.
82 (*return_and_restore_fpregs_<mode>): Likewise.
83 * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
84 (reg:P 11) insted of match_operand.
85 (*restore_gpregs_spe): Likewise.
86 (*return_and_restore_gpregs_spe): Likewise.
88 2008-10-28 Luis Machado <luisgpm@br.ibm.com>
90 * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
91 list of word switches that take args.
93 2008-10-30 Jakub Jelinek <jakub@redhat.com>
95 * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
96 (s390_output_pool_entry): Call it through for_each_rtx.
99 * expr.c (store_constructor): For vectors, if target is a MEM, use
100 target's MEM_ALIAS_SET instead of elttype alias set.
102 2008-10-29 Kaz Kojima <kkojima@gcc.gnu.org>
105 * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
108 2008-10-29 David Edelsohn <edelsohn@gnu.org>
111 * config/rs6000/predicates.md (word_offset_memref_operand):
112 Restructure code and look inside auto-inc/dec addresses.
114 2008-10-29 Steve Ellcey <sje@cup.hp.com>
117 * libgcov.c ( __gcov_indirect_call_profiler): Check
118 TARGET_VTABLE_USES_DESCRIPTORS.
120 2008-10-29 Stefan Schulze Frielinghaus <xxschulz@de.ibm.com>
122 * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
123 (INITIAL_FRAME_POINTER_OFFSET): Remove.
124 * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
125 offset if eliminating soft frame pointer.
126 * config/spu/spu.md (stack_protect_set, stack_protect_test)
127 (stack_protect_test_si): Add initial machine description
128 for Stack Smashing Protector
130 2008-10-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
133 * c-common.c (min_precision): Move to...
134 * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
135 * tree.h (tree_int_cst_min_precision): Declare.
136 * c-common.h (min_precision): Delete declaration.
137 * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
138 multiplication of non-negative integer constants.
139 * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
140 tree_int_cst_min_precision.
141 (finish_enum): Likewise.
143 2008-10-29 Joseph Myers <joseph@codesourcery.com>
146 * convert.c (convert_to_real): Do not optimize conversions of
147 binary arithmetic operations between binary and decimal
148 floating-point types. Consider mode of target type in determining
149 decimal type for arithmetic. Unless
150 flag_unsafe_math_optimizations, do not optimize binary conversions
151 where this may change rounding behavior.
152 * real.c (real_can_shorten_arithmetic): New.
153 * real.h (real_can_shorten_arithmetic): Declare.
155 2008-10-29 Bernd Schmidt <bernd.schmidt@analog.com>
157 * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
158 ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
159 * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
161 (must_save_p): For some workarounds, interrupts need to clobber a
163 (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
164 and LC1 for WA_05000257.
165 (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
166 WA_05000283 and WA_05000315.
167 * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
168 (movbi): Add alternative to set CC to 1; improve code for setting
170 (dummy_load): New pattern.
172 2008-10-29 Jakub Jelinek <jakub@redhat.com>
175 * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
176 BLKmode for non-memory, convert using a wider MODE_INT mode
180 * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
181 that haven't been removed yet.
183 2008-10-29 Bernd Schmidt <bernd.schmidt@analog.com>
185 * config/bfin/bfin.c (struct machine_function): New member
187 (bfin_expand_movmem): Set it when generating memcpy insns.
188 (n_regs_saved_by_prologue, expand_prologue_reg_save,
189 expand_epilogue_reg_restore): If we have hardware loops,
190 memcpy insns (indicated by has_loopreg_clobber) or function
191 calls, we need to save the loop registers.
193 2008-10-28 H.J. Lu <hongjiu.lu@intel.com>
195 * config/i386/i386.c (core2_cost): Fix typos in comments.
197 2008-10-28 Jakub Jelinek <jakub@redhat.com>
200 * combine.c (make_compound_operation): Don't call make_extraction with
202 (simplify_shift_const_1): Canonicalize count even if complement_p.
204 2008-10-28 Joseph Myers <joseph@codesourcery.com>
206 * convert.c (strip_float_extensions): Do not remove or introduce
207 conversions between binary and decimal floating-point types.
209 2008-10-28 Jakub Jelinek <jakub@redhat.com>
212 * fold-const.c (distribute_bit_expr): Convert common, left and
213 right arguments to type.
215 2008-10-28 Nick Clifton <nickc@redhat.com>
217 * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
218 * config/mn10300/mn10300.c (fp_regs_to_save): Test the
219 call_really_used_regs array rather than the call_used_regs array.
220 (mn10300_get_live_callee_saved_regs, expand_prologue,
221 expand_epilogue, output_tst): Likewise.
223 2008-10-27 Jakub Jelinek <jakub@redhat.com>
226 * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
227 (df_get_entry_block_def_set): Neither here.
228 (df_get_regular_block_artificial_uses): Add EH_USES registers.
230 PR tree-optimization/37879
231 * predict.c (tree_estimate_probability): Check if last_stmt is
232 non-NULL before dereferencing it.
234 2008-10-27 Vladimir Makarov <vmakarov@redhat.com>
236 * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
237 (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
238 (ira_fast_allocation): Remove the prototype.
240 * ira-color.c (update_copy_costs, allocno_cost_compare_func,
241 assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
242 (color_pass): Modify the updated costs.
243 (ira_color): Rename to color. Make it static.
244 (ira_fast_allocation): Rename to fast_allocation. Make it static.
245 (ira_color): New function.
247 * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
250 * ira-lives.c (last_call_num, allocno_saved_at_call): New
252 (set_allocno_live, clear_allocno_live, mark_ref_live,
253 mark_ref_dead): Invalidate corresponding element of
254 allocno_saved_at_call.
255 (process_bb_node_lives): Increment last_call_num. Setup
256 allocno_saved_at_call. Don't increase ALLOCNO_CALL_FREQ if the
257 allocno was already saved.
258 (ira_create_allocno_live_ranges): Initiate last_call_num and
259 allocno_saved_at_call.
261 * ira-build.c (ira_create_allocno): Initiate
262 ALLOCNO_UPDATED_COVER_CLASS_COST.
263 (create_cap_allocno, propagate_allocno_info,
264 remove_unnecessary_allocnos): Remove setting updated costs.
265 (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
267 * ira.c (ira): Don't call ira_fast_allocation.
269 * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
272 2008-10-27 Vladimir Makarov <vmakarov@redhat.com>
275 * ira-conflicts.c (process_regs_for_copy): Remove class subset
278 * ira-int.h (ira_hard_regno_cover_class): New.
280 * ira-lives.c (mark_reg_live, mark_reg_dead,
281 process_bb_node_lives): Use ira_hard_regno_cover_class.
283 * ira.c (reg_class ira_hard_regno_cover_class): New global
285 (setup_hard_regno_cover_class): New function.
286 (ira_init): Call setup_hard_regno_cover_class.
288 * ira-costs.c (cost_class_nums): Add comment.
289 (find_allocno_class_costs): Initiate cost_class_nums.
290 (setup_allocno_cover_class_and_costs): Check cost_class_nums.
292 2008-10-27 Vladimir Makarov <vmakarov@redhat.com>
295 * ira-build.c (copy_live_ranges_to_removed_store_destinations):
296 Rename to copy_info_to_removed_store_destinations. Propagate
297 conflict hard regs and register stack attribute.
299 2008-10-26 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
302 * pa.c (function_arg_padding): Pad complex and vector types upward in
304 (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
306 2008-10-26 Matthias Klose <doko@ubuntu.com>
308 * doc/install.texi: Document requirements on antlr.
310 2008-10-25 Richard Sandiford <rdsandiford@googlemail.com>
312 * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
315 2008-10-24 Michael Meissner <meissner@linux.vnet.ibm.com>
318 * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
319 is defined, use it to modify the constant offset.
321 * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
323 * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
324 and short arguments to the correct location as mandated by the
327 2008-10-24 Kaz Kojima <kkojima@gcc.gnu.org>
329 PR rtl-optimization/37769
330 * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
332 2008-10-24 Kaz Kojima <kkojima@gcc.gnu.org>
334 * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
335 unwind-dw2-Os-4-200.o.
337 2008-10-24 Joseph Myers <joseph@codesourcery.com>
339 * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
340 (convert_for_assignment): Remove ic_argpass_nonproto cases.
342 2008-10-24 Jakub Jelinek <jakub@redhat.com>
344 PR tree-optimization/36038
345 * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
346 add sizetype IV with initial value zero instead of pointer type.
348 2008-10-24 Manuel López-Ibáñez <manu@gcc.gnu.org>
351 * value-prof.c (gimple_stringop_fixed_value): Use parentheses
352 around bit operation.
353 * profile.c (is_edge_inconsistent): Likewise.
354 * fold-const.c (truth_value_p): Move from here...
355 * tree.h (truth_value_p): ... to here.
356 * c-tree.h (c_expr): Update description of original_code.
357 * c-typeck.c (parser_build_unary_op): Set original_code.
358 (parser_build_binary_op): Update call to warn_about_parentheses.
359 * c-common.c (warn_about_parentheses): Take two additional
360 arguments of the operands. Use a switch. Quote operators
361 appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
362 Add warning about !x | y and !x & y.
363 * c-common.h (warn_about_parentheses): Update declaration.
365 2008-10-24 Jakub Jelinek <jakub@redhat.com>
367 * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
368 check_p_tool, check_p_vars, check_p_subno, check_p_comma,
369 check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
371 (check-subtargets, check-%-subtargets, check-parallel-%): New
373 (check-%): For test targets listed in lang_checks_parallelized
374 if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
375 run the testing in multiple make goals, possibly parallel, and
376 afterwards run dg-extract-results.sh to merge the sum and log files.
378 2008-10-24 Richard Sandiford <rdsandiford@googlemail.com>
380 * config/mips/mips.c (mips_canonicalize_move_class): New function.
381 (mips_move_to_gpr_cost): Likewise.
382 (mips_move_from_gpr_cost): Likewise.
383 (mips_register_move_cost): Make more fine-grained.
385 2008-10-23 Tobias Grosser <grosser@fim.uni-passau.de>
387 * graphite.c (graphite_apply_transformations): Check for
389 * toplev.c (process_options): Add graphite_identity.
390 * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
392 2008-10-23 Bernd Schmidt <bernd.schmidt@analog.com>
394 * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
395 mulhisihl and mulhisihh builtins.
397 From Jie Zhang <jie.zhang@analog.com>
398 * config/bfin/bfin.md (composev2hi): Put operands into vector
401 2008-10-22 Chao-ying Fu <fu@mips.com>
403 * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
405 2008-10-22 Bernd Schmidt <bernd.schmidt@analog.com>
407 From Mike Frysinger <michael.frysinger@analog.com>
408 * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
409 BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
410 * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
411 and bf518. Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
412 Add 0.6 for bf533, bf532, and bf531. Add 0.5 for bf538 and bf539.
413 Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
414 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
415 for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
416 for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518. Define
417 __ADSPBF51x__ for all of them.
418 * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
419 -mcpu bf512, bf514, bf516, and bf518.
420 * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
421 bf512-none, bf514-none, bf516-none, and bf518-none.
422 * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
423 * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
424 * doc/invoke.texi (Blackfin Options): Document that
425 -mcpu now accepts bf512, bf514, bf516, and bf518.
427 2008-10-22 Jakub Jelinek <jakub@redhat.com>
430 * fold-const.c (build_range_type): For 1 .. signed_max
431 range call build_nonstandard_inter_type if signed_type_for
432 returned a type with bigger precision.
434 2008-10-22 Richard Guenther <rguenther@suse.de>
436 * tree.def (COMPLEX_TYPE): Constrain element type.
437 * tree.c (build_complex_type): Assert that.
438 * tree-ssa-structalias.c (could_have_pointers): Complex types
439 cannot have pointers.
441 2008-10-22 Manuel López-Ibáñez <manu@gcc.gnu.org>
444 * c-typeck.c (convert_for_assignment): Do not give declaration's
445 location for builtins. Spell out which type was expected and which
448 2008-10-22 Nick Clifton <nickc@redhat.com>
450 * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define. Do not allow
451 the fdpic register to be a target when running in fdpic mode.
453 2008-10-22 Rafael Espindola <espindola@google.com>
455 * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
456 newly created statements.
458 2008-10-22 Kaz Kojima <kkojima@gcc.gnu.org>
461 * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
462 * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
463 * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
465 2008-10-22 Jakub Jelinek <jakub@redhat.com>
468 * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
469 Adjust -mcmodel=medium description for 2005-07-31 changes.
471 2008-10-22 Jan Hubicka <jh@suse.cz>
472 Jakub Jelinek <jakub@redhat.com>
475 * doc/invoke.texi: Remove references to obsoleted -d dumps.
477 2008-10-21 Richard Henderson <rth@redhat.com>
480 * emit-rtl.c (get_spill_slot_decl): Export.
481 * emit-rtl.h (get_spill_slot_decl): Declare.
482 * var-tracking.c (vt_add_function_parameters): Relax assertion
483 on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
485 2008-10-21 Bob Wilson <bob.wilson@acm.org>
487 * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
488 REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
491 2008-10-21 Adam Nemet <anemet@caviumnetworks.com>
494 * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
495 processed by get_maxval_strlen.
497 2008-10-21 David Edelsohn <edelsohn@gnu.org>
500 * tree.c (get_file_function_name): Copy first_global_object_name.
501 Centralize call to clean_symbol_name.
503 2008-10-21 Sandra Loosemore <sandra@codesourcery.com>
505 * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
506 * config/svr4.h (SVR4_ASM_SPEC): New.
507 (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
508 * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
510 * doc/invoke.texi (Option Summary): Add -T to linker options.
511 (Link Options): Document -T.
513 2008-10-21 Jakub Jelinek <jakub@redhat.com>
515 * tree-inline.c (tree_inlinable_function_p): Remove tuples
518 * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from
522 * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
524 2008-10-20 Daniel Berlin <dberlin@dberlin.org>
526 * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
529 2008-10-20 Tobias Schlüter <tobi@gcc.gnu.org>
531 * doc/install.texi: Fix typos in previous patch.
533 2008-10-19 Tobias Schlüter <tobi@gcc.gnu.org>
535 * doc/install.texi: Document in-tree building of gcc and mpfr.
537 2008-10-19 Richard Guenther <rguenther@suse.de>
539 * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
541 2008-10-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
544 * c-decl.c (finish_enum): Convert non-integer enumerators to enum
546 (build_enumerator): Convert enumerators that fit in integer to
549 2008-10-18 Uros Bizjak <ubizjak@gmail.com>
551 * config/i386/i386.md (unnamed peephole2): Do not force memory
552 operands of arith or logical instructions into registers for
553 non-TARGET_READ_MODIFY targets.
555 (ffs_cmove): Change operand 0 predicate to register_operand.
556 Change operand 1 predicate to nonimmediate_operand.
558 (*ffs_no_cmove): Change operand 0 predicate to register_operand.
560 2008-10-18 Richard Guenther <rguenther@suse.de>
562 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
563 VIEW_CONVERT_EXPR case against invalid gimple.
565 2008-10-17 Andreas Krebbel <krebbel1@de.ibm.com>
567 * c-parser.c (c_parser_binary_expression): Silence the
568 uninitialized variable warning emitted for binary_loc.
570 2008-10-16 Daniel Berlin <dberlin@dberlin.org>
572 * tree-ssa-pre.c (phi_translate_set): Add constants to phi
575 2008-10-16 Joseph Myers <joseph@codesourcery.com>
578 * c-typeck.c (build_unary_op): Use omit_one_operand for
579 IMAGPART_EXPR of real argument.
581 2008-10-16 Jakub Jelinek <jakub@redhat.com>
583 PR tree-optimization/37664
584 * fold-const.c (fold_binary): When optimizing comparison with
585 highest or lowest type's value, don't consider TREE_OVERFLOW.
587 2008-10-16 David Edelsohn <edelsohn@gnu.org>
590 * Makefile.in (coverage.o): Depend on $(TM_P_H).
591 * coverage.c: Include tm_p.h.
592 * config/rs6000/x-aix (jc1): Override LDFLAGS.
593 * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
594 dollar signs from PREFIX.
595 * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
596 instead of manual strip_name_encoding.
598 2008-10-16 Richard Guenther <rguenther@suse.de>
601 * tree-ssa.c (useless_type_conversion_p_1): Do not treat
602 volatile qualified functions or methods as relevant.
604 2008-10-16 Jakub Jelinek <jakub@redhat.com>
606 PR tree-optimization/37525
607 * tree.c (int_fits_type_p): Rewrite using double_int. Zero extend
608 sizetype unsigned constants, both in the case of C and bounds.
610 2008-10-15 Jan Hubicka <jh@suse.cz>
612 * ira-emit.c (change_regs): Return false when replacing reg by
615 2008-10-14 Vladimir Makarov <vmakarov@redhat.com>
618 * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
619 HARD_REGNO_CALL_PART_CLOBBERED.
621 2008-10-15 Vladimir Makarov <vmakarov@redhat.com>
624 * ira-lives.c (mark_early_clobbers): Remove.
625 (make_pseudo_conflict, check_and_make_def_use_conflicts,
626 check_and_make_def_conflicts,
627 make_early_clobber_and_input_conflicts,
628 mark_hard_reg_early_clobbers): New functions.
629 (process_bb_node_lives): Call
630 make_early_clobber_and_input_conflicts and
631 mark_hard_reg_early_clobbers. Make hard register inputs live again.
633 * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
634 early clobbers of pseudo-registers.
636 2008-10-15 Vladimir Makarov <vmakarov@redhat.com>
639 * ira-build.c (ira_flattening): Recalculate
640 ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
641 from the scratch instead of the propagation.
643 2008-10-15 Richard Sandiford <rdsandiford@googlemail.com>
645 * doc/rtl.texi (const_double): Remove the "addr" operand.
646 Describe CONST_DOUBLE_* macros under const_double rather
648 (const_fixed): Fix the operand description.
649 (const): Add an @findex directive.
650 (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
651 after the constant rtl table.
652 (fix): Combine floating-point and fixed-point descriptions.
654 * sched-deps.c (sched_analyze_2): Remove reference to
657 2008-10-15 Richard Sandiford <rdsandiford@googlemail.com>
659 * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
661 * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
662 for UNSPEC_GOTSYM_OFFs.
663 * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
664 (add_GOT_to_pic_reg): Use it.
665 * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
667 2008-10-15 Jan Sjodin <jan.sjodin@amd.com>
668 Harsha Jagasia <harsha.jagasia@amd.com>
670 PR tree-optimization/37485
671 * graphite.c (gmp_cst_to_tree): Moved.
672 (iv_stack_entry_is_constant): New.
673 (iv_stack_entry_is_iv): New.
674 (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
675 (loop_iv_stack_insert_constant): New.
676 (loop_iv_stack_pop): Use new datatpype.
677 (loop_iv_stack_get_iv): Same.
678 (loop_iv_stack_get_iv_from_name): Same.
679 (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
680 (loop_iv_stack_patch_for_consts): New.
681 (loop_iv_stack_remove_constants): New.
682 (graphite_create_new_loop): Use loop_iv_stack_push_iv.
683 (translate_clast): Call loop_iv_stack_patch_for_consts and
684 loop_iv_stack_remove_constants.
685 (gloog): Use new datatype. Redirect construction edge to end
686 block to avoid accidental deletion.
687 * graphite.h (enum iv_stack_entry_kind): New. Tag for data in
689 (union iv_stack_entry_data): New. Data in iv stack entry.
690 (struct iv_stack_entry): New. Datatype for iv stack entries.
692 2008-10-15 Sebastian Pop <sebastian.pop@amd.com>
694 * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
695 * graphite.c (free_scop): Same.
697 (free_scattering): New.
698 (build_cloog_prog): Call free_scattering.
699 (patch_phis_for_virtual_defs): Fix memleak.
700 (graphite_trans_bb_strip_mine): Same.
703 2008-10-15 Sebastian Pop <sebastian.pop@amd.com>
704 Harsha Jagasia <harsha.jagasia@amd.com>
706 PR tree-optimization/37828
707 * graphite.c (graphite_trans_loop_block): Do not loop block
710 2008-10-15 Sebastian Pop <sebastian.pop@amd.com>
712 PR tree-optimization/37686
713 * tree-loop-linear.c (linear_transform_loops): Build a
714 loop nest vector. Pass it to lambda_compute_access_matrices.
715 * tree-data-ref.h (struct access_matrix): Store the loop nest
716 relative to which it encodes the information.
717 (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
718 (am_vector_index_for_loop): Reimplemented: iterate over the
719 loop nest for finding the loop index in the access matrix.
720 (lambda_compute_access_matrices): Update declaration.
721 * lambda-code.c (build_access_matrix): Pass the loop nest and
723 (lambda_compute_access_matrices): Same.
725 2008-10-15 Andreas Krebbel <krebbel1@de.ibm.com>
727 * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
728 * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
729 TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
730 already implies hard float. Also fix several insn condition
731 with TARGET_DFP which shall require TARGET_HARD_DFP instead.
733 2008-10-15 David Edelsohn <edelsohn@gnu.org>
736 Based on patches by Laurent Vivier.
737 * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
738 * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
739 * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
740 dollar sign to underscore.
741 (ASM_OUTPUT_EXTERNAL): Same.
742 (ASM_OUTPUT_LABELREF): New.
743 * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
745 * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
746 * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
747 * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
748 * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
750 2008-10-15 Jakub Jelinek <jakub@redhat.com>
752 PR tree-optimization/36881
753 * tree-switch-conversion.c (check_final_bb): For flag_pic, check
754 that each value doesn't need runtime relocations, for !flag_pic
755 check that each value is just a valid initializer constant.
757 2008-10-14 Richard Sandiford <rdsandiford@googlemail.com>
759 * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
760 LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
761 COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
762 Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
764 (REG_CLASS_NAMES): Update accordingly.
765 (REG_CLASS_CONTENTS): Likewise. Use the class name in the comments,
766 rather than an unpredictable descriptive string.
767 * config/mips/mips.c (mips_register_move_cost): Remove comment.
768 (mips_register_move_cost): Check for specific COP*_REGS classes,
769 instead of ALL_COP_AND_GR_REGS.
770 (mips_ira_cover_classes): New function.
771 (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
772 (TARGET_IRA_COVER_CLASSES): Define.
774 2008-10-14 Douglas Gregor <doug.gregor@gmail.com>
777 * tree.c (build_type_attribute_qual_variant): Hash on the
778 unqualified type, and don't overwrite an existing
779 (type_hash_eq): Make the TYPE_NAME of the types significant, to
780 allow distinguishing between wchar_t and its underlying type. This
781 also means that we'll retain a little more typedef information.
783 2008-10-14 Andrey Belevantsev <abel@ispras.ru>
784 Dmitry Melnik <dm@ispras.ru>
785 Dmitry Zhurikhin <zhur@ispras.ru>
786 Alexander Monakov <amonakov@ispras.ru>
787 Maxim Kuvyrkov <maxim@codesourcery.com>
789 * target.h (struct gcc_target): Update prototypes of needs_block_p
791 * haifa-sched.c (create_check_block_twin): Update calls to the above.
792 * sel-sched.c (create_speculation_check): Likewise.
793 * doc/tm.texi: Provide documentation for new target hooks.
795 * config/ia64/ia64.c: Include sel-sched.h. Rewrite speculation hooks.
796 (ia64_gen_spec_insn): Removed.
797 (get_spec_check_gen_function, insn_can_be_in_speculative_p,
798 ia64_gen_spec_check): New static functions.
799 (ia64_alloc_sched_context, ia64_init_sched_context,
800 ia64_set_sched_context, ia64_clear_sched_context,
801 ia64_free_sched_context, ia64_get_insn_spec_ds,
802 ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
803 (ia64_needs_block_p): Change prototype.
804 (ia64_gen_check): Rename to ia64_gen_spec_check.
805 (ia64_adjust_cost): Rename to ia64_adjust_cost_2. Add new parameter
806 into declaration, add special memory dependencies handling.
807 (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
808 TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
809 TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
810 TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
811 Define new target hooks.
812 (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
813 (ia64_optimization_options): Turn on selective scheduling with -O3,
814 disable -fauto-inc-dec. Set mflag_sched_control_spec to true by default
815 with selective scheduling.
816 (ia64_override_options): Initialize align_loops and align_functions
817 to 32 and 64, respectively. Set global selective scheduling flags
818 according to target-dependent flags.
819 (rtx_needs_barrier): Support UNSPEC_LDS_A.
820 (group_barrier_needed): Use new mstop-bit-before-check flag.
822 (dfa_state_size): Make global.
823 (spec_check_no, max_uid): Remove.
824 (mem_ops_in_group, current_cycle): New variables.
825 (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
826 Initialize new variables.
827 (is_load_p, record_memory_reference): New functions.
828 (ia64_dfa_sched_reorder): Lower priority of loads when limit is
830 (ia64_variable_issue): Change use of current_sched_info to
831 sched_deps_info. Update comment. Note if a load or a store is issued.
832 (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
833 advance if maximal number of loads or stores was issued on current
835 (scheduled_good_insn): New static helper function.
836 (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
837 a group barrier is needed. Fix vertical spacing. Guard the code
838 doing state transition with last_scheduled_insn check.
839 Mark that a stop bit should be before current insn if there was a
840 cycle advance. Update current_cycle and mem_ops_in_group.
841 (ia64_h_i_d_extended): Change use of current_sched_info to
842 sched_deps_info. Reallocate stops_p by larger chunks.
843 (struct _ia64_sched_context): New structure.
844 (ia64_sched_context_t): New typedef.
845 (ia64_alloc_sched_context, ia64_init_sched_context,
846 ia64_set_sched_context, ia64_clear_sched_context,
847 ia64_free_sched_context): New static functions.
848 (gen_func_t): New typedef.
849 (get_spec_load_gen_function): New function.
850 (SPEC_GEN_EXTEND_OFFSET): Declare.
851 (ia64_set_sched_flags): Check common_sched_info instead of *flags.
852 (get_mode_no_for_insn): Change the condition that prevents use of
853 special hardware registers so it can now handle pseudos.
854 (get_spec_unspec_code): New function.
855 (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
856 ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
857 (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
858 during selective scheduling.
859 (ia64_speculate_insn): Use ds_get_speculation_types when
860 determining whether we need to change the pattern.
861 (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
862 (ia64_spec_check_src_p): Support new speculation/check codes.
863 (struct bundle_state): New field.
864 (issue_nops_and_insn): Initialize it.
865 (insert_bundle_state): Minimize mid-bundle stop bits.
866 (important_for_bundling_p): New function.
867 (get_next_important_insn): Use important_for_bundling_p.
868 (bundling): When shifting TImode from unimportant insns, ignore
869 also group barriers. Assert that best state is found before
870 the backward bundling pass. Print number of mid-bundle stop bits.
871 Minimize mid-bundle stop bits. Check correct calculation of
872 mid-bundle stop bits.
873 (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
874 (final_emit_insn_group_barriers): Emit stop bits before insns starting
876 (sel2_run): New variable.
877 (ia64_reorg): When flag_selective_scheduling2 is set, run the selective
878 scheduling pass instead of schedule_ebbs.
880 * config/ia64/ia64.md (speculable1, speculable2): New attributes.
881 (UNSPEC_LDS_A): New UNSPEC.
882 (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
883 movti_internal, movsf_internal, movdf_internal,
884 movxf_internal): Make visible. Add speculable* attributes.
885 (output_c_nc): New mode attribute.
886 (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
887 mov<mode>_nc, zero_extend<mode>di2_nc,
888 advanced_load_check_nc_<mode>): New insns.
889 (zero_extend*): Add speculable* attributes.
891 * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
892 (msched-stop-bits-after-every-cycle): Likewise.
893 (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
895 (msched-spec-verbose): Remove.
896 (msched-prefer-non-data-spec-insns,
897 msched-prefer-non-control-spec-insns,
898 msched-count-spec-in-critical-path,
899 msel-sched-dont-check-control-spec): Use Target Report Var
900 instead of Common Report Var.
902 * config/ia64/itanium2.md: Remove incorrect bypass.
904 * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
906 2008-10-14 Jakub Jelinek <jakub@redhat.com>
909 * opts.c (common_handle_option): Don't ICE on -fhelp=joined
912 2008-10-14 Ben Elliston <bje@au.ibm.com>
914 * config/rs6000/rs6000.md (cell_micro): Fix formatting.
916 2008-10-13 Joseph Myers <joseph@codesourcery.com>
918 * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
921 2008-10-13 Matthias Klose <doko@ubuntu.com>
923 * config/pa/linux-atomic.c: Work around missing header file
924 for hppa64-linux-gnu targets.
926 2008-10-13 Andrew Pinski <andrew_pinski@playstation.sony.com>
927 Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
928 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
929 Grace Cao <grace_cao@playstation.sony.com>
931 * doc/invoke.texi (-mgen-cell-microcode): Document.
932 (-mwarn-cell-microcode): Document.
933 * cfglayout.c (locator_location): Export.
934 * rtl.h (locator_location): Define prototype.
935 * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
937 * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
938 * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
939 (mwarn-cell-microcode): New option.
940 * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
941 (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
942 cell and not already set.
943 Turn off string instructions if not generating cell microcode.
944 (rs6000_final_prescan_insn): New function that warns about microcoded
946 * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
947 * config/rs6000/rs6000.md
948 Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
949 the instruction would have been microcoded on the Cell. Set cell_micro
950 to always on unnamed patterns for the string instructions.
951 (cell_micro): Update definition, remove load/store conditional
953 (sign_extend:DI): Define new pattern for non microcoded version.
954 (sign_extend:SI): Likewise.
955 (compare (div:P)): Set cell_micro to not.
956 (andsi3): Define as an expand.
957 (andsi3_mc): New pattern.
958 (andsi3_nomc): New pattern.
959 (andsi3_internal0_nomc): New pattern.
960 (andsi3_internal2): Rename to ...
961 (andsi3_internal2_mc): this and enable iff generating microcode.
962 (andsi3_internal3): Rename to ...
963 (andsi3_internal3_mc): this and enable iff generating microcode.
964 (andsi3_internal4): Enable iif generating microcode.
965 (andsi3_internal5): Rename to ..
966 (andsi3_internal5_mc): this and enable iff generating microcode.
967 (andsi3_internal5_nomc): New pattern.
968 (extzvdi_internal1): Enable iff generating microcode.
969 (extzvdi_internal2): Likewise.
970 (rotlsi3_internal7): Set cell_micro to always if non immediate form.
971 (anddi3): Change to expand.
972 (anddi3_mc): Rename from anddi3.
973 (anddi3_no_mc): New pattern.
974 (anddi3_internal2): Rename to ..
975 (anddi3_internal2_mc): this and enable iff generating microcode.
976 (anddi3_internal2_nomc): New pattern.
977 (anddi3_internal3): Rename to ..
978 (anddi3_internal3_mc): this and enable iff generating microcode.
979 (anddi3_internal3_nomc): New pattern.
980 (movti_string): Set cell_micro to always if TARGET_STRING.
981 (stmsi8): Set cell_micro to always.
987 (stmsi8_power): Likewise.
988 (stmsi7_power): Likewise.
989 (stmsi6_power): Likewise.
990 (stmsi5_power): Likewise.
991 (stmsi4_power): Likewise.
992 (stmsi3_power): Likewise.
993 (movsi_update2): Enable iff generating microcode.
994 (movhi_update3): Likewise.
995 (lmw): Set cell_micro to always.
997 2008-10-13 Richard Sandiford <rdsandiford@googlemail.com>
999 * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
1000 * config/s390/s390.c (machine_function): Remove
1001 decomposed_literal_pool_addresses_ok_p.
1002 (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
1003 the difference of two labels.
1004 (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
1005 (s390_pool_offset): New function.
1006 (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
1007 (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
1009 2008-10-13 Nathan Froyd <froydnj@codesourcery.com>
1011 * doc/install.texi (powerpc-*-*): Require binutils 2.15.
1012 (powerpc*-*-linux-gnu*): Describe.
1013 * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
1014 * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
1015 config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
1016 config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
1017 config/rs6000/e500crtres32gpr.asm,
1018 config/rs6000/e500crtres64gpr.asm,
1019 config/rs6000/e500crtres64gprctr.asm,
1020 config/rs6000/e500crtrest32gpr.asm,
1021 config/rs6000/e500crtrest64gpr.asm,
1022 config/rs6000/e500crtresx32gpr.asm,
1023 config/rs6000/e500crtresx64gpr.asm,
1024 config/rs6000/e500crtsav32gpr.asm,
1025 config/rs6000/e500crtsav64gpr.asm,
1026 config/rs6000/e500crtsav64gprctr.asm,
1027 config/rs6000/e500crtsavg32gpr.asm,
1028 config/rs6000/e500crtsavg64gpr.asm,
1029 config/rs6000/e500crtsavg64gprctr.asm: Use it.
1030 * config/rs6000/crtsavres.asm: Really remove.
1032 2008-10-13 Kai Tietz <kai.tietz@onevision.com>
1035 * c-format.c (convert_format_name_to_system_name): Use
1036 TARGET_OVERRIDES_FORMAT_INIT.
1037 * config.gcc (extra_options): Add for mingw targets mingw.opt.
1038 * config/i386/mingw.opt: New.
1039 * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
1040 * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
1041 (ms_printf_length_specs): Removed const specifier.
1042 * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
1043 * doc/invoke.texi (Wno-pedantic-ms-format): New.
1045 2008-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1047 * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
1048 * doc/install.texi: Bump recommended MPFR to 2.3.2.
1050 2008-10-12 Kenneth Zadeck <zadeck@naturalbridge.com>
1053 * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
1054 sure that ref has valid bb.
1056 2008-10-12 Richard Henderson <rth@redhat.com>
1059 * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
1060 * alias.c (value_addr_p, stack_addr_p): Remove.
1061 (nonoverlapping_memrefs_p): Remove IRA special case.
1062 * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
1063 * emit-rtl.h (set_mem_attrs_for_spill): Declare.
1064 * reload1.c (alter_reg): Use it.
1066 2008-10-12 Uros Bizjak <ubizjak@gmail.com>
1068 * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
1069 of registers instead of eax, ebx, ecx and edx. Use for loop
1070 and check register for non-zero value before the call
1071 to decode_caches_intel.
1073 2008-10-11 Kenneth Zadeck <zadeck@naturalbridge.com>
1075 PR rtl-optimization/37448
1076 * df.h: (df_ref_class): New enum.
1077 (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
1078 (struct df_ref): Replaced with union df_ref_d.
1079 (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
1080 New members of df_ref_d union.
1081 (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
1082 DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
1083 DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
1084 DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
1085 DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
1086 DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
1087 (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
1088 (df_scan_bb_info, df_bb_regno_first_def_find,
1089 df_bb_regno_last_def_find, df_find_def, df_find_use,
1090 df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1091 debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
1092 df_ref_create, df_ref_remove, df_compute_accessed_bytes,
1093 df_get_artificial_defs, df_get_artificial_uses, union_defs)
1094 Replaced struct df_ref * with df_ref.
1095 * df-scan.c (df_collection_rec, df_null_ref_rec,
1096 df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
1097 df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
1098 df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
1099 df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
1100 df_reorganize_refs_by_reg_by_reg,
1101 df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
1102 df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
1103 df_sort_and_compress_refs, df_install_ref, df_install_refs,
1104 df_ref_record, df_get_conditional_uses, df_get_call_refs,
1105 df_bb_refs_record, df_exit_block_uses_collect,
1106 df_record_exit_block_uses, df_reg_chain_mark,
1107 df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
1108 df_ref * with df_ref.
1109 (df_ref_record, df_uses_record, df_ref_create_structure): Added
1110 df_ref_class parameter.
1111 (df_scan_problem_data): Added new pools for different types of refs.
1112 (df_scan_free_internal, df_scan_alloc, df_free_ref,
1113 df_ref_create_structure): Processed new ref pools.
1114 (df_scan_start_dump): Added counts of refs and insns.
1115 (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
1116 df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
1117 df_entry_block_defs_collect, df_exit_block_uses_collect): Added
1118 code to pass df_ref_class down to ref creation functions.
1119 (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
1120 df_reg_chain_mark): Use macros to hide references to df_refs.
1121 (df_ref_chain_change_bb): Removed.
1122 (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
1123 (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
1124 Enhanced to understand df_ref union structure.
1125 * fwprop.c (local_ref_killed_between_p, use_killed_between,
1126 all_uses_available_at, update_df, try_fwprop_subst,
1127 forward_propagate_subreg, forward_propagate_and_simplify,
1128 forward_propagate_into, fwprop, fwprop_addr): Replaced struct
1129 df_ref * with df_ref.
1130 (use_killed_between, all_uses_available_at): Use macros to hide
1131 references to df_refs.
1132 * regstat.c (regstat_bb_compute_ri,
1133 regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
1135 * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
1136 see_handle_relevant_refs, see_analyze_one_def,
1137 see_update_relevancy, see_propagate_extensions_to_uses): Replaced
1138 struct df_ref * with df_ref.
1139 * ra-conflict.c (record_one_conflict, clear_reg_in_live,
1140 global_conflicts): Replaced struct df_ref * with df_ref.
1141 * ddg.c (create_ddg_dep_from_intra_loop_link,
1142 add_cross_iteration_register_deps, build_inter_loop_deps):
1143 Replaced struct df_ref * with df_ref.
1144 (create_ddg_dep_from_intra_loop_link,
1145 add_cross_iteration_register_deps): Use macros to hide references
1147 * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
1148 df_ref * with df_ref.
1149 * df-core.c (df_bb_regno_first_def_find,
1150 df_bb_regno_last_def_find, df_find_def, df_find_use,
1151 df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1152 debug_df_ref): Replaced struct df_ref * with df_ref.
1153 (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
1154 * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
1156 * web.c (union_defs, entry_register, replace_ref, web_main):
1157 Replaced struct df_ref * with df_ref.
1158 (union_defs, replace_ref): Use macros to hide references to df_refs.
1159 * global.c (compute_regs_asm_clobbered, build_insn_chain):
1160 Replaced struct df_ref * with df_ref.
1161 * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
1162 * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
1163 Replaced struct df_ref * with df_ref.
1164 * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
1165 mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
1167 * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
1168 * df-byte-scan.c (df_compute_accessed_bytes_extract,
1169 df_compute_accessed_bytes_strict_low_part,
1170 df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
1171 Replaced struct df_ref * with df_ref.
1172 (df_compute_accessed_bytes): Use macros to hide references to df_refs.
1173 * init-regs.c (initialize_uninitialized_regs): Replaced struct
1174 df_ref * with df_ref.
1175 * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
1176 check_dependency, check_dependencies, record_uses): Replaced
1177 struct df_ref * with df_ref.
1178 (invariant_for_use, check_dependency): Use macros to hide
1179 references to df_refs.
1180 * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
1181 get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
1182 iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
1183 (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
1184 references to df_refs.
1185 * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
1187 * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
1188 * df-problems.c (df_rd_bb_local_compute_process_def,
1189 df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
1190 df_chain_unlink_1, df_chain_unlink, df_chain_copy,
1191 df_chain_remove_problem, df_chain_create_bb_process_use,
1192 df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
1193 df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
1194 df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
1195 df_byte_lr_simulate_artificial_refs_at_top,
1196 df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
1197 df_note_bb_compute, df_note_add_problem, df_simulate_defs,
1198 df_simulate_uses, df_simulate_artificial_refs_at_end,
1199 df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
1201 (df_chain_dump): Use macros to hide references to df_refs.
1202 * config/mips/mips.c (r10k_simplify_address): Replaced struct
1203 df_ref * with df_ref.
1204 * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
1205 mark_artificial_uses, mark_reg_dependencies,
1206 byte_dce_process_block): Replaced struct df_ref * with df_ref.
1208 2008-10-11 Eric Botcazou <ebotcazou@adacore.com>
1210 * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
1212 (array_ref_element_size): Likewise.
1213 (array_ref_low_bound): Likewise.
1214 (array_ref_up_bound): Likewise.
1215 * expr.c (contains_packed_reference): Likewise.
1216 (array_ref_element_size): Likewise.
1217 (array_ref_low_bound): Likewise.
1218 (array_ref_up_bound): Likewise.
1219 * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
1220 with ARRAY_RANGE_REF.
1221 (idx_find_step): Likewise.
1222 (idx_record_use): Likewise.
1223 (strip_offset_1): Likewise.
1224 (idx_remove_ssa_names): Likewise.
1226 2008-10-11 Uros Bizjak <ubizjak@gmail.com>
1227 Andi Kleen <ak@linux.intel.com>
1229 * config/i386/cpuid.h (__cpuid_count): New defines.
1230 * config/i386/driver-i386.c (struct cache_desc): New structure.
1231 (describe_cache): Use struct cache_desc to pass cache descriptions.
1232 (detect_l2_cache): Ditto. Rename from decode_l2_cache.
1233 (detect_caches_amd): Use struct cache_desc to describe caches.
1234 (decode_caches_intel): Use struct cache_desc to pass cache
1235 descriptions. Update descriptions to match latest (rev -032,
1236 December 2007) CPUID documentation. Do not check valid bit here.
1237 Check for Xeon MP value 0x49 problems.
1238 (detect_caches_cpuid2): New function, split from detect_caches_intel.
1239 Check valid bit before calling decode_caches_intel. Detect number
1240 of times to repeat CPUID instruction.
1241 (detect_caches_cpuid4): New function.
1242 (detect_caches_intel): Depending on max_level, call
1243 detect_caches_cpuid2 or detect_caches_cpuid4. Call detect_l2_cache
1244 only when other methods fail to provide valid L2 cache description.
1246 2008-10-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1249 * pa.md (call, call_value): Generate an rtx for register r4 and pass
1250 it to PIC call patterns.
1251 (call_symref_pic): Revise pattern to expose PIC register save. Remove
1252 code generation and attributes from pattern. Change peephole2 to split
1253 for noreturn case. Revise split pattern for non noreturn case.
1254 (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
1255 call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
1256 * pa.c (attr_length_call): Simplify extraction of call rtx. Add some
1259 2008-10-11 David Edelsohn <edelsohn@gnu.org>
1261 * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
1262 (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
1264 (divdf3): Reformat long line.
1266 2008-10-11 Michael J. Eager <eager@eagercon.com>
1268 * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
1270 (rs6000_handle_option): Process -mfpu options.
1271 * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
1272 (enum fpu_type_t): New.
1273 * config/rs6000/rs6000.md (attr fp_type): New. Include xfpu.md.
1274 (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
1276 (floatsisf2): Remove TARGET_SINGLE_FPU condition.
1277 (floatdidf2): Add TARGET_SINGLE_FPU condition.
1278 * config/rs6000/rs6000.opt (-mfpu): New.
1279 (-mxilinx-fpu): New.
1280 * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
1281 * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
1282 * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
1283 * gcc/config.gcc: powerpc-xilinx-eabi target: New.
1284 * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
1286 2008-10-11 Jakub Jelinek <jakub@redhat.com>
1289 * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
1290 LO_SUM on Darwin if mode has just one unit.
1292 2008-10-10 H.J. Lu <hongjiu.lu@intel.com>
1295 * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
1296 has been optimized out.
1298 2008-10-10 Richard Sandiford <rdsandiford@googlemail.com>
1300 * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
1301 instead of PIC_DIRECT_ADDR_P.
1302 (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1303 (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
1304 (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
1305 (PIC_OFFSET_P): Rename to...
1306 (PCREL_SYMOFF_P): ...this.
1307 (PIC_DIRECT_ADDR_P): Delete.
1308 (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
1310 (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
1311 single argument. Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
1312 UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
1313 * config/sh/sh.c (print_operand): Remove CONST handling.
1314 (unspec_caller_rtx_p): Rewrite to use split_const and check
1315 the operands of UNSPEC bases.
1316 (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
1317 with (unspec [A B] UNSPEC_SYMOFF).
1318 (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
1319 UNSPEC_PCREL_SYMOFF.
1320 (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1321 * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
1322 (UNSPEC_EXTRACT_U16): Likewise.
1323 (UNSPEC_SYMOFF): Likewise.
1324 (UNSPEC_PCREL_SYMOFF): Likewise.
1325 (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
1327 (movsi_const_16bit): Likewise.
1328 (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
1329 (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
1330 with (unspec [A B] UNSPEC_PCREL_SYMOFF).
1331 (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
1332 with (unspec [A B] UNSPEC_SYMOFF).
1333 (symPLT_label2reg): Replace (minus A (minus B pc)) with
1334 (unspec [A B] PCREL_UNSPEC_SYMOFF).
1335 * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
1336 (Csu): Likewise UNSPEC_EXTRACT_U16.
1337 (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1338 (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
1340 2008-10-10 Stepan Kasal <skasal@redhat.com>
1342 * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
1343 for loop strip mining and loop blocking.
1345 2008-10-10 Alexandre Oliva <aoliva@redhat.com>
1347 * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
1348 vary types depending on debug info.
1350 2008-10-10 Alexandre Oliva <aoliva@redhat.com>
1352 * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
1353 before ensuring it's already computed.
1355 2008-10-09 Jakub Jelinek <jakub@redhat.com>
1357 * rtl.h (locator_eq): New decl.
1358 * cfglayout.c (locator_scope): New function.
1359 (insn_scope): Use it.
1360 (locator_eq): New function.
1361 (fixup_reorder_chain): Search for last insn in src bb
1362 that has locator set or first insn in dest bb. Use
1363 locator_eq instead of == to compare locators.
1364 * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
1365 * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
1366 == to compare locators.
1368 * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
1370 * gimple-low.c (lower_function_body, lower_gimple_return,
1371 lower_builtin_setjmp): Set gimple_block on the newly created stmts.
1372 * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
1373 goto_block on edges if goto_locus is known.
1376 * tree.h (get_object_alignment): Declare.
1377 * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
1378 get_object_alignment if needed.
1379 * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand handling
1381 (get_object_alignment): ... here. New function. Try harder to
1382 determine alignment from get_inner_reference returned offset.
1384 2008-10-08 Jakub Jelinek <jakub@redhat.com>
1386 * graphite.c (gloog): Don't call find_unreachable_blocks
1387 before delte_unreachable_blocks.
1389 * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
1390 goto_locus of true_edge into RTL locator.
1392 2008-10-08 Uros Bizjak <ubizjak@gmail.com>
1394 * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
1395 (*jcc_btdi_mask_rex64): Ditto.
1397 (*jcc_btsi_mask): Ditto.
1398 (*jcc_btsi_1): Ditto.
1399 (*jcc_btsi_mask_1): Ditto.
1401 2008-10-08 Paul Brook <paul@codesourcery.com>
1403 * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
1404 compatible profiler (__gnu_mcount_nc).
1405 (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
1407 2008-10-08 H.J. Lu <hongjiu.lu@intel.com>
1409 * config/i386/i386.c (initial_ix86_tune_features): Add
1410 X86_TUNE_USE_VECTOR_FP_CONVERTS.
1411 * config/i386/i386.h (ix86_tune_indices): Likewise.
1412 (TARGET_USE_VECTOR_FP_CONVERTS): New.
1414 * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
1415 instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
1416 for FP to FP splitters.
1418 2008-10-08 H.J. Lu <hongjiu.lu@intel.com>
1420 * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
1423 2008-10-08 Jakub Jelinek <jakub@redhat.com>
1427 PR rtl-optimization/37341
1428 * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
1429 to ORIG_BB, pass through ORIG_BB recursively.
1430 (cse_condition_code_reg): Adjust caller.
1432 2008-10-08 Kai Tietz <kai.tietz@onevision.com>
1434 * sdbout.c (sdbout_one_type): Treat the value type
1435 CONST_DECL for enumerals.
1437 2008-10-07 H.J. Lu <hongjiu.lu@intel.com>
1439 * config/i386/i386.md: Remove trailing white spaces.
1441 2008-10-07 Kenneth Zadeck <zadeck@naturalbridge.com>
1443 PR rtl-optimization/37448
1444 * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
1445 (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
1447 (struct output_info) [count]: Renamed total_created and made
1449 (struct output_info) [size]: Renamed total_allocated and made
1451 (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
1452 Properly keep track of desc->size.
1453 (print_statistics, dump_alloc_pool_statistics): Enhance the
1454 printing of statistics to print the number of elements and to use
1457 2008-10-07 Jakub Jelinek <jakub@redhat.com>
1460 * opts.h (CL_SAVE): Move up to flags range.
1461 (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
1462 CL_COMMON): Renumber.
1463 (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
1464 * opts.c (common_handle_option): Revert last change.
1466 2008-10-07 H.J. Lu <hongjiu.lu@intel.com>
1468 * config/i386/i386-protos.h (ix86_schedule): New.
1470 * config/i386/i386.c (ix86_schedule): New.
1471 (override_options): Add schedule to processor_alias_table. Set
1472 ix86_schedule from the schedule field in processor_alias_table.
1473 (ix86_function_specific_save): Save ix86_schedule.
1474 (ix86_function_specific_restore): Restore ix86_schedule.
1476 * config/i386/i386.md (cpu): Map to ix86_schedule instead of
1477 ix86_tune. Add none and remove i386, i486, pentium4, nocona
1480 * config/i386/i386.opt: Add schedule.
1482 * config/i386/ppro.md: Remove generic32.
1484 2008-10-07 Simon Martin <simartin@users.sourceforge.net>
1487 * expr.c (count_type_elements): Handle ERROR_MARK.
1489 2008-10-07 Jakub Jelinek <jakub@redhat.com>
1494 * basic-block.h (struct edge_def): Add goto_block field.
1495 * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
1496 one insn with locus corresponding to edge's goto_locus if !optimize.
1497 * profile.c (branch_prob): Copy edge's goto_block.
1498 * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
1500 (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
1501 locator in between the merged basic blocks if !optimize and needed.
1502 * cfgexpand.c (expand_gimple_cond): Convert goto_block and
1503 goto_locus into RTL locator. For unconditional jump use that
1504 locator for the jump insn.
1505 (expand_gimple_cond): Convert goto_block and goto_locus into
1506 RTL locator for all remaining edges. For unconditional jump
1507 use that locator for the jump insn.
1508 * cfgcleanup.c (try_forward_edges): Avoid the optimization if
1509 there is more than one edge or insn locator along the forwarding
1510 edges and !optimize. If there is just one, set e->goto_locus.
1511 * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
1513 (move_block_to_fn): Adjust edge's goto_block.
1515 2008-10-07 H.J. Lu <hongjiu.lu@intel.com>
1518 * expmed.c (expand_mult): Properly check DImode constant in
1521 2008-10-07 Jakub Jelinek <jakub@redhat.com>
1524 * dwarf2out.c (common_block_die_table): New variable.
1525 (common_block_die_table_hash, common_block_die_table_eq): New
1527 (gen_variable_die): Look up a DW_TAG_common_block die for a particular
1528 COMMON block in the current scope rather than globally. Optimize
1529 DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
1530 DW_OP_addr SYMBOL_REF+off.
1532 2008-10-07 Eric Botcazou <ebotcazou@adacore.com>
1534 * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
1535 Return true for non-addressable GIMPLE operands.
1537 2008-10-07 H.J. Lu <hongjiu.lu@intel.com>
1540 * config/i386/i386.c (initial_ix86_tune_features): Remove
1541 X86_TUNE_USE_BIT_TEST.
1542 * config/i386/i386.h (ix86_tune_indices): Likewise.
1543 (TARGET_USE_BIT_TEST): Removed.
1545 2008-10-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1547 * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
1549 2008-10-06 Adam Nemet <anemet@caviumnetworks.com>
1551 * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
1552 (mul<mode>3_mul3): ... into this new template.
1554 2008-10-06 Aldy Hernandez <aldyh@redhat.com>
1556 * gimplify.c (gimplify_arg): Add location argument. Use it.
1557 (gimplify_call_expr): Pass location to gimplify_arg.
1558 (gimplify_modify_expr_to_memcpy): Same.
1559 (gimplify_modify_expr_to_memset): Same.
1561 2008-10-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
1563 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1564 Update calls to build_unary_op and build_indirect_ref for location
1567 2008-10-06 Aldy Hernandez <aldyh@redhat.com>
1570 * c-decl.c (finish_decl): Pass input_location to build_unary_op.
1571 * c-typeck.c (array_to_pointer_conversion): Pass location to
1573 (function_to_pointer_conversion): Use error_at and warning_at.
1574 (build_indirect_ref): Same.
1575 (build_array_ref): Pass location to build_binary_op.
1576 (parser_build_unary_op): Do not set location after calling
1578 (build_unary_op): Add location argument. Use it throughout. Set
1579 EXPR_LOCATION before returning new tree.
1580 (build_modify_expr): Same.
1581 (build_binary_op): Use location throughout. Set EXPR_LOCATION before
1583 * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
1584 build_indirect_ref, build_modify_expr.
1585 (c_finish_omp_for): Same. Use error_at instead of error.
1586 * c-common.c (c_common_truthvalue_conversion): Pass location to
1588 (warn_for_div_by_zero): Add location argument.
1589 * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
1590 build_unary_op, warn_for_div_by_zero.
1591 * c-parser.c (c_parser_typeof_specifier): Use
1592 protected_set_expr_location.
1593 (c_parser_statement_after_labels): Same.
1594 (c_parser_condition): Same.
1595 (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
1596 (c_parser_conditional_expression): Use protected_set_expr_location.
1597 (c_parser_unary_expression): Pass location to build_indirect_ref.
1598 (c_parser_postfix_expression_after_primary): Pass location to
1599 build_indirect_ref, build_unary_op.
1600 (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
1602 2008-10-06 Joshua Kinard <kumba@gentoo.org>
1604 * doc/invoke.texi: List r1x000 family under the -march MIPS option.
1605 * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
1606 * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
1608 (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
1609 (mips_issue_rate): Handle PROCESSOR_R10000.
1610 * config/mips/mips.md (cpu): Add r10000.
1612 * config/mips/10000.md: New file.
1614 2008-10-06 Richard Sandiford <rdsandiford@googlemail.com>
1616 * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
1617 * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
1618 * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
1620 2008-10-06 Richard Sandiford <rdsandiford@googlemail.com>
1622 * config/darwin-protos.h (machopic_function_base_name): Delete.
1623 (machopic_function_base_sym): Likewise.
1624 (machopic_gen_offset): Declare.
1625 * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
1626 (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
1627 * config/darwin.c (machopic_function_base_name): Delete.
1628 (machopic_function_base_sym): Likewise.
1629 (gen_pic_offset): Rename to...
1630 (machopic_gen_offset): ...this and remove the pic_base argument.
1631 Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
1632 is needed. Create an UNSPEC_MACHOPIC_OFFSET if so, and set
1633 crtl->uses_pic_offset_table.
1634 (machopic_indirect_data_reference): Use new machopic_gen_offset
1636 (machopic_legitimize_pic_address): Likewise.
1637 (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
1639 * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
1640 MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
1641 * config/i386/i386.c (output_set_got): Likewise.
1642 (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
1644 (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
1645 (legitimate_address_p): Likewise.
1646 (output_pic_addr_const): Likewise.
1647 (output_addr_const_extra): Likewise.
1648 (ix86_delegitimize_address): Expect darwin_local_data_pic to
1649 match an UNSPEC rather than a MINUS.
1650 * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
1651 (builtin_setjmp_receiver): Use machopic_gen_offset.
1652 * config/i386/predicates.md (pic_symbolic_operand): Handle
1653 UNSPEC_MACHOPIC_OFFSET.
1655 * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
1656 Use machopic_gen_offset and machopic_operand_p.
1657 (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
1658 (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
1659 * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
1660 (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
1661 Set crtl->uses_pic_offset_table.
1663 2008-10-06 Richard Sandiford <rdsandiford@googlemail.com>
1665 * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
1667 * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
1668 * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
1669 * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
1670 (constant_pool_expr_p): Use split_const and check the base.
1671 (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
1673 (legitimate_constant_pool_address_p): Check toc_relative_p
1674 instead of constant_pool_expr_p.
1675 (print_operand_address): Always use output_addr_const for
1676 constant pool addresses.
1677 (rs6000_output_addr_const_extra): New function.
1678 (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
1680 2008-10-06 Vladimir Makarov <vmakarov@redhat.com>
1684 * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
1685 (mark_ref_live, mark_ref_dead): Use them.
1686 (def_conflicts_with_inputs_p): Remove.
1687 (mark_early_clobbers): New function.
1688 (process_bb_node_lives): Call preprocess_constraints and
1689 mark_early_clobbers.
1691 * doc/rtx.texi (clobber): Change how RA deals with clobbers.
1693 2008-10-06 Danny Smith <dannysmith@users.sourceforge.net>
1695 * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
1696 lib with -mthread switch.
1698 2008-10-05 Dodji Seketeli <dodji@redhat.com>
1701 * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
1702 function in two, making it call a new and reusable
1703 dwarf2out_imported_module_or_decl() that takes the containing
1704 BLOCK of the declaration in argument.
1705 (dwarf2out_imported_module_or_decl_real): New function.
1706 (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
1707 IMPORTED_DECL in account.
1708 * tree.def: Added IMPORTED_DECL node type.
1709 * tree.h: Added accessors for IMPORTED_DECL nodes.
1710 * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
1712 2008-10-05 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1714 * doc/gimple.texi: Fix some typos, wrap some long lines,
1715 fix some broken wraps with continuations.
1716 * tree-ssa-reassoc.c: Fix comment typos.
1718 2000-10-04 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1721 * pa.c (legitimize_pic_address): Force function labels to memory in
1724 2008-10-04 Anton Blanchard <anton@samba.org>
1726 * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
1727 (rs6000_split_atomic_op): Same.
1728 (rs6000_split_compare_and_swap): Same.
1729 (rs6000_split_compare_and_swapqhi): Same.
1731 2008-10-04 Richard Guenther <rguenther@suse.de>
1733 * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
1734 instead of pointer equality.
1735 (vn_nary_op_eq): Likewise.
1737 2008-10-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
1739 * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT
1741 (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
1742 TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
1744 2008-10-03 Danny Smith <dannysmith@users.sourceforge.net>
1746 * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
1747 Revert previous change.
1749 2008-10-03 Tom Tromey <tromey@redhat.com>
1751 * stringpool.c (ggc_alloc_string): Terminate string.
1753 2008-10-03 Jakub Jelinek <jakub@redhat.com>
1755 * gimplify.c (gimplify_function_tree): For -finstrument-functions
1756 use gimple_bind_{,set_}block instead of gimple_{,set_}block.
1757 * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
1760 * gimplify.c (declare_vars): Use gimple_bind_block instead of
1763 2008-10-03 Pascal Obry <obry@adacore.com>
1765 * gcov.c (create_file_names): Properly handle UNIX and DOS
1766 directory separators.
1767 (make_gcov_file_name): Likewise + convert the ':' DOS drive
1768 separator to '~' to ensure clean filenames on Windows.
1770 2008-10-02 Danny Smith <dannysmith@users.sourceforge.net>
1772 * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
1773 Add a null terminator to the stripped name.
1775 2008-10-02 David Edelsohn <edelsohn@gnu.org>
1777 * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
1778 TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1779 (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
1780 TARGET_SINGLE_FLOAT. Revert SCALAR_FLOAT_MODE_P condition.
1781 (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1782 (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
1783 TARGET_SINGLE_FLOAT.
1785 2008-10-02 Daniel Jacobowitz <dan@codesourcery.com>
1787 * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
1789 2008-10-02 Richard Guenther <rguenther@suse.de>
1792 * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
1793 and VECTOR_TYPE recurse with useless_type_conversion_p which
1794 properly handles void pointer conversion.
1796 2008-10-02 Danny Smith <dannysmith@users.sourceforge.net>
1799 * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
1800 (REAL_LIBGCC_SPEC): New. Always include -lgcc.
1802 2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
1804 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1805 Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
1806 ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
1807 they translate to non builtins.
1808 * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
1809 opaque_ftype_opaque. Define builtins __builtin_vec_splats,
1810 __builtin_vec_promote, __builtin_vec_extract, and
1811 __builtin_vec_insert.
1812 * config/rs6000/rs6000.h (enum rs6000_builtins): Add
1813 ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
1814 ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
1815 * config/rs6000/altivec.h (vec_extract): Define
1816 (vec_insert): Define.
1817 (vec_splats): Define.
1818 (vec_promote): Define.
1820 2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
1821 Yukishige Shibata <shibata@rd.scei.sony.co.jp>
1822 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1824 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
1826 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
1827 prototype. Add new parameter, blk.
1828 Use BLKmode for the MEM if blk is true.
1829 (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
1830 ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
1831 ALTIVEC_BUILTIN_STVRXL.
1832 Update usage of altivec_expand_lv_builtin.
1833 Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
1834 ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
1835 (altivec_init_builtins): If compiling for the Cell, also define the
1837 * config/rs6000/rs6000.h (rs6000_builtins): Define
1838 ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
1839 ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
1840 ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
1841 ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
1842 ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
1843 ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
1844 ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
1845 * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
1846 UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
1847 UNSPEC_STVRX, and UNSPEC_STVRXL.
1848 (altivec_lvlx): New pattern.
1849 (altivec_lvlxl): New pattern.
1850 (altivec_lvrx): New pattern.
1851 (altivec_lvrxl): New pattern.
1852 (altivec_stvlx): New pattern.
1853 (altivec_stvlxl): New pattern.
1854 (altivec_stvrx): New pattern.
1855 (altivec_stvrxl): New pattern.
1856 * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
1857 (vec_lvlxl): Likewise.
1858 (vec_lvrx): Define if PPU is defined.
1859 (vec_lvrxl): Likewise.
1860 (vec_stvlx): Define if PPU is defined.
1861 (vec_stvlxl): Likewise.
1862 (vec_stvrx): Define if PPU is defined.
1863 (vec_stvrxl): Likewise.
1865 2008-10-01 Geert Bosch <bosch@adacore.com>
1867 * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
1869 2008-10-01 Richard Guenther <rguenther@suse.de>
1871 PR tree-optimization/37617
1872 * tree-ssa-pre.c (create_expression_by_pieces): During FRE
1873 do not add to the NEW_SETS.
1875 2008-10-01 Richard Guenther <rguenther@suse.de>
1878 * tree-vrp.c (execute_vrp): If we optimized away the default
1879 case make sure to promote the label that got in place of it
1880 to a default case label.
1882 2008-10-01 Richard Henderson <rth@redhat.com>
1885 * tree-complex.c (set_component_ssa_name): Don't optimize
1886 is_gimple_min_invariant values with ssa_names in abnormal phis.
1888 2008-09-30 Paolo Bonzini <bonzini@gnu.org>
1890 PR tree-optimization/37662
1891 * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
1892 commutative binary operation if they are in the wrong order and
1893 fold_build2 produces non-GIMPLE.
1895 2008-09-30 Jakub Jelinek <jakub@redhat.com>
1897 PR tree-optimization/37662
1898 PR tree-optimization/37663
1899 * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
1900 get_value_range with non-SSA_NAME. Don't assert operands have been
1901 folded, instead just bail out.
1903 2008-09-30 Andrew Pinski <andrew_pinski@playstation.sony.com>
1905 * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
1907 2008-09-30 Richard Guenther <rguenther@suse.de>
1910 * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
1911 build restrict-qualified pointers.
1912 (vectorizable_store): Move alias check later.
1913 (vectorizable_load): Likewise.
1915 2008-09-30 Paolo Bonzini <bonzini@gnu.org>
1917 * c-common.c (empty_if_body_warning): Remove.
1918 * c-common.h (empty_if_body_warning): Remove.
1919 * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
1920 here the -Wempty-body warning for `if' and `else' statements.
1921 * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
1923 2008-09-29 H.J. Lu <hongjiu.lu@intel.com>
1925 * config/i386/i386.opt: Add msse2avx.
1927 * config/i386/linux.h (ASM_SPEC): New. Support -msse2avx.
1928 * config/i386/linux64.h (ASM_SPEC): Likewise.
1930 * doc/invoke.texi: Document -msse2avx.
1932 2008-09-29 Eric Botcazou <ebotcazou@adacore.com>
1934 * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
1936 2008-09-29 Joseph Myers <joseph@codesourcery.com>
1938 * ifcvt.c (noce_emit_store_flag): If using condition from original
1939 jump, reverse it if if_info->cond was reversed.
1941 2008-09-29 Eric Botcazou <ebotcazou@adacore.com>
1943 * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
1944 non-constant memory if it cannot be forced to constant memory.
1945 Overhaul surrounding code and factor out common condition.
1947 2008-09-29 Jeff Law <law@redhat.com>
1949 * reload1.c (alter_reg): Add missing curly braces.
1951 2008-09-29 Michael J. Eager <eager@eagercon.com>
1953 * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
1955 * config/rs6000/rs6000.c (rs6000_override_options): Move
1956 rs6000_init_hard_regno_mode_ok after all options changed.
1957 Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
1958 (rs6000_handle_option): Process -msingle-float, -mdouble-float,
1959 -msimple-fpu flags. Add warning messages if single FP not configured.
1960 (rs6000_file_start): Output gnu_attribute for single-float.
1961 (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
1962 (rs6000_legitimize_address): Likewise.
1963 (rs6000_legitimize_reload_address): Likewise.
1964 (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
1965 TARGET_SINGLE_FLOAT.
1966 (function_arg_advance): Likewise (partial conversion).
1967 (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
1968 (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
1969 TARGET_SINGLE_FLOAT.
1970 (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
1971 (rs6000_emit_prologue): Likewise.
1972 (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
1973 TARGET_SINGLE_FLOAT.
1974 (rs6000_libcall_value): Likewise.
1975 * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
1976 (TARGET_DOUBLE_FLOAT): New default to 1
1977 (TARGET_SIMPLE_FPU): New default to 0
1978 (TARGET_SINGLE_FPU): New default to 0
1979 (TARGET_SINGLE_FLOAT_MODE): New.
1980 (TARGET_DOUBLE_FLOAT_MODE): New.
1981 * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
1982 TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
1984 * config/rs6000/rs6000.md (define_mode_iterator): Condition on
1985 TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1986 (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
1987 copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
1988 nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
1989 muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
1990 movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
1991 floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
1992 *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
1993 fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
1994 rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
1995 floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
1996 movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
1997 extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
1998 abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
1999 cmptf_internal1, *cmptf_internal2): Condition on
2000 TARGET_DOUBLE_FLOAT.
2001 (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
2002 mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
2003 *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
2004 btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2005 floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2006 *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2007 TARGET_SINGLE_FLOAT.
2008 (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2009 * config/rs6000/rs6000.opt (-msingle-float): New.
2010 (-mdouble-float): New.
2011 (-msimple-fpu): New.
2012 * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2013 -msingle-float, -mdouble-float, -msimple-fpu options.
2014 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2015 _SOFT_DOUBLE for -msingle-float.
2016 * config.gcc: New config for target=powerpc-xilinx-eabi.
2018 2008-09-29 Tobias Grosser <grosser@fim.uni-passau.de>
2020 * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
2021 have exit and entry.
2022 (new_scop): Take entry and exit edge to define new SCoP.
2023 (sd_region_p): New structure used during SCoP detection.
2024 (move_scops): Delete.
2025 (move_sd_regions): New.
2026 (scopdet_info): Change the definition from edges back to basic_blocks.
2027 (scopdet_edge_info): Work on basic_blocks and rename to
2028 scopdet_basic_block_info.
2029 (split_difficult_bb): At the moment removed. We should later
2030 add it at another place.
2031 (build_scops_1): Work on basic_blocks.
2032 (bb_in_sd_region): New.
2033 (find_single_entry_edge): New.
2034 (find_single_exit_edge): New.
2035 (create_single_entry_edge): New.
2036 (sd_region_without_exit): New.
2037 (create_single_exit_edge): New.
2038 (unmark_exit_edges): New.
2039 (mark_exit_edges): New.
2040 (create_sese_edges): New.
2041 (build_graphite_scops): New.
2042 (build_scops): Make SCoPs SESE.
2043 (limit_scops): Use the new functions.
2045 2008-09-29 Hans-Peter Nilsson <hp@axis.com>
2047 * config/cris/cris.h (IRA_COVER_CLASSES): Define.
2049 2008-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
2052 * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
2053 address to a register before taking the lower part.
2055 2008-09-28 Kaz Kojima <kkojima@gcc.gnu.org>
2057 * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
2060 2008-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
2061 Kaushal Kantawala <kaushal_kantawala@playstation.sony.com>
2064 * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
2065 the newly created variable.
2066 Create a VECTOR_CST of all 1s for vector types.
2068 2008-09-28 Eric Botcazou <ebotcazou@adacore.com>
2071 * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
2073 2008-09-28 Eric Botcazou <ebotcazou@adacore.com>
2075 * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
2076 order to convert between modes.
2077 (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
2079 2008-09-27 Kaz Kojima <kkojima@gcc.gnu.org>
2081 * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
2084 2008-09-26 Vladimir Makarov <vmakarov@redhat.com>
2087 2008-09-25 Vladimir Makarov <vmakarov@redhat.com>
2091 2008-09-26 Adam Nemet <anemet@caviumnetworks.com>
2093 * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
2094 ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
2095 them to yield false with MIPS16.
2097 2008-09-26 Jakub Jelinek <jakub@redhat.com>
2100 * dwarf2out.c (tls_mem_loc_descriptor): New function.
2101 (mem_loc_descriptor): Use it for MEM. For PLUS fail if second
2102 mem_loc_descriptor failed. Accept UNSPEC.
2103 (loc_descriptor): Use tls_mem_loc_descriptor for MEM. For PARALLEL
2104 fail if one of the loc_descriptor calls for pieces failed.
2105 (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
2106 as long as they bind locally. For COMPONENT_REF, ARRAY_REF etc. fail
2107 if loc_descriptor_from_tree_1 on offset failed.
2110 * opts.c (common_handle_option): Don't call print_specific_help with
2111 CL_SAVE as first argument.
2113 2008-09-26 Peter O'Gorman <pogma@thewrittenword.com>
2114 Steve Ellcey <sje@cup.hp.com>
2116 * configure: Regenerate for new libtool.
2117 * aclocal.m4: Ditto.
2119 2008-09-26 Pat Haugen <pthaugen@us.ibm.com>
2121 * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
2122 alias set on MEM when saving stack pointer.
2123 * config/rs6000/rs6000.md (allocate_stack): Likewise
2125 2008-09-26 Dorit Nuzman <dorit@il.ibm.com>
2127 PR tree-optimization/37574
2128 * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
2129 * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
2130 instead of vector_type for constants. Take computation out of loop.
2131 (vect_get_vec_def_for_operand): Use only vectype for constant case,
2132 and use only vector_type for invariant case.
2133 (get_initial_def_for_reduction): Use vectype instead of vector_type.
2135 2008-09-25 Jakub Jelinek <jakub@redhat.com>
2138 * c-common.c (handle_weakref_attribute): Ignore the attribute unless
2139 the decl is a VAR_DECL or FUNCTION_DECL.
2141 2008-09-25 Vladimir Makarov <vmakarov@redhat.com>
2144 * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
2145 (mark_ref_live, mark_ref_dead): Use them.
2146 (def_conflicts_with_inputs_p): Remove.
2147 (mark_early_clobbers): New function.
2148 (process_bb_node_lives): Call preprocess_constraints and
2149 mark_early_clobbers.
2151 * doc/rtl.texi (clobber): Change how RA deals with clobbers.
2153 2008-09-25 Vladimir Makarov <vmakarov@redhat.com>
2156 * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
2157 (ira_compress_allocno_live_ranges): New prototype.
2159 * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
2160 (coalesced_allocnos_living_at_program_points): New.
2161 (coalesced_allocnos_live_at_points_p,
2162 set_coalesced_allocnos_live_points): New functions.
2163 (coalesce_spill_slots): Rewrite.
2165 * ira-lives.c (remove_some_program_points_and_update_live_ranges,
2166 ira_compress_allocno_live_ranges): New functions.
2168 * ira-build.c (ira_flattening): Call
2169 ira_compress_allocno_live_ranges.
2172 2008-09-25 H.J. Lu <hongjiu.lu@intel.com>
2174 * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
2177 2008-09-25 Richard Sandiford <rdsandiford@googlemail.com>
2179 * combine.c (make_compound_operation): Handle the 'E' format.
2180 (count_rtxs): Likewise.
2181 (update_table_tick): Likewise.
2182 (get_last_value_validate): Likewise.
2184 2008-09-25 Eric Botcazou <ebotcazou@adacore.com>
2186 * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
2188 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
2190 * matrix-reorg.c (transform_allocation_sites): Initializers
2191 added to avoid the warning.
2193 2008-09-25 Martin Jambor <mjambor@suse.cz>
2195 * cgraph.c (free_nodes): New variable.
2196 (NEXT_FREE_NODE): New macro.
2197 (cgraph_create_node): Reuse nodes from the free list. Do not
2198 update uid if doing so.
2199 (cgraph_remove_node): Add the node to the free list.
2201 2008-09-25 Gerald Pfeifer <gerald@pfeifer.com>
2203 * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
2205 2008-09-24 Richard Henderson <rth@redhat.com>
2207 * dwarf2.h (DW_OP_GNU_encoded_addr): New.
2208 * unwind-dw2.c (execute_stack_op): Handle it.
2210 2008-09-24 David Edelsohn <edelsohn@gnu.org>
2213 2008-09-24 Michael J. Eager <eager@eagercon.com>
2215 2008-09-24 Aldy Hernandez <aldyh@redhat.com>
2217 * c-common.c (fname_decl): New location argument.
2218 * c-common.h (fname_decl): Same.
2219 * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
2221 (c_parser_typeof_specifier): Same.
2222 (c_parser_parms_list_declarator): Same.
2223 (c_parser_asm_string_literal): Same.
2224 (c_parser_compound_statement_nostart): Same.
2225 (c_parser_label): Same.
2226 (c_parser_do_statement): Same.
2227 (c_parser_asm_statement): Same.
2228 (c_parser_unary_expression): Same.
2229 (c_parser_sizeof_expression): Same.
2230 (c_parser_postfix_expression): Same.
2231 (c_parser_pragma): Same.
2232 (c_parser_omp_clause_collapse): Same.
2233 (c_parser_omp_clause_num_threads): Same.
2234 (c_parser_omp_clause_schedule): Same.
2235 (c_parser_omp_all_clauses): Same.
2236 (c_parser_omp_sections_scope): Same.
2237 (c_parser_omp_for_loop): Same. Pass condition's location to
2238 c_objc_common_truthvalue_conversion.
2239 (c_parser_enum_specifier): Remove comment.
2241 2008-09-24 Michael J. Eager <eager@eagercon.com>
2243 * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
2245 * config/rs6000/rs6000.c (rs6000_override_options): Move
2246 rs6000_init_hard_regno_mode_ok after all options changed.
2247 Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
2248 (rs6000_handle_option): Process -msingle-float, -mdouble-float,
2249 -msimple-fpu flags. Add warning messages if single FP not configured.
2250 (rs6000_file_start): Output gnu_attribute for single-float.
2251 (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
2252 (rs6000_legitimize_address): Likewise.
2253 (rs6000_legitimize_reload_address): Likewise.
2254 (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
2255 TARGET_SINGLE_FLOAT.
2256 (function_arg_advance): Likewise.
2257 (function_arg): Likewise.
2258 (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
2259 (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
2260 TARGET_SINGLE_FLOAT.
2261 (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
2262 (rs6000_emit_prologue): Likewise.
2263 (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
2264 TARGET_SINGLE_FLOAT.
2265 (rs6000_libcall_value): Likewise.
2266 * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
2267 (TARGET_DOUBLE_FLOAT): New default to 1
2268 (TARGET_SIMPLE_FPU): New default to 0
2269 (TARGET_SINGLE_FPU): New default to 0
2270 (TARGET_SINGLE_FLOAT_MODE): New.
2271 (TARGET_DOUBLE_FLOAT_MODE): New.
2272 * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
2273 TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
2275 * config/rs6000/rs6000.md (define_mode_iterator): Condition on
2276 TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2277 (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
2278 copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
2279 nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
2280 muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
2281 movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
2282 floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
2283 *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2284 fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
2285 rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
2286 floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
2287 movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
2288 extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
2289 abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
2290 cmptf_internal1, *cmptf_internal2): Condition on
2291 TARGET_DOUBLE_FLOAT.
2292 (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
2293 mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
2294 *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
2295 btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2296 floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2297 *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2298 TARGET_SINGLE_FLOAT.
2299 (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2300 * config/rs6000/rs6000.opt (-msingle-float): New.
2301 (-mdouble-float): New.
2302 (-msimple-fpu): New.
2303 * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2304 -msingle-float, -mdouble-float, -msimple-fpu options.
2305 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2306 _SOFT_DOUBLE for -msingle-float.
2307 * config.gcc: New config for target=powerpc-xilinx-eabi.
2309 2008-09-23 Eric Botcazou <ebotcazou@adacore.com>
2311 * config/sparc/constraints.md: New file.
2312 * config/sparc/sparc.md: Include it.
2313 * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
2314 (sparc_extra_constraint_check): Delete.
2315 * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
2316 (memory_ok_for_ldd): New predicate.
2317 (sparc_extra_constraint_check): Delete.
2318 * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
2319 (CONST_OK_FOR_LETTER_P): Likewise.
2320 (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2321 (EXTRA_CONSTRAINT): Likewise.
2323 2008-08-23 Steve Ellcey <sje@cup.hp.com>
2325 * regrename.c (do_replace): Copy REG_POINTER value to new reg.
2327 2008-09-23 Richard Sandiford <rdsandiford@googlemail.com>
2329 * alias.c (find_base_value): Use FIND_BASE_TERM.
2330 * doc/tm.texi (FIND_BASE_TERM): Update documentation.
2332 2008-09-23 Richard Sandiford <rdsandiford@googlemail.com>
2334 * config/i386/i386.c: Include cselib.h.
2335 (ix86_pic_register_p): New function.
2336 (ix86_delegitimize_address): Use it to check for the PIC register.
2338 2008-09-23 Richard Sandiford <rdsandiford@googlemail.com>
2340 * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
2341 * config/i386/i386.c (ix86_find_base_term): Don't check for
2342 SYMBOL_REF and LABEL_REF.
2344 2008-09-23 Richard Sandiford <rdsandiford@googlemail.com>
2346 * config/i386/i386.c (ix86_delegitimize_address): Wrap the
2347 constant PLUS in a CONST.
2349 2008-09-23 Kai Tietz <kai.tietz@onevision.com>
2351 * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
2352 check for sibcall support for w64.
2354 2008-09-23 Eric Botcazou <ebotcazou@adacore.com>
2356 * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
2358 2008-09-23 Aldy Hernandez <aldyh@redhat.com>
2360 * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
2361 parser_build_binary_op.
2362 * c-decl.c (build_enumerator): Pass location to build_binary_op.
2363 * c-typeck.c (build_array_ref): Same.
2364 (parser_build_unary_op): New location argument.
2365 (pointer_diff): Pass location to build_binary_op,
2366 c_objc_common_truthvalue_conversion.
2367 (build_modify_expr): Same.
2368 (build_unary_op): New location argument.
2369 (build_binary_op): New location argument.
2370 (c_objc_common_truthvalue_conversion): Pass location to
2371 c_*common_truthvalue_conversion.
2372 * c-convert.c (convert): Same.
2373 * c-common.c (binary_op_error): New location argument.
2374 (pointer_int_sum): Pass location to build_binary_op.
2375 (c_common_truthvalue_conversion): New location argument.
2376 (warn_for_sign_compare): Same.
2377 * c-common.h: Add location argument to c_common_truthvalue_conversion,
2378 binary_op_error, build_binary_op, warn_for_sign_compare.
2379 * c-parser.c (c_parser_condition): Pass location to
2380 c_*common_truthvalue_conversion.
2381 (c_parser_conditional_expression): Save condition's location and pass
2383 (c_parser_binary_expression): Same, but for the binary operator's
2385 (c_parser_omp_for_loop): Pass location to
2386 c_objc_common_truthvalue_conversion.
2388 2008-09-23 Martin Jambor <mjambor@suse.cz>
2390 * cgraph.c (cgraph_free_edge): Use sizeof(*e).
2391 (cgraph_node_remove_callees): New temporary f. Hold the next item
2393 (cgraph_node_remove_callers): Likewise.
2395 * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
2396 (ipa_node_removal_hook): Likewise.
2398 * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
2399 gimple_call_copy_skip_args and moved to the gimple_call section.
2400 * gimple.c (gimple_copy_call_skip_args): Renamed to
2401 gimple_call_copy_skip_args. Changed al users.
2403 2008-09-22 Vladimir Makarov <vmakarov@redhat.com>
2405 * ira-color.c (start_allocno_priorities): Rename to
2406 setup_allocno_priorities. Use costs and
2407 ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
2408 range lengths. Get rid off doubles.
2409 (ira_fast_allocations): Call start_allocno_priorities.
2411 2008-09-22 David Daney <ddaney@avtrex.com>
2414 * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
2415 register if TARGET_LONG_CALLS.
2417 2008-09-22 Richard Guenther <rguenther@suse.de>
2419 PR tree-optimization/37145
2420 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
2421 value-numbering union accesses with their offset and size only.
2422 (visit_reference_op_load): Fix simplification of inserted conversions.
2423 * tree-ssa-pre.c (find_or_generate_expression): Do not
2424 recursively generate expressions if running FRE.
2426 2008-09-22 Adam Nemet <anemet@caviumnetworks.com>
2428 * config/mips/mips.h (ISA_HAS_BADDU): New macro.
2429 * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
2432 2008-09-22 Richard Guenther <rguenther@suse.de>
2434 PR tree-optimization/37145
2435 * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
2436 (phi_translate_1): Constant fold references.
2438 2008-09-22 Ira Rosen <irar@il.ibm.com>
2440 PR tree-optimization/37482
2441 * tree-vectorizer.h (struct _slp_instance): Add new field.
2442 (SLP_INSTANCE_FIRST_LOAD_STMT): New.
2443 (get_earlier_stmt): New function.
2444 * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
2446 (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
2447 * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
2448 asserts that GSI points to the scalar statement being vectorized.
2449 Set new statement location according to GSI.
2450 (vect_schedule_slp_instance): Use GSI of
2451 SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
2453 2008-09-21 Jan Hubicka <jh@suse.cz>
2455 * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
2456 (ipcp_insert_stage): Update dead_nodes bitmap.
2458 2008-09-22 Danny Smith <dannysmith@users.sourceforge.net>
2461 * config/i386/t-cygming (SHLIB_LC): Remove.
2462 (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
2463 * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
2465 2008-09-22 Hans-Peter Nilsson <hp@axis.com>
2469 * final.c (mark_symbol_ref_as_used): New helper function.
2470 (output_operand): Instead of just looking inside MEMs for
2471 SYMBOL_REFs, use new helper function and for_each_rtx.
2472 * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
2473 to after weak-handling. Don't mark decls with TREE_STATIC as weak.
2474 Make head comment more general.
2475 * config/darwin.c (machopic_output_indirection): Handle weak
2476 references here, like in assemble_external.
2478 2008-09-21 Eric Botcazou <ebotcazou@adacore.com>
2480 * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
2481 (sparc_emit_float_lib_cmp): Change return type.
2482 * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
2483 (gen_compare_operator): New function.
2484 (sparc_emit_float_lib_cmp): Return the new operator to be used in
2485 the comparison sequence. Minor tweaks.
2486 * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
2487 that the final operator and the result of sparc_emit_float_lib_cmp
2488 match for software TFmode; use emit_insn in lieu of emit_jump_insn.
2489 (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
2490 buneq, bunge, bunle, bltgt): Assert that the final operator and the
2491 result of sparc_emit_float_lib_cmp match for software TFmode.
2492 (movqicc, movhicc, movsicc, movdicc): Merge into...
2493 (mov<I:mode>cc): ...this.
2494 (movsfcc, movdfcc, movtfcc): Merge into...
2495 (mov<F:mode>cc): ...this.
2496 (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
2498 (mov<I:mode>_cc_v9): ...this.
2499 (movdi_cc_sp64_trunc): Delete.
2500 (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
2501 movdi_cc_reg_sp64): Merge into...
2502 (mov<I:mode>_cc_reg_sp64): ...this.
2503 (movsf_cc_sp64): Rename into...
2504 (movsf_cc_v9): ...this.
2505 (movdf_cc_sp64): Rename into...
2506 (movdf_cc_v9): ...this.
2507 (movtf_cc_hq_sp64): Rename into...
2508 (movtf_cc_hq_v9): ...this.
2509 (movtf_cc_sp64): Rename into...
2510 (movtf_cc_v9): ...this. Adjust for renaming of movdf_cc_sp64.
2512 2008-09-21 Diego Novillo <dnovillo@google.com>
2514 * doc/gccint.texi: Include generic.texi and gimple.texi.
2516 * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
2517 (GIMPLE): Move to gimple.texi.
2518 (Annotations): Remove references to to stmt_ann_t and
2520 (SSA Operands): Rename from 'Statement Operands'.
2521 * doc/generic.texi: New.
2522 * doc/gimple.texi: New.
2523 * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
2524 * Makefile.in (TEXI_GCCINT_FILES):
2525 * gimple.c (gimple_copy_call_skip_args): Rename from
2526 giple_copy_call_skip_args. Update all users.
2527 * doc/gimple.texi (gimple_copy_call_skip_args): Document.
2529 2008-09-21 Ira Rosen <irar@il.ibm.com>
2531 PR tree-optimization/37539
2532 * tree-vect-transform.c (vect_transform_strided_load): Save vector
2533 statement in related statement field only for the first load of the
2534 group of loads with the same data reference.
2536 2008-09-20 Adam Nemet <anemet@caviumnetworks.com>
2538 * config/mips/mips.h (TUNE_OCTEON): New macro.
2539 * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
2540 (mips_multipass_dfa_lookahead): Return 2 for Octeon.
2541 * config/mips/octeon.md: New file.
2542 * config/mips/mips.md: Include octeon.md. Restore
2543 semi-alphabetical order of include files.
2545 2008-09-20 H.J. Lu <hongjiu.lu@intel.com>
2548 * config/i386/i386.md (*jcc_fused_1): Removed.
2549 (*jcc_fused_2): Likewise.
2550 (*jcc_fused_3): Likewise.
2551 (*jcc_fused_4): Likewise.
2553 2008-09-20 Richard Sandiford <rdsandiford@googlemail.com>
2555 * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
2556 (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
2557 * target.h (gcc_target): Add ira_cover_classes.
2558 * ira.c: Remove IRA_COVER_CLASSES guards.
2559 (setup_cover_and_important_classes): Use targetm.ira_cover_classes
2560 instead of IRA_COVER_CLASSES.
2561 (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
2562 (setup_class_translate): Likewise.
2563 (setup_reg_class_intersect_union): Likewise.
2564 (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
2565 test of targetm.ira_cover_classes.
2566 * opts.c (decode_options): Use targetm.ira_cover_classes instead
2567 of IRA_COVER_CLASSES.
2568 * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
2569 (TARGET_INITIALIZER): Include it.
2570 * targhooks.h (default_ira_cover_classes): Declare.
2571 * targhooks.c (default_ira_cover_classes): New function.
2573 2008-09-19 Bob Wilson <bob.wilson@acm.org>
2575 * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
2577 2008-09-19 Ian Lance Taylor <iant@google.com>
2579 * varasm.c (narrowing_initializer_constant_valid_p): Return
2580 NULL_TREE if ENDTYPE is not an integer.
2582 2008-09-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
2585 * tree-ssa.c (execute_update_addresses_taken): Also update
2586 DECL_GIMPLE_REG_P for vector and complex types.
2588 2008-09-19 Andrew MacLeod <amacleod@redhat.com>
2589 Jan Hubicka <jh@suse.cz>
2592 * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
2593 empty before freeing them.
2594 (find_replaceable_exprs): Move asserts to free_temp_expr_table.
2596 2008-09-18 Bob Wilson <bob.wilson@acm.org>
2598 * configure.ac: Add HAVE_AS_TLS check for Xtensa.
2599 * config/xtensa/predicates.md (tls_symbol_operand): New.
2600 * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
2601 (TARGET_CANNOT_FORCE_MEM): Define.
2602 (xtensa_tls_symbol_p): New.
2603 (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
2604 (xtensa_legitimate_address_p): Disallow constant pool TLS references.
2605 (xtensa_tls_module_base): New.
2606 (xtensa_call_tls_desc): New.
2607 (xtensa_legitimize_tls_address): New.
2608 (xtensa_legitimize_address): Handle TLS symbols.
2609 (xtensa_tls_referenced_p_1): New.
2610 (xtensa_tls_referenced_p): New.
2611 (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
2613 (XTENSA_BUILTIN_THREAD_POINTER): New.
2614 (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
2615 (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
2616 builtin. Add declarations for __builtin_thread_pointer and
2617 __builtin_set_thread_pointer.
2618 (xtensa_fold_builtin): Recognize new builtins.
2619 (xtensa_expand_builtin): Expand new builtins.
2620 * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
2621 (TARGET_THREADPTR): Define.
2622 (HAVE_AS_TLS): Define default value.
2623 (LEGITIMATE_CONSTANT_P): Disallow TLS references.
2624 * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
2625 (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
2626 (UNSPECV_SET_TP): New.
2627 (sym_TPOFF, sym_DTPOFF): New.
2628 (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
2629 * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
2630 * configure: Regenerated.
2632 2008-09-18 H.J. Lu <hongjiu.lu@intel.com>
2635 * config/ia64/ia64.c (ia64_optimization_options): Move
2636 checking and setting flag_schedule_insns_after_reload and
2637 ia64_flag_schedule_insns2 back to ...
2638 (ia64_override_options): Here.
2640 2008-09-18 Andrew Pinski <andrew_pinski@playstation.sony.com>
2643 * loop-doloop.c (doloop_modify): New argument zero_extend_p and
2644 zero extend count after the correction to it is done.
2645 (doloop_optimize): Update call to doloop_modify, don't zero extend
2648 2008-09-18 Martin Jambor <mjambor@suse.cz>
2650 * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
2652 * ipa-prop.c: Correct comments.
2653 * ipa-prop.h: Likewise.
2655 2008-09-18 Jan Hubicka <jh@suse.cz>
2658 * ipa-reference.c (ipa_reference_local_vars_info_d,
2659 ipa_reference_global_vars_info_d,
2660 ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
2661 ipa_reference_vars_info_t): Move here from ipa-reference.h
2662 (node_duplication_hook_holder, node_removal_hook_holder): New.
2663 (get_reference_vars_info_from_cgraph): Rename to ...
2664 (get_reference_vars_info): ... this one, use cgraph uids.
2665 (get_local_reference_vars_info, get_global_reference_vars_info):
2666 Use cgraph instead of decl.
2667 (ipa_reference_get_read_local, ipa_reference_get_written_local):
2669 (ipa_reference_get_read_global, ipa_reference_get_not_read_global
2670 ipa_reference_get_written_global,
2671 ipa_reference_get_not_written_global): Use cgraph argument.
2672 (check_call): Simplify avail check.
2673 (scan_stmt_for_static_refs): Update.
2674 (propagate_bits): Update.
2675 (merge_callee_local_info): Remove.
2676 (init_function_info): Use cgraph nodes.
2677 (clean_function_local_data): Break out from ...
2678 (clean_function): ... here.
2679 (copy_local_bitmap, copy_global_bitmap): New functions.
2680 (duplicate_node_data, remove_node_data): New functions.
2681 (generate_summary): Register hooks; use visibility instead of
2683 (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
2684 * ipa-reference.h (ipa_reference_local_vars_info_d,
2685 ipa_reference_global_vars_info_d,
2686 ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
2687 ipa_reference_vars_info_t): Move to ipa-reference.c
2688 (ipa_reference_get_read_local, ipa_reference_get_written_local):
2690 (ipa_reference_get_read_global, ipa_reference_get_written_global,
2691 ipa_reference_get_not_read_global,
2692 ipa_reference_get_not_written_global): Update prototype.
2693 * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
2694 (init_state): Remove.
2695 (node_duplication_hook_holder, node_removal_hook_holder): New.
2696 (get_function_state, set_function_state): Use VECtor.
2697 (analyze_function): Check body availability.
2698 (add_new_function): Likewise.
2699 (duplicate_node_data, remove_node_data): New.
2700 (generate_summary): Register hooks; do not care about clones.
2701 (propafate): Do not care about clones; recursive functions are
2703 * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
2704 * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
2705 * edge_duplication_hook_holder, node_duplication_hook_holder): Make
2707 * tree-flow.h (function_ann_d): Remove reference_vars_info.
2708 * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
2709 Update call of ipa-reference accesors.
2711 2008-09-18 Simon Baldwin <simonb@google.com>
2713 * c-opts.c (c_common_handle_option): Add handling for
2714 -Wbuiltin-macro-redefined command line option.
2715 * c.opt: Added builtin-macro-redefined option.
2716 * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
2719 2008-09-18 Richard Guenther <rguenther@suse.de>
2721 PR tree-optimization/37258
2722 * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
2723 and signedness for integral types.
2724 (vn_phi_eq): Require compatible types.
2726 2008-09-18 Jakub Jelinek <jakub@redhat.com>
2729 * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
2730 TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
2732 * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
2733 !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
2734 ggc_free other TREE_LIST nodes from that chain.
2735 * function.c (instantiate_decls): Instantiate also DECL_RTL
2736 of vars in cfun->local_decls, free that list afterwards.
2738 2008-09-18 Eric Botcazou <ebotcazou@adacore.com>
2740 * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
2741 * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
2743 2008-09-18 Andrew MacLeod <amacleod@redhat.com>
2745 * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
2746 * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
2748 2008-09-18 Andrew MacLeod <amacleod@redhat.com>
2750 PR tree-optimization/37102
2751 * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
2752 from a node. Check to see if another PHI is dead.
2753 (eliminate_useless_phis): Rename from eliminate_virtual_phis and
2754 remove real PHIs which have no uses.
2755 (rewrite_out_of_ssa): Call eliminate_useless_phis.
2757 2008-09-18 Richard Guenther <rguenther@suse.de>
2760 * tree-cfg.c (remove_useless_stmts_1): Remove
2761 GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
2763 2008-09-18 Nick Clifton <nickc@redhat.com>
2765 * config/frv/frv.h (IRA_COVER_CLASSES): Define.
2766 (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
2767 to frv_secondary_reload_class.
2768 (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
2769 * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
2770 (frv_secondary_reload_class): Omit unused parameter.
2771 (frv_secondary_reload): New function. Handle the case when
2772 secondary_reload_class() is called before the reload_(in|out)
2773 _optabs have been initialised.
2774 * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
2776 * config/frv/frv.md: Define an exclusion set between fr550_m0
2779 2008-09-18 Richard Guenther <rguenther@suse.de>
2781 PR tree-optimization/37456
2782 * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
2783 want to insert after ends a BB insert on the single fallthru
2786 2008-09-18 Andreas Krebbel <krebbel1@de.ibm.com>
2788 * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
2789 Mention -march=z9-109, z9-ec and z10.
2791 2008-09-18 Uros Bizjak <ubizjak@gmail.com>
2793 PR rtl-optimization/37544
2794 * regrename.c (maybe_mode_change): Exit early when copy_mode
2795 is narrower than orig_mode and narrower than new_mode.
2797 2008-09-18 Alexander Monakov <amonakov@ispras.ru>
2800 * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
2802 * sched-rgn.c (ref_counts): Remove.
2803 (insn_referenced): New static variable.
2804 (INSN_REF_COUNT): Remove.
2805 (sched_run_compute_dependencies): Use insn_referenced instead of
2807 (add_branch_dependences): Likewise. Delete dead assignment.
2809 2008-09-17 Adam Nemet <anemet@caviumnetworks.com>
2811 * haifa-sched.c (dep_cost_1): Recognize the producer even if the
2812 consumer is an asm. Add comment why this is important.
2813 (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
2814 recog_memoized (insn) < 0" assert. Put ENABLE_CHECKING around it.
2816 2008-09-17 Joseph Myers <joseph@codesourcery.com>
2818 * expr.c (emit_group_store): Do not shift before moving via a
2821 2008-09-17 Eric Botcazou <ebotcazou@adacore.com>
2823 * varasm.c (initializer_constant_valid_p): Forbid view-conversions
2824 from aggregate to non-aggregate type if the bit pattern is not fully
2825 preserved afterwards.
2827 2008-09-17 Richard Guenther <rguenther@suse.de>
2829 * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
2830 (verify_gimple_assign): ... this. Split into ...
2831 (verify_gimple_assign_unary): ... this,
2832 (verify_gimple_assign_binary): ... that,
2833 (verify_gimple_assign_single): ... and this.
2834 (verify_types_in_gimple_stmt): Call verify_gimple_assign.
2835 Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
2836 (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
2837 (verify_types_in_gimple_reference): Be forgiving with
2839 (verify_gimple_phi): Deal with virtual operands.
2841 * tree.def (PREDICT_EXPR): Change to tcc_expression.
2843 2008-09-17 Andrew Pinski <andrew_pinski@playstation.sony.com>
2845 * tree.c (get_callee_fndecl): Don't call the language hook.
2846 * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
2847 * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
2848 (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
2850 2008-09-17 Jakub Jelinek <jakub@redhat.com>
2852 * tree.c (protected_set_expr_location): Don't unnecessarily
2853 check for error_mark_node.
2855 2008-09-17 Art Haas <ahaas@impactweather.com>
2857 * ipa-reference.c (analyze_function): Declare step only if
2858 ENABLE_CHECKING is defined.
2860 2008-09-17 Jan Hubicka <jh@suse.cz>
2863 * tree.h (DECL_INLINE): remove.
2864 (DECL_DECLARED_INLINE_P): Update docs.
2865 (DECL_NO_INLINE_WARNING_P): new.
2866 (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
2867 * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
2869 2008-09-17 Jakub Jelinek <jakub@redhat.com>
2870 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2873 * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
2876 2008-09-17 Jan Hubicka <jh@suse.cz>
2878 * ipa-reference.c (ipa_obstack): Remove.
2879 (local_info_obstack, global_info_obstack): New.
2880 (add_static_var): We now handle variables only.
2881 (mark_address_taken, mark_load, mark_store): New functions based on ...
2882 (check_operand): ... remove.
2883 (get_asm_stmt_operands): Rename to ...
2884 (check_asm_memory_clobber): ... this. Look only for memory clobber.
2885 (scan_stmt_for_static_refs): Rewrite.
2886 (scan_op_for_static_refs): Rename to ...
2887 (scan_initializer_for_static_refs): do not look for VAR_DECL
2888 initializers; stop recursion on types and decls.
2889 (ipa_init): Use proper obstacks.
2890 (analyze_variable): Use scan_initializer_for_static_refs.
2891 (init_function_info): Use local obstack.
2892 (analyze_function): Simplify.
2893 (add_new_function): We don't need visited_nodes obstack.
2894 (generate_summary): Use proper obstacks; cleanup after propagation.
2896 2008-09-17 Richard Guenther <rguenther@suse.de>
2899 PR tree-optimization/37491
2900 * alias.c (get_alias_set): Use the canonical type.
2901 * tree-vect-transform.c (vectorizable_store): Use the type of
2902 the lhs for the vector type. Adjust checking.
2903 (vectorizable_load): Adjust checking.
2905 2008-09-16 Jakub Jelinek <jakub@redhat.com>
2906 Adam Nemet <anemet@caviumnetworks.com>
2908 PR rtl-optimization/37483
2909 * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
2910 if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
2911 Rearrange code to better match the original comment. Check
2912 t_unconditional first. Improve comment.
2914 2008-09-16 Jakub Jelinek <jakub@redhat.com>
2917 * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
2918 GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
2921 * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
2922 GIMPLE_TRY if cleanup sequence is empty.
2924 2008-09-16 Andrew Pinski <andrew_pinski@playstation.sony.com>
2927 * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
2928 eliminate IV if the cost are the same.
2930 2008-09-16 Richard Guenther <rguenther@suse.de>
2933 * tree-sra.c (sra_build_assignment): Do not call the gimplifier
2936 2008-09-16 Richard Guenther <rguenther@suse.de>
2938 PR tree-optimization/37508
2939 * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
2941 2008-09-15 Kaz Kojima <kkojima@gcc.gnu.org>
2943 * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
2945 2008-09-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
2947 * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
2948 use gen_floatdidf2 directly.
2949 (floatunssidf2): Likewise.
2950 (floatsidf_ppc64_mfpgpr): Remove.
2951 (floatsidf_ppc64): Remove.
2952 (floatunssidf_ppc64): Remove.
2954 2008-09-15 Jakub Jelinek <jakub@redhat.com>
2956 * ira-color.c (finish_cost_update): Free update_cost_queue_elems
2957 rather than update_cost_queue.
2959 * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
2960 in every call starting with the second one, instead of only when
2961 alias_bitmap_obstack.elements != NULL.
2963 * tree-predcom.c (filter_suitable_components): Free all refs in
2964 act->refs vector before calling release_component.
2965 (add_ref_to_chain): Free ref if not adding it to chain->refs.
2967 * tree-data-ref.c (free_subscripts): Free all subscript objects.
2969 * tree-loop-linear.c (linear_transform_loops): Initialize
2970 lambda_obstack only after calling perfect_loop_nest_depth.
2971 Goto free_and_continue instead of just continue for later failures.
2974 * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
2977 * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
2979 2008-09-14 Andreas Schwab <schwab@suse.de>
2981 * tree-call-cdce.c (check_target_format): Accept Motorola formats.
2983 2008-09-14 Jan Hubicka <jh@suse.cz>
2985 * invoke.texi (-fconserve-stack): Document.
2986 * opts.c (decode_options): Handle conserve_stack.
2987 * common.opt (fconvserve_stack): New.
2989 2008-09-14 David Edelsohn <edelsohn@gnu.org>
2991 * config.host: Add x-aix to host_xmake_file.
2992 * config/rs6000/t-aix52: Do not override LDFLAGS.
2993 * config/rs6000/x-aix: New file.
2995 2008-09-14 Andy Hutchinson <hutchinsonandy@aim.com>
3001 * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
3002 is not recognized as a valid register usage. Allow REG_X to be used
3004 * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
3005 forces a reload when using a base register.
3007 2008-09-14 Danny Smith <dannysmith@users.sourceforge.net>
3009 * config/i386/cygming-crtend.c (register_frame_ctor): If
3010 DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
3011 directly with atexit.
3012 (deregister_frame_ctor): Rename to ...
3013 (deregister_frame_dtor): Use to call __gcc_deregister_frame
3014 if !DEFAULT_USE_CXA_ATEXIT.
3016 2008-09-13 Jan Hubicka <jh@suse.cz>
3018 * cgraph.c: Include value-prof.h
3019 * Makefile.in (cgraph.o): Add value-prof.h dependency.
3021 2008-09-13 Jan Hubicka <jh@suse.cz>
3024 * tree-profile.c (add_abnormal_goto_call_edges): New function.
3025 (tree_gen_interval_profiler, tree_gen_pow2_profiler,
3026 tree_gen_one_value_profiler, tree_gen_average_profiler,
3027 tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
3029 2008-09-13 Jan Hubicka <jh@suse.cz>
3031 * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
3032 too many bytes on misalligned blocks.
3034 2008-09-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3036 * doc/cfg.texi: Fix some typos.
3037 * doc/extend.texi: Likewise.
3038 * doc/install.texi: Likewise.
3039 * doc/invoke.texi: Likewise.
3040 * doc/rtl.texi: Likewise.
3041 * doc/tree-ssa.texi: Likewise.
3043 2008-09-13 Richard Guenther <rguenther@suse.de>
3046 * tree-nested.c (finalize_nesting_tree_1): Generate valid
3047 gimple stores for memory rhs.
3049 2008-09-13 H.J. Lu <hongjiu.lu@intel.com>
3051 PR rtl-optimization/37489
3052 * cse.c (fold_rtx): Don't return const_true_rtx for float
3053 compare if FLOAT_STORE_FLAG_VALUE is undefined.
3055 2008-09-13 Jan Hubicka <jh@suse.cz>
3057 PR tree-optimization/37392
3058 * tree-inline.c (remap_gimple_stmt): Do not remap return value.
3060 2008-09-13 Martin Jambor <mjambor@suse.cz>
3061 Jan Hubicka <jh@suse.cz>
3063 * cgraph.c (free_edges): New variable.
3064 (NEXT_FREE_EDGE): New macro.
3065 (cgraph_free_edge): New function.
3066 (cgraph_remove_edge): Call cgraph_remove_edge_1.
3067 (cgraph_node_remove_callees): Likewise.
3068 (cgraph_node_remove_callers): Likewise.
3069 (cgraph_create_edge): Reuse edges from the free list. Do not
3070 update uid if doing so.
3071 (cgraph_remove_*_hook): Add free call.
3073 2008-09-13 Richard Sandiford <rdsandiford@googlemail.com>
3075 * ira-color.c (conflict_allocno_vec): Delete.
3076 (update_cost_queue_elem): New structure.
3077 (update_cost_queue): New variable.
3078 (update_cost_queue_tail): Likewise.
3079 (update_cost_queue_elems): Likewise.
3080 (allocno_update_cost_check): Delete.
3081 (initiate_cost_update): Allocate update_cost_queue_elems
3082 instead of allocno_update_cost_check.
3083 (finish_cost_update): Update the free()s accordingly.
3084 (start_update_cost): New function.
3085 (queue_update_cost): Likewise.
3086 (get_next_update_cost): Likewise.
3087 (update_copy_costs_1): Inline into...
3088 (update_copy_costs): ...here. Use a queue instead of recursive calls.
3089 Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
3090 once we've established they are equal. Don't allocate update
3091 costs if there is nothing to add to them.
3092 (update_conflict_hard_regno_costs): Remove ALLOCNO and
3093 DIVISOR arguments. Use a queue instead of recursive calls;
3094 process all the allocnos in the initial queue, rather than
3096 (assign_hard_reg): Use queue_update_cost instead of
3097 conflict_allocno_vec. Queue coalesced allocnos instead
3098 of calling update_conflict_hard_regno_costs for each one.
3099 Just call update_conflict_hard_regno_costs once for the
3101 (ira_color): Remove conflict_allocno_vec handling.
3103 2008-09-12 Sebastian Pop <sebastian.pop@amd.com>
3105 PR tree-optimization/37484
3106 * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
3107 (save_var_name): Same.
3108 (initialize_cloog_names): Same.
3109 (initialize_cloog_names): Same.
3111 2008-09-12 Sebastian Pop <sebastian.pop@amd.com>
3113 * tree-scalar-evolution.c (set_instantiated_value): Set
3116 2008-09-12 Vladimir Makarov <vmakarov@redhat.com>
3120 * ira-build.c (common_loop_tree_node_dominator): Remove.
3121 (copy_live_ranges_to_removed_store_destinations): New function.
3122 (regno_top_level_allocno_map): Move to top level from ...
3123 (ira_flattening): ... here. Use
3124 copy_live_ranges_to_removed_store_destinations.
3126 * ira-emit.c (generate_edge_moves): Fix a comment.
3128 2008-09-12 Anatoly Sokolov <aesok@post.ru>
3131 * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
3132 scratch register after 'set' pattern.
3134 2008-09-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3136 * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
3137 information passed to mark_reg_pointer.
3138 * explow.c (force_reg): Likewise.
3140 2008-09-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3142 * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
3143 when building for the celledp architecture.
3145 2008-09-12 Richard Guenther <rguenther@suse.de>
3147 * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
3149 2008-09-12 Eric Botcazou <ebotcazou@adacore.com>
3151 PR rtl-optimization/37424
3152 * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
3153 the regnos instead of the addresses.
3155 2008-09-11 Janis Johnson <janis187@us.ibm.com>
3157 * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
3159 2008-09-11 Richard Guenther <rguenther@suse.de>
3161 * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
3162 entering the weaker equivalence recording.
3164 * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
3166 2008-09-11 Jeff Law <law@redhat.com>
3168 * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
3169 by assign_stack_local on the IRA path for stack slot sharing
3170 as well as the non-IRA path.
3172 2008-09-11 Uros Bizjak <ubizjak@gmail.com>
3174 * config/i386/i386.h: Fix whitespace issues.
3176 2008-09-11 Martin Jambor <mjambor@suse.cz>
3178 * ipa-prop.h (struct ipa_param_flags): Removed.
3179 (struct ipa_param_descriptor): New structure.
3180 (struct ipa_node_params): ipcp_lattices, param_decls and
3181 param_flags moved to ipa_param_description.
3182 (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
3183 descriptors. Renamed all users.
3184 (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
3185 changed to access descriptors. Renamed all users.
3186 (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
3187 to access descriptors. Renamed all users.
3188 * ipa-cp.c (ipcp_init_cloned_node): Call
3189 ipa_initialize_node_params instead of ipa_count_formal_params and
3190 ipa_create_param_decls_array.
3191 (ipcp_analyze_node): Likewise.
3192 (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
3193 descriptors. Renamed all users.
3194 (ipcp_initialize_node_lattices): Remove allocation.
3195 * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
3196 ipa_initialize_node_params instead of ipa_count_formal_params and
3197 ipa_create_param_decls_array.
3198 * ipa-prop.c (ipa_create_param_decls_array): Renamed to
3199 ipa_populate_param_decls, made static, added parameter info,
3200 renamed mt to node, removed allocation, changed to use
3202 (ipa_count_formal_params): Made static, added parameter info,
3204 (ipa_initialize_node_params): New function.
3205 (ipa_check_stmt_modifications): Changed to use descriptors.
3206 (ipa_detect_param_modifications): Removed allocation, changed to
3208 (ipa_note_param_call): Changed to use descriptors.
3209 (ipa_analyze_params_uses): Removed allocation.
3210 (ipa_free_node_params_substructures): Changed to use descriptors.
3211 (ipa_edge_duplication_hook): Use the unused attribute.
3212 (ipa_node_duplication_hook): Use the unused attribute, changed to
3213 use descriptors, changed to duplicate descriptors.
3215 * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
3216 changed all callers. Call ipa_propagate_indirect_call_infos if doing
3217 indirect inlining. Made static.
3218 (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
3219 functions called only once.
3220 (cgraph_decide_recursive_inlining): Don't call
3221 ipa_propagate_indirect_call_infos, pass new_edges to
3222 cgraph_mark_inline_edge instead.
3223 (cgraph_decide_inlining_of_small_functions): Don't call
3224 ipa_propagate_indirect_call_infos, pass new_edges to
3225 cgraph_mark_inline_edge instead.
3226 (cgraph_decide_inlining): Don't call
3227 ipa_propagate_indirect_call_infos.
3228 * ipa-prop.c: Check that vectors are allocated.
3230 * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
3231 iff a new cgraph edges have been created.
3232 (cgraph_decide_inlining): New variable redo_always_inline.
3233 Flattening and always_inlining loop until callgraph stabilizes.
3234 * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
3235 true iff new cgraph edges have been created.
3236 (propagate_info_to_inlined_callees): Likewise.
3237 (ipa_propagate_indirect_call_infos): Likewise.
3239 2008-09-11 Richard Guenther <rguenther@suse.de>
3241 * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
3242 (set_prologue_iterations): Likewise.
3243 * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
3245 (vect_update_init_of_dr): Likewise.
3246 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
3248 * fold-const.c (fold_unary): Do not generate calculations
3251 2008-09-11 Paolo Bonzini <bonzini@gnu.org>
3253 * dojump.c (do_jump) [BIT_AND_EXPR]: Move below. Fall through to
3254 TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
3255 (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
3257 * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
3259 * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
3260 VRP's simplify_stmt_using_ranges. Do simplify_stmt_using_ranges
3261 before finalizing the changes.
3262 * tree-vrp.c (extract_range_from_binary_expr): Add limited support
3264 (simplify_truth_ops_using_ranges): New.
3265 (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
3266 simplify_cond_using_ranges, simplify_switch_using_ranges): Return
3267 whether a simplification was made.
3268 (simplify_stmt_using_ranges): Ditto, and accept a GSI. For GS_ASSIGN,
3269 use a switch statement and also call simplify_truth_ops_using_ranges.
3271 2008-09-11 Jan Hubicka <jh@suse.cz>
3273 * ggc-common.c (loc_array): Make static.
3274 * dce.c (rest_of_handle_ud_dce): Free worklist.
3276 2008-09-11 Jan Hubicka <jh@suse.cz>
3278 * cgraph.c (cgraph_release_function_body): Plug memory leak on
3279 ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
3280 function so we are sure we do not dangle it forever.
3281 * function.c (outer_function_chain, find_function_data): Remove.
3282 (function_context_stack): New.
3283 (push_function_context, pop_function_context): Update.
3284 * function.h (struct function): Remove pointer outer.
3285 (outer_function_chain, find_function_data): Remove.
3286 * stmt.c (force_label_rtx): Remove dead call of find_function_data.
3288 2008-09-11 Jan Hubicka <jh@suse.cz>
3291 * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
3293 2008-09-11 Jan Hubicka <jh@suse.cz>
3295 * tree-ssa-pre.c (phi_translate_1): Fix memory leak
3297 2008-09-11 Jan Hubicka <jh@suse.cz>
3299 * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
3300 (free_var_map_entry): New function.
3301 (redirect_edge_var_map_destroy): Use it.
3303 2008-09-11 Jan Hubicka <jh@suse.cz>
3306 * tree-inline.c (add_lexical_block): Replace with ...
3307 (prepend_lexical_block): ... prepend at begginig.
3308 (remap_blocks): Use it and reverse later.
3309 (expand_call_inline): Use prepend_lexical_block.
3311 2008-09-11 Jan Hubicka <jh@suse.cz>
3313 * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
3315 2008-09-11 Jan Hubicka <jh@suse.cz>
3317 * function.c (free_after_compilation): Call insn_locators_free.
3318 * cfglayout.c (insn_locators_free): New function.
3319 * rtl.h (insn_locators_free): Declare.
3321 2008-09-11 Jan Hubicka <jh@suse.cz>
3323 * ifcvt.c (check_cond_move_block): Make regs argument pointer to
3325 (cond_move_process_if_block): Update call.
3327 2008-09-11 Jan Hubicka <jh@suse.cz>
3329 * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
3330 * vec.c: Include hashtab.h
3331 (vec_descriptor, ptr_hash_entry): New structures.
3332 (vec_desc_hash, vec_ptr_map): New static variables.
3333 (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
3334 register_overhead, free_overhead, vec_heap_free): New functions.
3335 (vec_gc_o_reserve_1): ggc_free when resizing to 0.
3336 (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
3337 (cmp_statistic, add_statistics, dump_vec_loc_statistics):
3340 2008-09-11 Ira Rosen <irar@il.ibm.com>
3342 PR tree-optimization/37474
3343 * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
3344 length of load permutation.
3346 2008-09-11 Andreas Schwab <schwab@suse.de>
3348 * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
3350 2008-09-11 Jakub Jelinek <jakub@redhat.com>
3353 * expmed.c (extract_low_bits): Avoid creating invalid subregs.
3354 * dse.c (find_shift_sequence): Use extract_low_bits instead of
3355 simplify_gen_subreg.
3357 2008-09-11 Ira Rosen <irar@il.ibm.com>
3359 * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
3362 2008-09-10 Jakub Jelinek <jakub@redhat.com>
3365 * gimplify.c (gimplify_body): Call default_rtl_profile.
3368 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
3369 instead of tok->val.node if not expanding to something else. Handle
3370 intervening CPP_PADDING tokens.
3371 (altivec_categorize_keyword): Remove unneeded comparisons.
3373 2008-09-10 Richard Guenther <rguenther@suse.de>
3375 * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
3377 2008-09-10 Richard Guenther <rguenther@suse.de>
3380 * tree-inline.c (insert_init_stmt): Make sure to not
3381 insert invalid gimple stores.
3383 2008-09-10 Sebastian Pop <sebastian.pop@amd.com>
3385 PR tree-optimization/37388
3386 * toplev.c (process_options): Fail and warn when graphite
3387 flags are used, but the compiler has not been configured
3388 with graphite libraries.
3389 * graphite.c (graphite_transform_loops): Remove printfs
3390 to dump_file for the case when graphite is not available.
3392 2008-09-10 H.J. Lu <hongjiu.lu@intel.com>
3395 * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
3396 the even element into register.
3397 (ix86_expand_vector_init_general): Don't use
3398 ix86_expand_vector_init_interleave on V16QImode and V8HImode
3399 if we can't move from GPR to SSE register directly.
3401 2008-09-10 Bernd Schmidt <bernd.schmidt@analog.com>
3403 * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
3404 not lose track of the number of NOPs needed. Number of NOPs needed
3405 for sync vs. loads workaround was switched; corrected. Run second
3406 pass for all workarounds. No NOPs needed after call insns. Change
3407 second pass to use find_next_insn_start and find_load helpers in order
3408 to properly detect parallel insns.
3409 * config/bfin/bfin.md (cbranch_with_nops): Increase length.
3411 2008-09-10 Jan Hubicka <jh@suse.cz>
3413 * value-prof.c (gimple_ic): Fix tuplification bug.
3414 * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
3417 2008-09-10 Jakub Jelinek <jakub@redhat.com>
3419 PR tree-optimization/37353
3420 * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
3421 (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
3422 calls instead of cond_dead_built_in_calls.
3423 (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
3424 initalize the vector only before adding first entry. Use VEC_safe_push
3425 instead of VEC_quick_push. Pass cond_dead_built_in_calls to
3426 shrink_wrap_conditional_dead_built_in_calls call.
3428 2008-09-10 Ira Rosen <irar@il.ibm.com>
<