1 2011-04-19 Xinliang David Li <davidxl@google.com>
3 * ipa-cp.c (ipcp_update_profiling): asserting
4 scale_completement is not negative.
6 2011-04-19 Jakub Jelinek <jakub@redhat.com>
9 * config/i386/i386.md (movstrict<mode>): FAIL if operands[0]
10 is a SUBREG with non-MODE_INT mode inside of it.
12 2011-04-19 Martin Jambor <mjambor@suse.cz>
14 * ipa-cp.c (ipcp_process_devirtualization_opportunities): Devirtualize
15 also according to actual contants.
16 * gimple-fold.c (gimple_extract_devirt_binfo_from_cst): New function.
17 (gimple_fold_call): Use it.
18 * gimple.h (gimple_extract_devirt_binfo_from_cst): Declare.
20 2011-04-19 Martin Jambor <mjambor@suse.cz>
22 * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Return false for scalar
23 non-pointer assignments.
25 2011-04-19 Martin Jambor <mjambor@suse.cz>
27 * ipa-cp.c (ipcp_process_devirtualization_opportunities): Take into
28 account anc_offset and otr_type from the indirect edge info.
29 * ipa-prop.c (get_ancestor_addr_info): New function.
30 (compute_complex_ancestor_jump_func): Assignment analysis moved to
31 get_ancestor_addr_info, call it.
32 (ipa_note_param_call): Do not initialize information about polymorphic
33 calls, return the indirect call graph edge. Remove the last
34 parameter, adjust all callers.
35 (ipa_analyze_virtual_call_uses): Process also calls to ancestors of
36 parameters. Initialize polymorphic information in the indirect edge.
38 2011-04-19 Eric Botcazou <ebotcazou@adacore.com>
41 * gimple.c (gimple_types_compatible_p_1) <ENUMERAL_TYPE>: Do not merge
42 the types if they have different enumeration identifiers.
44 2011-04-19 Jan Hubicka <jh@suse.cz>
46 * cgraph.h (cgraph_optimize_for_size_p): Declare.
47 * ipa-cp.c (ipcp_insert_stage): Use cgraph_optimize_for_size_p.
48 * predict.c (cgraph_optimize_for_size_p): Break out from ...
49 (optimize_function_for_size_p) ... here.
51 2011-04-19 Richard Guenther <rguenther@suse.de>
54 * tree.c (free_lang_data): Do not reset the decl-assembler-name
57 2011-04-19 Eric Botcazou <ebotcazou@adacore.com>
59 * tree-inline.c (expand_call_inline): Do not issue a -Winline warning
60 if DECL_NO_INLINE_WARNING_P is set on the function.
62 2011-04-19 Bernd Schmidt <bernds@codesourcery.com>
65 * reload1.c (inc_for_reload): Return void. All callers changed.
66 (emit_input_reload_insns): Don't try to delete previous output
67 reloads to a register, or record spill_reg_store for autoincs.
69 2011-04-19 Basile Starynkevitch <basile@starynkevitch.net>
71 * gengtype.h: Updated copyright year.
72 (struct input_file_st): Add inpisplugin field.
73 (type_fileloc): New function.
75 (write_typed_struct_alloc_def): Add gcc_assert.
76 (write_typed_alloc_defns): Ditto. Don't output for plugin files.
77 (write_typed_alloc_defns): Don't output for plugin files.
78 (input_file_by_name): Clear inpisplugin field.
79 (main): Set inpisplugin field for plugin files.
81 2011-04-19 Nicola Pero <nicola.pero@meta-innovation.com>
83 * gengtype-state.c (string_eq): New.
84 (read_state): Use string_eq instead of strcmp when creating the
87 2011-04-19 Wei Guozhi <carrot@google.com>
90 * config/arm/arm-protos.h (thumb1_legitimate_address_p): New prototype.
91 * config/arm/arm.c (thumb1_legitimate_address_p): Remove the static
93 * config/arm/constraints.md (Uu): New constraint.
94 * config/arm/arm.md (*arm_movqi_insn): Compute attr "length".
96 2011-04-19 Tristan Gingold <gingold@adacore.com>
98 * config.gcc (-*-*-*vms): Added.
99 (alpha64-dec-*vms*,alpha*-dec-*vms*, ia64-hp-*vms*): Common
101 * config/vms/vms-ld.c: New file.
102 * config/vms/vms-ar.c: New file.
103 * config/vms/t-vmsnative: New file.
105 2011-04-18 Xinliang David Li <davidxl@google.com>
107 * final.c (dump_basic_block_info): Use ASM_COMMENT_START.
109 2011-04-18 Jakub Jelinek <jakub@redhat.com>
112 * gimple-fold.c (gimple_get_virt_method_for_binfo): Return NULL
113 if TREE_TYPE (v) is non-NULL.
115 * gimple-fold.c (gimple_get_virt_method_for_binfo): Renamed from
116 gimple_get_virt_mehtod_for_binfo.
117 * gimple.h (gimple_get_virt_method_for_binfo): Likewise.
118 * ipa-cp.c (ipcp_process_devirtualization_opportunities): Adjust
120 * ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
122 2011-04-18 Michael Matz <matz@suse.de>
123 Steve Ellcey <sje@cup.hp.com>
125 * expr.c (expand_expr_real_2) <CASE_CONVERT>: If OP0 is a constant,
126 use its mode as source mode if it isn't VOIDmode.
128 2011-04-18 Dennis, CHENG Renquan <crquan@fedoraproject.org>
130 * doc/passes.texi: Fill crossref nodes.
132 2011-04-18 Jim Meyering <meyering@redhat.com>
134 Fix doubled-word typos in comments and strings
135 * config/alpha/vms-unwind.h: s/for for/for/
136 * config/arm/unwind-arm.h: Likewise.
137 * config/microblaze/microblaze.c: Likewise.
138 * config/sh/constraints.md: s/in in/in/
139 * tree-cfg.c (verify_types_in_gimple_reference): Likewise.
141 2011-04-18 Uros Bizjak <ubizjak@gmail.com>
143 * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): Remove.
144 (AVX_FLOAT_MODE_P): Ditto.
145 (AVX128_VEC_FLOAT_MODE_P): Ditto.
146 (AVX256_VEC_FLOAT_MODE_P): Ditto.
147 (AVX_VEC_FLOAT_MODE_P): Ditto.
148 * config/i386/i386.md (UNSPEC_MASKLOAD): Remove.
149 (UNSPEC_MASKSTORE): Ditto.
150 * config/i386/sse.md (<sse>_movmsk<ssemodesuffix><avxmodesuffix>):
151 Merge from <sse>_movmsk<ssemodesuffix> and
152 avx_movmsk<ssemodesuffix>256. Use VF mode iterator.
153 (*sse2_maskmovdqu): Merge with *sse2_maskmovdqu_rex64. Use P mode
155 (avx_maskload<ssemodesuffix><avxmodesuffix>): New expander.
156 (avx_maskstore<ssemodesuffix><avxmodesuffix>): Ditto.
157 (*avx_maskmov<ssemodesuffix><avxmodesuffix>): New insn.
159 2011-04-18 Jan Hubicka <jh@suse.cz>
161 * ipa-inline.c (inline_small_functions): Fix pasto in previous patch.
163 * ipa-inline.c: Fix comment typos; do not inline gt-ipa-inline.h
164 (want_inline_function_called_once_p): Break out the logic from
166 (edge_badness): Ensure that profile is not misupdated.
167 (lookup_recursive_calls): Prioritize by call frequencies.
168 (inline_small_functions): Move program size estimates here;
169 actually process whole queue even when unit growth has been
170 met. (to properly compute inline_failed reasons and for the
171 case unit size decrease.) Revisit comments on recursive inlining.
172 (ipa_inline): Remove unit summary code; first inline hot calls
173 of functions called once, cold calls next.
174 (order, nnodes): Remove unused variables.
175 * Makefile.in (ipa-inline.o): No longer depent on ggc files.
176 (GTFILES): Remove ipa-inline.c
177 * sel-sched.c (fill_insns): Silence uninitialized var warning.
179 2011-04-18 Eric Botcazou <ebotcazou@adacore.com>
181 * dwarf2out.c (is_redundant_typedef): Add 'inline' to prototype.
183 2011-04-18 Jie Zhang <jie@codesourcery.com>
184 Richard Earnshaw <rearnsha@arm.com>
186 * arm.c (neon_builtin_type_bits): Remove.
187 (typedef enum neon_builtin_mode): New.
188 (T_MAX): Don't define.
189 (typedef enum neon_builtin_datum): Remove bits, codes[],
190 num_vars and base_fcode. Add mode, code and fcode.
191 (VAR1, VAR2, VAR3, VAR4, VAR5, VAR6, VAR7, VAR8, VAR9
192 VAR10): Change accordingly.
193 (neon_builtin_data[]): Change accordingly
194 (arm_init_neon_builtins): Change accordingly.
195 (neon_builtin_compare): Remove.
196 (locate_neon_builtin_icode): Remove.
197 (arm_expand_neon_builtin): Change accordingly.
199 * arm.h (enum arm_builtins): Move to ...
200 * arm.c (enum arm_builtins): ... here; and rearrange builtin code.
202 * arm.c (arm_builtin_decl): Declare.
203 (TARGET_BUILTIN_DECL): Define.
204 (enum arm_builtins): Correct ARM_BUILTIN_MAX.
205 (arm_builtin_decls[]): New.
206 (arm_init_neon_builtins): Store builtin declarations in
208 (arm_init_tls_builtins): Likewise.
209 (arm_init_iwmmxt_builtins): Likewise. Refactor initialization code.
210 (arm_builtin_decl): New.
212 2011-04-18 Richard Guenther <rguenther@suse.de>
214 * tree.c (upper_bound_in_type): Build properly canonicalized
216 (lower_bound_in_type): Likewise.
218 2011-04-18 Richard Guenther <rguenther@suse.de>
220 * gimple.h (gimple_call_addr_fndecl): New function.
221 (gimple_call_fndecl): Use it.
222 * gimple-fold.c (gimple_fold_call): Fold away OBJ_TYPE_REFs
224 * tree-ssa-ccp.c (ccp_fold_stmt): Remove OBJ_TYPE_REF folding.
225 * tree-ssa-pre.c (eliminate): Also simplify indirect OBJ_TYPE_REFs.
227 2011-04-18 Richard Guenther <rguenther@suse.de>
230 * tree.c (build_string): STRING_CST is now derived from tree_typed.
232 2011-04-18 Eric Botcazou <ebotcazou@adacore.com>
235 * cfgexpand.c (expand_debug_expr) <VAR_DECL>: Return NULL for a
236 DECL_IN_CONSTANT_POOL without RTL.
238 2011-04-18 Ulrich Weigand <ulrich.weigand@linaro.org>
239 Ira Rosen <ira.rosen@linaro.org>
242 * config/arm/arm.c (neon_emit_pair_result_insn): Swap arguments
243 to match neon_vzip/vuzp/vtrn_internal.
244 * config/arm/neon.md (neon_vtrn<mode>_internal): Make both
245 outputs explicitly dependent on both inputs.
246 (neon_vzip<mode>_internal, neon_vuzp<mode>_internal): Likewise.
248 2011-04-18 Jakub Jelinek <jakub@redhat.com>
250 PR tree-optimization/48616
251 * tree-vect-stmts.c (vectorizable_shift): If SLP, determine
252 whether the shift is by scalar or vector based on whether all SLP
253 scalar stmts have the same rhs.
255 2011-04-17 Chung-Lin Tang <cltang@codesourcery.com>
257 * config/arm/arm.c (neon_struct_mem_operand): Support POST_INC/PRE_DEC
260 2011-04-17 Richard Sandiford <rdsandiford@googlemail.com>
262 * config/mips/mips.c (mips_cfun_call_saved_reg_p): Handle global
265 2011-04-17 Jan Hubicka <jh@suse.cz>
267 * cgrpah.h (struct cgraph_node): Remove finalized_by_frontend.
268 * cgrpahunit.c (cgraph_finalize_function): Do not set
269 finalized_by_frontend.
270 * lto-cgraph.c (lto_output_node, input_overwrite_node): Do not stream
271 finalized_by_frontend.
273 2011-04-17 Jan Hubicka <jh@suse.cz>
275 * cgraph.c (cgraph_clone_node): Do not handle vtable_method
276 * cgraph.h (struct cgraph_local_info): Drop vtable_method.
277 * cgraphunit.c (cgraph_copy_node_for_versioning): Drop vtable_method.
278 * lto-cgraph.c (lto_output_node, input_overwrite_node): Drop vtable
280 * gimple-fold.c (can_refer_decl_in_current_unit_p): Mention PR20991 in
282 * varasm.c (mark_decl_referenced): Drop vtable_method handling code.
284 2011-04-17 Eric Botcazou <ebotcazou@adacore.com>
287 * lto-cgraph.c (merge_profile_summaries): Check that lto_file_data
288 is non-null before accessing it.
289 (input_cgraph): Remove trailing spaces.
291 2011-04-17 Revital Eres <revital.eres@linaro.org>
293 * params.def (sms-min-sc): New param flag.
294 * modulo-sched.c (sms_schedule): Use it.
295 * doc/invoke.texi (sms-min-sc): Document it.
297 2011-04-17 Jan Hubicka <jh@suse.cz>
299 * lto-symtab.c (lto_cgraph_replace_node): When call statement is
300 present, also set gimple_call_set_cannot_inline.
301 * ipa-inline.c: Update toplevel comment.
303 (cgraph_clone_inlined_nodes): Fix linebreaks.
304 (cgraph_check_inline_limits): Restructure to ...
305 (caller_growth_limits): ... this one; be more tolerant
306 on growth in nested inline chains; add explanatory comment;
307 fix stack accounting thinko introduced by previous patch.
308 (cgraph_default_inline_p): Remove.
309 (report_inline_failed_reason): New function.
310 (can_inline_edge_p): New function.
311 (can_early_inline_edge_p): New function.
312 (leaf_node_p): Move upwards in file.
313 (want_early_inline_function_p): New function.
314 (want_inline_small_function_p): New function.
315 (want_inline_self_recursive_call_p): New function.
316 (cgraph_edge_badness): Rename to ...
317 (edge_badness) ... this one; fix linebreaks.
318 (update_edge_key): Update call of edge_baddness; add
319 detailed dump about queue updates.
320 (update_caller_keys): Use can_inline_edge_p and
321 want_inline_small_function_p.
322 (cgraph_decide_recursive_inlining): Rename to...
323 (recursive_inlining): Use can_inline_edge_p and
324 want_inline_self_recursive_call_p; simplify and remove no longer
326 (cgraph_set_inline_failed): Remove.
327 (add_new_edges_to_heap): Use can_inline_edge_p and
328 want_inline_small_function_p.
329 (cgraph_decide_inlining_of_small_functions): Rename to ...
330 (inline_small_functions): ... this one; cleanup; use
331 can/want predicates; cleanup debug ouput; work edges till fibheap
332 is exhausted and do not stop once unit growth is reached; remove
333 later loop processing remaining edges.
334 (cgraph_flatten): Rename to ...
335 (flatten_function): ... this one; use can_inline_edge_p
336 and can_early_inline_edge_p predicates.
337 (cgraph_decide_inlining): Rename to ...
338 (ipa_inline): ... this one; remove unreachable nodes before
339 inlining functions called once; simplify the pass.
340 (cgraph_perform_always_inlining): Rename to ...
341 (inline_always_inline_functions): ... this one; use
342 DECL_DISREGARD_INLINE_LIMITS; use can_inline_edge_p predicate.
343 (cgraph_decide_inlining_incrementally): Rename to ...
344 (early_inline_small_functions): ... this one; simplify
345 using new predicates; cleanup; make dumps prettier.
346 (cgraph_early_inlining): Rename to ...
347 (early_inliner): newer inline regular functions into always-inlines;
348 fix updating of call stmt summaries.
349 (pass_early_inline): Update for new names.
350 (inline_transform): Fix formating.
351 (gate_cgraph_decide_inlining): Rename to ...
352 (pass_ipa_inline): ... this one.
353 * ipa-inline.h (inline_summary): Remove disregard_inline_limits.
354 * ipa-inline-analysis.c (dump_inline_summary): Update.
355 (compute_inline_parameters): Do not compute disregard_inline_limits;
356 look for mismatching arguments.
357 (estimate_growth): Fix handlig of non-trivial self recursion.
358 (inline_read_summary): Do not read info->disregard_inline_limits.
359 (inline_write_summary): Do not write info->disregard_inline_limits.
360 * tree-inline.c (inline_forbidden_into_p, tree_can_inline_p): Remove
361 and move all checks into can_inline_edge_p predicate; re-enable code
362 comparing optimization levels.
363 (expand_call_inline): Do not test inline_forbidden_into_p.
364 * Makefile.in (ipa-inline.o): Update arguments.
366 2011-04-17 Revital Eres <revital.eres@linaro.org>
368 * ddg.c (free_ddg_all_sccs): Free sccs field in struct ddg_all_sccs.
370 2011-04-17 Revital Eres <revital.eres@linaro.org>
372 * modulo-sched.c (sms_schedule): Avoid unfreed memory when SMS fails.
374 2011-04-17 Michael Matz <matz@suse.de>
376 PR tree-optimization/48622
378 * ipa-inline-analysis.c (inline_read_summary): Read size/time
379 in same order as they're written.
381 2011-04-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
383 * config/pa/predicates.md: Reorganize and simplify predicates.
384 Eliminate duplicate code checks.
385 (arith_operand): Rename to arith14_operand
386 (reg_or_ior_operand): Rename to reg_or_cint_ior_operand.
387 * config/pa/pa.md: Use renamed operands.
388 * config/pa/pa-protos.h (symbolic_operand): Delete declaration.
389 (tls_symbolic_operand, function_label_operand, lhs_lshift_cint_operand,
390 arith11_operand, adddi3_operand, indexed_memory_operand,
391 symbolic_memory_operand, int11_operand, reg_or_cint_move_operand,
392 arith5_operand, uint5_operand, pic_label_operand, plus_xor_ior_operator,
393 borx_reg_operand, shadd_operand, arith_operand, read_only_operand,
394 move_dest_operand, move_src_operand, prefetch_cc_operand,
395 prefetch_nocc_operand, and_operand, ior_operand, arith32_operand,
396 uint32_operand, reg_before_reload_operand, reg_or_0_operand,
397 reg_or_0_or_nonsymb_mem_operand, pre_cint_operand, post_cint_operand,
398 div_operand, int5_operand, movb_comparison_operator,
399 ireg_or_int5_operand, call_operand_address, ior_operand, fp_reg_operand,
400 arith_double_operand, ireg_operand, lhs_lshift_operand,
401 pc_or_label_operand, non_hard_reg_operand, eq_neq_comparison_operator,
402 integer_store_memory_operand): Likewise.
403 * config/pa/pa.c (adddi3_operand): Move to predicates.md.
404 (integer_store_memory_operand, read_only_operand,
405 function_label_operand, borx_reg_operand,
406 non_hard_reg_operand): Likewise.
407 (eq_neq_comparison_operator): Delete unused operator.
408 (legitimize_pic_address): Use VOIDmode for mode argument in calls to
409 function_label_operand.
410 (emit_move_sequence): Likewise.
412 2011-04-16 Uros Bizjak <ubizjak@gmail.com>
414 * config/i386/sse.md (sseunpackmode): New mode attribute.
415 (ssepackmode): Ditto.
416 (vec_pack_trunc_<mode>): Macroize expander from
417 vec_pack_trunc_{v8hi,v4si,v2di} using VI248_128 mode iterator.
418 (vec_unpacks_lo_<mode>): Macroize expander from
419 vec_unpacks_lo_{v16qi,v8hi,v4si} using VI124_128 mode iterator.
420 (vec_unpacks_hi_<mode>): Macroize expander from
421 vec_unpacks_hi_{v16qi,v8hi,v4si} using VI124_128 mode iterator.
422 (vec_unpacku_lo_<mode>): Macroize expander from
423 vec_unpacku_lo_{v16qi,v8hi,v4si} using VI124_128 mode iterator.
424 (vec_unpacku_hi_<mode>): Macroize expander from
425 vec_unpacks_hi_{v16qi,v8hi,v4si} using VI124_128 mode iterator.
426 * config/i386/i386.c (ix86_expand_sse_unpack): Merge with
427 ix86_expand_sse4_unpack.
428 * config/i386/i386-protos.h (ix86_expand_sse4_unpack): Remove.
430 2011-04-16 Jan Hubicka <jh@suse.cz>
432 * cgraphbuild.c: Include ipa-inline.h.
433 (reset_inline_failed): Use initialize_inline_failed.
434 * cgraph.c: Include ipa-inline.h.
435 (cgraph_create_node_1): Do not initialize estimated_growth.
436 (initialize_inline_failed): More to ipa-inline-analysis.c
437 (dump_cgraph_node): Do not dump inline flags.
438 * cgraph.h (cgraph_local_info): Remove inlineable, versionable
439 and disregard_inline_limits flags.
440 (cgrpah_global_info): Remove estimated_stack_size, stack_frame_offset,
441 time, size, estimated_growth.
442 * ipa-cp.c (ipcp_versionable_function_p, ipcp_generate_summary):
444 * cgraphunit.c (cgraph_decide_is_function_needed): Use
445 DECL_DISREGARD_INLINE_LIMITS.
446 (cgraph_analyze_function): Do not initialize
447 node->local.disregard_inline_limits.
448 * lto-cgraph.c (lto_output_node, input_overwrite_node): Do not stream
449 inlinable, versionable and disregard_inline_limits.
450 * ipa-inline.c (cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
451 cgraph_check_inline_limits, cgraph_default_inline_p,
452 cgraph_edge_badness, update_caller_keys, update_callee_keys,
453 add_new_edges_to_heap): Update.
454 (cgraph_decide_inlining_of_small_function): Update; set
455 CIF_FUNCTION_NOT_INLINABLE for uninlinable functions.
456 (cgraph_decide_inlining, cgraph_edge_early_inlinable_p,
457 cgraph_decide_inlining_incrementally): Update.
458 * ipa-inline.h (inline_summary): Add inlinable, versionable,
459 disregard_inline_limits, estimated_stack_size, stack_frame_offset,
460 time, size and estimated_growth parameters.
461 (estimate_edge_growth): Update.
462 (initialize_inline_failed): Declare.
463 * ipa-split.c: Include ipa-inline.h
464 (execute_split_functions): Update.
465 * ipa.c (cgraph_postorder): Use DECL_DISREGARD_INLINE_LIMITS.
466 (cgraph_remove_unreachable_nodes): Do not clear inlinable flag.
467 (record_cdtor_fn): Use DECL_DISREGARD_INLINE_LIMITS.
468 * ipa-inline-analysis.c (inline_node_removal_hook): Update; set
469 estimated_growth to INT_MIN.
470 (inline_node_duplication_hook): Likewise.
471 (dump_inline_summary): Dump new fields.
472 (compute_inline_parameters): Update.
473 (estimate_edge_time, estimate_time_after_inlining,
474 estimate_size_after_inlining, estimate_growth, inline_read_summary,
475 inline_write_summary):
476 (initialize_inline_failed): Move here from cgraph.c.
477 * tree-sra.c: Include ipa-inline.h.
478 (ipa_sra_preliminary_function_checks): Update.
479 * Makefile.in (cgraph.o, cgraphbuild.o): Add dependency on
482 2011-04-16 Uros Bizjak <ubizjak@gmail.com>
484 * config/i386/sse.md (V16): New mode iterator.
486 (AVXMODEQI, AVXMODEDI): Remove.
487 (sse2, sse3): New mode attribute.
488 (mov<mode>): Use V16 mode iterator.
489 (*mov<mode>_internal): Merge with *avx_mov<mode>_internal.
490 (push<mode>1): Use V16 mode iterator.
491 (movmisalign<mode>): Ditto.
492 (<sse>_movu<ssemodesuffix><avxmodesuffix>): Merge from
493 <sse>_movu<ssemodesuffix> and avx_movu<ssemodesuffix><avxmodesuffix>.
494 (*<sse>_movu<ssemodesuffix><avxmodesuffix>): Merge from
495 *<sse>_movu<ssemodesuffix> and *avx_movu<ssemodesuffix><avxmodesuffix>.
496 (<sse2>_movdqu<avxmodesuffix>): Merge from sse2_movdqu and
497 avx_movdqu<avxmodesuffix>.
498 (*<sse2>_movdqu<avxmodesuffix>): Merge from *sse2_movdqu and
499 *avx_movdqu<avxmodesuffix>.
500 (<sse3>_lddqu<avxmodesuffix>) Merge from sse3_lddqu and
501 avx_lddqu<avxmodesuffix>.
502 (<sse>_movnt<mode>): Merge with avx_movnt<AVXMODEF2P:mode>.
503 (<sse2>_movnt<mode>): Merge from sse2_movntv2di and
504 avx_movnt<AVXMODEDI:mode>.
505 * config/i386/i386.c (ix86_expand_vector_move_misalign): Update for
506 renamed sse_movups, sse2_movupd and sse2_movdqu patterns.
508 2011-04-16 Bernd Schmidt <bernds@codesourcery.com>
511 * haifa-sched.c (prune_ready_list, schedule_block): Use
512 sched_pressure_p rather than flag_sched_pressure.
514 2011-04-15 Pat Haugen <pthaugen@us.ibm.com>
516 * config/rs6000/rs6000.c (call_ABI_of_interest): Call
517 cgraph_get_node instead of cgraph_get_create_node.
519 2011-04-15 Jakub Jelinek <jakub@redhat.com>
521 * cfgexpand.c (expand_debug_expr): Use
522 simplify_gen_{unary,binary,ternary} instead of gen_rtx_*.
524 2011-04-15 Michael Matz <matz@suse.de>
526 * tree.h (ALLOCA_FOR_VAR_P): Rename to CALL_ALLOCA_FOR_VAR_P.
527 * builtins.c (expand_builtin): Use CALL_ALLOCA_FOR_VAR_P.
528 * function.c (gimplify_parameters): Ditto.
529 * gimplify.c (gimplify_vla_decl): Ditto.
531 * gimple.h (enum gf_mask): Add GF_CALL_ALLOCA_FOR_VAR.
532 (gimple_call_set_alloca_for_var): New inline function.
533 (gimple_call_alloca_for_var_p): Ditto.
534 * gimple.c (gimple_build_call_from_tree): Remember
535 CALL_ALLOCA_FOR_VAR_P state.
536 * cfgexpand.c (expand_call_stmt): Restore CALL_ALLOCA_FOR_VAR_P state.
538 * tree-inline.c (inline_forbidden_p_stmt): Don't reject alloca
539 calls if they were for VLA objects.
541 2011-04-15 Martin Jambor <mjambor@suse.cz>
543 * ipa-prop.c (ipa_analyze_virtual_call_uses): Remove handling
546 2011-04-15 Martin Jambor <mjambor@suse.cz>
549 * tree-emutls.c (lower_emutls_function_body): Call
550 cgraph_get_create_node instead of cgraph_get_node. Do not assert the
553 2011-04-15 Nicola Pero <nicola.pero@meta-innovation.com>
555 * c-decl.c (detect_field_duplicates): Call
556 objc_detect_field_duplicates instead of objc_get_interface_ivars.
558 2011-04-15 Nathan Froyd <froydnj@codesourcery.com>
560 * gimple.h (gimple_asm_clobbers_memory_p): Declare.
561 * gimple.c (gimple_asm_clobbers_memory_p): Define.
562 * ipa-pure-const.c (check_stmt): Call it.
563 * tree-ssa-operands.c (get_asm_expr_operands): Likewise.
565 2011-04-15 Richard Guenther <rguenther@suse.de>
567 PR tree-optimization/48290
568 * tree-ssa-copy.c (copy_prop_visit_phi_node): Propagate constants.
569 Properly decide inhibiting propagation based on the valueized
570 operand. Do loop-closed SSA form preserving here ...
571 (init_copy_prop): ... not here.
573 2011-04-15 H.J. Lu <hongjiu.lu@intel.com>
576 * config/i386/sse.md (*ieee_smin<mode>3): Switch mnemonics.
577 (*ieee_smax<mode>3): Likewise.
579 2011-04-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
581 * config/s390/s390.md (popcountdi2, popcountsi2, popcounthi2):
582 Replace match_operand with match_dup for the third operand in
585 2011-04-15 Maxim Kuvyrkov <maxim@codesourcery.com>
587 * combine.c (subst, combine_simlify_rtx): Add new argument, use it
588 to track processing of conditionals. Update all callers.
589 (try_combine, simplify_if_then_else): Update.
591 2011-04-15 Maxim Kuvyrkov <maxim@codesourcery.com>
593 * config/m68k/m68k.c (m68k_sched_variable_issue): Handle
596 2011-04-15 Georg-Johann Lay <avr@gjlay.de>
598 * config/avr/avr.md ("rotl<mode>3",mode=HIDI): Use match_dup
599 instead of match_operand for operand 3.
601 2011-04-15 Richard Sandiford <richard.sandiford@linaro.org>
603 * recog.h (insn_operand_data): Add an "allows_mem" field.
604 * genoutput.c (output_operand_data): Initialize it.
605 * optabs.c (maybe_legitimize_operand_same_code): New function.
606 (maybe_legitimize_operand): Use it when matching the original
609 2011-04-15 Eric Botcazou <ebotcazou@adacore.com>
611 * gimplify.c: Fix issues in comments throughout.
612 (voidify_wrapper_expr): Fix long line.
613 (build_stack_save_restore): Likewise.
614 (gimplify_loop_expr): Likewise.
615 (gimplify_compound_lval): Likewise.
616 (gimplify_init_ctor_eval): Likewise.
617 (gimplify_modify_expr_rhs): Likewise.
618 (omp_notice_threadprivate_variable): Likewise.
620 2011-04-15 Eric Botcazou <ebotcazou@adacore.com>
622 * cfgexpand.c (expand_call_stmt): Convert the function type to the
623 original one if this is not a builtin function.
625 2011-04-14 Jakub Jelinek <jakub@redhat.com>
628 * config/i386/sse.md (sse4_1_insertps): If operands[2] is a MEM,
629 offset it as needed based on top 2 bits in operands[3], change
630 MEM mode to SFmode and mask those 2 bits away from operands[3].
632 2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
634 * c-parser.c (c_parser_objc_protocol_definition): Updated for
635 change from objc_declare_protocols() to objc_declare_protocol().
637 2011-04-14 Uros Bizjak <ubizjak@gmail.com>
639 * config/i386/sse.md (sse4_1): New mode attribute.
640 (<sse4_1>_blend<ssemodesuffix><avxmodesuffix>): Macroize from
641 avx_blend<ssemodesuffix><avxmodesuffix> and
642 sse4_1_blend<ssemodesuffix> using VF mode iterator.
643 (<sse4_1>_blendv<ssemodesuffix><avxmodesuffix>): Macroize from
644 avx_blendv<ssemodesuffix><avxmodesuffix> and
645 sse4_1_blendv<ssemodesuffix> using VF mode iterator.
646 (<sse4_1>_dp<ssemodesuffix><avxmodesuffix>): Macroize from
647 avx_dp<ssemodesuffix><avxmodesuffix> and
648 sse4_1_dp<ssemodesuffix> using VF mode iterator.
649 (sse4_1_mpsadbw): Merge with *avx_mpsadbw.
650 (sse4_1_packusdw): Merge with *avx_packusdw.
651 (sse4_1_pblendvb): Merge with *avx_pblendvb.
652 (sse4_1_pblendw): Merge with *avx_pblendw.
653 (avx_vtest<ssemodesuffix><avxmodesuffix>): Use VF mode iterator.
654 (<sse4_1>_round<ssemodesuffix><avxmodesuffix>): Macroize from
655 avx_round<ssemodesuffix>256 and sse4_1_round<ssemodesuffix> using
657 (sse4_1_round<ssescalarmodesuffix>): Merge with
658 *avx_round<ssescalarmodesuffix>.
659 (aesenc): Merge with *avx_aesenc.
660 (aesenclast): Merge with *avx_aesenclast.
661 (aesdec): Merge with *avx_aesdec.
662 (aesdeclast): Merge with *avx_aesdeclast.
663 (pclmulqdq): Merge with *pclmulqdq.
664 * config/i386/predicates.md (reg_not_xmm0_operand_maybe_avx):
666 (nonimm_not_xmm0_operand_maybe_avx): Ditto.
668 2011-04-14 H.J. Lu <hongjiu.lu@intel.com>
671 * cfgexpand.c (get_decl_align_unit): Renamed to ...
672 (align_local_variable): This. Update DECL_ALIGN.
673 (add_stack_var): Updated.
674 (expand_one_stack_var): Likewise.
676 2011-04-14 Richard Guenther <rguenther@suse.de>
678 * tree-ssa-dse.c (struct dse_global_data, struct dse_block_local_data):
680 (dse_initialize_block_local_data, dse_leave_block,
681 record_voperand_set, get_stmt_uid): Likewise.
682 (dse_possible_dead_store_p): Allow any kind of killing stmt.
683 (dse_optimize_stmt): Remove voperand set handling code.
684 Simplify and improve to handle any kind of killing stmt.
685 (dse_record_phi): Remove.
686 (dse_enter_block): Simplify.
687 (tree_ssa_dse): Likewise.
688 * tree-ssa-alias.c (stmt_kills_ref_p_1): Handle some builtins.
690 2011-04-14 Jan Hubicka <jh@suse.cz>
692 * cgraph.c (dump_cgraph_node): Do not dump inline summaries.
693 * cgraph.h (struct inline_summary): Move to ipa-inline.h
694 (cgraph_local_info): Remove inline_summary.
695 * ipa-cp.c: Include ipa-inline.h.
696 (ipcp_cloning_candidate_p, ipcp_estimate_growth,
697 ipcp_estimate_cloning_cost, ipcp_insert_stage): Use inline_summary
699 * lto-cgraph.c (lto_output_node): Do not stream inline summary.
700 (input_overwrite_node): Do not set inline summary.
701 (input_node): Do not stream inline summary.
702 * ipa-inline.c (cgraph_decide_inlining): Dump inline summaries.
703 (cgraph_decide_inlining_incrementally): Do not try to estimate overall
704 growth; we do not have inline parameters computed for that anyway.
705 (cgraph_early_inlining): After inlining compute call_stmt_sizes.
706 * ipa-inline.h (struct inline_summary): Move here from ipa-inline.h
707 (inline_summary_t): New type and VECtor.
708 (debug_inline_summary, dump_inline_summaries): Declare.
709 (inline_summary): Use VOCtor.
710 (estimate_edge_growth): Kill hack computing call stmt size directly.
711 * lto-section-in.c (lto_section_name): Add inline section.
712 * ipa-inline-analysis.c: Include lto-streamer.h
713 (node_removal_hook_holder, node_duplication_hook_holder): New holders
714 (inline_node_removal_hook, inline_node_duplication_hook): New functions.
715 (inline_summary_vec): Define.
716 (inline_summary_alloc, dump_inline_summary, debug_inline_summary,
717 dump_inline_summaries): New functions.
718 (estimate_function_body_sizes): Properly compute size/time of outgoing
720 (compute_inline_parameters): Alloc inline_summary; do not compute
721 size/time of incomming calls.
722 (estimate_edge_time): Avoid missing time summary hack.
723 (inline_read_summary): Read inline summary info.
724 (inline_write_summary): Write inline summary info.
725 (inline_free_summary): Free all hooks and inline summary vector.
726 * lto-streamer.h: Add LTO_section_inline_summary section.
727 * Makefile.in (ipa-cp.o, ipa-inline-analysis.o): Update dependencies.
728 * ipa.c (cgraph_remove_unreachable_nodes): Fix dump file formating.
730 2011-04-14 Richard Sandiford <richard.sandiford@linaro.org>
732 * tree-vectorizer.h (vect_strided_store_supported): Add a
733 HOST_WIDE_INT argument.
734 (vect_strided_load_supported): Likewise.
735 (vect_permute_store_chain): Return void.
736 (vect_transform_strided_load): Likewise.
737 (vect_permute_load_chain): Delete.
738 * tree-vect-data-refs.c (vect_strided_store_supported): Take a
739 count argument. Check that the count is a power of two.
740 (vect_strided_load_supported): Likewise.
741 (vect_permute_store_chain): Return void. Update after above changes.
742 Assert that the access is supported.
743 (vect_permute_load_chain): Likewise.
744 (vect_transform_strided_load): Return void.
745 * tree-vect-stmts.c (vectorizable_store): Update calls after
746 above interface changes.
747 (vectorizable_load): Likewise.
748 (vect_analyze_stmt): Don't check for strided powers of two here.
750 2011-04-14 Richard Guenther <rguenther@suse.de>
752 PR tree-optimization/48590
753 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
754 BUILT_IN_ALLOCA, BUILT_IN_STACK_SAVE and BUILT_IN_STACK_RESTORE.
755 (call_may_clobber_ref_p_1): Handle BUILT_IN_ALLOCA and
757 * tree-ssa-dce.c (propagate_necessity): Handle
758 BUILT_IN_ALLOCA, BUILT_IN_STACK_SAVE and BUILT_IN_STACK_RESTORE.
760 2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
762 * c-parser.c (c_parser_objc_class_declaration): Updated call to
765 2011-04-14 Richard Guenther <rguenther@suse.de>
767 * tree.h (get_object_alignment_1): Declare.
768 * builtins.c (get_object_alignment_1): Split out worker from ...
769 (get_object_alignment): ... here.
770 * fold-const.c (get_pointer_modulus_and_residue): Use
771 get_object_alignment_1.
773 2011-04-14 Richard Sandiford <richard.sandiford@linaro.org>
775 * tree-vectorizer.h (vect_create_data_ref_ptr): Add an extra
777 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Add an aggr_type
778 parameter. Generalise code to handle arrays as well as vectors.
779 (vect_setup_realignment): Update accordingly.
780 * tree-vect-stmts.c (vectorizable_store): Likewise.
781 (vectorizable_load): Likewise.
783 2011-04-14 Richard Sandiford <richard.sandiford@linaro.org>
785 * tree-vect-stmts.c (vectorizable_load): Allocate and free dr_chain
786 within the per-copy loop.
788 2011-04-14 Richard Sandiford <richard.sandiford@linaro.org>
790 * tree-vect-stmts.c (vectorizable_load): Print the number of copies
793 2011-04-14 Richard Sandiford <richard.sandiford@linaro.org>
795 * doc/options.texi (Negative): Explicitly mention that the
796 Negative chain must be circular.
798 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
800 * function.h (block_chainon): Declare.
801 * function.c (block_chainon): Define.
803 2011-04-14 Anatoly Sokolov <aesok@post.ru>
804 Eric Weddington <eric.weddington@atmel.com>
805 Georg-Johann Lay <avr@gjlay.de>
807 * config/avr/avr.c ("insn-codes.h", "optabs.h", "langhooks.h"):
809 (avr_init_builtins, avr_expand_builtin,
810 avr_expand_delay_cycles, avr_expand_unop_builtin,
811 avr_expand_binop_builtin ): New functions.
812 (avr_builtin_id): New enum
813 (struct avr_builtin_description): New struct
814 (bdesc_1arg, bdesc_2arg): New arrays describing some RTL builtins.
815 (TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.
817 * config/avr/avr.md (UNSPEC_FMUL, UNSPEC_FMULS, UNSPEC_FMULSU,
818 UNSPECV_ENABLE_IRQS, UNSPECV_NOP, UNSPECV_SLEEP, UNSPECV_WDR,
819 UNSPECV_DELAY_CYCLES): new enumeration values
820 (UNSPEC_SEI, UNSPEC_CLI): Remove enumeration values
821 ("enable_interrupt"): Use UNSPECV_ENABLE_IRQS
822 ("disable_interrupt"): Use UNSPECV_ENABLE_IRQS
823 ("*rotlqi3_4"): rename insn to "rotlqi3_4"
824 ("delay_cycles_1", "delay_cycles_2", "delay_cycles_3",
825 "delay_cycles_4", "nopv", "sleep", "wdr", "fmul", "fmuls",
828 * config/avr/avr-c.c: fix line endings
829 (avr_cpu_cpp_builtins): New builtin defines: __BUILTIN_AVR_NOP,
830 __BUILTIN_AVR_SEI, __BUILTIN_AVR_CLI, __BUILTIN_AVR_WDR,
831 __BUILTIN_AVR_SLEEP, __BUILTIN_AVR_SWAP,
832 __BUILTIN_AVR_DELAY_CYCLES, __BUILTIN_AVR_FMUL,
833 __BUILTIN_AVR_FMULS, __BUILTIN_AVR_FMULSU.
835 * doc/extend.texi (AVR Built-in Functions): New node
836 (Target Builtins): Add documentation of AVR
839 2011-04-14 Georg-Johann Lay <avr@gjlay.de>
842 * config/avr/avr.c (avr_insert_attributes): Leave TREE_READONLY
843 alone. Error if non-const data has attribute progmem.
845 2011-04-13 Nathan Froyd <froydnj@codesourcery.com>
847 * tree.h (struct tree_constructor): Include tree_typed instead of
849 * tree.c (initialize_tree_contains_struct): Mark TS_CONSTRUCTOR as
850 TS_TYPED instead of TS_COMMON.
852 2011-04-13 Uros Bizjak <ubizjak@gmail.com>
854 * config/i386/sse.md (*sse2_uavgv16qi3): Merge with *avx_uavgv16qi3.
855 (*sse2_uavgv8hi3): Merge with *avx_uavgv8hi3.
856 (sse2_psadbw): Merge with *avx_psadbw.
857 (ssse3_phaddwv8hi3): Merge with *avx_phaddwv8hi3.
858 (ssse3_phadddv4si3): Merge with *avx_phadddv4si3.
859 (ssse3_phaddswv8hi3): Merge with *avx_phaddswv8hi3.
860 (ssse3_phsubwv8hi3): Merge with *avx_phsubwv8hi3.
861 (ssse3_phsubdv4si3): Merge with *avx_phsubdv4si3.
862 (ssse3_phsubswv8hi3): Merge with *avx_phsubswv8hi3.
863 (ssse3_pmaddubsw128): Merge with *avx_pmaddubsw128.
864 (*ssse3_pmulhrswv8hi3): Merge with *avx_pmulhrswv8hi3.
865 (ssse3_pshufbv16qi3): Merge with *avx_pshufbv16qi3.
866 (ssse3_psign<mode>3): Merge with *avx_psign<mode>3.
867 (ssse3_palignrti): Merge with *avx_palignrti.
869 2011-04-13 Nathan Froyd <froydnj@codesourcery.com>
871 * tree-flow.h (struct gimple_df): Make free_ssanames a VEC.
872 * tree-ssanames.c (fini_ssanames): VEC_free it.
873 (make_ssa_name_fn): Update for VECness of free_ssanames.
874 (release_ssa_name, release_dead_ssa_names): Likewise.
875 * tree.h (struct tree_ssa_name): Include tree_typed instead of
877 * tree.c (initialize_tree_contains_struct): Mark TS_SSA_NAME as
878 TS_TYPED instead of TS_COMMON.
880 2011-04-13 Nathan Froyd <froydnj@codesourcery.com>
882 * postreload-gcse.c (gcse_after_reload_main): Add calls to
883 statistics_counter_event.
884 * tree-ssa-copyrename.c (stats): Define.
885 (rename_ssa_copies): Count coalesced SSA_NAMEs. Add call to
886 statistics_counter_event.
887 * tree-ssa-math-opts.c (reciprocal_stats, sincos_stats): Define.
888 (bswap_stats, widen_mul_stats): Define.
889 (insert_reciprocals): Increment rdivs_inserted.
890 (execute_cse_reciprocals): Zeroize reciprocal_stats. Increment
891 rfuncs_inserted. Add calls to statistics_counter_event.
892 (execute_cse_sincos_1): Increment inserted.
893 (execute_cse_sincos): Zeroize sincos_stats. Add call to
894 statistics_counter_event.
895 (execute_optimize_bswap): Zeroize bswap_stats. Increment fields
896 of bswap_stats. Add calls to statistics_counter_event.
897 (convert_mult_to_widen): Increment widen_mults_inserted.
898 (convert_plusminus_to_widen): Increment maccs_inserted.
899 (convert_mult_to_fma): Increment fmas_inserted.
900 (execute_optimize_widening_mul): Zeroize widen_mul_stats. Add
901 calls to statistics_counter_event.
903 2011-04-13 Vladimir Makarov <vmakarov@redhat.com>
905 PR rtl-optimization/48455
906 * ira-costs.c (find_costs_and_classes): Use i_mem_cost instead of
907 `temp_costs->mem_cost'.
909 2011-04-13 Jan Hubicka <jh@suse.cz>
911 * ipa-inline.h: New file.
912 * ipa-inline-analysis.c: New file. Broken out of ...
913 * ipa-inline.c: ... this file; update toplevel comment;
915 (inline_summary): Move to ipa-inline.h
916 (cgraph_estimate_edge_time): Rename to estimate_edge_time; move to
917 ipa-inline-analysis.c.
918 (cgraph_estimate_time_after_inlining): Rename to
919 estiamte_time_after_inlining; move to ipa-inline-analysis.c
920 (cgraph_estimate_edge_growth): Move to ipa-inline-analysis.c; rename
921 to estimate_edge_growth.
922 (cgraph_estimate_size_after_inlining): Move to ipa-inline-analysis.c;
923 rename to estimate_size_after_inlining.
924 (cgraph_mark_inline_edge): Update for new naming convention.
925 (cgraph_check_inline_limits): Likewise.
926 (cgraph_edge_badness): Likewise.
927 (cgraph_decide_recursive_inlining): Likewise.
928 (cgraph_decide_inlining_of_small_functions): Likewise.
929 (cgraph_decide_inlining_incrementally): Likewise.
930 (cgraph_estimate_growth): Rename to estimate_growth; move to
931 ipa-inline-analysis.c.
932 (eliminated_by_inlining_prob): Move to ipa-inline-analysis.c.
933 (estimate_function_body_sizes): Move to ipa-inline-analysis.c.
934 (compute_inline_parameters): Likewise.
935 (compute_inline_parameters_for_current): Likewise.
936 (pass_inline_parameters): Likewise.
937 (inline_indirect_intraprocedural_analysis): Likewise.
938 (analyze_function): Rename to inline_analyze_function; likewise.
939 (add_new_function): Move to ipa-inline-analysis.c.
940 (inline_generate_summary): Likewise.
941 (inline_read_summary): Likewise.
942 (inline_write_summary): Likewise.
943 * Makefile.in (ipa-inline-analysis.c): New file.
945 2011-04-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
947 * configure.ac (gcc_cv_as_sparc_gotdata_op): Remove GNU ld check.
948 * configure: Regenerate.
950 2011-04-13 Nathan Froyd <froydnj@codesourcery.com>
952 * tree.h (struct tree_int_cst, struct real_value): Include tree_typed
953 instead of tree_common.
954 (struct tree_fixed_cst, struct tree_string, struct tree_complex):
956 * tree.c (initialize_tree_contains_struct): Mark such nodes as being
957 TS_TYPED rather than TS_COMMON.
958 * print-tree.c (print_node) [STRING_CST]: Don't print TREE_CHAIN.
960 2011-04-01 Georg-Johann Lay <avr@gjlay.de>
963 * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Don't use
964 r20 around calls of __tablejump_elpm__
966 2011-04-13 Jakub Jelinek <jakub@redhat.com>
969 * omp-low.c (expand_omp_atomic_fetch_op): Return false if decl is
971 (expand_omp_atomic_pipeline): Return false if cmpxchg is NULL.
973 2011-04-13 Bernd Schmidt <bernds@codesourcery.com>
975 * dwarf2out.c (struct dw_cfi_struct): Remove member dw_cfi_next.
976 (dw_cfi_ref): Add DEF_VEC_P and some DEF_VEC_ALLOC_Ps.
977 (cfi_vec): New typedef.
978 (struct dw_fde_struct): Make dw_fde_cfi a cfi_vec. Replace
979 dw_fde_switch_cfi with an integer dw_fde_switch_cfi_index.
980 (cie_cfi_vec): New static variable.
981 (cie_cfi_head): Delete.
982 (add_cfi): Accept a cfi_vec * as first argument. All callers and
983 declaration changed. Use vector rather than list operations.
984 (new_cfi): Don't initialize the dw_cfi_next field.
985 (add_fde_cfi): Allocate cie_cfi_vec if necessary. Use vector
986 rather than list operations.
987 (lookup_cfa): Use vector rather than list operations.
988 (output_cfis): New argument upto. Accept a cfi_vec rather than
989 a dw_cfi_ref list head as argument. All callers changed.
990 Iterate over the vector using upto as a maximum index.
991 (output_all_cfis): New static function.
992 (output_fde): Use vector rather than list operations. Use the
993 new upto argument for output_cfis rather than manipulating a
995 (dwarf2out_begin_prologue): Change initializations to match
997 (dwarf2out_switch_text_section): Initialize dw_fde_switch_cfi_index
998 from the vector length rather than searching for the end of a list.
1000 (convert_cfa_to_fb_loc_list): Use vector rather than list operations.
1002 2011-04-13 Nick Clifton <nickc@redhat.com>
1004 * config/rx/rx.md (movmemsi): Do not use this pattern when
1005 volatile pointers are involved.
1007 2011-04-13 Uros Bizjak <ubizjak@gmail.com>
1009 * config/i386/sse.md (pinsrbits): Remove.
1010 (sse2_packsswb): Merge with *avx_packsswb.
1011 (sse2_packssdw): Merge with *avx_packssdw.
1012 (sse2_packuswb): Merge with *avx_packuswb.
1013 (vec_interleave_highv16qi): Merge with *avx_interleave_highv16qi.
1014 (vec_interleave_lowv16qi): Merge with *avx_interleave_lowv16qi.
1015 (vec_interleave_highv8hi): Merge with *avx_interleave_highv8hi.
1016 (vec_interleave_lowv8hi): Merge with *avx_interleave_lowv8hi.
1017 (vec_interleave_highv4si): Merge with *avx_interleave_highv4si.
1018 (vec_interleave_lowv4si): Merge with *avx_interleave_lowv4si.
1019 (*sse4_1_pinsrb): Merge with *avx_pinsr<ssevecsize>.
1020 (*sse2_pinsrw): Merge with *avx_pinsr<ssevecsize>.
1021 (*sse4_1_pinsrd): Merge with *avx_pinsr<ssevecsize>.
1022 (*sse4_1_pinsrq): Merge with *avx_pinsrq.
1023 (sse2_loadld): Merge with *avx_loadld.
1024 (*vec_extractv2di_1_rex64): Merge with *vec_extractv2di_1_rex64_avx.
1025 (*vec_extractv2di_1_sse2): Merge with *vec_extractv2di_1_avx.
1026 (*vec_concatv2si_sse4_1): Merge with *vec_concatv2si_avx.
1027 (*vec_concatv2di_rex64_sse4_1): Merge with *vec_concatv2di_rex64_avx.
1028 (vec_concatv2di): Merge with *vec_concatv2di_avx.
1030 2011-04-12 Nathan Froyd <froydnj@codesourcery.com>
1032 * c-decl.c (union lang_tree_node): Check for TS_COMMON before
1034 * print-tree.c (print_node): Likewise.
1035 * tree-inline.c (copy_tree_r): Likewise.
1036 * c-lang.c (LANG_HOOKS_INIT_TS): Define.
1037 * lto-streamer-in.c (lto_input_tree_pointers): Check for TS_TYPED
1038 instead of TS_COMMON.
1039 * lto-streamer-out.c (lto_output_tree_pointers): Likewise.
1040 * tree.c (initialize_tree_contains_struct): Handle TS_TYPED.
1041 (copy_node_stat): Zero TREE_CHAIN only if necessary.
1042 (MARK_TS_BASE, MARK_TS_TYPED, MARK_TS_COMMON): Move these...
1043 (MARK_TS_DECL_COMMON, MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL):
1045 (MARK_TS_DECL_WITH_VIS, MARK_TS_DECL_NON_COMMON): ...and these...
1047 (TREE_CHAIN): Check for a TS_COMMON structure.
1048 (TREE_TYPE): Check for a TS_TYPED structure.
1050 2011-04-12 Pat Haugen <pthaugen@us.ibm.com>
1052 * config/rs6000/rs6000.c (call_ABI_of_interest): Call
1053 cgraph_get_create_node instead of cgraph_node.
1055 2011-04-12 Nicola Pero <nicola.pero@meta-innovation.com>
1057 * c-parser.c (c_parser_initelt): Updated call to
1058 objc_build_message_expr.
1059 (c_parser_postfix_expression): Likewise.
1061 2011-04-12 Kai Tietz <ktietz@redhat.com>
1063 * config/i386/mingw32.h (TARGET_SUBTARGET_DEFAULT): Add
1064 MASK_MS_BITFIELD_LAYOUT bit.
1066 2011-04-12 Jakub Jelinek <jakub@redhat.com>
1068 * combine.c (update_cfg_for_uncondjump): Instead of testing at_end
1069 assert it is always true.
1070 (try_combine): Don't call update_cfg_for_uncondjump for noop non-jump
1073 2011-04-12 Nicola Pero <nicola.pero@meta-innovation.com>
1075 * c-parser.c (c_lex_one_token): Rewritten conditional used when
1076 compiling Objective-C to be more efficient.
1078 2011-04-12 Axel Freyn <axel-freyn@gmx.de>
1080 * opts-common.c (decode_cmdline_options_to_array): Remove variable
1083 2011-04-12 Richard Sandiford <richard.sandiford@linaro.org>
1085 * recog.h, genoutput.c, optabs.c: Revert last patch.
1087 2011-04-12 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
1090 * config/arm/arm.md (*arm_negdi2): Fix early clobber constraints.
1092 2011-04-12 Richard Sandiford <richard.sandiford@linaro.org>
1094 * recog.h (insn_operand_data): Add an "allows_mem" field.
1095 * genoutput.c (output_operand_data): Initialize it.
1096 * optabs.c (maybe_legitimize_operand_same_code): New function.
1097 (maybe_legitimize_operand): Use it when matching the original
1100 2011-04-12 Richard Sandiford <richard.sandiford@linaro.org>
1102 * genpreds.c (process_define_predicate): Move most processing
1103 to gensupport.c. Continue to validate the expression.
1104 * genrecog.c (did_you_mean_codes, compute_predicate_codes)
1105 (process_define_predicate): Move processing to gensupport.c.
1106 (main): Remove DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE cases.
1107 * gensupport.c (did_you_mean_codes): Moved from genrecog.c.
1108 (compute_predicate_codes): Moved from genrecog.c. Add lineno
1110 (valid_predicate_name_p): New function, split out from old
1111 genpreds.c:process_define_predicate.
1112 (process_define_predicate): New function, combining code from
1113 old genpreds.c and genrecog.c functions.
1114 (process_rtx): Call it for DEFINE_PREDICATE and
1115 DEFINE_SPECIAL_PREDICATE.
1117 2011-04-12 Richard Sandiford <richard.sandiford@linaro.org>
1119 * config/arm/arm.c (arm_print_operand): Use MEM_SIZE to get the
1120 size of a '%A' memory reference.
1121 (T_DREG, T_QREG): New neon_builtin_type_bits.
1122 (arm_init_neon_builtins): Assert that the load and store operands
1123 are neon_struct_operands.
1124 (locate_neon_builtin_icode): Provide the neon_builtin_type_bits.
1125 (NEON_ARG_MEMORY): New builtin_arg.
1126 (neon_dereference_pointer): New function.
1127 (arm_expand_neon_args): Add a neon_builtin_type_bits argument.
1128 Handle NEON_ARG_MEMORY.
1129 (arm_expand_neon_builtin): Update after above interface changes.
1130 Use NEON_ARG_MEMORY for loads and stores.
1131 * config/arm/predicates.md (neon_struct_operand): New predicate.
1132 * config/arm/iterators.md (V_two_elem): Tweak formatting.
1133 (V_three_elem): Use BLKmode for accesses that have no associated mode.
1134 (V_four_elem): Tweak formatting.
1135 * config/arm/neon.md (neon_vld1<mode>, neon_vld1_dup<mode>)
1136 (neon_vst1_lane<mode>, neon_vst1<mode>, neon_vld2<mode>)
1137 (neon_vld2_lane<mode>, neon_vld2_dup<mode>, neon_vst2<mode>)
1138 (neon_vst2_lane<mode>, neon_vld3<mode>, neon_vld3_lane<mode>)
1139 (neon_vld3_dup<mode>, neon_vst3<mode>, neon_vst3_lane<mode>)
1140 (neon_vld4<mode>, neon_vld4_lane<mode>, neon_vld4_dup<mode>)
1141 (neon_vst4<mode>): Replace pointer operand with a memory operand.
1142 Use %A in the output template.
1143 (neon_vld3qa<mode>, neon_vld3qb<mode>, neon_vst3qa<mode>)
1144 (neon_vst3qb<mode>, neon_vld4qa<mode>, neon_vld4qb<mode>)
1145 (neon_vst4qa<mode>, neon_vst4qb<mode>): Likewise, but halve
1146 the width of the memory access. Remove post-increment.
1147 * config/arm/neon-testgen.ml: Allow addresses to have an alignment.
1149 2011-04-12 Nick Clifton <nickc@redhat.com>
1151 * config/v850/v850.c (expand_prologue): Do not use the CALLT
1152 instruction for interrupt handlers if the target is the basic V850
1154 (expand_epilogue): Likewise.
1156 2011-04-12 Jakub Jelinek <jakub@redhat.com>
1158 PR rtl-optimization/48549
1159 * combine.c (propagate_for_debug): Also stop after BB_END of
1160 this_basic_block. Process LAST and just stop processing after it.
1161 (combine_instructions): If last_combined_insn has been deleted,
1162 set last_combined_insn to its PREV_INSN.
1164 2011-04-12 Richard Guenther <rguenther@suse.de>
1166 PR tree-optimization/46076
1167 * gimple.h (struct gimple_statement_call): Add fntype field.
1168 (gimple_call_fntype): Adjust.
1169 (gimple_call_set_fntype): New function.
1170 * gimple.c (gimple_build_call_1): Set the call function type.
1171 * gimplify.c (gimplify_call_expr): Preserve the function
1172 type the frontend used for the call.
1173 (gimplify_modify_expr): Likewise.
1174 * lto-streamer-in.c (input_gimple_stmt): Input the call stmts
1176 * lto-streamer-out.c (output_gimple_stmt): Output the call stmts
1178 * tree-ssa.c (useless_type_conversion_p): Function pointer
1179 conversions are useless.
1181 2011-04-12 Martin Jambor <mjambor@suse.cz>
1183 * cgraph.h (cgraph_node): Remove function declaration.
1184 (cgraph_create_node): Declare.
1185 (cgraph_get_create_node): Likewise.
1186 * cgraph.c (cgraph_create_node): Renamed to cgraph_create_node_1.
1187 Updated all callers.
1188 (cgraph_node): Renamed to cgraph_create_node, assert that a node for
1189 the decl does not already exist. Call cgraph_get_create_node instead
1191 (cgraph_get_create_node): New function.
1192 (cgraph_same_body_alias): Update comment.
1193 (cgraph_set_call_stmt): Call cgraph_get_node instead of cgraph_node,
1194 assert it does not return NULL.
1195 (cgraph_update_edges_for_call_stmt): Likewise.
1196 (cgraph_clone_edge): Likewise.
1197 (cgraph_create_virtual_clone): Likewise.
1198 (cgraph_update_edges_for_call_stmt_node): Call cgraph_get_create_node
1199 instead of cgraph_node.
1200 (cgraph_add_new_function): Call cgraph_create_node or
1201 cgraph_get_create_node instead of cgraph_node.
1202 * cgraphbuild.c (record_reference): Call cgraph_get_create_node
1203 instead of cgraph_node.
1204 (record_eh_tables): Likewise.
1205 (mark_address): Likewise.
1206 (mark_load): Likewise.
1207 (build_cgraph_edges): Call cgraph_get_create_node instead
1209 (rebuild_cgraph_edges): Likewise.
1210 * cgraphunit.c (cgraph_finalize_function): Call cgraph_get_create_node
1211 instead of cgraph_node.
1212 (cgraph_copy_node_for_versioning): Call cgraph_create_node instead of
1214 * lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Call
1215 cgraph_create_node instead of cgraph_node.
1216 * c-decl.c (finish_function): Call cgraph_get_create_node instead
1218 * lto-cgraph.c (input_node): Likewise.
1219 * lto-streamer-in.c (input_function): Likewise.
1220 * varasm.c (mark_decl_referenced): Likewise.
1221 (assemble_alias): Likewise.
1223 2011-04-12 Martin Jambor <mjambor@suse.cz>
1225 * tree-inline.c (tree_function_versioning): Call cgraph_get_node
1226 instead of cgraph_node and assert it does not return NULL.
1227 * lto-streamer-in.c (lto_read_body): Likewise.
1228 * omp-low.c (new_omp_context): Likewise.
1229 (create_task_copyfn): Likewise.
1230 * tree-emutls.c (lower_emutls_function_body): Likewise.
1231 * matrix-reorg.c (transform_allocation_sites): Likewise.
1233 2011-04-12 Jakub Jelinek <jakub@redhat.com>
1236 * c-typeck.c (build_asm_expr): Error out on attempts to use
1237 void type outputs or inputs for constraints that allow reg or
1240 2011-04-11 Chung-Lin Tang <cltang@codesourcery.com>
1241 Richard Earnshaw <rearnsha@arm.com>
1244 * config/arm/arm.c (arm_legitimize_reload_address): Update cases
1245 to use sign-magnitude offsets. Reject unsupported unaligned
1246 cases. Add detailed description in comments.
1247 * config/arm/arm.md (reload_outdf): Disable for ARM mode; change
1248 condition from TARGET_32BIT to TARGET_ARM.
1250 2011-04-11 Nathan Froyd <froydnj@codesourcery.com>
1252 * tree.h (struct typed_tree): New.
1253 (struct tree_common): Include it instead of tree_base.
1254 (TREE_TYPE): Update for new location of type field.
1255 (TYPE_USER_ALIGN, TYPE_PACKED): Refer to base field directly.
1256 (DECL_USER_ALIGN, DECL_PACKED): Likewise.
1257 (union tree_node): Add typed field.
1258 * treestruct.def (TS_TYPED): New.
1259 * lto-streamer.c (check_handled_ts_structures): Handle it.
1260 * tree.c (MARK_TS_TYPED): New macro.
1261 (MARK_TS_COMMON): Call it instead of MARK_TS_BASE.
1263 2011-04-11 Eric Botcazou <ebotcazou@adacore.com>
1265 * cfghooks.c (redirect_edge_and_branch_force): Localize variable.
1266 (force_nonfallthru): Do not alter the loop nest if no basic block
1269 2011-04-11 Uros Bizjak <ubizjak@gmail.com>
1271 * config/i386/sse.md (VI): New mode iterator.
1273 (AVX256MODEI): Ditto.
1274 (AVXMODEF4P): Ditto.
1275 (avxvecpsmode): Ditto.
1276 (one_cmpl<mode>2): Enable for TARGET_SSE. Use VI mode iterator.
1277 (sse2_andnot<mode>3): New expander.
1278 (*andnot<mode>3): Merge with *sse2_andnot<mode>3 and
1279 *avx_andnot<mode>3. Enable for TARGET_SSE. Use VI mode iterator.
1280 (<any_logic:code><mode>3): Use VI mode iterator.
1281 (*<any_logic:code><mode>3): Merge with *sse2_<any_logic:code><mode>3
1282 and *avx_<any_logic:code><mode>3. Use VI mode iterator.
1283 (*andnottf3): Handle AVX three-operand constraints.
1284 (*<any_logic:code>tf3): Handle AVX three-operand constraints.
1286 2011-04-11 Joseph Myers <joseph@codesourcery.com>
1287 Robert Millan <rmh@gnu.org>
1289 * config.gcc (x86_64-*-kfreebsd*-gnu): Use i386/kfreebsd-gnu.h.
1290 * config/i386/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER32,
1291 GNU_USER_DYNAMIC_LINKER64): Define.
1292 (REG_NAME): Don't undefine.
1293 (MD_UNWIND_SUPPORT): Undefine.
1294 * config/i386/knetbsd-gnu.h (GNU_USER_LINK_EMULATION): Define.
1295 (REG_NAME): Don't undefine.
1296 (MD_UNWIND_SUPPORT): Undefine.
1297 * config/i386/kopensolaris-gnu.h (GNU_USER_LINK_EMULATION): Define.
1299 2011-04-11 Joseph Myers <joseph@codesourcery.com>
1301 * config/i386/gnu.h (GNU_USER_LINK_EMULATION): Define.
1302 (CPP_SPEC, CC1_SPEC, ENDFILE_SPEC): Remove.
1304 2011-04-11 Xinliang David Li <davidxl@google.com>
1306 * value-profile.c (check_ic_target): New function.
1307 (gimple_ic_transform): Sanity check indirect call target.
1308 * gimple-low.c (gimple_check_call_args): Interface change.
1309 (gimple_check_call_matching_types): New function.
1310 * tree-inline.c (tree_can_inline_p): Call new function.
1312 2011-04-11 Basile Starynkevitch <basile@starynkevitch.net>
1314 * Makefile.in (PLUGIN_HEADERS): Add gimple-pretty-print.h
1315 tree-pretty-print.h & realmpfr.h.
1317 2011-04-11 Vladimir Makarov <vmakarov@redhat.com>
1320 * ira.c (setup_pressure_classes): Fix typo in loop condition.
1321 (setup_allocno_and_important_classes): Ditto.
1323 2011-04-11 Joseph Myers <joseph@codesourcery.com>
1325 * config/alpha/linux-elf.h (LINUX_DYNAMIC_LINKER): Rename to
1326 GNU_USER_DYNAMIC_LINKER.
1327 * config/arm/linux-eabi.h (TARGET_OS_CPP_BUILTINS): Change
1328 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1329 * config/arm/linux-elf.h (LINUX_TARGET_LINK_SPEC): Change
1330 LINUX_DYNAMIC_LINKER to GNU_USER_DYNAMIC_LINKER.
1331 (TARGET_OS_CPP_BUILTINS): Change LINUX_TARGET_OS_CPP_BUILTINS to
1332 GNU_USER_TARGET_OS_CPP_BUILTINS.
1333 * config/bfin/linux.h (TARGET_OS_CPP_BUILTINS): Change
1334 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1335 * config/bfin/uclinux.h (TARGET_OS_CPP_BUILTINS): Change
1336 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1337 * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC): Change
1338 LINUX_DYNAMIC_LINKER to GNU_USER_DYNAMIC_LINKER.
1339 (TARGET_OS_CPP_BUILTINS): Change LINUX_TARGET_OS_CPP_BUILTINS to
1340 GNU_USER_TARGET_OS_CPP_BUILTINS.
1341 * config/frv/linux.h (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to
1342 GNU_USER_DYNAMIC_LINKER.
1343 * config/gnu.h (LINUX_TARGET_OS_CPP_BUILTINS): Rename to
1344 GNU_USER_TARGET_OS_CPP_BUILTINS.
1345 * config/i386/gnu-user.h (TARGET_OS_CPP_BUILTINS): Change
1346 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1347 * config/i386/gnu-user64.h (TARGET_OS_CPP_BUILTINS): Change
1348 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1349 * config/i386/linux.h (GNU_USER_DYNAMIC_LINKER): Remove.
1350 * config/i386/linux64.h (GNU_USER_DYNAMIC_LINKER32,
1351 GNU_USER_DYNAMIC_LINKER64): Remove.
1352 * config/ia64/linux.h (TARGET_OS_CPP_BUILTINS): Change
1353 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1354 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to
1355 GNU_USER_DYNAMIC_LINKER.
1356 * config/kfreebsd-gnu.h (LINUX_TARGET_OS_CPP_BUILTINS): Rename to
1357 GNU_USER_TARGET_OS_CPP_BUILTINS.
1358 * config/knetbsd-gnu.h (LINUX_TARGET_OS_CPP_BUILTINS): Rename to
1359 GNU_USER_TARGET_OS_CPP_BUILTINS.
1360 * config/kopensolaris-gnu.h (LINUX_TARGET_OS_CPP_BUILTINS): Rename
1361 to GNU_USER_TARGET_OS_CPP_BUILTINS.
1362 * config/linux.h (LINUX_TARGET_OS_CPP_BUILTINS): Rename to
1363 GNU_USER_TARGET_OS_CPP_BUILTINS.
1364 (LINUX_DYNAMIC_LINKER): Rename to GNU_USER_DYNAMIC_LINKER.
1365 (LINUX_DYNAMIC_LINKER32): Rename to GNU_USER_DYNAMIC_LINKER32.
1366 (LINUX_DYNAMIC_LINKER64): Rename to GNU_USER_DYNAMIC_LINKER64.
1367 * config/lm32/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Change
1368 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1369 * config/m32r/linux.h (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to
1370 GNU_USER_DYNAMIC_LINKER.
1371 (TARGET_OS_CPP_BUILTINS): Change LINUX_TARGET_OS_CPP_BUILTINS to
1372 GNU_USER_TARGET_OS_CPP_BUILTINS.
1373 * config/m68k/linux.h (TARGET_OS_CPP_BUILTINS): Change
1374 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1375 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to
1376 GNU_USER_DYNAMIC_LINKER.
1377 * config/m68k/uclinux.h (TARGET_OS_CPP_BUILTINS): Change
1378 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1379 * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Change
1380 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1381 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to
1382 GNU_USER_DYNAMIC_LINKER.
1383 * config/mips/linux64.h (LINUX_DYNAMIC_LINKERN32): Rename to
1384 GNU_USER_DYNAMIC_LINKERN32.
1385 (LINK_SPEC): Change LINUX_DYNAMIC_LINKERN32 to
1386 GNU_USER_DYNAMIC_LINKERN32. Change LINUX_DYNAMIC_LINKER64 to
1387 GNU_USER_DYNAMIC_LINKER64. Change LINUX_DYNAMIC_LINKER32 to
1388 GNU_USER_DYNAMIC_LINKER32.
1389 * config/mn10300/linux.h (TARGET_OS_CPP_BUILTINS): Change
1390 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1391 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to
1392 GNU_USER_DYNAMIC_LINKER.
1393 * config/moxie/uclinux.h (TARGET_OS_CPP_BUILTINS): Change
1394 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1395 * config/pa/pa-linux.h (TARGET_OS_CPP_BUILTINS): Change
1396 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1397 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to GNU_USER_DYNAMIC_LINKER.
1398 * config/rs6000/linux64.h (LINUX_DYNAMIC_LINKER32): Rename to
1399 GNU_USER_DYNAMIC_LINKER32.
1400 (LINUX_DYNAMIC_LINKER64): Rename to GNU_USER_DYNAMIC_LINKER64.
1401 * config/rs6000/sysv4.h (LINUX_DYNAMIC_LINKER): Rename to
1402 GNU_USER_DYNAMIC_LINKER.
1403 * config/s390/linux.h (TARGET_OS_CPP_BUILTINS): Change
1404 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1405 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER32 to
1406 GNU_USER_DYNAMIC_LINKER32. Change LINUX_DYNAMIC_LINKER64 to
1407 GNU_USER_DYNAMIC_LINKER64.
1408 * config/sh/linux.h (TARGET_OS_CPP_BUILTINS): Change
1409 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1410 (SUBTARGET_LINK_SPEC): Change LINUX_DYNAMIC_LINKER to
1411 GNU_USER_DYNAMIC_LINKER.
1412 * config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Change
1413 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1414 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to
1415 GNU_USER_DYNAMIC_LINKER.
1416 * config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Change
1417 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1418 (LINK_ARCH32_SPEC): Change LINUX_DYNAMIC_LINKER32 to
1419 GNU_USER_DYNAMIC_LINKER32.
1420 (LINK_ARCH64_SPEC): Change LINUX_DYNAMIC_LINKER64 to
1421 GNU_USER_DYNAMIC_LINKER64.
1422 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER64 to
1423 GNU_USER_DYNAMIC_LINKER64.
1424 * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Change
1425 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1426 * config/xtensa/linux.h (TARGET_OS_CPP_BUILTINS): Change
1427 LINUX_TARGET_OS_CPP_BUILTINS to GNU_USER_TARGET_OS_CPP_BUILTINS.
1428 (LINK_SPEC): Change LINUX_DYNAMIC_LINKER to GNU_USER_DYNAMIC_LINKER.
1430 2011-04-11 Joseph Myers <joseph@codesourcery.com>
1432 * config/i386/gnu-user.h: Copy from linux.h. Update comments.
1433 (LINK_EMULATION, GLIBC_DYNAMIC_LINKER): Remove.
1434 (SUBTARGET_EXTRA_SPECS): Use GNU_USER_LINK_EMULATION and
1435 GNU_USER_DYNAMIC_LINKER.
1436 (MD_UNWIND_SUPPORT, REG_NAME): Remove.
1437 * config/i386/gnu-user64.h: Copy from linux64.h. Update comments.
1438 (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64): Remove.
1439 (LINK_SPEC): Use GNU_USER_DYNAMIC_LINKER32 and
1440 GNU_USER_DYNAMIC_LINKER64.
1441 (MD_UNWIND_SUPPORT, REG_NAME): Remove.
1442 * config/i386/kfreebsd-gnu.h (LINK_EMULATION): Change to
1443 GNU_USER_LINK_EMULATION.
1444 * config/i386/linux.h (TARGET_ASM_FILE_START_FILE_DIRECTIVE,
1445 DEFAULT_PCC_STRUCT_RETURN, TARGET_TLS_DIRECT_SEG_REFS_DEFAULT,
1446 ASM_COMMENT_START, DBX_REGISTER_NUMBER, NO_PROFILE_COUNTERS,
1447 MCOUNT_NAME, SUBTARGET_FRAME_POINTER_REQUIRED, SIZE_TYPE,
1448 PTRDIFF_TYPE, WCHAR_TYPE, WCHAR_TYPE_SIZE, TARGET_OS_CPP_BUILTINS,
1449 CPP_SPEC, CC1_SPEC): Remove.
1450 (LINK_EMULATION): Change to GNU_USER_LINK_EMULATION.
1451 (GNU_USER_DYNAMIC_LINKER): Define.
1452 (ASM_SPEC, SUBTARGET_EXTRA_SPECS, LINK_SPEC, ENDFILE_SPEC,
1453 ASM_OUTPUT_ALIGNED_BSS, ASM_OUTPUT_MAX_SKIP_ALIGN,
1454 ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX, CRT_GET_RFIB_DATA,
1455 LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, TF_SIZE,
1456 TARGET_ASM_FILE_END, STACK_CHECK_MOVING_SP,
1457 STACK_CHECK_STATIC_BUILTIN, TARGET_THREAD_SSP_OFFSET,
1458 TARGET_CAN_SPLIT_STACK, TARGET_THREAD_SPLIT_STACK_OFFSET): Remove.
1459 * config/i386/linux64.h (TARGET_OS_CPP_BUILTINS, CPP_SPEC,
1460 CC1_SPEC, DEFAULT_PCC_STRUCT_RETURN,
1461 TARGET_TLS_DIRECT_SEG_REFS_DEFAULT, SPEC_32, SPEC_64, ASM_SPEC,
1462 LINK_SPEC, ENDFILE_SPEC, MULTILIB_DEFAULTS, LIBGCC2_HAS_TF_MODE,
1463 LIBGCC2_TF_CEXT, TF_SIZE, TARGET_ASM_FILE_END): Remove.
1464 (GNU_USER_DYNAMIC_LINKER32, GNU_USER_DYNAMIC_LINKER64): Define.
1465 (STACK_CHECK_MOVING_SP, STACK_CHECK_STATIC_BUILTIN,
1466 TARGET_THREAD_SSP_OFFSET, TARGET_CAN_SPLIT_STACK,
1467 TARGET_THREAD_SPLIT_STACK_OFFSET): Remove.
1468 * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Change to
1469 GNU_USER_DYNAMIC_LINKER.
1470 * config/kfreebsd-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
1471 GNU_USER_DYNAMIC_LINKER. Unconditionally undefine and redefine.
1472 * config/knetbsd-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
1473 GNU_USER_DYNAMIC_LINKER. Unconditionally undefine and redefine.
1474 * config/kopensolaris-gnu.h (GLIBC_DYNAMIC_LINKER): Change to
1475 GNU_USER_DYNAMIC_LINKER. Unconditionally undefine and redefine.
1476 * config.gcc (i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu |
1477 i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* |
1478 i[34567]86-*-kopensolaris*-gnu, x86_64-*-linux* |
1479 x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu): Use the new headers.
1481 2011-04-11 Kai Tietz <ktietz@redhat.com>
1485 * config/i386/i386-protos.h (ix86_get_callcvt): New prototype.
1486 * config/i386/i386.c (ix86_handle_cconv_attribute): Adjust
1488 (ix86_is_msabi_thiscall): Removed.
1489 (ix86_is_type_thiscall): Likewise.
1490 (ix86_get_callcvt): New function.
1491 (ix86_comp_type_attributes): Simplify check.
1492 (ix86_function_regparm): Use ix86_get_callcvt for calling
1493 convention attribute checks.
1494 (ix86_return_pops_args): Likewise.
1495 (ix86_static_chain): Likewise.
1496 (x86_this_parameter): Likewise.
1497 (x86_output_mi_thunk): Likewise.
1498 (ix86_function_type_abi): Optimize check for types without attributes.
1499 * config/i386/i386.h (IX86_CALLCVT_CDECL, IX86_CALLCVT_STDCALL,
1500 IX86_CALLCVT_FASTCALL, IX86_CALLCVT_THISCALL, IX86_CALLCVT_REGPARM,
1501 IX86_CALLCVT_SSEREGPARM): New macros to represent calling convention
1503 (IX86_BASE_CALLCVT): Helper macro.
1504 * config/i386/netware.c (i386_nlm_maybe_mangle_decl_assembler_name):
1505 Use ix86_get_callcvt for calling convention attribute checks and avoid
1506 symbol-decoration for stdcall in TARGET_RTD case.
1507 * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
1509 (gen_stdcall_or_fastcall_suffix): Adjust ident and use DECL_ORIGIN
1512 2011-04-11 Uros Bizjak <ubizjak@gmail.com>
1514 * config/i386/sse.md (VI_128): New mode iterator.
1515 (VI12_128): Rename from SSEMODE12.
1516 (VI14_128): Rename from SSEMODE14.
1517 (VI124_128): New mode iterator.
1518 (VI24_128): Rename from SSEMODE248.
1519 (VI248_128): Rename from SSEMODE248.
1520 (SSEMODE124C8): Remove.
1521 (*<plusminus_insn><mode>3): Merge with *avx_<plusminus_insn><mode>3.
1522 (*sse2_<plusminus_insn><mode>3): Merge with
1523 *avx_<plusminus_insn><mode>3.
1524 (*mulv8hi3): Merge with *avx_mulv8hi3.
1525 (*<s>mulv8hi3_highpart): Merge with *avx_<s>mulv8hi3_highpart.
1526 (*sse2_umulv2siv2di3): Merge with *avx_umulv2siv2di3.
1527 (*sse2_pmaddwd): Merge with *avx_pmaddwd.
1528 (*sse4_1_mulv4si3): Merge with *avx_mulv4si3.
1529 (ashr<mode>3): Merge with *avx_ashr<mode>3.
1530 (lshr<mode>3): Merge with *avx_lshr<mode>3.
1531 (ashl<mode>3): Merge with *avx_ashl<mode>3.
1532 (sse2_ashlv1ti3): Merge with *avx_ashlv1ti3.
1533 (sse2_lshrv1ti3): Merge with *avx_lshrv1ti3.
1534 (*sse4_1_<smaxmin:code><mode>3): Merge with *avx_<smaxmin:code><mode>3.
1535 (*<smaxmin:code>v8hi3): Ditto.
1536 (*sse4_1_<umaxmin:code><mode>3): Merge with *avx_<umaxmin:code><mode>3.
1537 (*<smaxmin:code>v16qi3): Ditto.
1538 (*sse4_1_eqv2di3): Merge with *avx_eq<mode>3.
1539 (*sse2_eq<mode>3): Ditto.
1540 (*sse4_2_eqv2di3): Merge with *avx_gt<mode>3.
1541 (*sse2_gt<mode>3): Ditto.
1542 (vcondv2di): Split out of vcond<mode>.
1543 (vconduv2di): Split out of vcondu<mode>.
1545 2011-04-11 Richard Guenther <rguenther@suse.de>
1547 * gimplify.c (gimple_fold_indirect_ref): Check host_integerp
1548 before calling tree_low_cst.
1550 2011-04-11 Richard Guenther <rguenther@suse.de>
1552 * stor-layout.c (layout_type): Compute all array index size operations
1553 in the original type.
1554 (initialize_sizetypes): Add comment.
1555 (set_sizetype): Do not set TREE_TYPE of a TREE_VEC.
1557 2011-04-11 Joseph Myers <joseph@codesourcery.com>
1559 * common.opt (Tbss=, Tdata=, Ttext=): New options.
1561 2011-04-11 Martin Jambor <mjambor@suse.cz>
1563 * cgraph.c (cgraph_local_info): Call cgraph_get_node instead
1564 of cgraph_node, handle NULL return value.
1565 (cgraph_global_info): Likewise.
1566 (cgraph_rtl_info): Likewise.
1567 * tree-inline.c (estimate_num_insns): Likewise.
1568 * gimplify.c (unshare_body): Likewise.
1569 (unvisit_body): Likewise.
1570 (gimplify_body): Likewise.
1571 * predict.c (optimize_function_for_size_p): Likewise.
1572 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
1573 (call_may_clobber_ref_p_1): Likewise.
1574 * varasm.c (function_section_1): Likewise.
1575 (assemble_start_function): Likewise.
1577 2011-04-11 Martin Jambor <mjambor@suse.cz>
1579 * except.c (set_nothrow_function_flags): Call cgraph_get_node instead
1581 * final.c (rest_of_clean_state): Likewise.
1582 * gimple-iterator.c (update_call_edge_frequencies): Likewise.
1583 * passes.c (pass_init_dump_file): Likewise.
1584 (execute_all_ipa_transforms): Likewise.
1585 (function_called_by_processed_nodes_p): Likewise.
1586 * predict.c (maybe_hot_frequency_p): Likewise.
1587 (probably_never_executed_bb_p): Likewise.
1588 (compute_function_frequency): Likewise.
1589 * tree-nested.c (check_for_nested_with_variably_modified): Likewise.
1590 (unnest_nesting_tree_1): Likewise.
1591 (lower_nested_functions): Likewise.
1592 * tree-optimize.c (execute_fixup_cfg): Likewise.
1593 (tree_rest_of_compilation): Likewise.
1594 * tree-profile.c (gimple_gen_ic_func_profiler): Likewise.
1595 * tree-sra.c (ipa_early_sra): Likewise.
1596 * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
1597 * config/i386/i386.c (ix86_compute_frame_layout): Likewise.
1598 * ipa.c (record_cdtor_fn): Likewise.
1599 * ipa-inline.c (cgraph_early_inlining): Likewise.
1600 (compute_inline_parameters_for_current): Likewise.
1601 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
1602 * ipa-pure-const.c (local_pure_const): Likewise.
1603 * ipa-split.c (split_function): Likewise.
1604 (execute_split_functions): Likewise.
1605 * cgraphbuild.c (build_cgraph_edges): Likewise.
1606 (rebuild_cgraph_edges): Likewise.
1607 (cgraph_rebuild_references): Likewise.
1608 (remove_cgraph_callee_edges): Likewise.
1609 * cgraphunit.c (cgraph_mark_if_needed): Likewise.
1610 (verify_cgraph_node): Likewise.
1611 (cgraph_analyze_functions): Likewise.
1612 (cgraph_preserve_function_body_p): Likewise.
1613 (save_inline_function_body): Likewise.
1614 (save_inline_function_body): Likewise.
1615 * tree-inline.c (copy_bb): Likewise.
1616 (optimize_inline_calls): Likewise.
1618 2011-04-11 Martin Jambor <mjambor@suse.cz>
1620 PR tree-optimization/48195
1621 * ipa-cp.c (ipcp_driver): Call ipa_check_create_node_params and
1622 ipa_check_create_edge_args.
1623 (ipcp_generate_summary): Do not call ipa_check_create_node_params and
1624 ipa_check_create_edge_args.
1625 * ipa-inline.c (inline_generate_summary): Do not call
1626 ipa_check_create_node_params and ipa_check_create_edge_args.
1627 * ipa-prop.c (ipa_analyze_node): Call ipa_check_create_node_params and
1628 ipa_check_create_edge_args.
1630 2011-04-09 Anatoly Sokolov <aesok@post.ru>
1632 * expr.c (expand_expr_real_1): Use add_to_hard_reg_set function
1634 * sel-sched.c (mark_unavailable_hard_regs): Likewise.
1635 * function.c (record_hard_reg_sets): Likewise.
1636 * ira.c (compute_regs_asm_clobbered): Likewise.
1637 * sched-deps.c (sched_analyze_1): Likewise.
1638 * reload1.c (mark_reload_reg_in_use, choose_reload_regs): Likewise.
1640 2011-04-09 Xinliang David Li <davidxl@google.com>
1642 PR tree-optimization/PR48484
1643 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Set
1644 has_valid_pred lazily
1646 2011-04-09 Duncan Sands <baldrick@free.fr>
1648 * tree.c (array_type_nelts): Bail out if TYPE_MAX_VALUE not set.
1650 2011-04-08 Eric Botcazou <ebotcazou@adacore.com>
1652 * combine.c (combine_validate_cost): Adjust comments. Set registered
1653 cost of I0 to zero at the end, if any.
1655 2011-04-08 Xinliang David Li <davidxl@google.com>
1657 * ipa-cp.c (ipcp_update_profiling): Correct negative scale factor due
1658 to insane profile data.
1660 2011-04-08 Xinliang David Li <davidxl@google.com>
1662 * ipa-cp.c (ipcp_update_profiling): Correct
1663 negative scale factor due to insane profile data.
1665 2011-04-08 Xinliang David Li <davidxl@google.com>
1667 * final.c (dump_basic_block_info): New function.
1668 (final): Dump basic block.
1669 (final_scan_insn): Remove old dump.
1671 2011-04-08 Steven G. Kargl <kargl@gcc.gnu.org>
1674 * config.gcc (i386-*-freebsd): Disable unwind table generation for
1677 2011-04-08 Michael Matz <matz@suse.de>
1680 * jump.c (rebuild_jump_labels_1, rebuild_jump_labels_chain): New
1682 (rebuild_jump_labels): Call rebuild_jump_labels_1.
1683 * rtl.h (rebuild_jump_labels_chain): Declare.
1684 * cfgexpand.c (gimple_expand_cfg): Initialize JUMP_LABEL also on
1685 insns inserted on edges.
1687 2011-04-08 Joseph Myers <joseph@codesourcery.com>
1689 * config.gcc (arm*-*-*): Add arm/arm-tables.opt to extra_options.
1690 * config/arm/arm-arches.def: New.
1691 * config/arm/arm-opts.h: New.
1692 * config/arm/genopt.sh: New.
1693 * config/arm/arm-tables.opt: New (generated).
1694 * config/arm/arm.c (arm_handle_option, arm_target_help,
1695 TARGET_HANDLE_OPTION, TARGET_HELP, arm_find_cpu): Remove.
1696 (all_architectures): Get most table contents from arm-arches.def.
1697 (arm_option_override): Set arm_selected_arch, arm_selected_cpu and
1698 arm_selected_tune here.
1699 * config/arm/arm.h (enum processor_type): Move to arm-opts.h.
1700 * config/arm/arm.opt (config/arm/arm-opts.h): New HeaderInclude.
1701 (march=, mcpu=, mtune=): Use Enum and Var.
1702 * config/arm/t-arm ($(srcdir)/config/arm/arm-tables.opt): New.
1703 (arm.o): Update dependencies.
1705 2011-04-08 Basile Starynkevitch <basile@starynkevitch.net>
1707 * gengtype.c (write_typed_alloc_def): New argument f. Use it instead
1709 (write_typed_struct_alloc_def, write_typed_typedef_alloc_def)
1710 (write_typed_alloc_defns): Likewise.
1711 (main): Calls write_typed_alloc_defns with output_header.
1713 2011-04-08 Vladimir Makarov <vmakarov@redhat.com>
1716 * ira-color.c (setup_profitable_hard_regs): Add comments.
1717 Don't take prohibited hard regs into account.
1718 (setup_conflict_profitable_regs): Rename to
1719 get_conflict_profitable_regs.
1720 (check_hard_reg_p): Check prohibited hard regs.
1722 2011-04-08 Nathan Froyd <froydnj@codesourcery.com>
1724 * config/alpha/alpha.c (alpha_emit_xfloating_libcall): Call use_reg.
1725 * config/xtensa/xtensa.c (xtensa_call_tls_desc): Likewise.
1726 * config/sparc/sparc.c (sparc_legitimize_tls_address): Likewise.
1728 2011-04-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1731 * config/pa/pa.c (hppa_register_move_cost): Increase to 18 cost of
1732 move from floating point to shift amount register.
1733 (emit_move_sequence): Remove secondary reload support for floating
1734 point to shift amount amount register copies.
1735 (pa_secondary_reload): Return GENERAL_REGS for floating point/shift
1736 amount register copies.
1737 * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): For shift amount
1738 register, return false if mode isn't a scalar integer mode.
1739 * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Likewise.
1741 2011-04-08 Richard Guenther <rguenther@suse.de>
1743 * gimple.c (gimple_call_flags): Remove kludge.
1745 2011-04-08 Alexander Monakov <amonakov@ispras.ru>
1747 * sel-sched.c (sel_region_init): Move call to
1748 sel_setup_region_sched_flags after setup_current_loop_nest.
1750 2011-04-08 Andrey Belevantsev <abel@ispras.ru>
1752 PR rtl-optimization/48272
1753 * sched-deps.c (setup_insn_reg_pressure_info): Export and rename to
1754 init_insn_reg_pressure_info. Adjust a caller.
1755 * sched-int.h (init_insn_reg_pressure_info): Declare.
1756 * haifa-sched.c (haifa_init_insn): Call init_insn_reg_pressure_info
1757 when sched-pressure is enabled.
1759 2011-04-08 Richard Guenther <rguenther@suse.de>
1761 * gimple.c (gimple_set_modified): Do not queue calls to
1762 MODIFIED_NORETURN_CALLS here ...
1763 * tree-ssa-operands.c (update_stmt_operands): ... but here.
1765 2011-04-08 Richard Guenther <rguenther@suse.de>
1768 * toplev.c (lang_dependent_init): Do not open asm_out_file
1769 in WPA mode, nor perform debug machinery initialization.
1770 (finalize): Do not unlink asm_out_file in WPA mode.
1772 2011-04-08 Richard Guenther <rguenther@suse.de>
1774 * gimple.h (gimple_call_fntype): New function.
1775 (gimple_call_return_type): Use it.
1776 * expr.c (expand_expr_real_1): Use gimple_call_fntype.
1777 * gimple-low.c (gimple_check_call_args): Likewise.
1778 * gimple.c (gimple_call_flags): Likewise.
1779 (gimple_call_arg_flags): Likewise.
1780 (gimple_call_return_flags): Likewise.
1781 * tree-cfg.c (verify_gimple_call): Likewise.
1782 (do_warn_unused_result): Likewise.
1783 * tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
1784 * value-prof.c (gimple_ic_transform): Fix fndecl check.
1786 2011-04-08 Dmitry Melnik <dm@ispras.ru>
1788 PR rtl-optimization/48235
1789 * sel-sched.c (code_motion_process_successors): Recompute the last
1790 insn in basic block if control flow changed.
1791 (code_motion_path_driver): Ditto. Recompute the first insn as well.
1792 Update condition for ilist_remove.
1794 2011-04-08 Alexander Monakov <amonakov@ispras.ru>
1796 PR rtl-optimization/48302
1797 * sel-sched-ir.h (sel_add_loop_preheaders): Update prototype.
1798 * sel-sched-ir.c (sel_add_loop_preheaders): Add 'bbs' argument. Use
1799 it to record added preheader blocks.
1800 * sel-sched.c (setup_current_loop_nest): Add 'bbs' argument. Pass it
1801 on to sel_add_loop_preheaders.
1802 (sel_region_init): Move call to setup_current_loop_nest after
1805 2011-04-08 Alexander Monakov <amonakov@ispras.ru>
1808 * cfgloop.h (loop_has_exit_edges): New helper.
1809 * sel-sched-ir.c (init_global_and_expr_for_insn): Make CALLs
1811 * sel-sched.c (sel_setup_region_sched_flags): Don't pipeline loops
1812 that have no exit edges.
1814 2011-04-08 Alexander Monakov <amonakov@ispras.ru>
1816 PR rtl-optimization/48442
1817 * sel-sched.c (init_seqno): Remove number_of_insns argument. Update
1818 all callers. Adjust assert.
1820 2011-04-08 Jakub Jelinek <jakub@redhat.com>
1822 PR tree-optimization/48377
1823 * tree-vect-data-refs.c (vector_alignment_reachable_p): Set
1824 is_packed to true even for types with smaller TYPE_ALIGN than
1827 2011-04-08 Richard Guenther <rguenther@suse.de>
1830 * doc/tm.texi: Re-generate.
1832 2011-04-08 Wei Guozhi <carrot@google.com>
1835 * config/arm/arm-protos.h (arm_attr_length_push_multi): New prototype.
1836 * config/arm/arm.c (arm_attr_length_push_multi): New function.
1837 * config/arm/arm.md (*push_multi): Change the length computation to
1840 2011-04-08 Anatoly Sokolov <aesok@post.ru>
1842 * doc/tm.texi.in (ASM_OUTPUT_BSS): Remove documentation.
1843 (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS): Update documentation.
1844 * doc/tm.texi: Regenerate.
1845 * system.h (ASM_OUTPUT_BSS): Poison.
1846 * varasm.c (asm_output_bss): Remove function.
1847 (emit_bss, init_varasm_once): Don't use ASM_OUTPUT_BSS macro.
1849 * config/frv/frv.h (BSS_SECTION_ASM_OP): Remove comment.
1850 * config/frv/fr30.h (BSS_SECTION_ASM_OP): Likewise.
1851 * config/i386/djgpp.h (BSS_SECTION_ASM_OP): Likewise.
1852 * config/i386/i386elf.h (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS):
1854 * config/sh/sh.h (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS):
1856 * config/m68k/m68kelf.h (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS):
1858 * config/m68k/netbsd-elf.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
1860 2011-04-07 Joseph Myers <joseph@codesourcery.com>
1862 * config/rx/rx.opt (rx610, rx200, rx600): Use Enum not Name on
1865 2011-04-07 Joseph Myers <joseph@codesourcery.com>
1867 * config/m68k/m68k.c (m68k_handle_option): Don't handle
1868 OPT_m68000, OPT_mc68000, OPT_m68010, OPT_m68020, OPT_mc68020,
1869 OPT_m68030, OPT_m68040, OPT_m68060, OPT_m68302, OPT_m68332 and
1871 * config/m68k/m68k.h (OPTION_DEFAULT_SPECS, ASM_CPU_SPEC): Don't
1872 handle -mc68000, -m68000, -m68302, -m68010, -mc68020, -m68020,
1873 -m68030, -m68040, -m68060, -mcpu32 and -m68332.
1874 * config/m68k/m68k.opt (m68000, m68010, m68020, m68030, m68040,
1875 m68060, m68302, m68332, mc68000, mc68020, mcpu32): Use Alias.
1876 * config/m68k/t-mlibs (CANONICALIZE_OPTIONS): Remove.
1877 (MULTILIB_OPTIONS): Don't use $(CANONICALIZE_OPTIONS).
1878 (MULTILIB_MATCHES): Map -march= options to corresponding -mcpu=
1879 options. Don't map other m68k options manually. Don't handle
1880 old-style options as canonical.
1881 (MULTILIB_EXCEPTIONS): Don't use $(CANONICALIZE_OPTIONS).
1882 * doc/install.texi (m68k-*-*): Document binutils version requirement.
1884 2011-04-07 Eric Botcazou <ebotcazou@adacore.com>
1886 * basic-block.h (force_nonfallthru): Move to...
1887 * cfghooks.h (struct cfg_hooks): Add force_nonfallthru hook.
1888 (force_nonfallthru): ...here.
1889 * cfghooks.c (force_nonfallthru): New function.
1890 * cfgrtl.c (force_nonfallthru): Rename into...
1891 (rtl_force_nonfallthru): ...this.
1892 (commit_one_edge_insertion): Do not set AUX field.
1893 (commit_edge_insertions): Do not discover new basic blocks.
1894 (rtl_cfg_hooks): Add rtl_force_nonfallthru.
1895 (cfg_layout_rtl_cfg_hooks): Likewise.
1896 * function.c (thread_prologue_and_epilogue_insns): Remove bogus
1897 ATTRIBUTE_UNUSED. Discover new basic blocks in the prologue insns.
1898 * tree-cfg.c (gimple_cfg_hooks): Add NULL for force_nonfallthru.
1900 2011-04-07 Anatoly Sokolov <aesok@post.ru>
1902 * config/mips/mips.h (REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P):
1905 2011-04-07 Uros Bizjak <ubizjak@gmail.com>
1907 * config/i386/sse.md: Update copyright year.
1908 (avxcvtvecmode): Remove.
1909 (sse_movhlps): Merge with *avx_movhlps.
1910 (sse_movlhps): Merge with *avx_movlhps.
1911 (vec_interleave_highv4sf): Merge with *avx_interleave_highv4sf.
1912 (vec_interleave_lowv4sf): Merge with *avx_interleave_lowv4sf.
1913 (sse_shufps_<mode>): Merge with *avx_shufps_<mode>.
1914 (sse_loadhps): Merge with *avx_loadhps.
1915 (sse_storelps): Merge with *avx_storelps.
1916 (sse_loadlps): Merge with *avx_loadlps.
1917 (sse_movss): Merge with *avx_movss.
1918 (*vec_concatv2sf_sse4_1): Merge with *vec_concatv2sf_avx.
1919 (*vec_concatv4sf_sse): Merge with *vec_concatv4sf_avx.
1920 (*vec_set<mode>_0_sse4_1): Merge with *vec_set<mode>_0_avx.
1921 (*vec_set<mode>_0_sse2): Split multi-unit alternative.
1922 (vec_set<mode>_0): Ditto.
1923 (*vec_setv4sf_sse4_1): Merge with *vec_setv4sf_avx.
1924 (sse4_1_insertps): Merge with *avx_insertps.
1925 (*sse3_interleave_highv2df): Merge with *avx_interleave_highv2df.
1926 (*sse3_interleave_lowv2df): Merge with *avx_interleave_lowv2df.
1927 (vec_interleave_highv2di): Merge with *avx_interleave_highv2di.
1928 (sse2_shufpd_<mode>): Merge with *avx_shufpd_<mode>.
1929 (sse2_storehpd): Merge with *avx_storehpd.
1930 (sse2_loadhpd): Merge with *avx_loadhpd.
1931 (sse2_loadlpd): Merge with *avx_loadlpd.
1932 (sse2_movsd): Merge with *avx_movsd.
1933 (*vec_concatv2df): Merge with *vec_concatv2df.
1935 2011-04-07 Jakub Jelinek <jakub@redhat.com>
1938 * combine.c (combine_instructions): Add last_combined_insn,
1939 update it if insn is after it, pass it to all try_combine calls.
1940 (try_combine): Add last_combined_insn parameter, pass it instead of
1941 i3 to propagate_for_debug.
1943 2011-04-07 Nick Clifton <nickc@redhat.com>
1945 * config/mn10300/mn10300.md (movqi_internal): Add alternatives
1946 to handle MDR <-> data register transfers.
1947 (movhi_internal): Likewise.
1949 2011-04-07 Alan Modra <amodra@gmail.com>
1951 * config/rs6000/rs6000.c (rs6000_stack_info): Don't compare against
1952 previous stack info.
1954 2011-04-07 Tom de Vries <tom@codesourcery.com>
1957 * cfgcleanup.c (try_crossjump_to_edge): Add dir parameter. Pass dir to
1958 flow_find_cross_jump. Swap variables to implement backward replacement.
1959 (try_crossjump_bb): Add argument to try_crossjump_to_edge.
1961 2011-04-07 Tom de Vries <tom@codesourcery.com>
1964 * cfgcleanup.c (walk_to_nondebug_insn): New function.
1965 (flow_find_cross_jump): Use walk_to_nondebug_insn. Recalculate bb1
1967 (try_crossjump_to_edge): Handle case that newpos1 or newpos2 is not
1968 src1 or src2. Redirect edges to the last basic block. Update
1969 frequency and count on multiple basic blocks in case of fallthru.
1971 2011-04-07 Tom de Vries <tom@codesourcery.com>
1974 * cfgcleanup.c (equal_different_set_p, can_replace_by, merge_dir): New
1976 (old_insns_match_p): Change return type. Replace return false/true
1977 with return dir_none/dir_both. Use can_replace_by.
1978 (flow_find_cross_jump): Add dir_p parameter. Init replacement
1979 direction from dir_p. Register replacement direction in dir, last_dir
1980 and afterlast_dir. Handle new return type of old_insns_match_p using
1981 merge_dir. Return replacement direction in dir_p.
1982 (flow_find_head_matching_sequence, outgoing_edges_match): Handle new
1983 return type of old_insns_match_p.
1984 (try_crossjump_to_edge): Add argument to call to flow_find_cross_jump.
1985 * ifcvt.c ( cond_exec_process_if_block): Add argument to call to
1986 flow_find_cross_jump.
1987 * basic-block.h (enum replace_direction): New type.
1988 (flow_find_cross_jump): Add parameter to declaration.
1990 2011-04-06 Uros Bizjak <ubizjak@gmail.com>
1992 * config/i386/sse.md (AVXMODEDCVTDQ2PS): Remove.
1993 (AVXMODEDCVTPS2DQ): Ditto.
1994 (VEC_FLOAT_MODE): Ditto.
1995 (<sse>_andnot<mode>3): Merge with avx_andnot<mode>3. Use VF mode
1996 iterator. Handle TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL target flag.
1997 (<any_logic:code><mode>3): Use VF mode iterator.
1998 (*<any_logic:code><mode>3): Merge with *avx_<any_logic:code><mode>3.
1999 Use VF mode iterator.
2000 (copysign<mode>3): Use VF mode iterator.
2001 (*andnot<MODEF:mode>3): Merge with *avx_andnot<MODEF:mode>3. Handle
2002 TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL target flag.
2003 (*<any_logic:code><MODEF:mode>3): Merge with
2004 *avx_<any_logic:code><MODEF:mode>3.
2005 (sse_cvtsi2ss): Merge with *avx_cvtsi2ss.
2006 (sse_cvtsi2ssq): Merge with *avx_cvtsi2ssq.
2007 (avx_cvtdq2ps256): Split from avx_cvtdq2ps<avxmodesuffix>.
2008 (avx_cvtdq2ps<avxmodesuffix>): Remove.
2009 (sse2_cvtdq2ps): Use %v modifier.
2010 (avx_cvtps2dq256): Split from avx_cvtps2dq<avxmodesuffix>.
2011 (avx_cvtps2dq<avxmodesuffix>): Remove.
2012 (sse2_cvtps2dq): Use %v modifier.
2013 (avx_cvttps2dq256): Split from avx_cvttps2dq<avxmodesuffix>.
2014 (avx_cvttps2dq<avxmodesuffix>): Remove.
2015 (sse2_cvttps2dq): Use %v modifier.
2016 (sse2_cvtsi2sd): Merge with *avx_cvtsi2sd.
2017 (sse2_cvtsi2sdq): Merge with *avx_cvtsi2sdq.
2018 (sse2_cvtsd2siq): Fix insn template.
2019 (sse2_cvtsd2siq_2): Ditto.
2020 (sse2_cvttsd2siq): Ditto.
2021 (sse2_cvtsd2ss): Merge with *avx_cvtsd2ss.
2022 (sse2_cvtss2sd): Merge with *avx_cvtss2sd.
2024 2011-04-06 Joseph Myers <joseph@codesourcery.com>
2026 * gcov-io.c: Use GCC Runtime Library Exception.
2028 2011-04-06 Jakub Jelinek <jakub@redhat.com>
2031 * dwarf2out.c (based_loc_descr): If drap_reg is INVALID_REGNUM, use
2032 as base_reg whatever register reg has been eliminated to, instead
2033 of hardcoding STACK_POINTER_REGNUM.
2035 2011-04-06 Joseph Myers <joseph@codesourcery.com>
2037 * doc/tm.texi.in: Document C target hooks as separate from general
2039 * doc/tm.texi: Regenerate.
2040 * genhooks.c (struct hook_desc): Add docname field.
2041 (HOOK_VECTOR_1, DEFHOOKPOD, DEFHOOK, DEFHOOK_UNDOC). Initialize
2043 (hook_array): Include c-target.def.
2044 (emit_documentation): Use docname field in output.
2045 (emit_init_macros): Take docname argument. Only emit definitions
2046 for hooks matching docname.
2047 (main): Expect additional arguments in all cases. Pass argument
2048 to emit_init_macros.
2049 * target.def: Move initial macro definitions and comments to
2050 target-hooks-macros.h.
2051 (gcc_targetcm): Move to c-family/c-target.def.
2052 * target.h (targetcm): Move declaration to c-family/c-target.h.
2053 * targhooks.c (default_handle_c_option): Move to
2055 * targhooks.h (default_handle_c_option): Move declaration to
2056 c-family/c-common.h.
2057 * target-hooks-macros.h: New file.
2058 * config.gcc (target_has_targetcm): Define and use to add to
2059 c_target_objs and cxx_target_objs.
2060 * config/default-c.c: New file.
2061 * config/darwin-c.c: Include c-target.h and c-target-def.h instead
2062 of target.h and target-def.h.
2063 (TARGET_HANDLE_C_OPTION, targetcm): Define later in file.
2064 (darwin_objc_construct_string, darwin_cfstring_ref_p,
2065 darwin_check_cfstring_format_arg): Make static.
2066 (TARGET_OBJC_CONSTRUCT_STRING_OBJECT,
2067 TARGET_STRING_OBJECT_REF_TYPE_P,
2068 TARGET_CHECK_STRING_OBJECT_FORMAT_ARG): Define here.
2069 * config/darwin-protos.h (darwin_objc_construct_string,
2070 darwin_cfstring_ref_p, darwin_check_cfstring_format_arg): Don't
2072 * config/darwin.h (TARGET_OBJC_CONSTRUCT_STRING_OBJECT,
2073 TARGET_STRING_OBJECT_REF_TYPE_P,
2074 TARGET_CHECK_STRING_OBJECT_FORMAT_ARG, TARGET_HAS_TARGETCM): Remove.
2075 * config/t-darwin (darwin-c.o): Update dependencies.
2076 * system.h (TARGET_HAS_TARGETCM): Poison.
2077 * Makefile.in (TARGET_H): Update.
2078 (TARGET_DEF, C_TARGET_DEF, C_TARGET_H, C_TARGET_DEF_H): Define.
2079 (c-family/c-format.o, c-family/c-opts.o): Update dependencies.
2080 (default-c.o): New target.
2081 (s-target-hooks-def-h): Pass "Target Hook" string to genhooks.
2082 (c-family/c-target-hooks-def.h, s-c-target-hooks-def-h): New targets.
2083 (s-tm-texi): Pass -d option to genhooks. Also test timestamp on
2085 (build/genhooks.o): Update dependencies.
2087 2011-04-06 Richard Guenther <rguenther@suse.de>
2089 * ipa-inline.c (enum inlining_mode): Remove.
2090 (cgraph_flatten): Use some other token.
2091 (cgraph_edge_early_inlinable_p): New function, split out from ...
2092 (cgraph_perform_always_inlining): New function, split out from ...
2093 (cgraph_decide_inlining_incrementally): ... here.
2094 (cgraph_mark_inline_edge): Adjust.
2095 (cgraph_early_inlining): Re-structure.
2096 (pass_early_inline): Require SSA form.
2098 2011-04-06 Andrew Stubbs <ams@codesourcery.com>
2099 Julian Brown <julian@codesourcery.com>
2100 Mark Shinwell <shinwell@codesourcery.com>
2102 * config/arm/arm.h (arm_class_likely_spilled_p): Check against
2103 LO_REGS only for Thumb-1.
2104 (MODE_BASE_REG_CLASS): Restrict base registers to those which can
2105 be used in short instructions when optimising for size on Thumb-2.
2107 2011-04-06 Eric Botcazou <ebotcazou@adacore.com>
2109 * gimple-low.c (lower_gimple_return): When not optimizing, force labels
2110 associated with user returns to be preserved.
2112 2011-04-06 Tristan Gingold <gingold@adacore.com>
2114 * dbxout.c (debug_nesting, symbol_queue, symbol_queue_index,
2115 symbol_queue_size, DBXOUT_DECR_NESTING,
2116 (DBXOUT_DECR_NESTING_AND_RETURN): Also define
2117 if XCOFF_DEBUGGING_INFO.
2119 2011-04-06 Uros Bizjak <ubizjak@gmail.com>
2121 * config/i386/i386.md (attribute isa): New.
2122 (attribute enabled): New.
2123 (setcc_<mode>_sse): Merge from *{avx,sse}_setcc<mode>.
2124 (*fop_<mode>_comm_mixed): Merge with *fop_<mode>_comm_mixed_avx.
2125 (*fop_<mode>_comm_sse): Merge with *fop_<mode>_comm_avx.
2126 (*fop_<mode>_1_mixed): Merge with *fop_<mode>_1_mixed_avx.
2127 (*fop_<mode>_1_sse): Merge with *fop_<mode>_1_avx.
2128 (<smaxmin:code><mode>3): Merge with *avx_<smaxmin:code><mode>3.
2129 (*ieee_smin<mode>3): Merge with *avx_ieee_smin<mode>3.
2130 (*ieee_smax<mode>3): Merge with *avx_ieee_smax<mode>3.
2132 * config/i386/sse.md (VF): New mode iterator.
2136 (SSEMODEF4): Remove.
2137 (attribute sse): Handle V8SF and V4DF modes.
2138 (<absneg:code><mode>2): Use VF mode iterator.
2139 (*absneg<mode>2): Merge from *{avx,sse}_absneg<mode>2. Use VF
2141 (<plusminus_insn><mode>3): Use VF mode iterator.
2142 (*<plusminus_insn><mode>3): Merge with *avx_<plusminus_insn><mode>3.
2143 Use VF mode iterator.
2144 (<sse>_vm<plusminus_insn><mode>3): Merge with
2145 *avx_vm<plusminus_insn><mode>3. Use VF_128 mode iterator.
2146 (mul<mode>3): Use VF mode iterator.
2147 (*mul<mode>3): Merge with *avx_mul<mode>3. Use VF mode iterator.
2148 (<sse>_vmmul<mode>3): Merge with *avx_vmmul<mode>3. Use VF_128
2150 (div<VF2:mode>3): Merge from divv2df3 and divv4df3.
2151 (div<VF1:mode>3): Merge from divv4sf3 and divv8sf3.
2152 (<sse>_div<mode>3): Merge with *avx_div<mode>3. Use VF mode iterator.
2153 (<sse>_vmdiv<mode>3): Merge with *avx_vmdiv<mode>3. Use VF_128
2155 (<sse>_rcp<mode>2): Merge from avx_rcpv8sf2 and sse_rcpv4sf2.
2156 Use VF1 mode iterator.
2157 (sse_vmrcpv4sf2): Merge with *avx_vmrcpv4sf2.
2158 (sqrt<VF2:mode>2): New expander.
2159 (sqrt<VF1:mode>2): Merge from sqrtv4sf2 and sqrtv8sf2.
2160 (<sse>_sqrt<mode>2): Merge from avx_sqrtv8sf2, sse_sqrtv4sf, sqrtv4df2
2161 and sqrtv2df2. Use VF mode iterator.
2162 (<sse>_vmsqrt<mode>2): Merge with *avx_vmsqrt<mode>2. Use VF_128
2164 (rsqrt<VF1:mode>2): Merge from rsqrtv4sf2 and rsqrtv8sf2.
2165 (<sse>_rsqrt<mode>2): Merge from avx_rsqrtv8sf2 and sse_rsqrt4sf2.
2166 Use VF1 mode iterator.
2167 (sse_vmrsqrtv4sf2): Merge with *avx_vmrsqrtv4sf2.
2168 (<smaxmin:code><mode>3): Use VF mode iterator.
2169 (*<smaxmin:code><mode>3_finite): Merge with
2170 *avx_<smaxmin:code><mode>3_finite. Use VF mode iterator.
2171 (*<smaxmin:code><mode>3): Merge with *avx_<smaxmin:code><mode>3.
2172 (<sse>_vm<smaxmin:code><mode>2): Merge with
2173 *avx_vm<smaxmin:code><mode>2. Use VF_128 mode iterator.
2174 (*ieee_smin<mode>3): Merge with *avx_ieee_smin<mode>3. Use VF
2176 (*ieee_smax<mode>3): Merge with *avx_ieee_smax<mode>3. Use VF
2178 (sse3_addsubv2df3): Merge with *avx_addsubv2df3.
2179 (sse3_addsubv4sf3): Merge with *avx_addsubv4sf3.
2180 (sse3_h<plusminus_insn>v2df3): Merge with *avx_h<plusminus_insn>v2df3.
2181 (sse3_h<plusminus_insn>v4sf3): Merge with *avx_h<plusminus_insn>v4sf3.
2182 (avx_cmp<mode>3): Rename from avx_cmp<ssemodesuffix><mode>3. Use
2184 (avx_vmcmp<mode>3): Rename from avx_cmp<ssescalarmodesuffix><mode>3.
2185 Use VF_128 mode iterator.
2186 (<sse>_maskcmp<mode>3): Merge with *avx_maskcmp<mode>3. Use VF
2188 (<sse>_vmmaskcmp<mode>3): Merge with *avx_vmmaskcmp<mode>3. Use
2189 VF_128 mode iterator.
2190 (vcond<mode>): Use VF mode iterator.
2191 * config/i386/predicates.md (sse_comparison_operator): Merge with
2192 avx_comparison_float_operator. Do not declare as special_predicate.
2193 * config/i386/i386.c (struct builtin_description): Update for renamed
2195 (ix86_expand_args_builtin): Ditto.
2196 (ix86_expand_sse_compare_mask): Ditto.
2198 2011-04-06 Richard Guenther <rguenther@suse.de>
2200 * tree-inline.c (estimate_num_insns): For calls simply account
2201 for all passed arguments and a used return value.
2203 2011-04-06 Richard Guenther <rguenther@suse.de>
2205 PR tree-optimization/47663
2206 * cgraph.h (struct cgraph_edge): Add call_stmt_size and
2207 call_stmt_time fields.
2208 (cgraph_edge_inlinable_p): Declare.
2209 (cgraph_edge_recursive_p): New inline function.
2210 * cgraph.c (cgraph_create_edge_1): Initialize call_stmt_size.
2211 (cgraph_clone_edge): Copy it.
2212 * ipa-inline.c (cgraph_estimate_edge_time): New function.
2213 Account for call stmt time.
2214 (cgraph_estimate_time_after_inlining): Take edge argument.
2215 (cgraph_estimate_edge_growth): Account call stmt size.
2216 (cgraph_estimate_size_after_inlining): Take edge argument.
2217 (cgraph_mark_inline_edge): Adjust.
2218 (cgraph_check_inline_limits): Likewise.
2219 (cgraph_recursive_inlining_p): Remove.
2220 (cgraph_edge_badness): Use cgraph_edge_recursive_p.
2221 (cgraph_decide_recursive_inlining): Take edge argument and
2223 (cgraph_decide_inlining_of_small_functions): Do not avoid
2224 diags for recursive inlining here.
2225 (cgraph_flatten): Adjust.
2226 (cgraph_decide_inlining_incrementally): Likewise.
2227 (estimate_function_body_sizes): Remove call cost handling.
2228 (compute_inline_parameters): Initialize caller edge call costs.
2229 (cgraph_estimate_edge_growth): New function.
2230 (cgraph_estimate_growth): Use it.
2231 (cgraph_edge_badness): Likewise.
2232 (cgraph_check_inline_limits): Take an edge argument.
2233 (cgraph_decide_inlining_of_small_functions): Adjust.
2234 (cgraph_decide_inlining): Likewise.
2235 * tree-inline.c (estimate_num_insns): Only account for call
2236 return value if it is used.
2237 (expand_call_inline): Avoid diagnostics on recursive inline
2239 * lto-cgraph.c (lto_output_edge): Output edge call costs.
2240 (input_edge): Input edge call costs.
2242 2011-04-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2244 * config/alpha/osf5.h (MAX_OFILE_ALIGNMENT): Define.
2246 2011-04-06 Jonathan Wakely <jwakely.gcc@gmail.com>
2248 * doc/invoke.texi (Spec Files): Fix typo.
2250 2011-04-06 Eric Botcazou <ebotcazou@adacore.com>
2252 * profile.c (branch_prob): Move declaration of local variable. Remove
2253 obsolete ??? comment. Expand the location explicitly instead of using
2254 the LOCATION_FILE and LOCATION_LINE macros.
2256 2011-04-06 Wei Guozhi <carrot@google.com>
2259 * config/arm/arm.md (arm_cmpsi_insn): Compute attr "length".
2260 (arm_cond_branch): Likewise.
2261 (arm_cond_branch_reversed): Likewise.
2262 (arm_jump): Likewise.
2263 (push_multi): Likewise.
2264 * config/arm/constraints.md (Py): New constraint.
2266 2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
2269 * dbxout.c (debug_nesting, symbol_queue, symbol_queue_index):
2271 (symbol_queue_size, DBXOUT_DECR_NESTING): ...and these...
2272 (DBXOUT_DECR_NESTING_AND_RETURN): ...and this under
2273 #ifdef DBX_DEBUGGING_INFO.
2275 2011-04-05 Bernd Schmidt <bernds@codesourcery.com>
2278 * haifa-sched.c (schedule_block): Increment cycle_issued_insns only
2279 if old and new states differ.
2281 2011-04-05 Joseph Myers <joseph@codesourcery.com>
2283 * config/m68k/m68k.c (m68k_handle_option): Don't handle OPT_m5200,
2284 OPT_m5206e, OPT_m528x, OPT_m5307, OPT_m5407 and OPT_mcfv4e.
2285 * config/m68k/m68k.h (OPTION_DEFAULT_SPECS, ASM_CPU_SPEC): Don't
2286 handle -m5200, -m5206e, -m528x, -m5307, -m5407 and -mcfv4e.
2287 * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407,
2289 * config/m68k/t-mlibs (MULTILIB_MATCHES): Don't map legacy
2290 ColdFire options to -mcpu= options.
2292 2011-04-05 Jeff Law <law@redhat.com>
2294 * tree-ssa-threadupdate.c (determine_bb_domination_status): Always
2295 check if BB is a successor of LOOP->header and return
2296 NONDOMINATING if it is not, regardless of ENABLE_CHECKING.
2298 2011-04-05 Steven Bosscher <steven@gcc.gnu.org>
2300 * cprop.c (struct reg_use): Remove.
2301 (reg_use_table): Make an array of RTX.
2302 (find_used_regs, constprop_register, local_cprop_pass,
2303 bypass_block): Simplify users of reg_use_table.
2304 (cprop_insn): Likewise. Iterate if copy propagation succeeded
2305 on one of the uses found by find_used_regs.
2307 2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
2310 * combine.c (combine_instructions): #ifdef AUTO_INC_DEC links
2313 2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
2315 * combine.c (combine_instructions) [AUTO_INC_DEC]: Declare links
2317 (try_combine) [AUTO_INC_DEC]: Declare a local link rtx.
2319 2011-04-05 Steven Bosscher <steven@gcc.gnu.org>
2322 * cprop.c (one_cprop_pass): Do not mark_oprs_set of deleted insns.
2324 2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
2326 * combine.c: Include obstack.h.
2327 (struct insn_link): Define.
2328 (uid_log_links): Adjust type.
2329 (FOR_EACH_LOG_LINK): New macro.
2330 (insn_link_obstack): Declare.
2331 (alloc_insn_link): Define.
2332 (create_log_links): Call it. Use FOR_EACH_LOG_LINK and adjust
2333 type of link variables.
2334 (find_single_use, insn_a_feeds_b, combine_instructions): Likewise.
2335 (try_combine, record_promoted_values, distribute_notes): Likewise.
2336 (distribute_links): Likewise. Tweak prototype.
2337 (clear_log_links): Delete.
2338 (adjust_for_new_dest): Call alloc_insn_link.
2339 * Makefile.in (combine.o): Depend on $(OBSTACK_H).
2341 2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
2343 * gcse.c (modify_mem_list): Convert to an array of VECs.
2344 (canon_modify_mem_list, compute_transp): Tweak formatting.
2345 (alloc_gcse_mem): Likewise. Adjust for modify_mem_list change.
2346 (load_killed_in_block_p): Likewise.
2347 (record_last_mem_set_info): Likewise.
2348 (clear_modify_mem_tables): Likewise.
2350 2011-04-05 Tom de Vries <tom@codesourcery.com>
2353 * function.c (emit_use_return_register_into_block): Only define if
2356 2011-04-05 Eric Botcazou <ebotcazou@adacore.com>
2358 * stor-layout.c (self_referential_size): Fix 2010-07-13 commit.
2360 2011-04-05 Joseph Myers <joseph@codesourcery.com>
2362 * config/rx/rx-opts.h: New.
2363 * config/rx/rx.c (rx_cpu_type): Remove.
2364 (rx_handle_option): Don't assert that global structures are in
2365 use. Access variables via opts pointer. Defer most handling of
2366 OPT_mint_register_. Use error_at.
2367 (rx_option_override): Handle deferred OPT_mint_register_ here.
2368 * config/rx/rx.h (enum rx_cpu_types): Move to rx-opts.h.
2369 * config/rx/rx.opt (config/rx/rx-opts.h: New HeaderInclude.
2370 (mcpu=): Use Enum and specifiy rx_cpu_type with Var.
2371 (rx_cpu_types): New Enum and EnumValue entries.
2372 (mint-register=): Use Defer and use Var accordingly.
2374 2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
2376 * debug.h (debug_flush_symbol_queue, debug_queue_symbol): Delete.
2377 (debug_free_queue, debug_nesting, symbol_queue_index): Delete.
2378 * final.c (debug_flush_symbol_queue, debug_queue_symbol):
2380 (debug_free_queue, debug_nesting, symbol_queue_index):
2382 * dbxout.c: ...to here. Make static.
2384 2011-04-05 Nathan Froyd <froydnj@codesourcery.com>
2386 * gcse.c (modify_pair): Define. Define a VEC of it.
2387 (canon_modify_mem_list): Convert to an array of VECs.
2388 (free_insn_expr_list_list): Delete.
2389 (clear_modify_mem_tables): Call VEC_free instead.
2390 (record_last_mem_set_info): Don't modify canon_modify_mem_list.
2391 (alloc_gcse_mem): Adjust for canon_modify_mem_list change.
2392 (canon_list_insert, compute_transp): Likewise.
2394 2011-04-05 Tom de Vries <tom@codesourcery.com>
2397 * config/arm/arm.h (BRANCH_COST): Set to 1 for Thumb-2 when optimizing
2400 2011-04-05 Tom de Vries <tom@codesourcery.com>
2403 * function.c (emit_use_return_register_into_block): New function.
2404 (thread_prologue_and_epilogue_insns): Use
2405 emit_use_return_register_into_block.
2407 2011-04-05 Tom de Vries <tom@codesourcery.com>
2410 * cfgcleanup.c (flow_find_cross_jump): Don't count USE or CLOBBER as
2413 2011-04-05 Tom de Vries <tom@codesourcery.com>
2415 * cfgcleanup.c (try_crossjump_bb): Remove 2 superfluous variables.
2417 2011-04-05 Yufeng Zhang <yufeng.zhang@arm.com>
2419 * config/arm/arm.md (define_constants for unspec): Replace with
2421 (define_constants for unspecv): Replace with define_c_enum.
2422 * config/arm/neon.md (define_constants for unspec): Replace with
2425 2011-04-04 Richard Henderson <rth@redhat.com>
2428 * dwarf2out.c (output_line_info): Always emit line info from
2429 at least one section.
2430 (dwarf2out_init): Create text_section_line_info here ...
2431 (set_cur_line_info_table): ... not here.
2433 2011-04-04 Vladimir Makarov <vmakarov@redhat.com>
2436 * ira.c (ira): Call grow_reg_equivs when fix_reg_equiv_init is
2439 * ira-emit.c (emit_move_list): Update reg_equiv_init insn list.
2441 2011-04-04 Steven Bosscher <steven@gcc.gnu.org>
2443 * cprop.c (struct expr): Split 'expr' field in 'dest' and 'src'.
2444 (expr_equiv_p): Remove.
2445 (insert_set_in_table): Look at <dest, src> pair instead of expr.
2446 (hash_scan_set): Update call to insert_set_in_table.
2447 (dump_hash_table): Dump <dest, src> pair.
2448 (lookup_set): Simplify. Lookup <dest, src> pair.
2449 (compute_transp): Remove, fold heavily simplified code into...
2450 (compute_local_properties): ...here. Expect COMP and TRANSP
2452 (find_avail_set): Take set directly from struct expr.
2453 (find_bypass-set): Likewise.
2454 (bypass_block): Likewise.
2455 (cprop_insn): Likewise. Remove redundant INSN_P test.
2457 * cprop.c (implicit_set_cond_p): Assume nothing about COND, move
2458 checks on form of COND from find_implicit_sets to here.
2459 (find_implicit_sets): Cleanup control flow. Split critical edges
2460 if it exposes implicit sets. Allocate/resize implicit_sets as
2462 (one_cprop_pass): Only delete unreachable blocks if local_cprop_pass
2463 changed something. Run df_analyze after find_implicit_sets if any
2464 edges were split. Do not allocate implicit_sets here.
2466 * cprop.c: s/gcse/cprop/ everywhere except for flag_gcse.
2467 (gcse_obstack): Renamed to cprop_obstack.
2468 (GNEW, GNEWVEC, GNEWVAR): Remove.
2470 (alloc_hash_table): Use XNEWVAR instead of GNEWVAR.
2471 (GOBNEW, GOBNEWVAR): Adjust for gcse_obstack renaming.
2472 (gcse_alloc): Likewise, and rename to cprop_alloc.
2473 (alloc_gcse_men, free_gcse_mem): Remove.
2474 (gcse_constant_p): Rename to cprop_constant_p, and adjust all callers.
2475 (compute_hash_table_work): Allocate and free reg_set_bitmap here.
2476 (one_cprop_pass): Likewise. Adjust for gcse_obstack renaming.
2478 * cprop.c (oprs_not_set_p): Remove.
2479 (mark_set, mark_clobber): Remove.
2480 (mark_oprs_set): Rewrite using DF_INSN_INFO_DEFS cache.
2481 (reg_not_set_p): New function.
2482 (find_avail_set): Use reg_not_set_p instead of oprs_not_set_p.
2483 (cprop_insn): Likewise.
2484 (cprop_jump): Use FOR_EACH_EDGE.
2486 2011-04-04 Bernd Schmidt <bernds@codesourcery.com>
2489 * haifa-sched.c (nonscheduled_insns_begin): New static variable.
2490 (rank_for_schedule): Use scheduled_insns vector instead of
2491 last_scheduled_insn.
2492 (ok_for_early_queue_removal): Likewise.
2493 (queue_to_ready): Search forward in nonscheduled_insns_begin if
2495 (choose_ready): Likewise.
2496 (commit_schedule): Use VEC_iterate.
2497 (schedule_block): Initialize nonscheduled_insns_begin. If we have
2498 a dbg_cnt, use it and ensure the first insn is in the ready list.
2499 (haifa_sched_init): Allocate scheduled_insns.
2500 (sched_extend_ready_list): Don't allocate it; reserve space.
2501 (haifa_sched_finish): Free it.
2503 2011-04-04 Joseph Myers <joseph@codesourcery.com>
2505 * optc-gen.awk: Always remove type from Variable entry before
2506 recording in var_seen.
2508 2011-04-04 Eric Botcazou <ebotcazou@adacore.com>
2510 * cfghooks.c (tidy_fallthru_edges): Add ??? comment.
2511 * tree-inline.c (delete_unreachable_blocks_update_callgraph): Remove
2512 call to tidy_fallthru_edges.
2514 2011-04-04 Joseph Myers <joseph@codesourcery.com>
2516 * doc/options.texi (ToLower): Document.
2517 * opt-functions.awk (switch_bit_fields): Initialize cl_tolower field.
2518 * opts-common.c (decode_cmdline_option): Handle cl_tolower.
2519 * opts.h (cl_option): Add cl_tolower field.
2520 * config/rx/rx.c (rx_handle_option): Use strcmp of -mcpu=
2521 arguments with lowercase strings.
2522 * config/rx/rx.opt (mcpu=): Add ToLower.
2523 * config/rx/t-rx (MULTILIB_MATCHES): Don't handle uppercase -mcpu=
2526 2011-04-04 Richard Sandiford <richard.sandiford@linaro.org>
2528 * config/pdp11/pdp11.h (IRA_COVER_CLASSES): Delete.
2530 2011-04-04 Richard Sandiford <richard.sandiford@linaro.org>
2532 * config/vax/vax.c: Include reload.h.
2534 2011-04-04 Anatoly Sokolov <aesok@post.ru>
2536 * config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Remove.
2537 * config/sparc/sparc.c (TARGET_PREFERRED_RELOAD_CLASS): Define.
2538 (sparc_preferred_reload_class): New function.
2540 2011-04-04 Jakub Jelinek <jakub@redhat.com>
2543 * cfgexpand.c (expand_gimple_basic_block): Avoid useless assignment.
2544 Use PAT_VAR_LOCATION_LOC instead of INSN_VAR_LOCATION_LOC.
2546 2011-04-03 Nathan Froyd <froydnj@codesourcery.com>
2548 * tree.h (struct tree_const_decl): Inherit from tree_decl_common.
2549 * tree.c (initialize_tree_contains_struct): Adjust accordingly.
2551 2011-04-03 Anatoly Sokolov <aesok@post.ru>
2553 * config/avr/avr.h (ASM_OUTPUT_BSS): Remove.
2554 (ASM_OUTPUT_ALIGNED_BSS): Define.
2556 2011-04-03 Michael Matz <matz@suse.de>
2558 * lto-streamer.h (struct lto_streamer_cache_d): Remove offsets
2559 and next_slot members.
2560 (lto_streamer_cache_insert, lto_streamer_cache_insert_at,
2561 lto_streamer_cache_lookup, lto_streamer_cache_get): Adjust prototypes.
2562 (lto_streamer_cache_append): Declare.
2563 * lto-streamer.c (lto_streamer_cache_add_to_node_array): Use
2564 unsigned index, remove offset parameter, ensure that we append
2565 or update existing entries.
2566 (lto_streamer_cache_insert_1): Use unsigned index, remove offset_p
2567 parameter, update next_slot for append.
2568 (lto_streamer_cache_insert): Use unsigned index, remove offset_p
2570 (lto_streamer_cache_insert_at): Likewise.
2571 (lto_streamer_cache_append): New function.
2572 (lto_streamer_cache_lookup): Use unsigned index.
2573 (lto_streamer_cache_get): Likewise.
2574 (lto_record_common_node): Don't test tree_node_can_be_shared.
2575 (preload_common_node): Adjust call to lto_streamer_cache_insert.
2576 (lto_streamer_cache_delete): Don't free offsets member.
2577 * lto-streamer-out.c (eq_string_slot_node): Use memcmp.
2578 (lto_output_string_with_length): Use lto_output_data_stream.
2579 (lto_output_tree_header): Remove ix parameter, don't write it.
2580 (lto_output_builtin_tree): Likewise.
2581 (lto_write_tree): Adjust callers to above, don't track and write
2582 offset, write unsigned index.
2583 (output_unreferenced_globals): Don't emit all global vars.
2584 (write_global_references): Use unsigned indices.
2585 (lto_output_decl_state_refs): Likewise.
2586 (write_symbol): Likewise.
2587 * lto-streamer-in.c (lto_input_chain): Move earlier.
2588 (input_function): Use unsigned index.
2589 (input_alias_pairs): Don't read and then ignore all global vars.
2590 (lto_materialize_tree): Remove ix_p parameter, don't read index,
2591 don't pass it back, use lto_streamer_cache_append.
2592 (lto_register_var_decl_in_symtab): Use unsigned index.
2593 (lto_register_function_decl_in_symtab): Likewise.
2594 (lto_get_pickled_tree): Don't read in or handle offset, read unsigned
2596 (lto_get_builtin_tree): Don't read index, use
2597 lto_streamer_cache_append.
2598 (lto_read_tree): Adjust call to lto_materialize_tree.
2600 * ipa-inline.c (cgraph_edge_badness): Move growth calculaton,
2601 don't use function calls in arguments to MIN.
2603 * varasm.c (decl_binds_to_current_def_p): Don't check TREE_PUBLIC
2606 * gimple.c (gimple_type_leader_entry): Mark deletable.
2608 2011-04-03 Alan Modra <amodra@gmail.com>
2610 * dwarf2out.c (mem_loc_descriptor): Recurse on LO_SUM.
2612 2011-04-03 Michael Matz <matz@suse.de>
2614 * tree.c (free_lang_data_in_decl): Zero DECL_VINDEX if it's not
2616 * tree.h (tree_decl_non_common.vindex): Adjust comment.
2618 2011-04-03 Michael Matz <matz@suse.de>
2620 * cgraphbuild.c (record_reference): Canonicalize constructor values.
2621 * gimple-fold.c (canonicalize_constructor_val): Accept being called
2622 without function context.
2623 * cgraphunit.c (cgraph_finalize_compilation_unit): Clear
2624 current_function_decl and cfun.
2626 2011-04-03 Michael Matz <matz@suse.de>
2628 * tree.c (decl_init_priority_insert): Don't create entry for
2630 (decl_fini_priority_insert): Ditto.
2631 (fields_compatible_p, find_compatible_field): Remove.
2632 * tree.h (fields_compatible_p, find_compatible_field): Remove.
2633 * gimple.c (gimple_compare_field_offset): Adjust block comment.
2635 2011-04-03 Eric Botcazou <ebotcazou@adacore.com>
2637 * combine.c (try_combine): Remove useless local variable.
2639 2011-04-03 Richard Guenther <rguenther@suse.de>
2640 Ira Rosen <ira.rosen@linaro.org>
2642 * tree-if-conv.c (memrefs_read_or_written_unconditionally): Strip all
2643 non-variable offsets and compare the remaining bases of the two
2644 accesses instead of looking for exact same data-ref.
2646 2011-04-02 Kai Tietz <ktietz@redhat.com>
2649 * i386.c (ix86_function_arg_boundary): Fix printf formatter.
2651 * i386.c (ix86_is_msabi_thiscall): New helper function.
2652 (ix86_is_type_thiscall): New helper function.
2653 (ix86_comp_type_attributes): Handle thiscall for method-functions
2655 (init_cumulative_args): Likewise.
2656 (find_drap_reg): Likewise.
2657 (ix86_static_chain): Likewise.
2658 (x86_this_parameter): Likewise.
2659 (x86_output_mi_thunk): Likewise.
2661 2011-04-01 Olivier Hainque <hainque@adacore.com>
2662 Nicolas Setton <setton@adacore.com>
2663 Eric Botcazou <ebotcazou@adacore.com>
2665 * dwarf2out.c (dwarf_attr_name): Map DW_AT_GNAT_descriptive_type.
2666 (add_gnat_descriptive_type_attribute): New function.
2667 (gen_array_type_die): Call it.
2668 (gen_enumeration_type_die): Likewise.
2669 (gen_struct_or_union_type_die): Likewise.
2670 (modified_type_die): Likewise.
2671 * langhooks.h (lang_hooks_for_types): New descriptive_type hook.
2672 * langhooks-def.h (LANG_HOOKS_DESCRIPTIVE_TYPE): Default to NULL.
2673 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_DESCRIPTIVE_TYPE.
2675 2011-04-01 Jakub Jelinek <jakub@redhat.com>
2678 * dwarf2out.c (resolve_addr): Don't call force_decl_die
2679 if DECL_EXTERNAL has non-NULL DECL_ABSTRACT_ORIGIN.
2682 2011-03-17 Richard Guenther <rguenther@suse.de>
2685 * lto-cgraph.c (input_overwrite_node): Clear the abstract
2686 origin for decls in other ltrans units.
2687 (input_varpool_node): Likewise.
2689 2011-04-01 Jakub Jelinek <jakub@redhat.com>
2692 * expr.c (expand_assignment): Handle all possibilities
2693 if TO_RTX is CONCAT.
2694 * expmed.c (store_bit_field_1): Avoid trying to create invalid SUBREGs.
2695 (store_split_bit_field): If SUBREG_REG (op0) or
2696 op0 itself has smaller mode than word, return it
2697 for offset 0 and const0_rtx for out-of-bounds stores.
2698 If word is const0_rtx, skip it.
2700 2011-04-01 Naveen H.S <naveen.S@kpitcummins.com>
2702 * config/h8300/h8300.c (print_operand_address): Rename to...
2703 (h8300_print_operand_address): ...this. Make static. Adjust comments.
2704 Call h8300_print_operand and h8300_print_operand_address instead of
2705 print_operand and print_operand_address. Declare.
2706 (print_operand): Renake to...
2707 (h8300_print_operand): ...this. Make static. Adjust comments.
2708 Call h8300_print_operand instead of print_operand. Declare.
2709 (h8300_print_operand_punct_valid_p): Moved from h8300.h file.
2710 (h8300_register_move_cost): Likewise.
2711 (TARGET_PRINT_OPERAND_PUNCT_VALID_P, TARGET_PRINT_OPERAND
2712 TARGET_PRINT_OPERAND_ADDRESS, TARGET_REGISTER_MOVE_COST): Define.
2713 * config/h8300/h8300.h (PRINT_OPERAND_ADDRESS, PRINT_OPERAND
2714 PRINT_OPERAND_PUNCT_VALID_P, REGISTER_MOVE_COST): Delete.
2715 * config/h8300/h8300-protos.h (print_operand): Delete.
2716 (print_operand_address): Delete.
2718 2011-04-01 Richard Henderson <rth@redhat.com>
2721 * dwarf2out.c (dwarf2out_source_line): Disable discriminators
2722 in strict mode before dwarf4. Re-order tests to early out
2723 before switching sections.
2725 2011-04-01 Nathan Froyd <froydnj@codesourcery.com>
2727 * config/h8300/constraints.md: New file.
2728 * config/h8300/h8300.md: Include it. Use satisfies_constraint_J,
2729 satisfies_constraint_L, and satisfies_constraint_N for peephole2s.
2730 (*tst_extzv_1_n, *tstsi_variable_bit_qi): Use satisfies_constraint_U.
2731 * config/h8300/predicates.md (bit_operand): Likewise.
2732 (incdec_operand): Use satisfies_constraint_M and
2733 satisfies_constraint_O. Don't use C code block.
2734 * config/h8300/h8300-protos.h (h8300_reg_class_from_letter): Delete.
2735 * config/h8300/h8300.c (h8300_reg_class_from_letter): Delete.
2736 (compute_mov_length): Use satisfies_constraint_G.
2737 (fix_bit_operand): Use satisfies_constraint_U.
2738 * config/h8300/h8300.h (REG_CLASS_FROM_LETTER): Delete.
2739 (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_L): Delete.
2740 (CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O): Delete.
2741 (CONST_OK_FOR_Ppositive, CONST_OK_FOR_Pnegative): Delete.
2742 (CONST_OK_FOR_P, CONSTRAINT_LEN_FOR_P): Delete.
2743 (CONST_OK_FOR_CONSTRAINT_P, CONST_OK_FOR_LETTER_P): Delete.
2744 (CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
2745 (OK_FOR_Q, OK_FOR_R, OK_FOR_S, OK_FOR_T, OK_FOR_U, OK_FOR_WU): Delete.
2746 (OK_FOR_W, CONSTRAINT_LEN_FOR_W, OK_FOR_Y2, OK_FOR_Y0): Delete.
2747 (OK_FOR_Y, CONSTRAINT_LEN_FOR_Y, OK_FOR_Z): Delete.
2748 (EXTRA_CONSTRAINT_STR, CONSTRAINT_LEN): Delete.
2749 (EXTRA_MEMORY_CONSTRAINT): Delete.
2751 2011-04-01 Andrew Pinski <pinskia@gmail.com>
2752 Michael Meissner <meissner@linux.vnet.ibm.com>
2755 * config/rs6000/vector.md (movmisalign<mode>): Allow for memory
2756 operands, as per the specifications.
2758 * config/rs6000/altivec.md (vec_extract_evenv4si): Correct modes.
2759 (vec_extract_evenv4sf): Ditto.
2760 (vec_extract_evenv8hi): Ditto.
2761 (vec_extract_evenv16qi): Ditto.
2762 (vec_extract_oddv4si): Ditto.
2764 2011-03-31 Mark Wielaard <mjw@redhat.com>
2766 * dwarf2out.c (dwarf2out_finish): Don't add low_pc and/or
2767 high_pc attribute if the CU has no associated code. Only output
2768 DW_AT_entry_pc for CU if not generating strict dwarf and
2771 2011-04-01 Bernd Schmidt <bernds@codesourcery.com>
2773 * dwarf2out.h (dwarf2out_frame_debug_init): Declare.
2774 * dwarf2out.c (dwarf2out_frame_debug_init): New function, broken
2776 (dwarf2out_frame_debug): ... here. Don't handle a NULL argument.
2777 * final.c (final_start_function): Call the new function rather
2778 than using a NULL argument for dwarf2out_frame_debug.
2780 * ifcvt.c (cond_exec_process_insns): Disallow converting a block
2781 that contains the prologue.
2783 * haifa-sched.c (queue_insn): New arg REASON. All callers
2784 changed. Print it in debugging output.
2786 * sched-ebb.c (schedule_ebbs): Honor the BB_DISABLE_SCHEDULE flag.
2788 * sched-ebb.c (begin_schedule_ready): Remove second argument.
2789 Split most of the code into...
2790 (begin_move_insn): ... here. New function.
2791 (ebb_sched_info): Add a pointer to it.
2792 * haifa-sched.c (scheduled_insns): New static variable.
2793 (sched_extend_ready_list): Allocate it.
2794 (schedule_block): Use it to record the order of scheduled insns.
2795 Perform RTL changes to move insns only after all scheduling
2796 decisions have been made.
2797 * modulo-sched.c (sms_sched_haifa_sched_info): Add NULL entry for the
2798 begin_move_insn field.
2799 * sel-sched-ir.c (sched_sel_haifa_sched_info): Likewise.
2800 * sched-int.h (struct haifa_sched_info): Remove second argument
2801 from begin_schedule_ready hook. Add new member begin_move_insn.
2802 * sched-rgn.c (begin_schedule_ready): Remove second argument.
2803 (rgn_const_sched_info): Add NULL entry for the begin_move_insn field.
2805 * haifa-sched.c (prune_ready_list): New function, broken out of
2807 (schedule_block): Use it.
2809 2011-04-01 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2811 * config/spu/t-spu-elf (dp-bit.c): Use > instead of >>.
2813 2011-04-01 Kai Tietz <ktietz@redhat.com>
2815 * config.gcc (*-*-mingw*): Allow as option the
2816 posix threading model.
2817 * config/i386/mingw32.h (SPEC_PTHREAD1, SPEC_PTHREAD2):
2818 New macros defined dependent to TARGET_USE_PTHREAD_BY_DEFAULT
2820 (CPP_SPEC): Add pthread/no-pthread handling.
2821 (LIB_SPEC): Likewise.
2822 * config/i386/mingw-w64.h (CPP_SPEC):Likewise.
2823 (LIB_SPEC): Likewise.
2824 * config/i386/t-cygming (SHLIB_PTHREAD_CFLAG): New
2825 flag to pass -pthread option for shared libgcc build.
2826 (SHLIB_PTHREAD_LDFLAG): New option to pass -lpthread
2827 for shared libgcc build.
2828 * config/i386/t-mingw-pthread: New file.
2829 * config/i386/mingw-pthread.h (TARGET_USE_PTHREAD_BY_DEFAULT):
2830 New define to enable use of library pthread by default.
2831 * config/i386/mingw.opt (pthread): New driver option.
2832 (no-pthread): New driver option.
2833 * config/i386/cygming.opt: Make sure trailing empty line is retained.
2834 * config/i386/mingw-w64.opt: Likewise.
2836 2011-04-01 Gary Funck <gary@intrepid.com>
2838 * c-decl.c (grokdeclarator): Fix formatting.
2840 2011-04-01 Richard Sandiford <richard.sandiford@linaro.org>
2842 * expr.c (emit_block_move_via_movmem): Use n_generator_args
2843 instead of n_operands.
2844 (set_storage_via_setmem): Likewise.
2845 * optabs.c (maybe_gen_insn): Likewise.
2846 * config/arm/arm.c (arm_init_neon_builtins): Likewise.
2847 * config/mips/mips.c (mips_expand_builtin_compare_1): Likewise.
2848 (mips_expand_builtin_direct): Likewise.
2849 * config/spu/spu.c (expand_builtin_args): Likewise.
2851 2011-04-01 Richard Sandiford <richard.sandiford@linaro.org>
2853 * recog.h (insn_data_d): Add n_generator_args.
2854 * genoutput.c (data): Likewise.
2855 (output_insn_data): Print it.
2856 (max_opno, num_dups): Delete.
2857 (scan_operands): Just fill in "d->operand[...]".
2858 (gen_insn, gen_peephole, gen_expand, gen_split): Use get_pattern_stats.
2860 2011-04-01 Richard Sandiford <richard.sandiford@linaro.org>
2862 * gensupport.h (pattern_stats): New structure.
2863 * gensupport.c (get_pattern_stats_1, get_pattern_stats): New functions.
2864 * genemit.c (max_opno, max_dupno, max_scratch_opno): Delete.
2865 (max_operand_1, max_operand_vec): Delete.
2866 (gen_insn, gen_expand, gen_split): Use get_pattern_stats.
2868 2011-03-31 Nathan Froyd <froydnj@codesourcery.com>
2870 * emit-rtl.c (emit_pattern_after_setloc): New function.
2871 (emit_insn_after_setloc, emit_jump_insn_after_setloc): Call it.
2872 (emit_call_insn_after_setloc, emit_debug_insn_after_setloc): Likewise.
2873 (emit_pattern_after): New function.
2874 (emit_insn_after, emit_jump_insn_after): Call it.
2875 (emit_call_insn_after, emit_debug_insn_after): Likewise.
2876 (emit_pattern_before_setloc): New function.
2877 (emit_insn_before_setloc, emit_jump_insn_before_setloc): Call it.
2878 (emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
2880 (emit_pattern_before): New function.
2881 (emit_insn_before, emit_jump_insn_before): Call it.
2882 (emit_call_insn_before, emit_debug_insn_before): Likewise.
2884 2011-03-31 Richard Henderson <rth@redhat.com>
2886 * dwarf2out.c (dw_separate_line_info_ref): Remove.
2887 (dw_separate_line_info_entry): Remove.
2888 (enum dw_line_info_opcode): New.
2889 (dw_line_info_entry): Use it.
2890 (dw_line_info_table, dw_line_info_table_p): New.
2891 (DWARF_LINE_OPCODE_BASE): Include dwarf3 opcodes.
2892 (line_info_table, line_info_label_num): Remove.
2893 (line_info_table_in_use): Remove.
2894 (separate_line_info_table): Remove.
2895 (separate_line_info_table_allocated): Remove.
2896 (separate_line_info_table_in_use): Remove.
2897 (LINE_INFO_TABLE_INCREMENT): Remove.
2898 (line_info_label_num): New.
2899 (cur_line_info_table): New.
2900 (text_section_line_info, cold_text_section_line_info): New.
2901 (separate_line_info): New.
2902 (SEPARATE_LINE_CODE_LABEL): Remove.
2903 (print_dwarf_line_table): Remove.
2904 (debug_dwarf): Don't dump it.
2905 (output_one_line_info_table): New.
2906 (output_line_info): Use it.
2907 (new_line_info_table): New.
2908 (set_cur_line_info_table): New.
2909 (dwarf2out_switch_text_section): Use it.
2910 (dwarf2out_begin_function): Likewise.
2911 (push_dw_line_info_entry): New.
2912 (dwarf2out_source_line): Rewrite for new line info tables.
2913 (dwarf2out_init): Remove dead initailizations.
2915 2011-03-31 Joseph Myers <joseph@codesourcery.com>
2917 * opts.h (cl_option): Add comments to fields. Add bit-fields for
2919 (CL_SEPARATE_NARGS_SHIFT, CL_SEPARATE_NARGS_MASK,
2920 CL_SEPARATE_ALIAS, CL_NO_DRIVER_ARG, CL_REJECT_DRIVER, CL_SAVE,
2921 CL_DISABLED, CL_REPOR, CL_REJECT_NEGATIVE, CL_MISSING_OK,
2922 CL_UINTEGER, CL_NEGATIVE_ALIAS): Remove.
2923 (CL_JOINED, CL_SEPARATE, CL_UNDOCUMENTED): Update bit positions.
2924 * opt-functions.awk (flag_init, switch_bit_fields): New.
2925 (switch_flags): Don't handle flags moved to bit-fields. Don't
2926 generate CL_MISSING_OK or CL_SAVE.
2927 * optc-gen.awk: Update to generate bit-field output as well as
2929 * gcc.c (driver_wrong_lang_callback): Use cl_reject_driver
2930 bit-field instead of CL_REJECT_DRIVER flag.
2931 * opts-common.c (generate_canonical_option,
2932 decode_cmdline_option): Use bit-fields instead of CL_* flags.
2933 * opts.c (maybe_default_option): Use cl_reject_negative bit-field
2934 instead of CL_REJECT_NEGATIVE flag.
2935 * toplev.c (print_switch_values): Use cl_report bit-field instead
2938 2011-03-31 Eric Botcazou <ebotcazou@adacore.com>
2940 * tree-ssa-pre.c (create_component_ref_by_pieces_1) <ARRAY_REF>: Drop
2941 a zero minimum index only if it is redundant.
2943 2011-03-31 Vladimir Makarov <vmakarov@redhat.com>
2945 PR rtl-optimization/48381
2946 * ira-color.c (assign_hard_reg): Use hard reg set intersection
2947 instead of ira_class_hard_reg_index for calculating conflicting
2950 2011-03-31 Steven Bosscher <steven@gcc.gnu.org>
2952 * cprop.c: Clean up hash table building.
2953 (reg_avail_info): Remove.
2954 (oprs_available_p): Remove.
2955 (record_last_reg_set_info): Remove.
2956 (record_last_set_info): Remove.
2957 (reg_available_p): New function.
2958 (gcse_constant_p): Do not treat unfolded conditions as constants.
2959 (make_set_regs_unavailable): New function.
2960 (hash_scan_set): Simplify with new reg_available_p.
2961 (compute_hash_table_work): Traverse insns stream only once.
2962 Do not compute reg_avail_info. Traverse insns in reverse order.
2963 Record implicit sets after recording explicit sets from the block.
2965 2011-03-31 Michael Matz <matz@suse.de>
2967 * builtins.c (build_va_arg_indirect_ref): Use build_simple_mem_ref_loc.
2969 2011-03-31 Anatoly Sokolov <aesok@post.ru>
2971 * config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove macro.
2972 * config/h8300/h8300-protos.h (h8300_get_index): Remove.
2973 * config/h8300/h8300.c (TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
2974 (h8300_mode_dependent_address_p): New function.
2975 (h8300_get_index): Make static.
2977 2011-03-31 Jeff Law <law@redhat.com>
2979 * reload1.c (elimination_effects): Fix typo in recent change.
2981 * tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid
2982 typo potentially leading to null pointer dereference.
2984 * caller-save.c (new_saved_hard_reg): Eliminate return value.
2985 (setup_save_areas): Corresponding changes to avoid useless
2988 * jump.c (reversed_comparison_code_parts): Avoid successive return
2989 statements when REVERSE_CONDITION is defined.
2991 * expr.c (expand_assignment): Avoid useless assignments.
2992 (expand_expr_real_1): Likewise.
2993 (expand_expr_real_2): Avoid useless statements.
2995 * tree-ssa-phiopt.c (minmax_replacement): Avoid useless statement.
2997 * cfgexpand.c (expand_gimple_basic_block): Avoid useless assignment.
2999 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Avoid useless
3002 * stmt.c (expand_expr_stmt): Avoid useless assignment.
3004 2011-03-31 Joseph Myers <joseph@codesourcery.com>
3007 * doc/tm.texi.in (TARGET_VERSION): Remove.
3008 * doc/tm.texi: Regenerate.
3009 * system.h (TARGET_VERSION, MACHINE_TYPE): Poison.
3010 * collect2.c (main): Don't use TARGET_VERSION.
3011 * mips-tdump.c (main): Don't use TARGET_VERSION.
3012 * mips-tfile.c (main): Don't use TARGET_VERSION.
3013 * config.gcc (powerpc-wrs-vxworksae): Don't use rs6000/vxworksae.h.
3014 * config/rs6000/vxworksae.h: Remove.
3015 * config/alpha/alpha.h (TARGET_VERSION): Remove.
3016 * config/alpha/freebsd.h (TARGET_VERSION): Remove.
3017 * config/alpha/linux-elf.h (TARGET_VERSION): Remove.
3018 * config/alpha/netbsd.h (TARGET_VERSION): Remove.
3019 * config/alpha/vms.h (TARGET_NAME, TARGET_VERSION): Remove.
3020 * config/arm/arm.h (TARGET_VERSION): Remove.
3021 * config/arm/coff.h (TARGET_VERSION): Remove.
3022 * config/arm/ecos-elf.h (TARGET_VERSION): Remove.
3023 * config/arm/elf.h (TARGET_VERSION): Remove.
3024 * config/arm/freebsd.h (TARGET_VERSION): Remove.
3025 * config/arm/linux-elf.h (TARGET_VERSION): Remove.
3026 * config/arm/netbsd-elf.h (TARGET_VERSION): Remove.
3027 * config/arm/pe.h (TARGET_VERSION): Remove.
3028 * config/arm/rtems-elf.h (TARGET_VERSION): Remove.
3029 * config/arm/semi.h (TARGET_VERSION): Remove.
3030 * config/arm/uclinux-elf.h (TARGET_VERSION): Remove.
3031 * config/arm/unknown-elf.h (TARGET_VERSION): Remove.
3032 * config/arm/vxworks.h (TARGET_VERSION): Remove.
3033 * config/avr/avr.h (TARGET_VERSION): Remove.
3034 * config/bfin/bfin.h (TARGET_VERSION): Remove.
3035 * config/fr30/fr30.h (TARGET_VERSION): Remove.
3036 * config/frv/frv.h (TARGET_VERSION): Remove.
3037 * config/h8300/h8300.h (TARGET_VERSION): Remove.
3038 * config/i386/cygwin.h (TARGET_VERSION): Remove.
3039 * config/i386/darwin.h (TARGET_VERSION): Remove.
3040 * config/i386/darwin64.h (TARGET_VERSION): Remove.
3041 * config/i386/djgpp.h (TARGET_VERSION): Remove.
3042 * config/i386/freebsd.h (TARGET_VERSION): Remove.
3043 * config/i386/freebsd64.h (TARGET_VERSION): Remove.
3044 * config/i386/gnu.h (TARGET_VERSION): Remove.
3045 * config/i386/i386-interix.h (TARGET_VERSION): Remove.
3046 * config/i386/i386elf.h (TARGET_VERSION): Remove.
3047 * config/i386/linux.h (TARGET_VERSION): Remove.
3048 * config/i386/linux64.h (TARGET_VERSION): Remove.
3049 * config/i386/lynx.h (TARGET_VERSION): Remove.
3050 * config/i386/mingw32.h (TARGET_VERSION): Remove.
3051 * config/i386/netbsd-elf.h (TARGET_VERSION): Remove.
3052 * config/i386/netbsd64.h (TARGET_VERSION): Remove.
3053 * config/i386/netware.h (TARGET_VERSION): Remove.
3054 * config/i386/nto.h (TARGET_VERSION): Remove.
3055 * config/i386/openbsd.h (TARGET_VERSION): Remove.
3056 * config/i386/vxworks.h (TARGET_VERSION): Remove.
3057 * config/ia64/elf.h (TARGET_VERSION): Remove.
3058 * config/ia64/freebsd.h (TARGET_VERSION): Remove.
3059 * config/ia64/hpux.h (TARGET_VERSION): Remove.
3060 * config/ia64/linux.h (TARGET_VERSION): Remove.
3061 * config/ia64/vms.h (TARGET_NAME, TARGET_VERSION): Remove.
3062 * config/iq2000/iq2000.h (IQ2000_VERSION, MACHINE_TYPE,
3063 TARGET_VERSION_INTERNAL, TARGET_VERSION): Remove.
3064 * config/lm32/lm32.h (TARGET_VERSION): Remove.
3065 * config/lm32/uclinux-elf.h (TARGET_VERSION): Remove.
3066 * config/m32c/m32c.h (TARGET_VERSION): Remove.
3067 * config/m32r/linux.h (LINUX_DEFAULT_ELF, TARGET_VERSION): Remove.
3068 * config/m32r/m32r.h (TARGET_VERSION): Remove.
3069 * config/m68k/linux.h (TARGET_VERSION): Remove.
3070 * config/m68k/m68k.h (TARGET_VERSION): Remove.
3071 * config/m68k/netbsd-elf.h (TARGET_VERSION): Remove.
3072 * config/m68k/uclinux.h (TARGET_VERSION): Remove.
3073 * config/mcore/mcore-elf.h (TARGET_VERSION): Remove.
3074 * config/mep/mep.h (TARGET_VERSION): Remove.
3075 * config/microblaze/microblaze.h (MICROBLAZE_VERSION,
3076 MACHINE_TYPE, TARGET_VERSION_INTERNAL, TARGET_VERSION): Remove.
3077 * config/mips/iris6.h (MACHINE_TYPE): Remove.
3078 * config/mips/linux.h (TARGET_VERSION): Remove.
3079 * config/mips/netbsd.h (MACHINE_TYPE): Remove.
3080 * config/mips/vxworks.h (TARGET_VERSION): Remove.
3081 * config/mmix/mmix.h (TARGET_VERSION): Remove.
3082 * config/mn10300/linux.h (TARGET_VERSION): Remove.
3083 * config/mn10300/mn10300.h (TARGET_VERSION): Remove.
3084 * config/pa/pa.h (TARGET_VERSION): Remove.
3085 * config/pdp11/pdp11.h (TARGET_VERSION): Remove.
3086 * config/picochip/picochip.h (TARGET_VERSION): Remove.
3087 * config/rs6000/aix.h (TARGET_VERSION): Remove.
3088 * config/rs6000/darwin.h (TARGET_VERSION): Remove.
3089 * config/rs6000/darwin64.h (TARGET_VERSION): Remove.
3090 * config/rs6000/eabi.h (TARGET_VERSION): Remove.
3091 * config/rs6000/eabialtivec.h (TARGET_VERSION): Remove.
3092 * config/rs6000/eabisim.h (TARGET_VERSION): Remove.
3093 * config/rs6000/eabispe.h (TARGET_VERSION): Remove.
3094 * config/rs6000/freebsd.h (TARGET_VERSION): Remove.
3095 * config/rs6000/linux.h (TARGET_VERSION): Remove.
3096 * config/rs6000/linux64.h (TARGET_VERSION): Remove.
3097 * config/rs6000/linuxaltivec.h (TARGET_VERSION): Remove.
3098 * config/rs6000/linuxspe.h (TARGET_VERSION): Remove.
3099 * config/rs6000/lynx.h (TARGET_VERSION): Remove.
3100 * config/rs6000/netbsd.h (TARGET_VERSION): Remove.
3101 * config/rs6000/sysv4.h (TARGET_VERSION): Remove.
3102 * config/rs6000/vxworks.h (TARGET_VERSION): Remove.
3103 * config/s390/linux.h (TARGET_VERSION): Remove.
3104 * config/s390/s390.h (TARGET_VERSION): Remove.
3105 * config/s390/tpf.h (TARGET_VERSION): Remove.
3106 * config/score/score.h (TARGET_VERSION): Remove.
3107 * config/sh/linux.h (TARGET_VERSION): Remove.
3108 * config/sh/netbsd-elf.h (TARGET_VERSION_ENDIAN,
3109 TARGET_VERSION_CPU, TARGET_VERSION): Remove.
3110 * config/sh/sh.h (TARGET_VERSION): Remove.
3111 * config/sh/sh64.h (TARGET_VERSION): Remove.
3112 * config/sh/superh.h (TARGET_VERSION): Remove.
3113 * config/sh/vxworks.h (TARGET_VERSION): Remove.
3114 * config/sparc/freebsd.h (TARGET_VERSION): Remove.
3115 * config/sparc/linux.h (TARGET_VERSION): Remove.
3116 * config/sparc/linux64.h (TARGET_VERSION): Remove.
3117 * config/sparc/netbsd-elf.h (TARGET_VERSION, TARGET_NAME64,
3118 TARGET_NAME32, TARGET_NAME): Remove.
3119 * config/sparc/openbsd64.h (TARGET_VERSION): Remove.
3120 * config/sparc/sp-elf.h (TARGET_VERSION): Remove.
3121 * config/sparc/sp64-elf.h (TARGET_VERSION): Remove.
3122 * config/sparc/sysv4.h (TARGET_VERSION): Remove.
3123 * config/sparc/vxworks.h (TARGET_VERSION): Remove.
3124 * config/spu/spu.h (TARGET_VERSION): Remove.
3125 * config/stormy16/stormy16.h (TARGET_VERSION): Remove.
3126 * config/v850/v850.h (TARGET_VERSION): Remove.
3127 * config/vax/linux.h (TARGET_VERSION): Remove.
3128 * config/vax/vax.h (TARGET_NAME, TARGET_VERSION): Remove.
3129 * config/xtensa/elf.h (TARGET_VERSION): Remove.
3130 * config/xtensa/linux.h (TARGET_VERSION): Remove.
3132 2011-03-31 Eric Botcazou <ebotcazou@adacore.com>
3135 * config/i386/i386.c (ix86_adjust_stack_and_probe): Differentiate
3136 frame-related from frame-unrelated adjustments to the stack pointer.
3138 2011-03-31 Jakub Jelinek <jakub@redhat.com>
3140 * common.opt (fdebug-types-section): Move earlier.
3141 * doc/invoke.texi: Fix up -fno-debug-types-section documentation.
3143 2011-03-31 Andreas Tobler <andreast@fgznet.ch>
3145 * config/rs6000/rs6000.c (rs6000_handle_option): Remove unused isel
3148 2011-03-30 Nathan Froyd <froydnj@codesourcery.com>
3150 * tree.h (CASE_CHAIN): Define.
3151 * tree-cfg.c (edge_to_cases_cleanup, get_cases_for_edge): Use it.
3152 (gimple_redirect_edge_and_branch): Likewise.
3154 2011-03-30 Vladimir Makarov <vmakarov@redhat.com>
3157 * ira-costs.c (find_costs_and_classes): Fix a typo in i_mem_cost
3160 2011-03-30 Jeff Law <law@redhat.com>
3162 * PR bootstrap/48371
3163 * reload1.c (reload): Fix botch in last change.
3165 * reload.h (struct reload): Fix typo introduced in last change.
3167 2011-03-30 Joseph Myers <joseph@codesourcery.com>
3169 * config/arm/arm.opt (mhard-float, msoft-float): Mark
3170 Undocumented. Remove help text.
3171 * doc/invoke.texi (ARM Options): Don't document -msoft-float and
3174 2011-03-30 Joseph Myers <joseph@codesourcery.com>
3176 * doc/options.texi (NegativeAlias): Document.
3177 (Alias): Mention NegativeAlias.
3178 * opt-functions.awk: Handle NegativeAlias.
3179 * optc-gen.awk: Disallow NegativeAlias with multiple Alias arguments.
3180 * opts-common.c (decode_cmdline_option): Handle CL_NEGATIVE_ALIAS.
3181 * opts.h (CL_NEGATIVE_ALIAS): Define.
3182 * config/rs6000/rs6000.c (rs6000_parse_yes_no_option): Remove.
3183 (rs6000_handle_option): Don't handle OPT_mvrsave_, OPT_misel_ and
3185 * config/rs6000/rs6000.opt (mvrsave=, misel=, mspe=): Replace with
3187 * config/rs6000/t-spe (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Use
3188 mno-spe and mno-isel instead of mspe=no and -misel=no.
3190 2011-03-29 Mark Wielaard <mjw@redhat.com>
3192 * common.opt (fdebug-types-section): New flag.
3193 * doc/invoke.texi: Document new -fno-debug-types-section flag.
3194 * dwarf2out.c (use_debug_types): New define.
3195 (struct die_struct): Mark die_id with GTY desc use_debug_types.
3196 (print_die): Guard output of type unit signatures using
3198 (build_abbrev_table): Replace assert of dwarf_version >= 4
3199 with assert on use_debug_types.
3200 (size_of_die): Likewise.
3201 (unmark_dies): Likewise.
3202 (value_format): Decide AT_ref_external form on use_debug_types.
3203 (output_die): Replace dwarf_version version check guard with
3204 use_debug_types where appropriate.
3205 (modified_type_die): Likewise.
3206 (gen_reference_type_die): Likewise.
3207 (dwarf2out_start_source_file): Likewise.
3208 (dwarf2out_end_source_file): Likewise.
3209 (prune_unused_types_walk_attribs): Likewise.
3210 (dwarf2out_finish): Likewise.
3212 2011-03-30 Vladimir Makarov <vmakarov@redhat.com>
3214 * ira-color.c (ira_assign_hard_reg): Use only one variable 'mode'.
3216 2011-03-30 Richard Sandiford <richard.sandiford@linaro.org>
3218 PR rtl-optimization/48332
3219 * optabs.c (expand_binop_directly): Set xmodeN to the target-mandated
3220 mode of input operand N and modeN to its actual mode.
3222 2011-03-30 Jeff Law <law@redhat.com>
3224 * reload.h (reg_equiv_constant): Move into new structure reg_equivs,
3225 define accessor macro.
3226 (reg_equiv_invariant, reg_equiv_memory_loc): Likewise.
3227 (reg_equiv_address, reg_equiv_mem, reg_equiv_alt_mem_list): Likewise.
3228 (reg_equiv_init): Likewise.
3229 (reg_equivs_size): New variable.
3230 (reg_equiv_init_size): Remove.
3231 (allocate_initial_values): Move prototype to here from....
3232 * integrate.h (allocate_initial_values): Remove prototype.
3233 * integrate.c: Include reload.h.
3234 (allocate_initial_values): Corresponding changes.
3235 * ira.c (find_reg_equiv_invariant_cost): Corresponding changes.
3236 (fix_reg_equiv_init, no_equiv): Corresponding changes.
3237 (update_equiv_regs): Corresponding changes.
3238 (ira): Corresponding changes.
3239 * reload.c (push_reg_equiv_alt_mem): Corresponding changes.
3240 (push_secondary_reload): Corresponding changes.
3241 (push_reload, find_reloads, find_reloads_toplev): Corresponding changes.
3242 (make_memloc, find_reloads_address): Corresponding changes.
3243 (subst_reg_equivs, subst_indexed_address): Corresponding changes.
3244 (find_reloads_address_1): Corresponding changes.
3245 (find_reloads_subreg_address, subst_reloads): Corresponding changes.
3246 (refers_to_regno_for_reload_p): Corresponding changes.
3247 (reg_overlap_mentioned_for_reload_p): Corresponding changes.
3248 (refers_to_mem_for_reload_p, find_equiv_reg): Corresponding changes.
3249 * reload1.c: Include ggc.h.
3250 (grow_reg_equivs): New function.
3251 (replace_pseudos_in, reload): Corresponding changes.
3252 (calculate_needs_all_insns, alter_regs): Corresponding changes.
3253 (eliminate_regs_1, elimination_effects): Corresponding changes.
3254 (emit_input_reload_insns, emit_output_reload_insns): Likewise.
3255 (delete_output_reload): Likewise.
3256 * caller-save.c (mark_referenced_regs): Corresponding changes.
3257 * alpha/alpha.c (resolve_reload_operand): Corresponding changes.
3258 * frv/predicates.md (frv_load_operand): Corresponding changes.
3259 * microblaze/microblaze.c (double_memory_operand): Corresponding
3261 * avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Corresponding changes.
3262 * xtensa/xtensa.c (fixup_subreg_mem): Corresponding changes.
3263 * mn10300/mn10300.c (mn10300_secondary_reload): Corresponding changes.
3264 * m68k/m68k.c (emit_move_sequence): Corresponding changes.
3265 * arm/arm.c (arm_reload_in_hi, arm_reload_out_hi): Corresponding
3267 * pa/pa.c (emit_move_sequence): Corresponding changes.
3268 * vax/vax.c (nonindexed_address_p): Corresponding changes.
3270 2011-03-30 Richard Sandiford <richard.sandiford@linaro.org>
3273 * config/arm/arm.c (coproc_secondary_reload_class): Handle
3274 structure modes. Don't check neon_vector_mem_operand for
3275 vector or structure modes.
3277 2011-03-30 Richard Sandiford <richard.sandiford@linaro.org>
3278 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
3281 * config/arm/neon.md (neon_vld3qa<mode>, neon_vld4qa<mode>): Remove
3282 operand 1 and reshuffle the operands to match.
3283 (neon_vld3<mode>, neon_vld4<mode>): Update accordingly.
3285 2011-03-30 Christian Schüler <cschueler@gmx.de>
3288 * config/c.opt (F): Added 'Driver' to -F option.
3291 * config/darwin-driver.c (darwin_driver_init): Add '-arch' to
3293 * config/darwin.opt: Added '-arch' option.
3295 2011-03-30 Nick Clifton <nickc@redhat.com>
3297 * config/rx/rx.md: Add peepholes and patterns to combine
3298 extending loads and simple arithmetic instructions.
3299 * config/rx/rx.h (ADJUST_INSN_LENGTH): Define.
3300 * config/rx/rx-protos.h (rx_adjust_insn_length): Prototype.
3301 * config/rx/rx.c (rx_is_legitimate_address): Allow QI and HI
3302 modes to use pre-decrement and post-increment addressing.
3303 (rx_is_restricted_memory_address): Add range checking of REG+INT
3305 (rx_print_operand): Add support for %Q. Fix handling of %Q.
3306 (rx_memory_move_cost): Adjust cost of stores.
3307 (rx_adjust_insn_length): New function.
3309 2011-03-30 Jakub Jelinek <jakub@redhat.com>
3312 * fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Make sure
3313 arg10/arg11 in (X ^ Y) == (Z ^ W) are always fold converted to
3314 matching arg00/arg01 types.
3316 2011-03-30 Eric Botcazou <ebotcazou@adacore.com>
3318 * cfglayout.c (insn_locators_alloc): Initialize curr_location and
3319 last_location to UNKNOWN_LOCATION.
3321 2011-03-30 H.J. Lu <hongjiu.lu@intel.com>
3324 * config/i386/i386.h (REG_CLASS_CONTENTS): Fix a typo in
3327 2011-03-30 Joseph Myers <joseph@codesourcery.com>
3328 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3331 * config/sparc/sparc.opt (sparc_cpu_and_features): Add
3333 (sparc_cpu): Likewise.
3334 * config/sparc/sparc.c (sparc_option_override): Replace 0 by
3337 2011-03-29 Vladimir Makarov <vmakarov@redhat.com>
3341 PR rtl-optimization/48345
3342 * ira-color.c (setup_conflict_profitable_regs): Exclude prohibited
3343 hard regs for given mode from profitable regs when doing secondary
3346 2011-03-29 Jeff Law <law@redhat.com>
3349 * tree-ssa-threadupdate.c (struct redirection_data): Remove
3350 do_not_duplicate field.
3351 (lookup_redirection_data): Corresponding changes.
3352 (create_duplicates): Always create a template block.
3353 (redirect_edges): Remove code which reused the original block
3354 when it was going to become unreachable code.
3355 (thread_block): Don't set do_not_duplicate field.
3357 2011-03-29 Joseph Myers <joseph@codesourcery.com>
3359 * lto-opts.c (register_user_option_p, lto_register_user_option):
3360 Make type argument unsigned.
3361 * lto-streamer.h (lto_register_user_option): Make type argument
3363 * opth-gen.awk: Make CL_* macros unsigned.
3364 * opts-common.c (find_opt): Make lang_mask argument unsigned.
3365 * opts.h (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_DRIVER,
3366 CL_TARGET, CL_COMMON, CL_SEPARATE_NARGS_MASK, CL_SEPARATE_ALIAS,
3367 CL_NO_DRIVER_ARG, CL_REJECT_DRIVER, CL_SAVE, CL_DISABLED,
3368 CL_REPORT, CL_JOINED, CL_SEPARATE, CL_REJECT_NEGATIVE,
3369 CL_MISSING_OK, CL_UINTEGER, CL_UNDOCUMENTED): Make unsigned.
3370 (find_opt): Make lang_mask argument unsigned.
3372 2011-03-29 Vladimir Makarov <vmakarov@redhat.com>
3374 PR rtl-optimization/48331
3375 PR rtl-optimization/48334
3376 * ira-color.c (color_allocnos): Call setup_profitable_hard_regs
3377 for any used algorithm.
3379 2011-03-29 Vladimir Makarov <vmakarov@redhat.com>
3381 * ira-conflicts.c (build_object_conflicts): Add unused attribute
3384 2011-03-29 Uros Bizjak <ubizjak@gmail.com>
3386 * config/alpha/alpha.c (alpha_sr_alias_set): Don't define.
3387 (alpha_option_override): Don't set alpha_sr_alias_set.
3388 (emit_frame_store_1): Use gen_frame_mem rather than calling
3390 (alpha_expand_epilogue): Ditto.
3392 2011-03-29 Ira Rosen <ira.rosen@linaro.org>
3394 PR tree-optimization/48290
3395 * tree-vect-loop.c (vect_analyze_loop_operations): In outer loop
3396 vectorization, check that relevant phis in the basic block after
3397 the inner loop are really inner loop's exit phis.
3399 2011-03-29 Richard Sandiford <richard.sandiford@linaro.org>
3402 * dwarf2out.c (dw_loc_list_node): Add resolved_addr and replaced.
3403 (cached_dw_loc_list_def): New structure.
3404 (cached_dw_loc_list): New typedef.
3405 (cached_dw_loc_list_table): New variable.
3406 (cached_dw_loc_list_table_hash): New function.
3407 (cached_dw_loc_list_table_eq): Likewise.
3408 (add_location_or_const_value_attribute): Take a bool cache_p.
3409 Cache the list when the parameter is true.
3410 (gen_formal_parameter_die): Update caller.
3411 (gen_variable_die): Likewise.
3412 (dwarf2out_finish): Likewise.
3413 (dwarf2out_abstract_function): Nullify cached_dw_loc_list_table
3414 while generating debug info for the decl.
3415 (dwarf2out_function_decl): Clear cached_dw_loc_list_table.
3416 (dwarf2out_init): Initialize cached_dw_loc_list_table.
3417 (resolve_addr): Cache the result of resolving a chain of
3420 2011-03-28 Vladimir Makarov <vmakarov@redhat.com>
3422 * ira-color.c (update_left_conflict_sizes_p): Don't assume that
3423 conflict object hard regset nodes have intersecting hard reg sets.
3425 * regmove.c (regmove_optimize): Move ira_set_pseudo_classes call
3426 after regstat_init_n_sets_and_refs.
3428 * ira.c: Add more comments at the top.
3429 (setup_stack_reg_pressure_class, setup_pressure_classes):
3430 Add comments how we compute the register pressure classes.
3431 (setup_allocno_and_important_classes): Add more comments.
3432 (setup_class_translate_array, reorder_important_classes)
3433 (setup_reg_class_relations): Add comments.
3435 * ira-emit.c: Add 2011 to the Copyright line. Add comments at the
3438 * ira-color.c: Add 2011 to the Copyright line.
3439 (assign_hard_reg): Add more comments.
3440 (improve_allocation): Ditto.
3442 * ira-costs.c: Add 2011 to the Copyright line.
3443 (setup_cost_classes, setup_regno_cost_classes_by_aclass): Add more
3445 (setup_regno_cost_classes_by_mode): Ditto.
3447 Initial patches from ira-improv branch:
3449 2010-08-13 Vladimir Makarov <vmakarov@redhat.com>
3451 * ira-build.c (ira_create_object): Remove initialization of
3452 OBJECT_PROFITABLE_HARD_REGS. Initialize OBJECT_ADD_DATA.
3453 (ira_create_allocno): Remove initialization of
3454 ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
3455 ALLOCNO_SOMEWHERE_RENAMED_P, ALLOCNO_CHILD_RENAMED_P,
3456 ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P, ALLOCNO_COLORABLE_P,
3457 ALLOCNO_NEXT_BUCKET_ALLOCNO, ALLOCNO_PREV_BUCKET_ALLOCNO,
3458 ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO.
3459 Initialize ALLOCNO_ADD_DATA.
3460 (copy_info_to_removed_store_destinations): Use ALLOCNO_EMIT_DATA
3461 and allocno_emit_reg instead of ALLOCNO_MEM_OPTIMIZED_DEST_P and
3463 (ira_flattening): Ditto. Use ALLOCNO_EMIT_DATA instead of
3464 ALLOCNO_MEM_OPTIMIZED_DEST and ALLOCNO_SOMEWHERE_RENAMED_P.
3466 * ira.c (ira_reallocate): Remove.
3467 (setup_pressure_classes): Call
3468 ira_init_register_move_cost_if_necessary. Use
3469 ira_register_move_cost instead of ira_get_register_move_cost.
3470 (setup_allocno_assignment_flags): Use ALLOCNO_EMIT_DATA.
3471 (ira): Call ira_initiate_emit_data and ira_finish_emit_data.
3473 * ira-color.c: Use ALLOCNO_COLOR_DATA instead of
3474 ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P, ALLOCNO_COLORABLE_P,
3475 ALLOCNO_AVAILABLE_REGS_NUM, ALLOCNO_NEXT_BUCKET_ALLOCNO,
3476 ALLOCNO_PREV_BUCKET_ALLOCNO. ALLOCNO_TEMP. Use OBJECT_COLOR_DATA
3477 instead of OBJECT_PROFITABLE_HARD_REGS, OBJECT_HARD_REGS_NODE,
3478 OBJECT_HARD_REGS_SUBNODES_START, OBJECT_HARD_REGS_SUBNODES_NUM.
3480 (object_hard_regs_t, object_hard_regs_node_t): Move from ira-int.h.
3481 (struct object_hard_regs, struct object_hard_regs_node): Ditto.
3482 (struct allocno_color_data): New.
3483 (allocno_color_data_t): New typedef.
3484 (allocno_color_data): New definition.
3485 (ALLOCNO_COLOR_DATA): New macro.
3486 (struct object_color_data): New.
3487 (object_color_data_t): New typedef.
3488 (object_color_data): New definition.
3489 (OBJECT_COLOR_DATA): New macro.
3490 (update_copy_costs, calculate_allocno_spill_cost): Call
3491 ira_init_register_move_cost_if_necessary. Use
3492 ira_register_move_cost instead of ira_get_register_move_cost.
3493 (move_spill_restore, update_curr_costs): Ditto.
3494 (allocno_spill_priority): Make it inline.
3495 (color_pass): Allocate and free allocno_color_dat and object_color_data.
3496 (struct coalesce_data, coalesce_data_t): New.
3497 (allocno_coalesce_data): New definition.
3498 (ALLOCNO_COALESCE_DATA): New macro.
3499 (merge_allocnos, coalesced_allocno_conflict_p): Use
3500 ALLOCNO_COALESCED_DATA instead of ALLOCNO_FIRST_COALESCED_ALLOCNO,
3501 ALLOCNO_NEXT_COALESCED_ALLOCNO, ALLOCNO_TEMP.
3502 (coalesce_allocnos): Ditto.
3503 (setup_coalesced_allocno_costs_and_nums): Ditto.
3504 (collect_spilled_coalesced_allocnos): Ditto.
3505 (slot_coalesced_allocno_live_ranges_intersect_p): Ditto.
3506 (setup_slot_coalesced_allocno_live_ranges): Ditto.
3507 (coalesce_spill_slots): Ditto.
3508 (ira_sort_regnos_for_alter_reg): Ditto. Allocate, initialize and
3509 free allocno_coalesce_data.
3511 * ira-conflicts.c: Fix formatting.
3512 (process_regs_for_copy): Call
3513 ira_init_register_move_cost_if_necessary. Use
3514 ira_register_move_cost instead of ira_get_register_move_cost.
3515 (build_object_conflicts): Optimize.
3517 * ira-costs.c (record_reg_classes): Optimize. Call
3518 ira_init_register_move_cost_if_necessary. Use
3519 ira_register_move_cost, ira_may_move_in_cost, and
3520 ira_may_move_out_cost instead of ira_get_register_move_cost and
3521 ira_get_may_move_cost.
3522 (record_address_regs): Ditto.
3523 (scan_one_insn): Optimize.
3524 (find_costs_and_classes): Optimize.
3525 (process_bb_node_for_hard_reg_moves): Call
3526 ira_init_register_move_cost_if_necessary. Use
3527 ira_register_move_cost instead of ira_get_register_move_cost.
3529 * ira-emit.c: Use allocno_emit_reg, ALLOCNO_EMIT_DATA instead of
3530 ALLOCNO_REG, ALLOCNO_CHILD_RENAMED_P, ALLOCNO_MEM_OPTIMIZED_DEST,
3531 ALLOCNO_MEM_OPTIMIZED_DEST_P, and ALLOCNO_SOMEWHERE_RENAMED_P.
3532 (ira_allocno_emit_data, void_p, new_allocno_emit_data_vec): New
3534 (ira_initiate_emit_data, ira_finish_emit_data)
3535 (create_new_allocno): New functions.
3536 (modify_move_list): Call create_new_alloc instead of ira_create_allocno.
3537 (emit_move_list): Call ira_init_register_move_cost_if_necessary.
3538 Use ira_register_move_cost instead of ira_get_register_move_cost.
3540 * ira-int.h: Fix some comments.
3541 (object_hard_regs_t, object_hard_regs_node_t): Move to ira-color.c.
3542 (struct object_hard_regs, struct object_hard_regs_node): Ditto.
3543 (struct ira_object): Remove profitable_hard_regs, hard_regs_node,
3544 hard_regs_subnodes_start, hard_regs_subnodes_num. Add new member
3546 (struct ira_allocno): Make mode and aclass a bitfield. Move other
3547 bitfield after mode. Make hard_regno a short int. Make
3548 hard_regno short. Remove first_coalesced_allocno and
3549 next_coalesced_allocno. Move mem_optimized_dest_p,
3550 somewhere_renamed_p, child_renamed_p, reg, and mem_optimized_dest
3551 into struct ira_emit_data. Remove in_graph_p, may_be_spilled_p,
3552 available_regs_num, next_bucket_allocno, prev_bucket_allocno,
3553 temp, colorable_p. Add new member add_data.
3554 (ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P): Remove.
3555 (ALLOCNO_COLORABLE_P, ALLOCNO_AVAILABLE_REGS_NUM): Remove.
3556 (ALLOCNO_NEXT_BUCKET_ALLOCNO, ALLOCNO_PREV_BUCKET_ALLOCNO): Remove.
3557 (ALLOCNO_TEMP, ALLOCNO_FIRST_COALESCED_ALLOCNO): Remove.
3558 (ALLOCNO_NEXT_COALESCED_ALLOCNO): Remove.
3559 (ALLOCNO_ADD_DATA): New macro.
3560 (ira_emit_data_t): New typedef.
3561 (struct ira_emit_data): New. Move mem_optimized_dest_p,
3562 somewhere_renamed_p, child_renamed_p, reg, mem_optimized_dest
3563 from struct ira_allocno.
3564 (ALLOCNO_EMIT_DATA): New macro.
3565 (ira_allocno_emit_data, allocno_emit_reg): New.
3566 (ALLOCNO_PROFITABLE_HARD_REGS, OBJECT_HARD_REGS_NODE): Remove.
3567 (OBJECT_HARD_REGS_SUBNODES_STAR, OBJECT_HARD_REGS_SUBNODES_NUM): Remove.
3568 (OBJECT_ADD_DATA): New macro.
3569 (ira_reallocate): Remove.
3570 (ira_initiate_emit_data, ira_finish_emit_data): New.
3571 (ira_get_register_move_cost, ira_get_may_move_cost): Remove.
3572 (ira_init_register_move_cost_if_necessary): New.
3573 (ira_object_conflict_iter_next): Merge into
3574 ira_object_conflict_iter_cond.
3575 (FOR_EACH_OBJECT_CONFLICT): Don't use ira_object_conflict_iter_next.
3577 * ira-live.c (process_single_reg_class_operands): Call
3578 ira_init_register_move_cost_if_necessary. Use
3579 ira_register_move_cost instead of ira_get_register_move_cost.
3581 2010-08-13 Vladimir Makarov <vmakarov@redhat.com>
3583 * ira-int.h (struct target_ira_int): Remove x_cost_classes.
3585 * ira-costs.c: Fix formatting.
3586 (cost_classes, cost_classes_num): Remove.
3587 (struct cost_classes, cost_classes_t, const_cost_classes_t): New.
3588 (regno_cost_classes, cost_classes_hash, cost_classes_eq): New.
3589 (cost_classes_del, cost_classes_htab): New.
3590 (cost_classes_aclass_cache, cost_classes_mode_cache): New.
3591 (initiate_regno_cost_classes, setup_cost_classes): New.
3592 (setup_regno_cost_classes_by_aclass): New.
3593 (setup_regno_cost_classes_by_mode, finish_regno_cost_classes): New.
3594 (record_reg_classes): Use regno_cost_classes instead of
3595 cost_classes. Move checking opposite operand up.
3596 (record_address_regs): Use regno_cost_classes
3597 instead of cost_classes.
3598 (scan_one_insn): Ditto. Use always general register.
3599 (print_allocno_costs): Use regno_cost_classes instead of
3601 (print_pseudo_costs): Ditto. Use Reg_N_REFS.
3602 (find_costs_and_classes): Set up cost classes for each registers.
3603 Use also their mode for this. Use regno_cost_classes instead of
3605 (setup_allocno_class_and_costs): Use regno_cost_classes instead of
3607 (free_ira_costs, ira_init_costs): Don't use cost_classes.
3608 (ira_costs, ira_set_pseudo_classes): Call
3609 initiate_regno_cost_classes and finish_regno_cost_classes.
3611 2010-10-04 Vladimir Makarov <vmakarov@redhat.com>
3613 * target-def.h (TARGET_IRA_COVER_CLASSES): Remove.
3615 * target.def (ira_cover_classes): Remove.
3617 * doc/tm.texi: Remove TARGET_IRA_COVER_CLASSES and IRA_COVER_CLASSES.
3619 * doc/tm.texi.in: Ditto.
3621 * ira-conflicts.c: Remove mentioning cover classes from the file.
3622 Use ALLOCNO_CLASS instead of ALLOCNO_COVER_CLASS. Use
3623 ALLOCNO_COVER_CLASS_COST instead of ALLOCNO_CLASS_COST. Fix formatting.
3625 * targhooks.c (default_ira_cover_classes): Remove.
3627 * targhooks.h (default_ira_cover_classes): Ditto.
3629 * haifa-sched.c: Remove mentioning cover classes from the file.
3630 Use ira_reg_pressure_cover instead of ira_reg_class_cover. Use
3631 ira_pressure_classes and ira_pressure_classes_num instead of
3632 ira_reg_class_cover_size and ira_reg_class_cover. Use
3633 sched_regno_pressure_class instead of sched_regno_cover_class.
3634 (mark_regno_birth_or_death, setup_insn_reg_pressure_info): Use
3635 ira_reg_class_max_nregs instead of ira_reg_class_nregs.
3637 * ira-int.h: Add 2010 to Copyright. Remove mentioning cover
3638 classes from the file.
3639 (object_hard_regs_t, object_hard_regs_node_t): New typedefs.
3640 (struct object_hard_regs, struct object_hard_regs_node): New.
3641 (struct ira_object): New members profitable_hard_regs,
3642 hard_regs_node, hard_regs_subnodes_start, hard_regs_subnodes_num.
3643 (struct ira_allocno): Rename cover_class to aclass. Rename
3644 cover_class_cost and updated_cover_class_cost to class_cost and
3645 updated_class_cost. Remove splay_removed_p and
3646 left_conflict_size. Add new members colorable_p.
3647 (ALLOCNO_SPLAY_REMOVED_P, ALLOCNO_LEFT_CONFLICTS_SIZE): Remove.
3648 (ALLOCNO_COLORABLE_P): New macro.
3649 (ALLOCNO_COVER_CLASS): Rename to ALLOCNO_CLASS.
3650 (ALLOCNO_COVER_CLASS_COST, ALLOCNO_UPDATED_COVER_CLASS_COST):
3651 Rename to ALLOCNO_CLASS_COST and ALLOCNO_UPDATED__CLASS_COST.
3652 (OBJECT_...): Rename parameter C to O.
3653 (OBJECT_PROFITABLE_HARD_REGS): New macro.
3654 (OBJECT_HARD_REGS_NODE, OBJECT_HARD_REGS_SUBNODES_START)
3655 (OBJECT_HARD_REGS_SUBNODES_NUM): New macros.
3656 (struct target_ira_int): New members x_ira_max_memory_move_cost,
3657 x_ira_max_register_move_cost, x_ira_max_may_move_in_cost,
3658 x_ira_max_may_move_out_cost, x_ira_reg_allocno_class_p,
3659 x_ira_reg_pressure_class_p, x_ira_important_class_nums,
3660 x_ira_reg_class_superunion. Rename x_prohibited_class_mode_reg to
3661 x_ira_prohibited_class_mode_reg. Rename x_ira_reg_class_union to
3662 x_ira_reg_class_subunion.
3663 (ira_max_memory_move_cost, ira_max_register_move_cost)
3664 (ira_max_may_move_in_cost, ira_max_may_move_out_cost)
3665 (ira_reg_allocno_class_p, ira_reg_pressure_class_p)
3666 (ira_important_class_nums, ira_reg_class_superunion): New macros.
3667 (prohibited_class_mode_regs): Rename to ira_prohibited_class_mode_regs.
3668 (ira_reg_class_union): Rename to ira_reg_class_subunion.
3669 (ira_debug_class_cover): Rename to ira_debug_allocno_classes.
3670 (ira_set_allocno_cover_class): Rename to ira_set_allocno_class.
3671 (ira_tune_allocno_costs_and_cover_classes): Rename to
3672 ira_tune_allocno_costs.
3673 (ira_debug_hard_regs_forest): New.
3674 (ira_object_conflict_iter_init, ira_object_conflict_iter_cond)
3675 (ira_object_conflict_iter_next): Fix comments.
3676 (ira_hard_reg_set_intersection_p, hard_reg_set_size): New functions.
3677 (ira_allocate_and_set_costs, ira_allocate_and_copy_costs): Rename
3678 cover_class to aclass.
3679 (ira_allocate_and_accumulate_costs): Ditto.
3680 (ira_allocate_and_set_or_copy_costs): Ditto.
3682 * opts.c (decode_options): Remove ira_cover_class check.
3684 * ira-color.c: Remove mentioning cover classes from the file. Use
3685 ALLOCNO_CLASS, ALLOCNO_CLASS_COST, and ALLOCNO_UPDATED_CLASS_COST
3686 instead of ALLOCNO_COVER_CLASS, ALLOCNO_COVER_CLASS_COST, and
3687 ALLOCNO_UPDATED_COVER_CLASS_COST. Fix formatting.
3688 (splay-tree.h): Remove include.
3689 (allocno_coalesced_p, processed_coalesced_allocno_bitmap): Move
3690 before copy_freq_compare_func.
3691 (allocnos_for_spilling, removed_splay_allocno_vec): Remove.
3692 (object_hard_regs_vec, object_hard_regs_htab, node_check_tick):
3694 (hard_regs_roots, hard_regs_node_vec): Ditto.
3695 (object_hard_regs_hash, object_hard_regs_eq, find_hard_regs): Ditto.
3696 (insert_hard_regs, init_object_hard_regs, add_object_hard_regs): Ditto.
3697 (finish_object_hard_regs, object_hard_regs_compare): Ditto.
3698 (create_new_object_hard_regs_node): Ditto.
3699 (add_new_object_hard_regs_node_to_forest): Ditto.
3700 (add_object_hard_regs_to_forest, collect_object_hard_regs_cover): Ditto.
3701 (setup_object_hard_regs_nodes_parent, first_common_ancestor_node):
3703 (print_hard_reg_set, print_hard_regs_subforest): Ditto.
3704 (print_hard_regs_forest, ira_debug_hard_regs_forest): Ditto.
3705 (remove_unused_object_hard_regs_nodes): Ditto.
3706 (enumerate_object_hard_regs_nodes): Ditto.
3707 (object_hard_regs_nodes_num, object_hard_regs_nodes): Ditto.
3708 (object_hard_regs_subnode_t): Ditto.
3709 (struct object_hard_regs_subnode): Ditto.
3710 (object_hard_regs_subnodes, object_hard_regs_subnode_index): Ditto.
3711 (setup_object_hard_regs_subnode_index): Ditto.
3712 (get_object_hard_regs_subnodes_num): Ditto.
3713 (form_object_hard_regs_nodes_forest): Ditto.
3714 (finish_object_hard_regs_nodes_tree): Ditto.
3715 (finish_object_hard_regs_nodes_forest): Ditto.
3716 (allocnos_have_intersected_live_ranges_p): Rename to
3717 allocnos_conflict_by_live_ranges_p. Move before copy_freq_compare_func.
3718 (pseudos_have_intersected_live_ranges_p): Rename to
3719 conflict_by_live_ranges_p. Move before copy_freq_compare_func.
3720 (setup_left_conflict_sizes_p, update_left_conflict_sizes_p): Ditto.
3721 (empty_profitable_hard_regs, setup_profitable_hard_regs): Ditto.
3722 (update_copy_costs): Remove assert. Skip cost update if the hard
3723 reg does not belong the class.
3724 (assign_hard_reg): Process only profitable hard regs.
3725 (uncolorable_allocnos_num): Make it scalar.
3726 (allocno_spill_priority): Use ALLOCNO_EXCESS_PRESSURE_POINTS_NUM
3727 and ira_reg_class_max_nregs instead of ALLOCNO_LEFT_CONFLICTS_SIZE
3728 and ira_reg_class_max_nregs.
3729 (bucket_allocno_compare_func): Check frequency first.
3730 (sort_bucket): Add compare function as a parameter.
3731 (add_allocno_to_ordered_bucket): Assume no coalesced allocnos.
3732 (uncolorable_allocnos_splay_tree, USE_SPLAY_P): Remove.
3733 (push_allocno_to_stack): Rewrite for checking new allocno
3735 (remove_allocno_from_bucket_and_push): Print cost too. Remove assert.
3736 (push_only_colorable): Pass new parameter to sort_bucket.
3737 (push_allocno_to_spill): Remove.
3738 (allocno_spill_priority_compare): Make it inline and rewrite.
3739 (splay_tree_allocate, splay_tree_free): Remove.
3740 (allocno_spill_sort_compare): New function.
3741 (push_allocnos_to_stack): Sort allocnos for spilling once. Don't
3742 build and use splay tree. Choose first allocno in uncolorable
3743 allocno bucket to spill. Remove setting spill cost.
3744 (all_conflicting_hard_regs): Remove.
3745 (setup_allocno_available_regs_num): Check only profitable hard
3746 regs. Print info about hard regs nodes.
3747 (setup_allocno_left_conflicts_size): Remove.
3748 (put_allocno_into_bucket): Don't call
3749 setup_allocno_left_conflicts_size. Use setup_left_conflict_sizes_p.
3750 (improve_allocation): New.
3751 (color_allocnos): Call setup_profitable_hard_regs,
3752 form_object_hard_regs_nodes_forest, improve_allocation,
3753 finish_object_hard_regs_nodes_forest. Setup spill cost.
3754 (print_loop_title): Use pressure classes.
3755 (color_allocnso): Ditto.
3756 (do_coloring): Remove allocation and freeing splay_tree_node_pool
3757 and allocnos_for_spilling.
3758 (ira_sort_regnos_for_alter_reg): Don't setup members
3759 {first,next}_coalesced_allocno.
3760 (color): Remove allocating and freeing removed_splay_allocno_vec.
3761 (fast_allocation): Use ira_prohibited_class_mode_regs instead of
3762 prohibited_class_mode_regs.
3764 * ira-lives.c: Remove mentioning cover classes from the file. Fix
3766 (update_allocno_pressure_excess_length): Use pressure classes.
3767 (inc_register_pressure, dec_register_pressure): Check for pressure
3769 (mark_pseudo_regno_live, mark_pseudo_regno_subword_live): Use
3770 pressure class. Use ira_reg_class_nregs instead of
3771 ira_reg_class_max_nregs.
3772 (mark_pseudo_regno_dead, mark_pseudo_regno_subword_dead): Ditto.
3773 (mark_hard_reg_live, mark_hard_reg_dead): Use pressure class.
3774 (single_reg_class): Use ira_reg_class_nregs instead of
3775 ira_reg_class_max_nregs.
3776 (process_bb_node_lives): Use pressure classes.
3778 * ira-emit.c: Remove mentioning cover classes from the file. Use
3779 ALLOCNO_CLASS instead of ALLOCNO_COVER_CLASS. Fix formatting.
3780 (change_loop): Use pressure classes.
3781 (modify_move_list): Call ira_set_allocno_class instead of
3782 ira_set_allocno_cover_class.
3784 * ira-build.c: Remove mentioning cover classes from the file. Use
3785 ALLOCNO_CLASS and ALLOCNO_CLASS_COST instead of
3786 ALLOCNO_COVER_CLASS and ALLOCNO_COVER_CLASS_COST. Use
3787 ALLOCNO_UPDATED_CLASS_COST instead of
3788 ALLOCNO_UPDATED_COVER_CLASS_COST. Fix formatting.
3789 (ira_create_object): Initiate OBJECT_PROFITABLE_HARD_REGS.
3790 (ira_create_allocno): Remove initialization of
3791 ALLOCNO_SPLAY_REMOVED_P, ALLOCNO_LEFT_CONFLICT_SIZE. Initialize
3792 ALLOCNO_COLORABLE_P.
3793 (ira_set_allocno_cover_class): Rename to ira_set_allocno_class.
3794 Update conflict regs for the objects.
3795 (create_cap_allocno): Remove assert. Don't propagate
3796 ALLOCNO_AVAILABLE_REGS_NUM.
3797 (ira_free_allocno_costs): New function.
3798 (finish_allocno): Change a part of code into call of
3799 ira_free_allocno_costs.
3800 (low_pressure_loop_node_p): Use pressure classes.
3801 (object_range_compare_func): Don't compare classes.
3802 (setup_min_max_conflict_allocno_ids): Ditto.
3804 * loop-invariant.c: Remove mentioning cover classes from the file.
3805 Use ira_pressure_classes and ira_pressure_classes_num instead of
3806 ira_reg_class_cover_size and ira_reg_class_cover. Fix formatting.
3807 (get_cover_class_and_nregs): Rename to get_cover_pressure_and_nregs.
3808 Use ira_reg_class_max_nregs instead of ira_reg_class_nregs.
3809 Use reg_allocno_class instead of reg_cover_class.
3810 (get_inv_cost): Use instead ira_stack_reg_pressure_class of
3811 STACK_REG_COVER_CLASS.
3812 (get_regno_cover_class): Rename to get_regno_pressure_class.
3813 (move_loop_invariants): Initialize and finalize regstat.
3815 * ira.c: Remove mentioning cover classes from the file. Add
3816 comments about coloring without cover classes. Use ALLOCNO_CLASS
3817 instead of ALLOCNO_COVER_CLASS. Fix formatting.
3818 (alloc_reg_class_subclasses, setup_reg_subclasses): Move it before
3819 setup_class_subset_and_memory_move_costs.
3820 (setup_stack_reg_pressure_class, setup_pressure_classes): New.
3821 (setup_cover_and_important_classes): Rename to
3822 setup_allocno_and_important_classes.
3823 (setup_class_translate_array): New.
3824 (setup_class_translate): Call it for allocno and pressure classes.
3825 (cover_class_order): Rename to allocno_class_order.
3826 (comp_reg_classes_func): Use ira_allocno_class_translate instead
3827 of ira_class_translate.
3828 (reorder_important_classes): Set up ira_important_class_nums.
3829 (setup_reg_class_relations): Set up ira_reg_class_superunion.
3830 (print_class_cover): Rename to print_classes. Add parameter.
3831 (ira_debug_class_cover): Rename to ira_debug_allocno_classes.
3832 Print pressure classes too.
3833 (find_reg_class_closure): Rename to find_reg_classes. Don't call
3834 setup_reg_subclasses.
3835 (ira_hard_regno_cover_class): Rename to ira_hard_regno_allocno_class.
3836 (ira_reg_class_nregs): Rename to ira_reg_class_max_nregs.
3837 (setup_prohibited_class_mode_regs): Use
3838 ira_prohibited_class_mode_regs instead of prohibited_class_mode_regs.
3839 (clarify_prohibited_class_mode_regs): New function.
3840 (ira_init_register_move_cost): Set up ira_max_register_move_cost,
3841 ira_max_may_move_in_cost, and ira_max_may_move_out_cost.
3842 (ira_init_once): Initialize them.
3843 (free_register_move_costs): Process them.
3844 (ira_init): Move calls of find_reg_classes and
3845 setup_hard_regno_aclass after setup_prohibited_class_mode_regs.
3846 Call clarify_prohibited_class_mode_regs.
3847 (ira_no_alloc_reg): Remove.
3848 (too_high_register_pressure_p): Use pressure classes.
3850 * sched-deps.c: Remove mentioning cover classes from the file.
3851 Use ira_reg_pressure_cover instead of ira_reg_class_cover. Use
3852 ira_pressure_classes and ira_pressure_classes_num instead of
3853 ira_reg_class_cover_size and ira_reg_class_cover.
3854 (mark_insn_hard_regno_birth, mark_hard_regno_death): Use
3855 sched_regno_pressure_class instead of sched_regno_cover_class.
3856 (mark_insn_pseudo_birth, mark_pseudo_death): Ditto. Use
3857 ira_reg_class_max_nregs instead of ira_reg_class_nregs.
3859 * ira.h: Add 2010 to Copyright.
3860 (ira_no_alloc_reg): Remove external.
3861 (struct target_ira): Rename x_ira_hard_regno_cover_class,
3862 x_ira_reg_class_cover_size, x_ira_reg_class_cover, and
3863 x_ira_class_translate to x_ira_hard_regno_allocno_class,
3864 x_ira_allocno_classes_num, x_ira_allocno_classes, and
3865 x_ira_allocno_class_translate. Add x_ira_pressure_classes_num,
3866 x_ira_pressure_classes, x_ira_pressure_class_translate, and
3867 x_ira_stack_reg_pressure_class. Rename x_ira_reg_class_nregs to
3868 x_ira_reg_class_max_nregs. Add x_ira_reg_class_min_nregs and
3869 x_ira_no_alloc_regs.
3870 (ira_hard_regno_cover_class): Rename to ira_hard_regno_allocno_class.
3871 (ira_reg_class_cover_size, ira_reg_class_cover): Rename to
3872 ira_allocno_classes_num and ira_allocno_classes.
3873 (ira_class_translate): Rename to ira_allocno_class_translate.
3874 (ira_pressure_classes_num, ira_pressure_classes): New definitions.
3875 (ira_pressure_class_translate, ira_stack_reg_pressure_class): Ditto.
3876 (ira_reg_class_nregs): Rename to ira_reg_class_max_nregs.
3877 (ira_reg_class_min_nregs, ira_stack_reg_pressure_class): New
3878 (ira_no_alloc_regs): New.
3880 * ira-costs.c: Add 2010 to Copyright. Remove mentioning cover
3881 classes from the file. Use ALLOCNO_CLASS instead of
3882 ALLOCNO_COVER_CLASS. Use ALLOCNO_CLASS_COST instead of
3883 ALLOCNO_COVER_CLASS_COST.
3884 (regno_cover_class): Rename to regno_aclass.
3885 (record_reg_classes): Use ira_reg_class_subunion instead of
3886 ira_reg_class_union.
3887 (record_address_regs): Check overflow.
3888 (scan_one_insn): Ditto.
3889 (print_allocno_costs): Print total mem cost fore regional allocation.
3890 (print_pseudo_costs): Use REG_N_REFS.
3891 (find_costs_and_classes): Use classes intersected with them on the
3892 1st pass. Check overflow. Use ira_reg_class_subunion instead of
3893 ira_reg_class_union. Use ira_allocno_class_translate and
3894 regno_aclass instead of ira_class_translate and regno_cover_class.
3895 Modify code for finding regno_aclass. Setup preferred classes for
3897 (setup_allocno_cover_class_and_costs): Rename to
3898 setup_allocno_class_and_costs. Use regno_aclass instead of
3899 regno_cover_class. Use ira_set_allocno_class instead of
3900 ira_set_allocno_cover_class.
3901 (init_costs, finish_costs): Use regno_aclass instead of
3903 (ira_costs): Use setup_allocno_class_and_costs instead of
3904 setup_allocno_cover_class_and_costs.
3905 (ira_tune_allocno_costs_and_cover_classes): Rename to
3906 ira_tune_allocno_costs. Check overflow. Skip conflict hard regs
3907 by processing objects. Use ira_reg_class_max_nregs instead of
3908 ira_reg_class_nregs.
3910 * rtl.h (reg_cover_class): Rename to reg_allocno_class.
3912 * sched-int.h: Remove mentioning cover classes from the file.
3913 (sched_regno_cover_class): Rename to sched_regno_pressure_class.
3915 * reginfo.c: Add 2010 to Copyright. Remove mentioning cover
3916 classes from the file.
3917 (struct reg_pref): Rename coverclass into allocnoclass.
3918 (reg_cover_class): Rename to reg_allocno_class.