1 2009-06-12 Ian Lance Taylor <iant@google.com>
3 * fold-const.c (fold_unary): Rename local variable and to
6 * c-opts.c (c_common_handle_option): For -Wc++-compat set
7 cpp_opts->warn_cxx_operator_names.
9 2009-06-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
12 * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
13 is returns NULL and OP is a VCE, look through the VCE.
15 2009-06-12 Ian Lance Taylor <iant@google.com>
18 * collect2.c (main): Use CONST_CAST2 in code inside #if
19 LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
21 2009-06-12 Joey Ye <joey.ye@intel.com>
24 * cfgexpand.c (get_decl_align_unit): Update
25 max_used_stack_slot_alignment with align instead of
26 stack_alignment_needed.
28 * function.c (assign_stack_local_1): Update
29 max_used_stack_slot_alignment with alignment_in_bits instead
30 of stack_alignment_needed.
31 (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
34 2009-06-12 Jakub Jelinek <jakub@redhat.com>
36 * dwarf2out.c (last_var_location_insn): New variable.
37 (dwarf2out_end_epilogue): Clear last_var_location_insn.
38 (dwarf2out_var_location): Don't record anything after last real
39 insn. Only change labels if there were any real instructions
40 in between last note and this one, or if changed sections.
42 2009-06-11 Richard Henderson <rth@redhat.com>
44 * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
45 note when storing the frame pointer in a register.
46 (FRP): Don't redefine to nothing for epilogue.
47 (alpha_expand_epilogue): Mark register and sp restores.
48 (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
50 * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
51 when gen_lowpart is needed.
53 2009-06-11 Richard Henderson <rth@redhat.com>
55 * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
57 * dwarf2out.c (need_data_align_sf_opcode): New.
58 (div_data_align): Move earlier.
59 (def_cfa_1, reg_save): Use it.
61 2009-06-11 H.J. Lu <hongjiu.lu@intel.com>
63 * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
64 (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
65 (ix86_handle_option): Handle OPT_mcrc32.
66 (ix86_target_string): Add -mcrc32.
67 (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
69 * config/i386/i386.h (TARGET_CRC32): New.
71 * config/i386/i386.md (sse4_2_crc32<mode>): Also check
73 (sse4_2_crc32di): Likewise.
75 * config/i386/i386.opt (mcrc32: New.
77 * doc/invoke.texi: Document -mcrc32.
79 2009-06-11 Richard Henderson <rth@redhat.com>
81 * common.opt (gdwarf-): Accept a version number.
82 * doc/invoke.texi (gdwarf-): Update docs.
83 * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
84 * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
85 version level, and record it.
87 * dwarf2.h (DW_CIE_VERSION): Remove.
88 * dwarf2out.c (DWARF_VERSION): Remove.
89 (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
90 (output_call_frame_info): Use CIE version 3 for dwarf3,
91 or if the return register column is out of range for version 1.
92 (dwarf_stack_op_name): Add all dwarf3 values.
93 (DEBUG_PUBTYPES_SECTION): New.
94 (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
95 encoding change for dwarf3.
96 (output_die) [dw_val_class_die_ref]: Likewise.
97 (output_compilation_unit_header): Emit correct version for dwarf3.
98 (output_line_info): Likewise.
99 (output_pubnames): Update for DWARF_VERSION removal.
100 (output_aranges): Likewise.
101 (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
102 (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
103 (dwarf2out_finish): Likewise.
105 2009-06-11 David Daney <ddaney@caviumnetworks.com>
107 * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
110 2009-06-11 David Daney <ddaney@caviumnetworks.com>
113 * doc/extend.texi ( __builtin_unreachable): Document new builtin.
114 * builtins.c (expand_builtin_unreachable): New function.
115 (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
116 * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
117 * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
119 * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
120 searching for missing barriers.
122 2009-06-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
124 * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
125 when -fprofile-generate* was passed.
126 * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
128 2009-06-11 Anthony Green <green@moxielogic.com>
130 * config/moxie/moxie.md: Define length attribute for all
133 (*b<cond:code>): Support limited branch ranges for new PC-relative
135 * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
137 2009-06-11 Jakub Jelinek <jakub@redhat.com>
139 * config/i386/i386.c (min_insn_size): Use get_attr_length
140 for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
143 * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
144 instead of emit_insn_before.
146 2009-06-10 Ian Lance Taylor <iant@google.com>
149 * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
152 2009-06-10 Revital Eres <eres@il.ibm.com>
154 * passes.c (init_optimization_passes): Reschedule
155 predictive-commoning pass before complete unroll pass.
157 2009-06-10 Martin Jambor <mjambor@suse.cz>
159 * cgraph.c (cgraph_node_can_be_local_p): New function.
160 (cgraph_make_node_local): New function.
161 * cgraph.h (cgraph_node_can_be_local_p): Declare.
162 (cgraph_make_node_local): Declare.
164 2009-06-10 Nathan Froyd <froydnj@codesourcery.com>
166 * tree.h (tree_base): Add packed_flag and user_align fields.
167 Decrease size of spare field.
168 (TYPE_USER_ALIGN): Use user_align from tree_base.
169 (DECL_USER_ALIGN): Likewise.
170 (TYPE_PACKED): Use packed_flag from tree_base.
171 (DECL_PACKED): Likewise.
172 (tree_type): Delete packed_flag and user_align fields. Widen
173 precision field. Widen mode field and shuffle fields to align
174 mode on an 8-bit boundary.
175 (tree_decl_common): Delete decl_flag_1 and user_align fields.
176 Renumber decl_flag_* fields. Fix comments. Widen
177 decl_common_unused field.
178 (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_*
180 (DECL_EXTERNAL): Likewise.
181 (DECL_BIT_FIELD): Likewise.
182 (DECL_NONADDRESSABLE_P): Likewise.
183 (TYPE_DECL_SUPRESS_DEBUG): Likewise.
184 * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
186 2009-06-10 Ian Lance Taylor <iant@google.com>
188 * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
189 (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
190 (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
191 (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
192 (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
193 DEF_VEC_ALLOC_FUNC_P.
194 (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
195 (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
196 DEF_VEC_ALLOC_FUNC_O.
197 (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
198 (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
199 DEF_VEC_ALLOC_FUNC_I.
200 (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
201 (vec_stack_p_reserve_exact_1): Declare.
202 (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
203 (vec_stack_free): Declare.
204 (VEC_stack_alloc): Define.
205 (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
206 (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
207 (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
208 * vec.c (void_p): New type. Call DEF_VEC_P and DEF_VEC_ALLOC_P
210 (stack_vecs): New static variable.
211 (vec_stack_p_reserve_exact_1): New function.
212 (vec_stack_o_reserve_1): New static function.
213 (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
214 (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
215 (vec_stack_free): New function.
216 * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
217 (VEC_df_ref_stack_alloc): Define.
218 (df_mw_hardreg_ptr): New type. Use DEF_VEC_P and
219 DEF_VEC_ALLOC_P_STACK.
220 (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
221 (struct df_collection_rec): Change _vec fields to VEC. Remove
223 (df_free_collection_rec): Adjust for new fields.
224 (df_insn_rescan): Use new df_collection_rec fields.
225 (df_notes_rescan, df_canonize_collection_rec): Likewise.
226 (df_ref_create_structure, df_ref_record): Likewise.
227 (df_get_conditional_uses, df_get_call_refs): Likewise.
228 (df_insn_refs_collect, df_bb_refs_collect): Likewise.
229 (df_bb_refs_record, df_record_entry_block_defs): Likewise.
230 (df_record_exit_block_uses, df_bb_verify): Likewise.
231 (df_swap_refs): Change ref_vec parameter to VEC. Change all
233 (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
234 Remove count parameter. Change return type to void. Change all
236 (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
237 Remove count parameter. Change return type to void. Change all
239 (df_install_refs): Change old_vec parameter to VEC. Remove count
240 parameter. Change all callers.
241 (df_install_mws): Change old_vec parameter to VEC. Remove count
242 parameter. Change all callers.
243 (df_refs_verify): Change new_rec parameter to VEC. Change call
245 (df_mws_verify): Likewise.
247 2009-06-10 Alexandre Oliva <aoliva@redhat.com>
249 * gcc.c (compare_files): Cast munmap argumento to caddr_t.
251 2009-06-10 H.J. Lu <hongjiu.lu@intel.com>
253 * doc/extend.texi: Add description for __builtin_ia32_crc32di.
255 2009-06-10 Anthony Green <green@moxielogic.com>
257 * config/moxie/crti.asm: New file.
258 * config/moxie/crtn.asm: New file.
259 * config/moxie/moxie.c: New file.
260 * config/moxie/moxie.h: New file.
261 * config/moxie/sfp-machine.h: New file.
262 * config/moxie/moxie-protos.h: New file.
263 * config/moxie/t-moxie: Created.
264 * config/moxie/t-moxie-softfp: Created.
265 * config/moxie/moxie.md: Created.
266 * config/moxie/constraints.md: Created.
267 * config.gcc: Add moxie support.
268 * doc/md.texi (Machine Constraints): Add moxie constraints.
269 * doc/contrib.texi (Contributors): Mention moxie port.
270 * doc/install.texi (Specific): Mention the moxie port.
272 2009-06-09 Ian Lance Taylor <iant@google.com>
274 * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
276 * optabs.c (optab_table): Only use designated initializers if
277 HAVE_DESIGNATED_INITIALIZERS is defined.
278 (convert_optab_table): Likewise.
279 (init_optabs): Always call init_insn_codes if
280 HAVE_DESIGNATED_INITIALIZERS is not defined.
282 2009-06-09 Ian Lance Taylor <iant@google.com>
284 * targhooks.c (default_builtin_vectorized_function): Change fn
285 parameter to unsigned int.
286 (default_builtin_vectorized_conversion): Change code parameter to
288 (default_builtin_reciprocal): Change fn parameter to unsigned int.
289 * targhooks.h: Update declarations.
290 * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
291 parameter to unsigned int.
293 * c-typeck.c (comptypes_check_enum_int): New static function.
294 (comptypes_internal): Add enum_and_int_p parameter. Change all
296 (comp_target_types): Add location parameter. Change all callers.
297 (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
299 (function_types_compatible_p, type_lists_compatible_p): Likewise.
300 (build_conditional_expr): Add colon_loc parameter. Change all
302 (convert_for_assignment): Add location parameter. Change all
304 * c-parser.c (c_parser_conditional_expression): Pass location of
305 colon to build_conditional_expr.
306 * c-tree.h (build_conditional_expr): Update declaration.
308 2009-06-09 Sebastian Pop <sebastian.pop@amd.com>
310 * graphite.c: Revert previous patch.
312 2009-06-09 Sebastian Pop <sebastian.pop@amd.com>
315 * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
317 2009-06-09 Ghassan Shobaki <ghassan.shobaki@amd.com>
319 * tree-ssa-loop-prefetch.c
320 (loop_prefetch_arrays): Fixed a portability problem in printf format
323 2009-06-09 Martin Jambor <mjambor@suse.cz>
325 PR tree-optimization/40351
326 * tree-sra.c (propagate_subacesses_accross_link): Check that a refrence
327 to a potential artifical subaccess can be constructed.
329 2009-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
331 * config/sh/sh-protos.h (sh_optimization_options): Declare.
332 (sh_override_options): Likewise.
333 * config/sh/sh.c: Include params.h.
334 (sh_optimization_options): New.
335 (sh_override_options): Likewise.
336 * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
337 (OVERRIDE_OPTIONS): Use sh_override_options.
339 2009-06-08 Jakub Jelinek <jakub@redhat.com>
341 * dwarf2out.c (emit_cfa_remember): New variable.
342 (add_fde_cfi): If emit_cfa_remember, recurse to add
343 DW_CFA_remember_state first.
344 (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
345 instead just set emit_cfa_remember.
347 2009-06-08 Jan Hubicka <jh@suse.cz>
350 * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
352 2009-06-08 Jan Hubicka <jh@suse.cz>
355 * cgraphunit.c (save_inline_function_body): Do not copy transform hooks
356 for saved inline bodies.
357 * ipa-passes.c (do_per_function): Do not add the hoks multiple times
360 2009-06-08 Adam Nemet <anemet@caviumnetworks.com>
362 * jump.c (returnjump_p): Handle delayed branches. Add missing
365 2009-06-08 Jan Hubicka <jh@suse.cz>
368 * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
369 original node might've been modified.
370 * tree-inline.c (copy_bb): Do not assume that all clones are the same.
372 2009-06-08 Jakub Jelinek <jakub@redhat.com>
374 * tree-object-size.c (addr_object_size): Add OSI argument.
375 Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
376 (compute_builtin_object_size, expr_object_size): Adjust callers.
377 (plus_stmt_object_size): Call addr_object_size instead of
378 compute_builtin_object_size.
380 2009-06-08 Ghassan Shobaki <ghassan.shobaki@amd.com>
381 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
383 * tree-ssa-loop-prefetch.c
384 (gather_memory_references): Introduced a counter for the number of
386 (anything_to_prefetch_p): Introduced a counter for the number of
388 (is_loop_prefetching_profitable): New function with a cost model
390 (loop_prefetch_arrays): Use the new cost model to determine if
391 prefetching is profitable.
392 * params.def (MIN_INSN_TO_PREFETCH_RATIO,
393 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
394 * params.h (MIN_INSN_TO_PREFETCH_RATIO,
395 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
396 * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO,
397 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
399 2009-06-08 Michael Matz <matz@suse.de>
402 * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
403 partitions use the same.
404 (expand_one_var): Deal with DECL_RTL sometimes begin set also
405 for basevars of SSA_NAMEs.
406 (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
407 to not expand them twice.
408 (gimple_expand_cfg): Clear DECL_RTL for those decls that have
411 2009-06-08 Alexandre Oliva <aoliva@redhat.com>
413 * common.opt (fcompare-debug=, fcompare-debug-second): New.
414 (fdump-final-insns=, gtoggle): New.
415 * doc/invoke.texi: Document them.
416 * final.c (rest_of_clean_state): Dump final insn stream.
417 * gcc.c (invoke_as): Hook in -fcompare-debug.
418 (static_spec_functions): Add compare-debug-dump-opt,
419 compare-debug-self-opt and compare-debug-auxbase-opt.
420 (compare_debug, compare_debug_second, compare_debug_opt): New.
421 (switches_debug_check, n_switches_debug_check): New.
422 (debug_auxbase_opt, debug_check_temp_file): New.
423 (process_command): Handle -fno-compare-debug, -fcompare-debug and
425 (do_self_spec): Handle arguments after switches.
426 (do_spec_1): Add .gk extension to temp file basenames for compare.
427 (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
428 (cc1_options): Use it instead of normal auxbase computation for
429 the second compare-debug compilation.
430 (compare_files): New.
431 (main): Set up and implement compare debug mode.
432 (compare_debug_dump_opt_spec_function): New.
433 (compare_debug_self_opt_spec_function): New.
434 (compare_debug_auxbase_opt_spec_function): New.
435 * toplev.c (process_options): Handle flag_gtoggle,
436 flag_dump_final_insns.
437 * coverage.c (coverage_begin_output): Don't overwrite .gcno file
438 during -fcompare-debug-second compilation.
440 2009-06-07 Ian Lance Taylor <iant@google.com>
442 * dwarf2.h (enum dwarf_location_atom): Add
443 INTERNAL_DW_OP_tls_addr.
444 * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
446 * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
447 with no default node. Change warning with %H to warning_at.
448 Don't clear warn_switch around case checking.
449 * doc/invoke.texi (Warning Options): Clarify distinction between
450 -Wswitch and -Wswitch-enum.
452 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
454 * tree-pass.h (TODO_update_ssa_any): Document internal use only.
456 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
458 * gbl-ctors.h: Add header guard.
460 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
462 * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
463 sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
464 vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
465 vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
466 prototypes for removed functions.
467 (expressions_equal_p): Move to ...
468 * tree-ssa-sccvn.h: ... here and ...
469 * matrix-reorg.c: ... adjust includes.
471 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
473 * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
475 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
477 * c-decl.c (finish_decl): Use bool for variable was_incomplete.
478 (finish_function): Remove erroneous whitespace.
480 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
482 * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
483 (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
485 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
487 * errors.c (internal_error): Commentary typo fix.
488 * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
489 * tree-ssa-pre.c: Ditto.
491 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
493 * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
494 them is supposed to hold actual statements.
496 2009-06-06 Ian Lance Taylor <iant@google.com>
498 * doc/extend.texi (Attribute Syntax): Document that C++ labels on
499 empty statements can now have attributes.
501 2009-06-05 Shujing Zhao <pearly.zhao@oracle.com>
503 * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
504 * config/mips/mips.md: Ditto.
506 2009-06-05 Nathan Froyd <froydnj@codesourcery.com>
508 * config/rs6000/eabi.asm (__eabi_convert): Don't define if
510 (__eabi_uconvert): Likewise.
512 2009-06-05 Nathan Froyd <froydnj@codesourcery.com>
514 * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
515 CFI_* definitions with IN_GCC.
517 2009-06-05 David Edelsohn <edelsohn@gnu.org>
519 * xcoffout.h (xcoffout_source_line): Update prototype.
521 2009-06-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
523 * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
524 mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
526 2009-06-05 Jakub Jelinek <jakub@redhat.com>
529 * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
530 inlined_function_outer_scope_p blocks for artificial inlines
532 * tree.c (tree_nonartificial_location): Rewrite using
533 block_nonartificial_location.
535 2009-06-05 Revital Eres <eres@il.ibm.com>
536 Leehod Baruch <leehod@il.ibm.com>
538 * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
539 (expand_expr_real_1): Remove comment.
540 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
541 Vectorize misaligned access when the target supports it.
542 (vect_supportable_dr_alignment): Check for unaligned access
544 * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
547 2009-06-05 Julian Brown <julian@codesourcery.com>
549 * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
550 * config/arm/ieee754-sf.S (cmpsf2): Likewise.
552 2009-06-05 Richard Guenther <rguenther@suse.de>
555 * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
558 2009-06-05 Jakub Jelinek <jakub@redhat.com>
560 * config/s390/s390.c (global_not_special_regno_p): New static inline.
561 (save_gprs): Don't tell unwinder when a global register is saved.
562 (s390_emit_epilogue): Emit needed epilogue unwind info.
564 2009-06-05 Alexandre Oliva <aoliva@redhat.com>
566 * dwarf2out.c (deferred_asm_name): New.
567 (add_name_and_src_coords_attributes): Defer creation of
568 DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
570 (move_linkage_attr): New.
571 (dwarf2out_finish): Revisit deferrals and emit attributes at the
574 2009-06-05 Alexandre Oliva <aoliva@redhat.com>
576 * tree-nested.c (finalize_nesting_tree_1): Declare the
577 frame_decl in the binding tree.
579 2009-06-04 Cary Coutant <ccoutant@google.com>
581 * basic-block.h (struct basic_block_def): Add discriminator field.
582 * dbxout.c (dbxout_source_line): Add new parameter. Change all
584 * debug.c (do_nothing_debug_hooks): Add additional entry.
585 (debug_nothing_int_charstar_int): New function.
586 * debug.h (struct gcc_debug_hooks): Add parameter to source_line
588 (debug_nothing_int_charstar_int): New declaration.
589 * dwarf2out.c (dwarf2out_source_line): Add new parameter. Write
590 discriminator value in .loc directive.
591 * final.c (last_discriminator): New variable.
592 (discriminator): New variable.
593 (final_start_function): Initialize above variables, pass current
594 discriminator to debug hook.
595 (notice_source_line): Check for discriminator change.
596 * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
597 * sdbout.c (sdbout_source_line): New parameter.
598 * tree-cfg.c (struct locus_discrim_map): New structure type.
599 (discriminator_per_locus): New hash table.
600 (build_gimple_cfg): Allocate and free discriminator hash table.
601 (make_edges): Call assign_discriminator.
602 (locus_map_hash): New function.
603 (locus_map_eq): New function.
604 (next_discriminator_for_locus): New function.
605 (same_line_p): New function.
606 (assign_discriminator): New function.
607 (make_cond_expr_edges): Call assign_discriminator.
608 (make_gimple_switch_edges): Likewise.
609 (first_non_label_stmt): New function.
610 * vmsdbgout.c (vmsdbgout_source_line): Add new parameter. Change
612 * xcoffout.c (xcoffout_source_line): Add new parameter.
614 * configure.ac (gcc_cv_as_discriminator): New configury check for
615 gas support for discriminator.
616 * configure: Regenerate.
617 * config.in: Regenerate.
619 2009-06-04 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
621 * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
622 val after checking for integers.
624 2009-06-04 Uros Bizjak <ubizjak@gmail.com>
626 * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
628 (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
629 (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
630 (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
631 * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
632 X64_REGPARM_MAX. Use X86_64_MS_SSE_REGPARM_MAX instead of
634 * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
637 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
639 * gcc.c (report_times_to_file): New.
640 (execute): Implement it.
641 (process_command): Support -time=.
642 * doc/invoke.texi: Document it.
644 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
646 * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
647 that have value exprs.
649 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
651 * dwarf2asm.c (dw2_force_const_mem): Defer creation of
652 declarations for constants until...
653 (dw2_output_indirect_constant_1): ... this point.
655 2009-06-04 Richard Earnshaw <rearnsha@arm.com>
658 * arm.md (arm_addsi3): Don't try to split an add with an
659 eliminable register until after reload has completed.
661 2009-06-03 Ian Lance Taylor <iant@google.com>
663 * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
664 * genattrtab.c (write_length_unit_log): Likewise.
665 * genchecksum.c (dosum): Likewise.
666 * gengtype.c (write_rtx_next): Likewise.
667 (finish_root_table, write_roots): Likewise.
668 * gimple.c (gimple_ops_offset_): Likewise.
669 * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
670 * config/arc/arc.c (arc_attribute_table): Likewise.
671 * config/arm/arm.c (arm_attribute_table): Likewise.
672 * config/avr/avr.c (avr_attribute_table): Likewise.
673 * config/crx/crx.c (crx_attribute_table): Likewise.
674 * config/m32r/m32r.c (m32r_attribute_table): Likewise.
675 * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
676 * config/mcore/mcore.c (mcore_attribute_table): Likewise.
677 * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
678 * config/sh/sh.c (sh_attribute_table): Likewise.
679 * config/sparc/sparc.c (sparc_attribute_table): Likewise.
680 * config/spu/spu.c (spu_attribute_table): Likewise.
681 * config/v850/v850.c (v850_attribute_table): Likewise.
683 * config/alpha/alpha.c (vms_attribute_table): Make static.
684 * config/bfin/bfin.c (bfin_attribute_table): Likewise.
685 * config/h8300/h8300.c (h8300_attribute_table): Likewise.
686 * config/mips/mips.c (mips_attribute_table): Likewise.
688 * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
690 (cc1-checksum.o): Likewise.
692 2009-06-03 Steve Ellcey <sje@cup.hp.com>
694 * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
696 2009-06-03 Jakub Jelinek <jakub@redhat.com>
698 * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
699 insn if it is changing sp. Use gen_add3_insn instead of
700 conditionally gen_addsi3 and gen_adddi3.
701 (offset_below_red_zone_p): New static inline function.
702 (rs6000_emit_epilogue): Emit needed epilogue unwind info.
703 Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
704 * config/rs6000/ppc-asm.h: Include auto-host.h.
705 (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
706 CFI_RESTORE): Define.
707 * config/rs6000/crtresxgpr.asm: Add unwind info.
708 * config/rs6000/crtresxfpr.asm: Likewise.
709 * config/rs6000/crtresgpr.asm: Likewise.
710 * config/rs6000/crtresfpr.asm: Likewise.
711 * config/rs6000/crtsavgpr.asm: Likewise.
712 * config/rs6000/crtsavfpr.asm: Likewise.
714 * dwarf2out.c (output_cfi_directive): Pass 1 instead of
715 0 to second argument of DWARF2_FRAME_REG_OUT macros.
717 2009-06-03 Julian Brown <julian@codesourcery.com>
719 * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
720 words or less (including TImode) in core registers.
722 2009-06-03 Richard Guenther <rguenther@suse.de>
725 * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
727 2009-06-03 Andrey Belevantsev <abel@ispras.ru>
729 * statistics.c (statistics_counter_event): Do not record event
730 in pass dump if its number == -1.
731 (curr_statistics_hash): Add assert that we never get passes
732 with static number == -1.
734 2009-06-03 Richard Guenther <rguenther@suse.de>
735 Andrey Belevantsev <abel@ispras.ru>
737 * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
738 non-BLKmode arrays addressable.
740 2009-06-03 Maxim Kuvyrkov <maxim@codesourcery.com>
742 * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
743 * config/m68k/m68k.h: ... here.
744 * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
747 2009-06-03 Martin Jambor <mjambor@suse.cz>
749 PR tree-optimization/40323
750 * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
753 2009-06-03 Richard Guenther <rguenther@suse.de>
755 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
758 2009-06-03 Shujing Zhao <pearly.zhao@oracle.com>
760 * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
761 JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
762 JUMP_TABLE_DATA_P where applicable.
763 * config/sh/sh.c: Ditto.
764 * config/sh/sh.h: Ditto.
765 * config/sh/sh.md: Ditto.
766 * config/sh/symbian.c: Ditto.
768 2009-06-03 Uros Bizjak <ubizjak@gmail.com>
770 * config/i386/driver-i386.c (describe_cache): Optimize
771 concatenation of strings. Use snprintf instead of sprintf.
772 (host_detect_local_cpu): Ditto. Ignore -march and -mtune for native
773 target when not compiling with GCC.
775 2009-06-02 Kaz Kojima <kkojima@gcc.gnu.org>
777 * config/sh/sh.c: Revert last change.
778 (sh_expand_epilogue): Emit a blockage insn before the frame
779 pointer adjustment unconditionally.
781 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
783 * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
784 * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
785 * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
786 * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
787 to COLLECT_GCC_OPTIONS.
789 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
791 * collect2.c (target_system_root): New variable.
792 (main): Handle --sysroot=.
793 (ignore_library): Strip the sysroot from the library path.
795 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
797 * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
798 (collect2.o): Depend on collect2-aix.h.
799 (collect2-aix.o): New rule.
800 * collect2-aix.h: New file.
801 * collect2-aix.c: Likewise.
802 * collect2.c: Include collect2-aix.h. Don't undefine
803 OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
804 Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
805 Use TARGET_AIX_VERSION instead of _AIX51.
806 * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
807 * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
808 * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
809 * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
810 * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
812 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
814 * collect2.c (ignore_library): Avoid premature post-increment
817 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
819 * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
820 * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
821 !CROSS_DIRECTORY_STRUCTURE alternative and use it for
822 CROSS_DIRECTORY_STRUCTURE too.
823 (LINK_LIBG_SPEC): Likewise.
824 (LIB_SPEC): Add %R to sysroot paths.
825 * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
826 (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
827 * config/rs6000/aix51.h: As for aix43.h.
828 * config/rs6000/aix52.h: Likewise.
829 * config/rs6000/aix53.h: Likewise.
830 * config/rs6000/aix61.h: Likewise.
831 * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
832 to the beginning of sysroot paths.
834 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
836 * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
837 INSN_LISTs that are out of the REG_NOTE range.
839 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
841 * loop-unroll.c (struct iv_to_split): Add pointer to next.
842 (struct var_to_expand): Likewise.
843 (struct opt_info): Add head and tail for linked lists of the above.
844 (analyze_insn_to_expand_var): Initialize next.
845 (analyze_iv_to_split_insn): Likewise.
846 (analyze_insns_in_loop): Create linked lists.
847 (allocate_basic_variable): Simplify for use without hash table.
848 (insert_var_expansion_initialization): Likewise, make it type-safer.
849 (combine_var_copies_in_loop_exit): Likewise.
850 (apply_opt_in_copies): Walk lists rather than hash tables.
851 (release_var_copies): Simplified and inlined by hand into...
852 (free_opt_info): ... this function.
854 2009-06-02 Richard Guenther <rguenther@suse.de>
856 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
859 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
861 * cfgexpand.c (gimple_expand_cfg): Discard the source location
862 only for builtins that are not overridden.
864 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
866 * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
869 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
871 * df-core.c (df_ref_debug): Honor -fdump-noaddr.
873 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
875 * combine.c (move_deaths): Compare LUIDs within the same BB only.
877 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
879 * common.opt (fdump-unnumbered-links): New.
880 * doc/invoke.texi (-fdump-unnumbered-links): Document it.
881 * print-rtl.c (flag_dump_unnumbered_links): New.
882 (print_rtx): Test it.
884 2009-06-02 Richard Earnshaw <rearnsha@arm.com>
886 * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
887 push/pop multiple to 8-byte alignment.
889 2009-06-01 Jakub Jelinek <jakub@redhat.com>
891 * config/i386/i386.c (queued_cfa_restores): New static variable.
892 (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
894 (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
895 (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
896 Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
897 Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
898 note unconditionally.
899 (ix86_emit_restore_regs_using_mov): Likewise.
900 (ix86_emit_restore_sse_regs_using_mov): Likewise.
901 (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
902 it through to ix86_emit_restore_reg_using_pop.
903 (ix86_emit_leave): Add RED_OFFSET argument. Call
904 ix86_add_queued_cfa_restore_notes. Call ix86_add_cfa_restore_note
905 instead of adding REG_CFA_OFFSET note unconditionally.
906 (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
907 the above functions. Call ix86_add_queued_cfa_restore_notes when
910 * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
911 force output of the label even for dwarf2out_do_cfi_asm.
912 (add_fde_cfi): If -g2 and above and cfi might change CFA,
913 force creation of CFI label and chain DW_CFA_set_loc jumping to it
914 for convert_cfa_to_fb_loc_list. Adjust other dwarf2out_cfi_label
916 (dwarf2out_stack_adjust, dwarf2out_frame_debug,
917 dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
918 dwarf2out_cfi_label callers.
919 * tree.h (dwarf2out_cfi_label): Adjust prototype.
920 * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
921 Adjust dwarf2out_cfi_label callers.
922 * config/vax/vax.c (vax_output_function_prologue): Likewise.
924 * config/i386/i386.h (struct machine_cfa_state,
925 struct machine_function): Guard with ifndef USED_FOR_TARGET
926 instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
929 * emutls.c (__emutls_get_address): Change arr->size to mean number
930 of allocated arr->data entries instead of # of slots + 1.
933 * recog.c (peep2_reinit_state): New function.
934 (peephole2_init_state): Use it at the end of a basic block and also
935 when seeing a RTX_FRAME_RELATED_P insn.
937 2009-06-01 Steve Ellcey <sje@cup.hp.com>
939 * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
940 fixuns_truncrfdi2): New.
941 (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
942 *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
943 *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
944 *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
945 *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
946 *recip_approx): Remove.
947 (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
948 moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
949 divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
951 * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
954 2009-06-01 Ian Lance Taylor <iant@google.com>
956 * attribs.c (register_attribute): Use CONST_CAST.
957 * collect2.c (main): Use CONST_CAST2.
958 (scan_prog_file): Likewise.
959 * gcc.c (process_command, main): Likewise.
960 * toplev.c (toplev_main): Likewise.
962 * c-typeck.c (handle_warn_cast_qual): New static function,
963 partially broken out of build_c_cast.
964 (build_c_cast): Call handle_warn_cast_qual.
965 * doc/invoke.texi (Warning Options): Document new effect of
968 2009-06-01 Aldy Hernandez <aldyh@redhat.com>
970 * diagnostic.c (diagnostic_build_prefix): Always print columns.
971 (diagnostic_report_current_module): Print columns.
972 * common.opt (flag_show_column): Enable by default.
974 2009-06-01 Luis Machado <luisgpm@br.ibm.com>
976 * alias.c (find_base_term): Check for NULL term before returning.
978 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
980 Revert due to PR40320:
981 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
982 * calls.c (emit_library_call_value_1): Don't force_operand for move
985 2009-06-01 Olivier Hainque <hainque@adacore.com>
986 Eric Botcazou <ebotcazou@adacore.com>
988 * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
989 to be processed as a bitfield for constructor output purposes.
990 * output.h (initializer_constant_valid_for_bitfield_p): Declare
992 * varasm.c (oc_local_state): New type, output_constructor
993 local state to support communication with helpers.
994 (oc_outer_state): New type, output_constructor outer state of
995 relevance in recursive calls.
996 (output_constructor_array_range): New output_constructor helper,
997 extracted code for an array range element.
998 (output_constructor_regular_field): New output_constructor helper,
999 extracted code for an element that is not a bitfield.
1000 (output_constructor_bitfield): New output_constructor helper,
1001 extracted code for a bitfield element. Accept an OUTER state
1002 argument for recursive processing. Recurse on record or array
1003 CONSTRUCTOR values, possibly past noop conversions.
1004 (initializer_constant_valid_for_bitfield_p): New predicate. Whether
1005 VALUE is a valid constant-valued expression for use in a static
1006 bit-field initializer.
1007 (output_constructor): Rework to use helpers. Accept and honor an
1008 OUTER state argument for recursive calls. Return total size. Be
1009 prepared for nested constructors initializing bitfields.
1010 (output_constant): Feed OUTER in calls to output_constructor.
1012 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
1014 * calls.c (emit_library_call_value_1): Don't force_operand for move
1017 2009-06-01 Nick Clifton <nickc@redhat.com>
1019 * doc/invoke.texi (IA-64 Options): Fix typo.
1021 2009-06-01 Ira Rosen <irar@il.ibm.com>
1023 PR tree-optimization/39129
1024 * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
1026 (vect_do_peeling_for_loop_bound): Use
1027 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
1028 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
1029 (vect_loop_versioning): Likewise.
1030 (vect_create_cond_for_alias_checks): Fix indentation.
1031 * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
1033 (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
1034 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
1035 * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
1036 "control flow in loop".
1037 (vect_estimate_min_profitable_iters): Use
1038 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
1039 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
1040 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
1041 (vect_create_data_ref_ptr): Don't mention array dimension in printing.
1042 * tree-vect-stmts.c (vectorizable_store): Replace the check that the
1043 statement belongs to a group of strided accesses with the exact code
1045 (vectorizable_load): Likewise.
1046 * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
1047 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1049 2009-06-01 Gerald Pfeifer <gerald@pfeifer.com>
1051 * config/freebsd-stdint.h: New file.
1052 * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
1053 Add freebsd-stdint.h to tm_file.
1055 2009-06-01 Richard Earnshaw <rearnsha@arm.com>
1057 * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
1058 (thumb2_extendhidi2): Likewise.
1060 2009-05-31 Ian Lance Taylor <iant@google.com>
1062 * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
1064 2009-05-31 Ian Lance Taylor <iant@google.com>
1066 * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
1067 (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
1068 (ipa-reference.o): Depend upon gt-ipa-reference.h.
1070 2009-05-31 Jason Merrill <jason@redhat.com>
1072 * tree-pretty-print.c (print_call_name): Take the callee, not the
1073 call itself. Make non-static. Use dump_function_name for functions.
1074 (dump_generic_node): Adjust.
1075 * diagnostic.h: Declare print_call_name.
1076 * gimple-pretty-print.c (dump_gimple_call): Use it.
1078 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
1080 * config/sh/sh.md (ashldi3_std): New define_expand.
1083 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
1086 * config/sh/sh.c: Include debug.h.
1087 (sh_expand_epilogue): Emit a blockage insn before the frame
1088 pointer adjustment also when dwarf2out_do_frame returns true.
1090 2009-05-31 Richard Earnshaw <rearnsha@arm.com>
1092 * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
1093 (thumb2_extendqidi2): New pattern.
1095 2009-05-31 Ira Rosen <irar@il.ibm.com>
1097 * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
1098 mark phis for renaming.
1099 * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
1100 (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
1101 Call mark_sym_for_renaming.
1102 * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
1103 * tree-vect-loop.c (vect_transform_loop): Remove
1104 vect_memsyms_to_rename initialization and a call to
1105 mark_set_for_renaming.
1107 2009-05-31 Jakub Jelinek <jakub@redhat.com>
1110 * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
1111 frame related even if !set_cfa && style < 0.
1113 2009-05-30 Kai Tietz <kai.tietz@onevision.com>
1115 * config/i386/mingw-tls.c: New file.
1116 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
1117 * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
1118 defining _WIN32 but not __CYGWIN__.
1120 2009-05-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1122 * configure.ac: Add MPC support.
1124 * config.in, configure: Regenerate.
1126 2009-05-29 Richard Henderson <rth@redhat.com>
1128 * cfgcleanup.c (try_crossjump_to_edge): Only skip past
1129 NOTE_INSN_BASIC_BLOCK.
1130 * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
1131 Duplicate NOTE_INSN_EPILOGUE_BEG notes.
1132 * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
1134 * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
1136 (add_cfi): Disable check redefining cfa away from drap.
1137 (lookup_cfa_1): Add remember argument; handle remember/restore.
1138 (lookup_cfa): Pass remember argument.
1139 (cfa_remember): New.
1140 (compute_barrier_args_size_1): Remove sibcall check.
1141 (dwarf2out_frame_debug_def_cfa): New.
1142 (dwarf2out_frame_debug_adjust_cfa): New.
1143 (dwarf2out_frame_debug_cfa_offset): New.
1144 (dwarf2out_frame_debug_cfa_register): New.
1145 (dwarf2out_frame_debug_cfa_restore): New.
1146 (dwarf2out_frame_debug): Handle REG_CFA_* notes.
1147 (dwarf2out_begin_epilogue): New.
1148 (dwarf2out_frame_debug_restore_state): New.
1149 (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
1150 DW_CFA_restore_state.
1151 (output_cfi_directive): Likewise.
1152 (convert_cfa_to_fb_loc_list): Likewise.
1153 (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
1154 * dwarf2out.h: Update.
1155 * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
1156 (copy_insn_1): Early out for null.
1157 * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
1158 and dwarf2out_frame_debug_restore_state.
1159 * function.c (prologue, epilogue, sibcall_epilogue): Remove.
1160 (prologue_insn_hash, epilogue_insn_hash): New.
1161 (free_after_compilation): Adjust freeing accordingly.
1162 (record_insns): Create hash table if needed; push insns into
1163 hash instead of array.
1164 (maybe_copy_epilogue_insn): New.
1165 (contains): Search hash table instead of array.
1166 (sibcall_epilogue_contains): Remove.
1167 (thread_prologue_and_epilogue_insns): Split eh_return insns
1168 and mark them as epilogues.
1169 (reposition_prologue_and_epilogue_notes): Rewrite epilogue
1170 scanning in terms of basic blocks.
1171 * insn-notes.def (CFA_RESTORE_STATE): New.
1172 * jump.c (returnjump_p_1): Accept EH_RETURN.
1173 (eh_returnjump_p_1, eh_returnjump_p): New.
1174 * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
1175 CFA_REGISTER, CFA_RESTORE): New.
1176 * rtl.def (EH_RETURN): New.
1177 * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
1179 * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
1180 (eh_return_internal): Use eh_return rtx; split w/ epilogue.
1182 * config/i386/i386.c (gen_push): Update cfa state.
1183 (pro_epilogue_adjust_stack): Add set_cfa argument. When true,
1184 add a CFA_ADJUST_CFA note.
1185 (ix86_dwarf_handle_frame_unspec): Remove.
1186 (ix86_expand_prologue): Update cfa state.
1187 (ix86_emit_restore_reg_using_pop): New.
1188 (ix86_emit_restore_regs_using_pop): New.
1189 (ix86_emit_leave): New.
1190 (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
1191 (ix86_expand_epilogue): Add notes for unwinding the epilogue.
1192 * config/i386/i386.h (struct machine_cfa_state): New.
1193 (ix86_cfa_state): New.
1194 * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
1195 (eh_return_internal): Merge from eh_return_<mode>,
1196 use eh_return rtx, split w/ epilogue.
1198 2009-05-29 Ian Lance Taylor <iant@google.com>
1200 * builtins.c (validate_gimple_arglist): Don't use va_arg with
1202 * calls.c (emit_library_call_value_1): Likewise.
1204 * c-typeck.c (c_build_va_arg): New function.
1205 * c-tree.h (c_build_va_arg): Declare.
1206 * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
1207 instead of build_va_arg.
1209 2009-05-29 Eric Botcazou <ebotcazou@adacore.com>
1211 * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
1212 (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
1213 (ptr_difference_cost): Use affine combinations to compute it.
1214 (difference_cost): Likewise.
1215 (get_computation_cost_at): Compute more accurate cost for addresses
1216 if the ratio is a multiplier allowed in addresses.
1217 For non-addresses, consider that an additional offset or symbol is
1220 2009-05-29 Jakub Jelinek <jakub@redhat.com>
1222 * config/i386/i386.c (ix86_decompose_address): Avoid useless
1223 0 displacement. Add 0 displacement if base is %[er]bp or %r13.
1225 * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
1226 TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
1227 (prefix_rex): For UNIT_MMX don't imply the prefix by default
1229 (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
1230 to 1 for TYPE_SSE{IADD1,CVT1}.
1231 (prefix_vex_imm8): Removed.
1232 (length_vex): Only pass 1 as second argument to
1233 ix86_attr_length_vex_default if prefix_extra is 0.
1234 (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
1235 (length): For prefix vex computation use length_immediate
1236 attribute instead of prefix_vex_imm8.
1237 (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
1238 addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
1239 *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
1240 *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
1241 (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
1242 *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
1243 a space in between the operands.
1244 (*anddi_1_rex64, *andsi_1): Likewise. Override prefix_rex to 1
1245 if one operand is 0xff and the other one si, di, bp or sp.
1246 (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
1247 other one si, di, bp or sp.
1248 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
1249 (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
1250 type and mode attributes.
1251 (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
1252 (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
1253 prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
1254 (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
1255 prefix_data16 attribute iff MODE_DF.
1256 (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
1257 (fix_trunc<mode>di_sse): Set prefix_rex attribute.
1258 (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
1259 constm128_operand in length_immediate computation.
1260 (*addhi_4): Likewise. Fix mode attribute to MODE_HI.
1261 (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
1262 (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
1263 length_immediate attribute to 1.
1264 (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
1265 (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
1266 for certain alternatives.
1267 (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
1268 prefix_data16 attribute if MODE_V1DF.
1269 (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
1270 length_immediate to 1.
1271 (set_got_rex64, set_rip_rex64): Remove length attribute, set
1272 length_address to 4, set mode attribute to MODE_DI.
1273 (set_got_offset_rex64): Likewise. Set length_immediate to 0.
1274 (fxam<mode>2_i387): Set length attribute to 4.
1275 (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
1276 *prefetch_3dnow_rex): Override length_address attribute.
1277 (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
1279 * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
1280 (constm128_operand): Removed.
1281 * config/i386/i386.c (memory_address_length): For
1282 disp && !index && !base in 64-bit mode account for SIB byte if
1283 print_operand_address can't optimize disp32 into disp32(%rip)
1284 and UNSPEC doesn't imply (%rip) addressing. Add 1 to length
1285 for fs: or gs: segment.
1286 (ix86_attr_length_immediate_default): When checking if shortform
1287 is possible, truncate immediate to the length of the non-shortened
1289 (ix86_attr_length_address_default): Ignore MEM_P operands
1291 (ix86_attr_length_vex_default): Only check for DImode on
1292 GENERAL_REG_P operands.
1293 * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
1294 prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
1295 (sse_cvttps2pi): Clear prefix_rep attribute.
1296 (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
1298 (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
1299 (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
1300 *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
1301 iff operand 2 is const_int_operand.
1302 (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
1303 sse2_shufpd_<mode>): Set length_immediate attribute to 1.
1304 (sse2_pshufd_1): Likewise. Set prefix attribute to maybe_vex
1306 (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
1308 (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
1309 prefix_data16 attribute for movlpd and movhpd instructions.
1310 (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise. Override
1311 length_immediate for shufpd instruction.
1312 (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
1313 (avx_cmpp<avxmodesuffixf2c><mode>3,
1314 avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
1315 <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
1316 avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
1317 *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
1318 (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
1319 (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
1320 (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
1321 prefix_data16 attribute for the first alternative to 1.
1322 (*avx_loadlps): Override length_immediate for the first alternative.
1323 (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
1324 attributes for second alternative.
1325 (*vec_concatv2sf_sse4_1): Override length_immediate and
1326 prefix_data16 attributes for second alternative.
1327 (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
1328 vec_extract_hi_<mode>, vec_extract_lo_v16hi,
1329 vec_extract_hi_v16hi, vec_extract_lo_v32qi,
1330 vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
1331 (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
1332 prefix_data16 and length_immediate to 1.
1333 (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
1335 (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
1336 prefix_extra attribute for variants that don't have 0f prefix alone.
1337 (*avx_pinsr<ssevecsize>): Likewise. Set length_immediate to 1.
1338 (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
1339 *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
1340 *sse4_1_pextrd): Set length_immediate to 1.
1341 (*sse4_1_pinsrd): Likewise. Set prefix_extra to 1.
1342 (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
1344 (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
1345 *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
1346 length_immediate to 1 for second alternative.
1347 (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
1348 prefix_extra and length_immediate attributes for the first
1350 (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
1352 (*vec_concatv2di_rex64_sse4_1): Likewise. Override prefix_rex
1353 to 1 for the first and third alternative.
1354 (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
1356 (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
1358 (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
1360 (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
1361 *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
1362 *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
1363 *avx_psign<mode>3): Set prefix_extra attribute to 1.
1364 (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
1365 ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
1366 ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
1367 ssse3_psign<mode>3): Override prefix_rex attribute.
1368 (*avx_palignrti): Override prefix_extra and length_immediate to 1.
1369 (ssse3_palignrti): Override length_immediate to 1.
1370 (ssse3_palignrdi): Override length_immediate to 1, override
1371 prefix_rex attribute.
1372 (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
1373 (sse4a_extrqi): Override length_immediate to 2.
1374 (sse4a_insertqi): Likewise. Override prefix_data16 to 0.
1375 (sse4a_insertq): Override prefix_data16 to 0.
1376 (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
1377 avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
1378 avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
1379 *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
1380 avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
1381 and length_immediate to 1.
1382 (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
1383 sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
1384 sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
1385 sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
1386 and length_immediate to 1.
1387 (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
1388 (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
1389 (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
1390 avx_ptest256): Override prefix_extra to 1.
1391 (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
1392 Override prefix_data16 and length_immediate to 1.
1393 (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
1394 sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
1395 sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
1396 sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
1397 prefix_data16 to 0 and prefix_extra to 2.
1398 (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
1399 (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
1401 (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
1402 sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
1403 Override prefix_data16 and prefix_rep to 0, length_immediate to 1
1404 and prefix_extra to 2.
1405 (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
1406 prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
1407 (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
1408 avx_vpermilvar<mode>3,
1409 avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
1410 avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
1411 avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
1412 avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
1413 Override prefix_extra to 1.
1414 (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
1415 (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
1416 vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
1417 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
1418 prefix_extra and length_immediate to 1.
1419 (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
1421 (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
1422 to 1 for the first alternative.
1423 * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
1424 prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
1426 (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
1427 *movv2sf_internal_avx, *movv2sf_internal): Override
1428 prefix_rep attribute for certain alternatives.
1429 (*mov<mode>_internal): Override prefix_rep or prefix_data16
1430 attributes for certain alternatives.
1431 (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
1432 attributes for certain alternatives.
1433 (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
1434 *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
1435 mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
1436 mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
1437 *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
1438 mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
1439 mmx_pswapdv2si2): Set prefix_extra attribute to 1.
1440 (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
1441 length_immediate to 1 if operand 2 is const_int_operand.
1442 (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
1443 *vec_extractv2si_1): Set length_immediate attribute to 1.
1444 (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
1445 using old 3DNOW insn rather than SSE/3DNOW_A.
1446 (mmx_emms, mmx_femms): Clear modrm attribute.
1448 2009-05-29 Martin Jambor <mjambor@suse.cz>
1450 * tree-sra.c: New implementation of SRA.
1452 * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
1453 (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
1454 (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
1455 * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
1456 (SRA_MAX_STRUCTURE_COUNT): Removed.
1457 (SRA_FIELD_STRUCTURE_RATIO): Removed.
1458 * doc/invoke.texi (sra-max-structure-size): Removed.
1459 (sra-field-structure-ratio): Removed.
1461 2009-05-29 Jakub Jelinek <jakub@redhat.com>
1464 * builtins.c (expand_builtin_memcmp): Convert len to sizetype
1467 2009-05-29 Andrey Belevantsev <abel@ispras.ru>
1469 PR rtl-optimization/40101
1470 * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
1471 seqno. Adjust comment.
1472 * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
1473 inserting bookkeeping before a jump, the jump is not scheduled.
1474 When no positive seqno found, provide a value. Add comment.
1476 2009-05-29 Richard Guenther <rguenther@suse.de>
1478 * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
1479 short-cutting on the first component.
1481 2009-05-29 Jakub Jelinek <jakub@redhat.com>
1484 * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
1485 for trees other than decls/types.
1487 2009-05-29 Richard Guenther <rguenther@suse.de>
1489 * tree-ssa-operands.c (get_expr_operands): Do not handle
1490 INDIRECT_REFs in the handled-component case. Remove
1491 unused get_ref_base_and_extent case.
1492 * tree-dfa.c (get_ref_base_and_extent): Avoid calling
1493 tree_low_cst and host_integerp where possible.
1494 * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
1495 codes for equivalence.
1496 * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
1498 2009-05-29 David Billinghurst <billingd@gcc.gnu.org>
1500 * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
1501 to tmake_file for i[34567]86-*-cygwin*.
1503 2009-05-29 Jakub Jelinek <jakub@redhat.com>
1506 * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
1507 (altivec_categorize_keyword, init_vector_keywords,
1508 rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
1511 2009-05-29 Kai Tietz <kai.tietz@onevision.com>
1513 * tree.c (handle_dll_attribute): Check if node is
1514 of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
1516 2009-05-29 Richard Earnshaw <rearnsha@arm.com>
1518 * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
1520 (thumb2_zero_extendqidi2): Likewise.
1522 2009-05-28 Kaz Kojima <kkojima@gcc.gnu.org>
1524 * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
1525 instead of gen_movrt.
1526 * config/sh/sh.md (movrt): Remove.
1528 2009-05-28 Steve Ellcey <sje@cup.hp.com>
1530 * doc/invoke.texi (IA-64 Options):
1531 Add -msdata, -mfused-madd, -mno-inline-float-divide,
1532 -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
1533 -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
1534 -msched-prefer-non-control-spec-insns,
1535 -msched-stop-bits-after-every-cycle,
1536 -msched-count-spec-in-critical-path,
1537 -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
1538 -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
1539 Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
1540 and -msched-spec-verbose.
1542 2009-05-28 Joseph Myers <joseph@codesourcery.com>
1544 * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
1545 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
1547 * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
1549 2009-05-28 Richard Guenther <rguenther@suse.de>
1551 * tree-ssa-alias.c (ao_ref_init): New function.
1552 (ao_ref_base): Likewise.
1553 (ao_ref_base_alias_set): Likewise.
1554 (ao_ref_alias_set): Likewise.
1555 (refs_may_alias_p_1): Change signature.
1556 (refs_may_alias_p): Adjust.
1557 (refs_anti_dependent_p): Likewise.
1558 (refs_output_dependent_p): Likewise.
1559 (call_may_clobber_ref_p_1): Change signature.
1560 (call_may_clobber_ref_p): Adjust.
1561 (stmt_may_clobber_ref_p_1): New function split out from ...
1562 (stmt_may_clobber_ref_p): ... here.
1563 (maybe_skip_until): Adjust signature.
1564 (get_continuation_for_phi): Likewise.
1565 (walk_non_aliased_vuses): Likewise.
1566 * tree-ssa-alias.h (struct ao_ref_s): New structure type.
1567 (ao_ref_init): Declare.
1568 (ao_ref_base): Likewise.
1569 (ao_ref_alias_set): Likewise.
1570 (stmt_may_clobber_ref_p_1): Likewise.
1571 (walk_non_aliased_vuses): Adjust.
1572 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
1573 (get_ref_from_reference_ops): remove.
1574 (vn_reference_lookup_2): Adjust signature.
1575 (vn_reference_lookup_3): Do not re-build trees. Handle unions.
1576 (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
1577 (vn_reference_lookup): Adjust.
1578 (vn_reference_insert): Likewise.
1579 (vn_reference_insert_pieces): Adjust signature.
1580 (visit_reference_op_call): Adjust.
1581 * tree-ssa-pre.c (get_expr_type): Simplify.
1582 (phi_translate_1): Adjust.
1583 (compute_avail): Likewise.
1584 (translate_vuse_through_block): Do not re-build trees.
1585 (value_dies_in_block_x): Likewise.
1586 * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
1588 (vn_reference_lookup_pieces): Adjust declaration.
1589 (vn_reference_insert_pieces): Likewise.
1591 2009-05-28 Benjamin Kosnik <bkoz@redhat.com>
1593 * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
1594 with checking disabled.
1596 2009-05-28 Dave Korn <dave.korn.cygwin@gmail.com>
1600 * configure.ac (HAVE_GAS_ALIGNED_COMM): Add autoconf test and
1601 macro definition for support of three-operand format aligned
1602 .comm directive in assembler on cygwin/pe/mingw target OS.
1603 * configure: Regenerate.
1604 * config.h: Regenerate.
1606 * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Use
1607 aligned form of .comm directive if -mpe-aligned-commons is in effect.
1608 * config/i386/cygming.opt (-mpe-aligned-commons): Add new option.
1610 * doc/invoke.texi (-mpe-aligned-commons): Document new target option.
1611 * doc/tm.texi (ASM_OUTPUT_COMMON): Document zero size commons.
1613 2009-05-28 Ira Rosen <irar@il.ibm.com>
1615 PR tree-optimization/40254
1616 * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
1617 in analysis of basic blocks.
1619 2009-05-28 Adam Nemet <anemet@caviumnetworks.com>
1622 * target.h (struct gcc_target): Fix indentation. Add const_anchor.
1623 * target-def.h (TARGET_CONST_ANCHOR): New macro.
1624 (TARGET_INITIALIZER): Use it.
1625 * cse.c (CHEAPER): Move it up to the other macros.
1626 (insert): Rename this ...
1627 (insert_with_costs): ... to this. Add cost parameters. Update
1629 (insert): New function. Call insert_with_costs.
1630 (compute_const_anchors, insert_const_anchor, insert_const_anchors,
1631 find_reg_offset_for_const, try_const_anchors): New functions.
1632 (cse_insn): Call try_const_anchors. Adjust cost of src_related
1633 when using a const-anchor. Call insert_const_anchors.
1634 * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
1635 * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
1637 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
1639 * tree-inline.c (remap_decls): Enable nonlocalized variables
1640 when not optimizing.
1642 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
1644 * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
1645 Simplify other tests involving optimize.
1647 2009-05-27 Tom Tromey <tromey@redhat.com>
1649 * unwind-dw2.c (_Unwind_DebugHook): New function.
1650 (uw_install_context): Call _Unwind_DebugHook.
1652 2009-05-27 Tom Tromey <tromey@redhat.com>
1654 * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
1656 2009-05-27 Ian Lance Taylor <iant@google.com>
1658 * Makefile.in (LINKER, LINKER_FLAGS): Define.
1659 (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
1660 (ALL_LINKERFLAGS): Define.
1661 (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
1662 (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1663 (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
1664 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1665 (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
1666 $(LINKER_FOR_BUILD).
1667 (build/gcov-iov$(build_exeext)): Likewise.
1669 2009-05-27 Julian Brown <julian@codesourcery.com>
1671 * gcse.c (target.h): Include.
1672 (can_assign_to_reg_without_clobbers_p): Check that the target allows
1673 copy of argument to a pseudo register.
1675 2009-05-27 Diego Novillo <dnovillo@google.com>
1677 * tree-ssa-live.c (dump_scope_block): Document arguments.
1678 (dump_scope_blocks): Document.
1679 (debug_scope_blocks): New.
1680 * tree-flow.h (debug_scope_blocks): Declare.
1682 2009-05-21 Denis Chertykov <denisc@overta.ru>
1684 * doc/contrib.texi (Contributors): Add myself to the list.
1686 2009-05-27 Olivier Hainque <hainque@adacore.com>
1688 * expr.c (target_align): New function. Alignment the TARGET of an
1689 assignment may be assume to have.
1690 (highest_pow2_factor_for_target): Use it instead of relying on
1691 immediate tree attributes of TARGET, not necessarily honored when
1692 intermediate bitfields are involved.
1694 2009-05-27 H.J. Lu <hongjiu.lu@intel.com>
1697 * config/i386/driver-i386.c (host_detect_local_cpu): Support
1698 AVX, SSE4, AES, PCLMUL and POPCNT.
1700 2009-05-27 Diego Novillo <dnovillo@google.com>
1702 * tree-pretty-print.c (dump_location): New.
1703 (dump_generic_node): Call it.
1704 Factor code to handle BLOCK nodes ...
1705 (dump_block_node): ... here.
1707 2009-05-27 Rafael Avila de Espindola <espindola@google.com>
1709 * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
1711 * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
1713 * gcc-plugin.h: Include config.h and system.h.
1714 (IN_GCC): Define if not defined.
1716 2009-05-27 Hans-Peter Nilsson <hp@axis.com>
1719 * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
1722 2009-05-27 Shujing Zhao <pearly.zhao@oracle.com>
1724 * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
1726 * config/m32r/m32r.h: Ditto.
1727 * config/m32r/m32r.md: Ditto.
1728 * config/m32r/predicates.md: Ditto.
1730 2009-05-27 Alexandre Oliva <aoliva@redhat.com>
1732 * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
1734 2009-05-26 Basile Starynkevitch <basile@starynkevitch.net>
1737 (Loading plugins): typo.
1738 (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
1739 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1740 (Interacting with the GCC Garbage Collector): Added new section.
1741 (Giving information about a plugin): Added new section for
1743 * ggc.h (ggc_register_root_tab): Added declaration.
1744 * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
1745 (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
1746 (register_callback): Improved comment in declaration.
1747 * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
1748 (extra_root_vec) Added static variable for dynamic roots registration.
1749 (ggc_register_root_tab) Added new routine.
1750 (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
1751 PLUGIN_GGC_MARKING event.
1752 * ggc-zone.c: Include plugin.h.
1753 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1754 * ggc-page.c: Include plugin.h.
1755 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1756 * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
1757 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
1758 (register_callback): check lack of callbacks for
1759 pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
1760 PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
1761 (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
1762 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1763 * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
1764 dependency on plugin.h.
1765 (plugin.o): Added dependency on ggc.h...
1767 2009-05-26 Richard Guenther <rguenther@suse.de>
1771 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1772 with mismatched comparison modes.
1774 * expr.c (expand_expr_real_1): Expand the operand of a
1775 VIEW_CONVERT_EXPR in its natural mode.
1777 2009-05-26 Ian Lance Taylor <iant@google.com>
1779 * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
1780 (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
1781 (ALL_COMPILERFLAGS): Define.
1782 (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
1783 (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1784 (collect2$(exeext), collect2.o): Likewise.
1785 (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
1786 (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
1787 ($(out_object_file), mips-tfile, mips-tdump): Likewise.
1788 (libbackend.o, intl.o, cppdefault.o): Likewise.
1789 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1790 (build/%.o): Use $(COMPILER_FOR_BUILD).
1791 (build/gen%$(build_exeext)): Likewise.
1792 (build/gcov-iov$(build_exeext)): LIkewise.
1793 * config/t-darwin (darwin.o): Use $(COMPILER).
1794 (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
1795 * config/t-sol2 (sol2-c.o): Likewise.
1797 * config/t-vxworks (vxworks.o): Likewise.
1798 * config/x-darwin (host-darwin.o): Likewise.
1799 * config/x-hpux (host-hpux.o): Likewise.
1800 * config/x-linux (host-linux.o): Likewise.
1801 * config/x-solaris (host-solaris.o): Likewise.
1802 * config/alpha/x-alpha (driver-alpha.o): Likewise.
1803 * config/arm/t-arm (arm-c.o): Likewise.
1804 * config/arm/t-pe (pe.o): Likewise.
1805 * config/arm/t-wince-pe (pe.o): Likewise.
1806 * config/i386/t-cygming (winnt.o): Likewise.
1807 (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
1808 * config/i386/t-cygwin (cygwin1.o): Likewise.
1809 (cygwin2.o): Likewise.
1810 * config/i386/t-i386 (i386-c.o): Likewise.
1811 * config/i386/t-interix (winnt.o): Likewise.
1812 * config/i386/t-netware (netware.o): Likewise.
1813 * config/i386/t-nwld (nwld.o): Likewise.
1814 * config/i386/x-darwin (host-i386-darwin.o): Likewise.
1815 * config/i386/x-i386 (driver-i386.o): Likewise.
1816 * config/i386/x-cygwin (host-cygwin.o): Likewise.
1817 * config/i386/x-mingw32 (host-mingw32.o): Likewise.
1818 * config/ia64/t-ia64 (ia64-c.o): Likewise.
1819 * config/m32c/t-m32c (m32c-pragma.o): Likewise.
1820 * config/mips/x-native (driver-native.o): Likewise.
1821 * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
1822 * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
1823 * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
1824 * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
1825 * config/score/t-score-elf (score7.o): Likewise.
1826 (score3.o): Likewise.
1827 * config/sh/t-sh (sh-c.o): Likewise.
1828 * config/sh/t-symbian (sh-c.o): Likewise.
1829 (symbian.o): Likewise.
1830 * config/spu/t-spu-elf (spu-c.o): Likewise.
1831 * config/v850/t-v850 (v850-c.o): Likewise.
1832 * config/v850/t-v850e (v850-c.o): Likewise.
1834 2009-05-26 Richard Guenther <rguenther@suse.de>
1836 PR tree-optimization/40122
1837 * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
1838 VECTOR_CSTs if possible.
1839 (fold_gimple_assign): Likewise.
1841 2009-05-26 Richard Guenther <rguenther@suse.de>
1844 * fold-const.c (fold_binary): Use the correct types for building
1847 2009-05-26 Richard Guenther <rguenther@suse.de>
1849 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1850 redundant calls to merge_alias_info.
1851 (bump_vector_ptr): Likewise.
1852 * tree-ssa-copy.c (merge_alias_info): Remove.
1853 (replace_exp_1): Remove call to merge_alias_info.
1854 (propagate_tree_value): Likewise.
1855 (fini_copy_prop): Propagate points-to info.
1856 * tree-flow.h (merge_alias_info): Remove.
1858 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
1860 * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1862 2009-05-25 Jan Hubicka <jh@suse.cz>
1864 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1865 * cgraph.h (struct inline_summary): New filed self_wize,
1866 size_inlining_benefit, self_time and time_inlining_benefit.
1867 (struct cgraph_global_info): Replace insns by time ans size fields.
1868 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1869 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1870 (ipcp_update_callgraph): Do not touch function bodies.
1871 * ipa-inline.c: Include except.h
1872 (MAX_TIME): New constant.
1873 (overall_insns): Remove.
1875 (overall_size, max_benefit): New static variables.
1876 (cgraph_estimate_time_after_inlining): New function.
1877 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1878 (cgraph_clone_inlined_nodes): Update size.
1879 (cgraph_mark_inline_edge): Update size.
1880 (cgraph_estimate_growth): Use size info.
1881 (cgraph_check_inline_limits): Check size.
1882 (cgraph_default_inline_p): Likewise.
1883 (cgraph_edge_badness): Compute badness based on benefit and size cost.
1884 (cgraph_decide_recursive_inlining): Check size.
1885 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
1887 (cgraph_decide_inlining): Likewise.
1888 (cgraph_decide_inlining_incrementally): Likewise; honor
1889 PARAM_EARLY_INLINING_INSNS.
1890 (likely_eliminated_by_inlining_p): New predicate.
1891 (estimate_function_body_sizes): New function.
1892 (compute_inline_parameters): Use it.
1893 * except.c (must_not_throw_labels): New function.
1894 * except.h (must_not_throw_labels): Declare.
1895 * tree-inline.c (init_inline_once): Kill inlining_weigths
1896 * tree-ssa-structalias.c: Avoid uninitialized warning.
1897 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1898 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1899 (PARAM_INLINE_CALL_COST): Remove.
1900 (PARAM_EARLY_INLINING_INSNS): New.
1902 2009-05-25 Richard Guenther <rguenther@suse.de>
1904 PR tree-optimization/36327
1905 * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1906 callback for reference translation or lookup at the point of may-defs.
1907 * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1908 * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1909 for union COMPONENT_REFs.
1910 (vn_reference_lookup_3): New callback. Lookup from memset
1911 and CONSTRUCTOR assignment, translate through struct copies.
1912 (vn_reference_lookup_pieces): Make sure to not free the
1913 passed operands array. Adjust walk_non_aliased_vuses call.
1914 (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1915 make sure we do not leak memory.
1917 2009-05-25 Richard Guenther <rguenther@suse.de>
1919 * tree-ssa-alias.h (dump_points_to_solution): Declare.
1920 * tree-inline.c (expand_call_inline): Reset the escaped and
1922 * tree-ssa-structalias.c (pass_build_ealias): New.
1923 * tree-pass.h (pass_build_ealias): Declare.
1924 * passes.c (init_optimization_passes): Add PTA during
1925 early optimizations.
1926 * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1927 and CALLUSED solutions.
1928 (dump_points_to_solution): New function, split out from ...
1929 (dump_points_to_info_for): ... here.
1930 * tree-parloops.c (parallelize_loops): Reset the escaped and
1933 2009-05-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
1936 * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1937 * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1939 2009-05-25 Ira Rosen <irar@il.ibm.com>
1941 PR tree-optimization/40238
1942 * tree-vect-stmts.c (vect_init_vector): Insert initialization
1943 statements after basic block's labels.
1944 * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
1945 to free the allocated memory.
1947 2009-05-24 Kaz Kojima <kkojima@gcc.gnu.org>
1949 * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1950 return address with a USE.
1952 2009-05-24 Richard Guenther <rguenther@suse.de>
1955 * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1956 array type from the main variant of the inner type.
1958 2009-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
1960 * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1961 definition to bool (from int) to un-break build.
1962 (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1964 2009-05-24 Paolo Bonzini <bonzini@gnu.org>
1966 * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1967 discard_stmt_changes): Delete.
1968 * tree-ssa-operands.c (scb_stack): Delete.
1969 (init_ssa_operands): Do not initialize it.
1970 (fini_ssa_operands): Do not free it.
1971 (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1973 * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
1974 update_stmt, remove the others. Fix comments.
1975 * tree-dfa.c (optimize_stack_restore): Likewise.
1976 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1977 * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1978 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1979 * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1981 * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1982 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1983 (dom_opt_finalize_block): Likewise, adjusting access to
1985 (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1986 (stmts_to_rescan): Change item type to gimple.
1987 (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1989 2009-05-24 Ira Rosen <irar@il.ibm.com>
1991 * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1992 * tree-pass.h (pass_slp_vectorize): New pass.
1993 * params.h (SLP_MAX_INSNS_IN_BB): Define.
1994 * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1995 * tree-vectorizer.c (timevar.h): Include.
1996 (user_vect_verbosity_level): Declare.
1997 (vect_location): Fix comment.
1998 (vect_set_verbosity_level): Update user_vect_verbosity_level
1999 instead of vect_verbosity_level.
2000 (vect_set_dump_settings): Add an argument. Ignore user defined
2001 verbosity if dump flags require higher level of verbosity. Print to
2002 stderr only for loop vectorization.
2003 (vectorize_loops): Update call to vect_set_dump_settings.
2004 (execute_vect_slp): New function.
2005 (gate_vect_slp): Likewise.
2006 (struct gimple_opt_pass pass_slp_vectorize): New.
2007 * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
2009 (vec_info_for_bb): New function.
2010 (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
2011 (VECTORIZATION_ENABLED): New macro.
2012 (SLP_ENABLED, SLP_DISABLED): Likewise.
2013 (vect_is_simple_use): Add bb_vec_info argument.
2014 (new_stmt_vec_info, vect_analyze_data_ref_dependences,
2015 vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
2016 vect_analyze_data_ref_accesses, vect_analyze_data_refs,
2017 vect_schedule_slp, vect_analyze_slp): Likewise.
2018 (vect_analyze_stmt): Add slp_tree argument.
2019 (find_bb_location): Declare.
2020 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
2021 * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
2022 (vect_analyze_loop_operations, vect_analyze_loop,
2023 get_initial_def_for_induction, vect_create_epilog_for_reduction,
2024 vect_finalize_reduction, vectorizable_reduction,
2025 vectorizable_live_operation, vect_transform_loop): Likewise.
2026 * tree-data-ref.c (dr_analyze_innermost): Update comment,
2027 skip evolution analysis if analyzing a basic block.
2028 (dr_analyze_indices): Likewise.
2029 (initialize_data_dependence_relation): Skip the test whether the
2030 object is invariant for basic blocks.
2031 (compute_all_dependences): Skip dependence analysis for data
2032 references in basic blocks.
2033 (find_data_references_in_stmt): Don't fail in case of invariant
2034 access in basic block.
2035 (find_data_references_in_bb): New function.
2036 (find_data_references_in_loop): Move code to
2037 find_data_references_in_bb and add a call to it.
2038 (compute_data_dependences_for_bb): New function.
2039 * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
2040 * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
2042 (vect_analyze_data_ref_dependence): Check for interleaving in case of
2043 unknown dependence in basic block and fail in case of dependence in
2045 (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
2046 dependence instances from either loop or basic block vectorization
2048 (vect_compute_data_ref_alignment): Check if it is loop vectorization
2049 before calling nested_in_vect_loop_p.
2050 (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
2051 dependence instances from either loop or basic block vectorization
2053 (vect_verify_datarefs_alignment): Likewise.
2054 (vect_enhance_data_refs_alignment): Adjust function calls.
2055 (vect_analyze_data_refs_alignment): Likewise.
2056 (vect_analyze_group_access): Fix printing. Skip different checks if
2057 DR_STEP is 0. Keep strided stores either in loop or basic block
2058 vectorization data structure. Fix indentation.
2059 (vect_analyze_data_ref_access): Fix comments, allow zero step in
2061 (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
2062 dependence instances from either loop or basic block vectorization
2064 (vect_analyze_data_refs): Update comment. Call
2065 compute_data_dependences_for_bb to analyze basic blocks.
2066 (vect_create_addr_base_for_vector_ref): Check for outer loop only in
2067 case of loop vectorization. In case of basic block vectorization use
2068 data-ref itself as a base.
2069 (vect_create_data_ref_ptr): In case of basic block vectorization:
2070 don't advance the pointer, add new statements before the current
2071 statement. Adjust function calls.
2072 (vect_supportable_dr_alignment): Support only aligned accesses in
2073 basic block vectorization.
2074 * common.opt (ftree-slp-vectorize): New flag.
2075 * tree-vect-patterns.c (widened_name_p): Adjust function calls.
2076 (vect_pattern_recog_1): Likewise.
2077 * tree-vect-stmts.c (process_use): Likewise.
2078 (vect_init_vector): Add new statements in the beginning of the basic
2079 block in case of basic block SLP.
2080 (vect_get_vec_def_for_operand): Adjust function calls.
2081 (vect_finish_stmt_generation): Likewise.
2082 (vectorizable_call): Add assert that it is loop vectorization, adjust
2084 (vectorizable_conversion, vectorizable_assignment): Likewise.
2085 (vectorizable_operation): In case of basic block SLP, take
2086 vectorization factor from statement's type and skip the relevance
2087 check. Adjust function calls.
2088 (vectorizable_type_demotion): Add assert that it is loop
2089 vectorization, adjust function calls.
2090 (vectorizable_type_promotion): Likewise.
2091 (vectorizable_store): Check for outer loop only in case of loop
2092 vectorization. Adjust function calls. For basic blocks, skip the
2093 relevance check and don't advance pointers.
2094 (vectorizable_load): Likewise.
2095 (vectorizable_condition): Add assert that it is loop vectorization,
2096 adjust function calls.
2097 (vect_analyze_stmt): Add argument. In case of basic block SLP, check
2098 that it is not reduction, get vector type, call only supported
2099 functions, skip loop specific parts.
2100 (vect_transform_stmt): Check for outer loop only in case of loop
2102 (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
2103 (vect_is_simple_use): Fix comment, add new argument, fix conditions
2104 for external definition.
2105 * passes.c (pass_slp_vectorize): New pass.
2106 * tree-vect-slp.c (find_bb_location): New function.
2107 (vect_get_and_check_slp_defs): Add argument, adjust function calls,
2108 check for patterns only in loops.
2109 (vect_build_slp_tree): Add argument, adjust function calls, fail in
2110 case of multiple types in basic block SLP.
2111 (vect_mark_slp_stmts_relevant): New function.
2112 (vect_supported_load_permutation_p): Fix comment.
2113 (vect_analyze_slp_instance): Add argument. In case of basic block
2114 SLP, take vectorization factor from statement's type, check that
2115 unrolling factor is 1. Adjust function call. Save SLP instance in
2116 either loop or basic block vectorization structure. Return FALSE,
2118 (vect_analyze_slp): Add argument. Get strided stores groups from
2119 either loop or basic block vectorization structure. Return FALSE
2120 if basic block SLP failed.
2121 (new_bb_vec_info): New function.
2122 (destroy_bb_vec_info, vect_slp_analyze_node_operations,
2123 vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
2124 (vect_schedule_slp): Add argument. Get SLP instances from either
2125 loop or basic block vectorization structure. Set vectorization factor
2126 to be 1 for basic block SLP.
2127 (vect_slp_transform_bb): New function.
2128 * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
2130 2009-05-23 Mark Mitchell <mark@codesourcery.com>
2132 * final.c (shorten_branches): Do not align labels for jump tables.
2133 (final_scan_insn): Use JUMP_TABLE_DATA_P.
2135 2009-05-23 Eric Botcazou <ebotcazou@adacore.com>
2137 * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
2138 Remove outdated reference to flow.c and fix nits.
2139 * doc/gccint.texi: Tweak RTL description.
2140 * doc/rtl.texi: Likewise.
2142 2009-05-23 Denis Chertykov <chertykov@gmail.com>
2144 * config/avr/avr.c: Change my email address.
2145 * config/avr/avr.h: Likewise.
2146 * config/avr/avr.md: Likewise.
2147 * config/avr/avr-protos.h: Likewise.
2148 * config/avr/libgcc.S: Likewise.
2150 2009-05-22 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2152 * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
2153 (spu_split_load, spu_split_store): Change return type to int.
2154 (spu_split_convert): Declare.
2155 * config/spu/predicates.md (spu_mem_operand): Remove.
2156 (spu_mov_operand): Update.
2157 (spu_dest_operand, shiftrt_operator, extend_operator): Define.
2158 * config/spu/spu.c (regno_aligned_for_load): Remove.
2159 (reg_aligned_for_addr, spu_expand_load): Define.
2160 (spu_expand_extv): Reimplement and handle MEM.
2161 (spu_expand_insv): Handle MEM.
2162 (spu_sched_reorder): Handle insn's with length 0.
2163 (spu_legitimate_address_p): Reimplement.
2164 (store_with_one_insn_p): Return TRUE for any mode with size
2165 larger than 16 bytes.
2166 (address_needs_split): Define.
2167 (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
2169 (spu_convert_move): Define.
2170 (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
2171 (spu_split_store): Change all MEM's to TImode.
2172 (spu_init_expanders): Preallocate registers that correspond to
2173 LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
2175 (spu_split_convert): Define.
2176 * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
2177 (_move<mode>, _movdi, _movti): Update predicate and condition.
2178 (load, store): Change to define_split.
2179 (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
2181 (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
2182 (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
2183 define_insn_and_split of lshr<mode>3.
2184 (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
2185 (<v>ashr<mode>3_imm): Define.
2186 (extv, extzv, insv): Allow MEM operands.
2187 (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
2188 shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
2189 sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
2190 (_spu_convert2): Change to define_insn_and_split and remove the
2191 corresponding define_peephole2.
2192 (stack_protect_set, stack_protect_test, stack_protect_test_si):
2193 Change predicates to memory_operand.
2195 2009-05-22 Mark Mitchell <mark@codesourcery.com>
2197 * config/arm/thumb2.md: Add 16-bit multiply instructions.
2199 2009-05-21 Michael Meissner <meissner@linux.vnet.ibm.com>
2201 PR tree-optimization/40219
2202 * tree.c (iterative_hash_expr): Make sure the builtin function is
2203 a normal builtin function and not a front end or back end builtin
2204 before indexing into the built_in_decls array.
2206 2009-05-22 Richard Guenther <rguenther@suse.de>
2209 * alias.c (write_dependence_p): Do not use TBAA for answering
2210 anti-dependence or output-dependence.
2211 * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
2212 (emit_pointer_definition): Remove.
2213 (emit_alias_warning): Likewise.
2214 (find_what_var_points_to): Remove TBAA pruning code.
2215 (find_what_p_points_to): Likewise. Do not warn about strict-aliasing
2217 (compute_points_to_sets): Remove code computing the set of
2218 dereferenced pointers.
2219 * tree-data-ref.c (dr_may_alias_p): Properly use the split
2220 oracle for querying anti and output dependencies.
2221 * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
2222 if TBAA may be applied.
2223 (refs_anti_dependent_p): New function.
2224 (refs_output_dependent_p): Likewise.
2225 * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
2226 (refs_output_dependent_p): Likewise.
2227 * doc/tree-ssa.texi (Memory model): New section.
2228 * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2229 * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2230 * cfgexpand.c (expand_gimple_basic_block): Do not handle
2231 GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
2232 * expr.c (expand_expr_real_1): Likewise.
2233 * gimple-low.c (lower_stmt): Likewise.
2234 * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
2235 (dump_gimple_cdt): Remove.
2236 * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2237 (gimple_size): Likewise.
2238 (walk_gimple_op): Likewise.
2239 (is_gimple_stmt): Likewise.
2240 (walk_stmt_load_store_addr_ops): Likewise.
2241 (gimple_build_cdt): Remove.
2242 * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2243 * gimple.h (gimple_cdt_new_type): Remove.
2244 (gimple_cdt_new_type_ptr): Likewise.
2245 (gimple_cdt_set_new_type): Likewise.
2246 (gimple_cdt_location): Likewise.
2247 (gimple_cdt_location_ptr): Likewise.
2248 (gimple_cdt_set_location): Likewise.
2249 * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2250 * tree-cfg.c (remove_useless_stmts_1): Do not handle
2251 GIMPLE_CHANGE_DYNAMIC_TYPE.
2252 (verify_types_in_gimple_stmt): Likewise.
2253 * tree-inline.c (estimate_num_insns): Likewise.
2254 (expand_call_inline): Do not copy DECL_NO_TBAA_P.
2255 (copy_decl_to_var): Likewise.
2256 (copy_result_decl_to_var): Likewise.
2257 * tree-pretty-print.c (dump_generic_node): Do not handle
2258 CHANGE_DYNAMIC_TYPE_EXPR.
2259 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2260 * tree-ssa-operands.c (get_expr_operands): Likewise.
2261 * tree-ssa-structalias.c (struct variable_info): Remove
2262 no_tbaa_pruning member.
2263 (new_var_info): Do not set it based on DECL_NO_TBAA_P.
2264 (unify_nodes): Do not copy it.
2265 (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2266 (dump_solution_for_var): Do not dump no_tbaa_pruning state.
2267 (set_uids_in_ptset): Do not check it.
2268 (find_what_var_points_to): Likewise.
2269 (compute_tbaa_pruning): Remove.
2270 (compute_points_to_sets): Do not call it.
2271 * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2272 * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2273 * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
2274 (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
2275 (DECL_NO_TBAA_P): Likewise.
2276 (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
2277 * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
2278 (expand_omp_atomic_pipeline): Do not set it.
2279 * print-tree.c (print_node): Do not dump it.
2280 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
2283 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
2286 * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
2289 2009-05-22 Mark Mitchell <mark@codesourcery.com>
2291 * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
2294 2009-05-22 Ben Elliston <bje@au.ibm.com>
2296 * Makefile.in (bversion.h, s-bversion): New targets.
2297 (TOPLEV_H): Add bversion.h.
2298 * toplev.h: Include "bversion.h".
2299 (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
2300 the __format__ attribute only if compiling with the same version
2301 of GCC as the sources (the "build version").
2303 2009-05-22 Ben Elliston <bje@au.ibm.com>
2305 * c-format.c (handle_format_attribute): Fix comment typo.
2307 2009-05-21 Steve Ellcey <sje@cup.hp.com>
2310 * config/ia64/ia64.opt (mfused-madd): New.
2311 * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
2312 * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
2313 * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
2314 madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
2315 nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
2316 msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
2317 nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
2318 * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
2319 instruction if !TARGET_FUSED_MADD.
2320 (fpma, fpms): Remove colon from name.
2322 2009-05-22 Richard Guenther <rguenther@suse.de>
2324 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
2325 TMR_ORIGINAL. Always either record TMR_SYMBOL or TMR_BASE.
2326 * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
2328 (create_expression_by_pieces): Only convert if necessary.
2329 * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
2330 * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
2332 2009-05-21 Adam Nemet <anemet@caviumnetworks.com>
2334 * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
2335 regular pattern from a template and rename it ...
2336 (*extzv_truncsi_exts): ... to this.
2338 2009-05-21 Richard Guenther <rguenther@suse.de>
2340 * cgraph.h (struct cgraph_node): Remove inline_decl member.
2341 * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
2342 (cgraph_default_inline_p): Likewise.
2343 (cgraph_decide_inlining_incrementally): Likewise.
2345 2009-05-21 H.J. Lu <hongjiu.lu@intel.com>
2346 Uros Bizjak <ubizjak@gmail.com>
2348 * config/i386/cpuid.h (bit_MOVBE): New.
2350 * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
2352 * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
2353 (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
2354 (ix86_handle_option): Handle OPT_mmovbe.
2355 (ix86_target_string): Add -mmovbe.
2356 (pta_flags): Add PTA_MOVBE.
2357 (processor_alias_table): Add PTA_MOVBE to "atom".
2358 (override_options): Handle PTA_MOVBE.
2360 * config/i386/i386.h (TARGET_MOVBE): New.
2362 * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
2363 (*bswapsi_movbe): New.
2364 (*bswapdi_movbe): Likewise.
2365 (bswapdi2): Renamed to ...
2367 (bswapdi2): New expander.
2369 * config/i386/i386.opt (mmovbe): New.
2371 * doc/invoke.texi: Document -mmovbe.
2373 2009-05-21 Taras Glek <tglek@mozilla.com>
2375 * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
2376 * gcc-plugin.h (plugin_init): Updated signature.
2377 * gcc-plugin.h (plugin_name_args): Moved to this header.
2378 * doc/plugins.texi (plugin_init): Updated documention to reflect
2380 * doc/plugins.texi (plugin_name_args): Added to documention.
2382 2009-05-21 Mark Mitchell <mark@codesourcery.com>
2384 * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
2385 (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
2387 2009-05-21 Shujing Zhao <pearly.zhao@oracle.com>
2389 * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
2390 JUMP_TABLE_DATA_P predicates where applicable.
2391 * config/i386/predicates.md: Ditto.
2392 * config/i386/sse.md: Ditto.
2394 2009-05-21 Jakub Jelinek <jakub@redhat.com>
2396 * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
2397 operand2 -128 override length_immediate attribute to 1.
2398 * config/i386/predicates.md (constm128_operand): New predicate.
2400 * config/i386/i386.c (memory_address_length): Handle %r12
2401 the same as %rsp and %r13 the same as %rbp. For %rsp and %rbp
2403 (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
2404 mode look through optional ZERO_EXTEND and SUBREG.
2405 * config/i386/i386.md (R12_REG): New define_constant.
2406 (prefix_data16): For sse unit set also for MODE_TI insns.
2407 (prefix_rex): For -m32 always return 0. For TYPE_IMOVX
2408 insns set if operand 1 is ext_QIreg_operand.
2409 (modrm): For TYPE_IMOV clear only if not MODE_DI. For
2410 TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
2412 (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
2413 mode from MODE_DI to MODE_SI.
2414 (movdi_1_rex64): Override modrm and length_immediate attributes
2415 only for movabs (TYPE_IMOV, alternative 2).
2416 (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
2417 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
2418 *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
2419 *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
2420 *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
2421 prefix_rex attribute if DImode.
2422 (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
2423 *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
2424 *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
2425 *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
2426 attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
2427 (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
2428 Likewise. For TYPE_IMOV clear length_immediate attribute.
2429 (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
2430 *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
2431 *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
2432 *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
2433 *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
2434 or one operand TYPE_ISHIFT.
2435 (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
2436 *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
2437 *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
2438 *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
2439 *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
2440 *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
2441 *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
2442 *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
2443 *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
2444 *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
2445 *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
2446 *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
2447 *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
2448 *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
2449 *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
2450 *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
2451 *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
2452 set mode attribute, don't override length attribute.
2453 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
2455 (return_internal_long): Set length attribute to 2 instead of 1.
2456 (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
2457 *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
2458 prefix_rex attribute.
2459 * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
2461 (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
2463 2009-05-21 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2465 * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
2467 2009-05-20 Ian Lance Taylor <iant@google.com>
2469 * tree.c (build_tree_list_vec_stat): New function.
2470 (ctor_to_vec): New function.
2471 (build_nt_call_vec): New function.
2472 (build_call_array): Change args to be a const pointer.
2473 (build_call_vec): New function.
2474 * tree.h (build_nt_call_vec): Declare.
2475 (build_tree_list_vec_stat): Declare.
2476 (build_tree_list_vec): Define.
2477 (build_call_array): Update declaration.
2478 (build_call_vec): Declare.
2479 (ctor_to_vec): Declare.
2480 * c-common.c (tree_vector_cache): New static variable.
2481 (make_tree_vector): New function.
2482 (release_tree_vector): New function.
2483 (make_tree_vector_single): New function.
2484 (make_tree_vector_copy): New function.
2485 * c-common.h (tree_vector_cache, make_tree_vector): Declare.
2486 (make_tree_vector_single, make_tree_vector_copy): Declare.
2487 * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
2488 (c_parser_expr_list): Don't manage cache here, instead call
2490 (c_parser_release_expr_list): Remove static function.
2491 (c_parser_vec_to_tree_list): Remove static function.
2492 (c_parser_attributes): Call build_tree_list_vec instead of
2493 c_parser_vec_to_tree_list. Call release_tree_vector instead of
2494 c_parser_release_expr_list.
2495 (c_parser_postfix_expression_after_primary): Likewise.
2496 (c_parser_objc_keywordexpr): Likewise.
2498 2009-05-20 Sandra Loosemore <sandra@codesourcery.com>
2500 * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
2501 TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
2502 TARGET_CONVERT_TO_TYPE.
2503 * hooks.c (hook_tree_const_tree_null): Define.
2504 * hooks.h (hook_tree_const_tree_null): Declare.
2505 * target.h (struct gcc_target): Add invalid_parameter_type,
2506 invalid_return_type, promoted_type, and convert_to_type fields.
2507 * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
2508 (TARGET_INVALID_RETURN_TYPE): Define.
2509 (TARGET_PROMOTED_TYPE): Define.
2510 (TARGET_CONVERT_TO_TYPE): Define.
2511 (TARGET_INITIALIZER): Update for new fields.
2512 * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
2513 (grokparms): Check targetm.invalid_parameter_type.
2514 * c-typeck.c (default_conversion): Check targetm.promoted_type.
2515 * c-convert.c (convert): Check targetm.convert_to_type.
2517 2009-05-20 Adam Nemet <anemet@caviumnetworks.com>
2519 * config/mips/mips.md (*extenddi_truncate<mode>,
2520 *extendsi_truncate<mode>): Emit exts if supported. Add attribute
2522 (*extendhi_truncateqi): New define_insn_and_sptit.
2524 2009-05-20 Jakub Jelinek <jakub@redhat.com>
2527 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
2528 recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
2530 2009-05-20 Eric Botcazou <ebotcazou@adacore.com>
2532 * fold-const.c (build_fold_addr_expr_with_type): Take the address of
2533 the operand of VIEW_CONVERT_EXPR.
2535 2009-05-20 H.J. Lu <hongjiu.lu@intel.com>
2537 * config/i386/driver-i386.c (host_detect_local_cpu): Check
2538 extended family and model for Intel processors. Support Intel Atom.
2540 2009-05-20 Olivier Hainque <hainque@adacore.com>
2542 * gstab.h (stab_code_type): Define, to be used instead of the
2543 __stab_debug_code enum, made anonymous. Add 2009 to the copyright
2545 * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
2546 occurrences by stab_code_type.
2547 * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
2549 2009-05-20 Martin Jambor <mjambor@suse.cz>
2551 * tree-flow.h (insert_edge_copies_seq): Undeclare.
2552 (sra_insert_before): Likewise.
2553 (sra_insert_after): Likewise.
2554 (sra_init_cache): Likewise.
2555 (sra_type_can_be_decomposed_p): Likewise.
2556 * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
2557 * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
2558 (sra_insert_before): Likewise.
2559 (sra_insert_after): Likewise.
2560 (sra_init_cache): Likewise.
2561 (insert_edge_copies_seq): Made static and moved upwards.
2563 * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
2566 * tree-flow-inline.h (contains_view_convert_expr_p): New function.
2568 * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
2569 (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
2572 2009-05-20 Richard Guenther <rguenther@suse.de>
2574 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
2575 with mismatched comparison modes.
2577 2009-05-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2579 * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
2580 (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
2581 * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
2582 with shifts for Thumb2.
2583 (orsi_notsi): New for orn.
2584 (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
2585 (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
2586 * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
2587 (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
2588 Don't invert remainder for IOR.
2590 2009-05-19 Zdenek Dvorak <ook@ucw.cz>
2592 PR tree-optimization/40087
2593 * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
2594 number_of_iterations_ne): Rename never_infinite argument.
2595 (number_of_iterations_lt_to_ne, number_of_iterations_lt,
2596 number_of_iterations_le): Handle pointer-type ivs when
2597 exit_must_be_taken is false.
2598 (number_of_iterations_cond): Do not always assume that
2599 exit_must_be_taken if the control variable is a pointer.
2601 2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
2603 * c-typeck.c (build_binary_op): Allow % on integal vectors.
2604 * doc/extend.texi (Vector Extension): Document that % is allowed too.
2606 2009-05-19 H.J. Lu <hongjiu.lu@intel.com>
2608 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
2609 ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
2611 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
2614 * c.opt (Wlogical-op): Disabled by default.
2615 * c-opt (c_common_post_options): Do not enable Wlogical-op with
2617 * doc/invoke.texi (Wlogical-op): Likewise.
2619 2009-05-19 Eric Botcazou <ebotcazou@adacore.com>
2621 * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
2623 <PLUS_EXPR>: Strip useless type conversions instead of type nops.
2624 Propagate the type of the first operand.
2625 <ASSERT_EXPR>: Simplify.
2626 (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
2627 Rewrite using the RHS code as discriminant.
2628 <NOP_EXPR>: Turn into CASE_CONVERT.
2629 <PLUS_EXPR>: Propagate the type of the first operand.
2631 2009-05-19 Steve Ellcey <sje@cup.hp.com>
2633 * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
2634 (ia64_dconst_0_375): New.
2635 * config/ia64/ia64.c (ia64_override_options): Remove
2636 -minline-sqrt-min-latency warning.
2637 (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
2638 (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
2639 * config/ia64/ia64.md (*sqrt_approx): Remove.
2640 (sqrtsf2): Remove #if 0.
2641 (sqrtsf2_internal_thr): Rewrite and move to div.md.
2642 (sqrtdf): Remove assert.
2643 (sqrtdf2_internal_thr): Rewrite and move to div.md.
2644 (sqrtxf2): Remove #if 0.
2645 (sqrtxf2_internal_thr): Rewrite and move to div.md.
2646 * div.md (sqrt_approx_rf): New.
2647 (sqrtsf2_internal_thr): New implementation.
2648 (sqrtsf2_internal_lat): New.
2649 (sqrtdf2_internal_thr: New implementation.
2650 (sqrtxf2_internal): New implementation.
2652 2009-05-19 Francois-Xavier Coudert <fxcoudert@gmail.com>
2653 Hans-Peter Nilsson <hp@axis.com>
2655 * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
2656 (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
2657 (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
2658 (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
2659 (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
2660 (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
2661 (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
2662 (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
2663 (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
2664 (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
2665 * c-common.c: ...from here.
2667 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
2669 * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
2671 2009-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2673 * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
2675 2009-05-19 Ben Elliston <bje@au.ibm.com>
2677 * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
2678 assignments with memcpy calls.
2679 (add_fdes): Likewise.
2680 (binary_search_unencoded_fdes): Likewise.
2681 (linear_search_fdes): Eliminate type puns.
2683 2009-05-19 Richard Guenther <rguenther@suse.de>
2685 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
2686 not falsely claim to have propagated into all uses.
2688 2009-05-19 Ben Elliston <bje@au.ibm.com>
2690 * doc/invoke.texi (C Dialect Options): Update OpenMP specification
2693 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
2695 * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
2696 * config/sh/sh.c (sh_legitimate_address_p): Make static.
2697 (TARGET_LEGITIMATE_ADDRESS_P): New.
2698 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2699 * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2701 2009-05-18 Dodji Seketeli <dodji@redhat.com>
2704 * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
2705 child of the containing namespace's DIE.
2707 2009-05-18 Adam Nemet <anemet@caviumnetworks.com>
2709 * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
2710 *zero_extendhi_truncqi): Move after the zero_extend patterns.
2711 (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
2714 2009-05-18 H.J. Lu <hongjiu.lu@intel.com>
2717 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
2718 gen_align with gen_pad.
2719 (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
2720 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
2722 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
2723 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
2725 * config/i386/i386.md (align): Renamed to ...
2726 (pad): This. Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
2727 ASM_OUTPUT_MAX_SKIP_PAD.
2729 2009-05-18 Andreas Schwab <schwab@linux-m68k.org>
2731 * config.gcc: Fix variable syntax.
2734 * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
2735 before calling exact_log2.
2736 (output_iorsi3): Likewise.
2737 (output_xorsi3): Likewise.
2739 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
2741 * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
2742 for the none zero constant operand except for EQ and NE
2743 comprisons even when the first operand is R0.
2745 2009-05-18 Andreas Krebbel <krebbel1@de.ibm.com>
2747 * config/s390/2064.md: Remove trailing whitespaces.
2748 * config/s390/2084.md: Likewise.
2749 * config/s390/constraints.md: Likewise.
2750 * config/s390/fixdfdi.h: Likewise.
2751 * config/s390/libgcc-glibc.ver: Likewise.
2752 * config/s390/s390-modes.def: Likewise.
2753 * config/s390/s390-protos.h: Likewise.
2754 * config/s390/s390.c: Likewise.
2755 * config/s390/s390.h: Likewise.
2756 * config/s390/s390.md: Likewise.
2757 * config/s390/tpf-unwind.h: Likewise.
2759 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
2761 * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
2763 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
2766 * configure.ac (m68k-*-*): Check if binutils support TLS.
2767 * configure: Regenerate.
2768 * config/m68k/predicates.md (symbolic_operand): Extend comment.
2769 * config/m68k/constraints.md (Cu): New constraint.
2770 * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
2771 (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
2772 (movsi): Handle TLS symbols.
2773 (addsi3_5200): Handle XTLS symbols, indent.
2774 * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
2775 (m68k_tls_reference_p): Declare.
2776 (m68k_legitimize_address): Declare.
2777 (m68k_unwrap_symbol): Declare.
2778 * config/m68k/m68k.opt (mxtls): New option.
2779 * config/m68k/m68k.c (ggc.h): Include.
2780 (m68k_output_dwarf_dtprel): Implement hook.
2781 (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
2782 (m68k_expand_prologue): Load GOT pointer when function needs it.
2783 (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
2784 (m68k_legitimate_constant_address_p): Same.
2785 (m68k_decompose_address): Handle TLS references.
2786 (m68k_get_gp): New static function.
2787 (enum m68k_reloc): New contants.
2788 (TLS_RELOC_P): New macro.
2789 (m68k_wrap_symbol): New static function.
2790 (m68k_unwrap_symbol): New function.
2791 (m68k_final_prescan_insn_1): New static function.
2792 (m68k_final_prescan_insn): New function.
2793 (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
2795 (legitimize_pic_address): Handle TLS references..
2796 (m68k_tls_get_addr, m68k_get_tls_get_addr)
2797 (m68k_libcall_value_in_a0_p)
2798 (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
2799 (m68k_call_m68k_read_tp): Helper variables and functions for ...
2800 (m68k_legitimize_tls_address): Handle TLS references.
2801 (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
2803 (m68k_legitimize_address): Handle TLS symbols.
2804 (m68k_get_reloc_decoration): New static function.
2805 (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
2807 (m68k_output_dwarf_dtprel): Implement hook.
2808 (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
2809 (m68k_libcall_value): Return result in A0 instead of D0 when asked by
2810 m68k_call_* routines.
2811 (sched_attr_op_type): Handle TLS symbols.
2812 (gt-m68k.h): Include.
2813 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
2814 (LEGITIMATE_PIC_OPERAND_P): Support TLS.
2816 2009-05-18 Martin Jambor <mjambor@suse.cz>
2818 * ipa-prop.c (ipa_check_stmt_modifications): Removed.
2819 (visit_store_addr_for_mod_analysis): New function.
2820 (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
2821 (determine_cst_member_ptr): Use gimple_assign_single_p.
2822 (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
2823 (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
2824 operands. Don't check number of operands of a NOP_EXPR.
2826 2009-05-18 Eric Fisher <joefoxreal@gmail.com>
2828 * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
2830 2009-05-17 Manuel López-Ibáñez <manu@gcc.gnu.org>
2833 * c-common.c (warn_logical_operator): Don't warn if one of
2834 expression isn't always true or false.
2836 2009-05-17 Kai Tietz <kai.tietz@onevision.com>
2838 * config/i386/biarch32.h: New file.
2839 * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
2841 2009-05-17 Adam Nemet <anemet@caviumnetworks.com>
2843 * config/mips/mips.md (*zero_extend<mode>_trunchi,
2844 *zero_extend<mode>_truncqi): Merge these into ...
2845 (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2846 Name the pattern following this as *zero_extendhi_truncqi.
2848 2009-05-16 Brad Lucier <lucier@math.purdue.edu>
2851 * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2852 * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2853 (output_info): Make field HOST_WIDEST_INT.
2854 (print_statistics): Use HOST_WIDEST_INT_PRINT.
2855 (dump_bitmat_statistics): Same.
2857 2009-05-16 Francois-Xavier Coudert <fxcoudert@gmail.com>
2859 * config.gcc (use_gcc_stdint): Set to wrap.
2860 * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2861 INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2862 UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2863 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2864 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2865 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2866 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2867 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2869 2009-05-16 Joseph Myers <joseph@codesourcery.com>
2871 * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2873 * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2874 Move definitions earlier.
2875 (OPT_ARCH64, OPT_ARCH32): Define.
2876 (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2879 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
2882 * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2885 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
2887 * arm.md (movdi2): Copy non-reg values to DImode registers.
2889 2009-05-16 Jakub Jelinek <jakub@redhat.com>
2892 * final.c (label_to_max_skip): New function.
2893 (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2894 CODE_LABEL_NUMBER <= max_labelno.
2895 * output.h (label_to_max_skip): New prototype.
2896 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2897 (ix86_avoid_jump_mispredicts): ... this. Don't define if
2898 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined. Update comment.
2899 Handle CODE_LABELs with >= 16 byte alignment or with
2900 max_skip == (1 << align) - 1.
2901 (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2902 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2905 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2906 .p2align 3 if MAX_SKIP is smaller than 7.
2907 * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2909 2009-05-15 Ian Lance Taylor <iant@google.com>
2911 * alias.c (struct alias_set_entry_d): Rename from struct
2912 alias_set_entry. Change all uses.
2913 * except.c (struct call_site_record_d): Rename from struct
2914 call_site_record. Change all uses.
2915 * except.h (struct eh_region_d): Rename from struct eh_region.
2917 * gcse.c (struct hash_table_d): Rename from struct hash_table.
2919 * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2920 ivtype_map_elt. Change all uses.
2921 (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2923 (struct ifsese_d): Rename fromstruct ifsese. Change all uses.
2924 * graphite.h (struct name_tree_d): Rename from struct name_tree.
2926 (struct sese_d): Rename from struct sese. Change all uses.
2927 * omega.h (struct eqn_d): Rename from struct eqn. Change all uses.
2928 (struct omega_pb_d): Rename from struct omega_pb. Change all uses.
2929 * optabs.h (struct optab_d): Rename from struct optab. Change all
2931 (struct convert_optab_d): Rename from struct convert_optab.
2933 * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2934 ipa_opt_pass. Change all uses.
2935 * tree-predcom.c (struct dref_d): Rename from struct dref. Change
2938 * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2939 defined as a typedef.
2940 (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2943 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
2946 * fold-const.c (make_range,build_range_check,merge_ranges): Move
2948 (merge_ranges): Returns bool.
2949 * tree.h (make_range): .. to here.
2950 (build_range_check): Likewise.
2951 (merge_ranges): Likewise. Renamed from merge_ranges.
2952 * c-typeck.c (parser_build_binary_op): Update calls to
2953 warn_logical_operator.
2954 * c-common.c (warn_logical_operator): Add new warning.
2955 * c-common.h (warn_logical_operator): Update declaration.
2957 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
2959 * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2961 2009-05-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2963 * doc/install.texi: Document MPC requirements, flags etc.
2965 * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2966 (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2967 Evaluate constant arguments.
2968 (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2969 (fold_builtin_1): Likewise, also evaluate constant arguments.
2970 Remove superfluous break.
2971 (do_mpc_ckconv): New.
2972 * real.h: Include mpc.h.
2973 * toplev.c (print_version): Output MPC version info if available.
2975 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
2977 * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2979 2009-05-15 H.J. Lu <hongjiu.lu@intel.com>
2981 * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2984 2009-05-15 Jan Hubicka <jh@suse.cz>
2986 * doc/invoke.texi (max-early-inliner-iterations): New flag.
2987 * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2988 (try_inline): Fix return value.
2989 (cgraph_decide_inlining_incrementally): Honor new value.
2990 (cgraph_early_inlining): Handle indirect inlining.
2991 * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2993 2009-05-15 Jan Hubicka <jh@suse.cz>
2995 * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2996 * cgraphunit.c (cgraph_finalize_function): Set it.
2997 (cgraph_expand_function): Use it.
2999 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
3001 * real.c (encode_ieee_half): Define.
3002 (decode_ieee_half): Define.
3003 (ieee_half_format): Define.
3004 (arm_half_format): Define.
3005 * real.h (ieee_half_format): Declare.
3006 (arm_half_format): Declare.
3008 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
3010 * optabs.c (prepare_float_lib_cmp): Test that the comparison,
3011 swapped, and reversed optabs exist before trying to use them.
3013 2009-05-15 Paul Brook <paul@codesourcery.com>
3014 Sandra Loosemore <sandra@codesourcery.com>
3016 * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
3017 loads. Allow PRE_DEC.
3018 (output_move_neon): Handle PRE_DEC.
3019 (arm_print_operand): Add 'A' for neon structure loads.
3020 * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
3021 * config/arm/neon.md (neon_mov): Update comment.
3022 * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
3024 (Um): New constraint.
3026 2009-05-15 Jan Hubicka <jh@suse.cz>
3028 Revert the following patch until testsuite fallout is fixed:
3029 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
3030 * cgraph.h (struct inline_summary): New filed self_wize,
3031 size_inlining_benefit, self_time and time_inlining_benefit.
3032 (struct cgraph_global_info): Replace insns by time ans size fields.
3033 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
3034 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
3035 (ipcp_update_callgraph): Do not touch function bodies.
3036 * ipa-inline.c: Include except.h
3037 (MAX_TIME): New constant.
3038 (overall_insns): Remove
3039 (overall_size, max_benefit): New static variables.
3040 (cgraph_estimate_time_after_inlining): New function.
3041 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
3042 (cgraph_clone_inlined_nodes): Update size.
3043 (cgraph_mark_inline_edge): Update size.
3044 (cgraph_estimate_growth): Use size info.
3045 (cgraph_check_inline_limits): Check size.
3046 (cgraph_default_inline_p): Likewise.
3047 (cgraph_edge_badness): Compute badness based on benefit and size cost.
3048 (cgraph_decide_recursive_inlining): Check size.
3049 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
3051 (cgraph_decide_inlining): Likewise.
3052 (cgraph_decide_inlining_incrementally): Likewise; honor
3053 PARAM_EARLY_INLINING_INSNS.
3054 (likely_eliminated_by_inlining_p): New predicate.
3055 (estimate_function_body_sizes): New function.
3056 (compute_inline_parameters): Use it.
3057 * except.c (must_not_throw_labels): New function.
3058 * except.h (must_not_throw_labels): Declare.
3059 * tree-inline.c (init_inline_once): Kill inlining_weigths
3060 * tree-ssa-structalias.c: Avoid uninitialized warning.
3061 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
3062 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
3063 (PARAM_INLINE_CALL_COST): Remove.
3064 (PARAM_EARLY_INLINING_INSNS): New.
3066 2009-05-15 Richard Guenther <rguenther@suse.de>
3068 * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
3069 not TODO_update_ssa.
3071 2009-05-15 Richard Guenther <rguenther@suse.de>
3073 PR tree-optimization/39999
3074 * gimple.h (gimple_expr_type): Use the expression type looking
3075 through useless conversions.
3076 * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
3077 (vn_nary_op_insert_stmt): Likewise.
3078 (simplify_binary_expression): Likewise.
3080 2009-05-15 Richard Guenther <rguenther@suse.de>
3082 * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
3083 New options, enabled by default.
3084 * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
3086 * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
3087 * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
3088 * tree-ssa-structalias.c (gate_tree_pta): New function.
3089 (pass_build_alias): Use it.
3091 2009-05-15 Joseph Myers <joseph@codesourcery.com>
3093 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
3094 recurse on an invariant address if a conversion from a pointer
3095 type to a wider integer type is involved.
3097 2009-05-15 Jan Hubicka <jh@suse.cz>
3099 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
3100 * cgraph.h (struct inline_summary): New filed self_wize,
3101 size_inlining_benefit, self_time and time_inlining_benefit.
3102 (struct cgraph_global_info): Replace insns by time ans size fields.
3103 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
3104 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
3105 (ipcp_update_callgraph): Do not touch function bodies.
3106 * ipa-inline.c: Include except.h
3107 (MAX_TIME): New constant.
3108 (overall_insns): Remove
3109 (overall_size, max_benefit): New static variables.
3110 (cgraph_estimate_time_after_inlining): New function.
3111 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
3112 (cgraph_clone_inlined_nodes): Update size.
3113 (cgraph_mark_inline_edge): Update size.
3114 (cgraph_estimate_growth): Use size info.
3115 (cgraph_check_inline_limits): Check size.
3116 (cgraph_default_inline_p): Likewise.
3117 (cgraph_edge_badness): Compute badness based on benefit and size cost.
3118 (cgraph_decide_recursive_inlining): Check size.
3119 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
3121 (cgraph_decide_inlining): Likewise.
3122 (cgraph_decide_inlining_incrementally): Likewise; honor
3123 PARAM_EARLY_INLINING_INSNS.
3124 (likely_eliminated_by_inlining_p): New predicate.
3125 (estimate_function_body_sizes): New function.
3126 (compute_inline_parameters): Use it.
3127 * except.c (must_not_throw_labels): New function.
3128 * except.h (must_not_throw_labels): Declare.
3129 * tree-inline.c (init_inline_once): Kill inlining_weigths
3130 * tree-ssa-structalias.c: Avoid uninitialized warning.
3131 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
3132 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
3133 (PARAM_INLINE_CALL_COST): Remove.
3134 (PARAM_EARLY_INLINING_INSNS): New.
3135 doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
3136 (inline-call-cost): Remove.
3137 (early-inlining-insns): New.
3139 2009-05-15 Eric Botcazou <ebotcazou@adacore.com>
3141 * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use them
3143 (print_int_cst_bounds_in_octal_p): Likewise.
3144 (dbxout_type): Adjust calls to above functions. Be prepared to deal
3146 * dwarf2out.c (base_type_die): Likewise.
3147 (is_subrange_type): Delete.
3148 (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds.
3149 (modified_type_die): Call subrange_type_for_debug_p on subtypes.
3150 * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
3151 if the destination type is boolean.
3152 (build_range_check): Do not special-case subtypes.
3153 (fold_sign_changed_comparison): Likewise.
3154 (fold_unary): Likewise.
3155 * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
3156 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
3157 * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
3158 * tree.c (subrange_type_for_debug_p): New predicate based on the
3159 former is_subrange_type.
3160 * tree.h (subrange_type_for_debug_p): Declare.
3161 * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
3162 (convert_affine_scev): Remove call to above function.
3163 (chrec_convert_aggressive): Likewise.
3164 * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
3165 false for conversions involving subtypes.
3166 * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
3167 (vrp_val_min): Likewise.
3168 (needs_overflow_infinity): Likewise.
3169 (extract_range_from_unary_expr): Likewise.
3171 2009-05-15 Paolo Bonzini <bonzini@gnu.org>
3173 * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
3174 * config/frv/frv.c: Likewise.
3175 * config/s390/s390.c: Likewise.
3176 * config/sparc/sparc.h: Likewise.
3177 * config/i386/i386.h: Likewise.
3178 * config/i386/i386.c: Likewise.
3179 * config/crx/crx.c: Likewise.
3180 * config/m68hc11/m68hc11.h: Likewise.
3181 * config/iq2000/iq2000.c: Likewise.
3182 * config/mn10300/mn10300.h: Likewise.
3183 * config/mn10300/mn10300.c: Likewise.
3184 * config/m68k/m68k.c: Likewise.
3185 * config/rs6000/rs6000.c: Likewise.
3186 * config/rs6000/xcoff.h: Likewise.
3187 * config/rs6000/linux64.h: Likewise.
3188 * config/rs6000/sysv4.h: Likewise.
3189 * config/score/score3.c: Likewise.
3190 * config/score/score7.c: Likewise.
3191 * config/score/score.c: Likewise.
3192 * config/arm/arm.md: Likewise.
3193 * config/mips/mips.c: Likewise.
3194 * config/mips/mips.md: Likewise.
3195 * config/bfin/bfin.h: Likewise.
3196 * config/pa/pa.c: Likewise.
3197 * config/pa/constraints.md: Likewise.
3199 * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
3200 * config/pdp11/pdp11.c (legitimate_address_p): Delete.
3201 * config/pdp11/pdp11.h: Use memory_address_p instead.
3203 2009-05-14 Ian Lance Taylor <iant@google.com>
3205 * passes.c (finish_optimization_passes): Change i to int.
3206 * plugin.c (plugins_active_p): Change event to int.
3207 (dump_active_plugins): Likewise.
3208 * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
3210 * tree.c (tree_range_check_failed): Change c to unsigned int.
3211 (omp_clause_range_check_failed): Likewise.
3212 (build_common_builtin_nodes): Change mode to int. Add cast.
3213 * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
3214 (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
3216 * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
3217 ++ or -- with a variable of enum type.
3219 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
3222 * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
3224 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
3226 * store-motion.c: Do not include params.h
3227 * Makefile.in: Fix dependencies for various files.
3229 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
3231 * auto-inc-dec.c: Fix pass description, remove apparent
3232 accidental duplication.
3234 2009-05-14 H.J. Lu <hongjiu.lu@intel.com>
3237 * ipa-utils.h (memory_identifier_string): Moved to ...
3238 * tree.h (memory_identifier_string): Here. Add GTY(()).
3240 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
3242 * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
3243 in the former documentation of...
3244 (GO_IF_LEGITIMATE_ADDRESS): ... this.
3245 * ira-conflicts.c (get_dup_num): Use address_operand.
3246 * targhooks.c (default_legitimate_address_p): New.
3247 * targhooks.h (default_legitimate_address_p): New.
3248 * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
3250 * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
3251 * target.h (struct target): Add legitimate_address_p.
3252 * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
3253 (TARGET_INITIALIZER): Include it.
3255 * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3256 * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
3257 * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
3258 (TARGET_LEGITIMATE_ADDRESS_P): New.
3260 * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3261 (REG_OK_STRICT_P): Delete.
3262 * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
3263 (frv_legitimate_address_p_1): ... this.
3264 * config/frv/frv.c (frv_legitimate_address_p): Forward to...
3265 (frv_legitimate_address_p_1): ... the renamed old
3266 frv_legitimate_address_p.
3267 * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
3268 (TARGET_LEGITIMATE_ADDRESS_P): New.
3270 * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3271 * config/s390/s390-protos.h (legitimate_address_p): Remove.
3272 * config/s390/s390.c (legitimate_address_p): Rename to...
3273 (s390_legitimate_address_p): ... this, make static.
3274 (legitimize_address): Adjust call.
3275 (TARGET_LEGITIMATE_ADDRESS_P): New.
3276 * config/s390/constraints.md ("e"): Call strict_memory_address_p.
3278 * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3279 * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
3280 * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
3281 (TARGET_LEGITIMATE_ADDRESS_P): New.
3283 * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3284 * config/spu/spu-protos.h (spu_legitimate_address): Remove.
3285 * config/spu/spu.c (spu_legitimate_address): Rename to...
3286 (spu_legitimate_address_p): ... this, make static.
3287 (TARGET_LEGITIMATE_ADDRESS_P): New.
3289 * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3290 * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
3291 * config/sparc/sparc.c (legitimate_address_p): Rename to...
3292 (sparc_legitimate_address_p): ... this, make static and return bool.
3293 (legitimize_address): Adjust call.
3294 (TARGET_LEGITIMATE_ADDRESS_P): New.
3296 * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3297 * config/i386/i386-protos.h (legitimate_address_p): Remove.
3298 * config/i386/i386.c (legitimate_address_p): Rename to...
3299 (ix86_legitimate_address_p): ... this, make static.
3300 (constant_address_p): Move after it, adjust call.
3301 (TARGET_LEGITIMATE_ADDRESS_P): New.
3303 * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3304 * config/avr/avr-protos.h (legitimate_address_p): Remove.
3305 * config/avr/avr.c (legitimate_address_p): Rename to...
3306 (avr_legitimate_address_p): ... this, make static.
3307 (legitimize_address): Adjust call.
3308 (TARGET_LEGITIMATE_ADDRESS_P): New.
3310 * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3311 * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
3312 * config/crx/crx.c (crx_legitimate_address_p): Make static.
3313 (TARGET_LEGITIMATE_ADDRESS_P): New.
3315 * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3316 * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
3317 * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
3318 (TARGET_LEGITIMATE_ADDRESS_P): New.
3320 * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3321 * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
3323 * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
3325 (TARGET_LEGITIMATE_ADDRESS_P): New.
3327 * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3328 * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
3330 * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
3332 (m68hc11_legitimate_address_p): ... this, make static.
3333 (go_if_legitimate_address_internal): Rename to...
3334 (m68hc11_legitimate_address_p_1): ... this.
3335 (legitimize_address): Adjust call.
3336 (TARGET_LEGITIMATE_ADDRESS_P): New.
3338 * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3339 * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
3340 * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
3341 (TARGET_LEGITIMATE_ADDRESS_P): New.
3343 * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3344 * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
3345 * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
3346 (mn10300_legitimate_address_p): ... this, make static.
3347 (TARGET_LEGITIMATE_ADDRESS_P): New.
3349 * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3350 * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
3351 * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
3352 (TARGET_LEGITIMATE_ADDRESS_P): New.
3354 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3355 (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
3356 (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
3357 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3358 * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
3359 * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
3360 (rs6000_legitimate_address_p): ... this, make static.
3361 (TARGET_LEGITIMATE_ADDRESS_P): New.
3362 (REG_MODE_OK_FOR_BASE_P): Delete.
3363 (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
3365 * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3366 * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
3368 * config/picochip/picochip.c (picochip_legitimate_address_p): Make
3369 static, adjust types.
3370 (TARGET_LEGITIMATE_ADDRESS_P): New.
3372 * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3373 * config/score/score.c (score_address_p): Rename to...
3374 (score_legitimate_address_p): ... this.
3375 (TARGET_LEGITIMATE_ADDRESS_P): New.
3376 * config/score/score3.c (score3_address_p): Rename to...
3377 (score3_legitimate_address_p): ... this.
3378 * config/score/score7.c (score7_a