1 2008-08-22 Richard Guenther <rguenther@suse.de>
3 PR tree-optimization/37078
4 * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
7 2008-08-22 Richard Guenther <rguenther@suse.de>
9 PR tree-optimization/37143
10 * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
11 a conversion statement instead of a copy.
13 2008-08-22 Uros Bizjak <ubizjak@gmail.com>
16 * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
17 CCCmode, CCOmode and CCSmode destination modes.
20 * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
21 from different units in a single alternative.
22 (*vec_extractv2sf_1): Ditto.
23 (*vec_extractv2si_0): Ditto.
24 (*vec_extractv2si_1): Ditto.
25 * config/i386/sse.md (sse2_storehpd): Ditto.
26 (sse2_storelpd): Ditto.
27 (sse2_loadhpd): Ditto.
28 (sse2_loadlpd): Ditto.
31 * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
38 2008-08-22 Richard Guenther <rguenther@suse.de>
42 * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
43 if the multiplication does not overflow.
45 2008-08-21 Nathan Sidwell <nathan@codesourcery.com>
47 * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
49 2008-08-21 Richard Henderson <rth@redhat.com>
51 * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
52 spurrious comma from test.
55 2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
58 * builtins.c (fold_builtin_next_arg): Add warning about undefined
61 2008-08-21 Aldy Hernandez <aldyh@redhat.com>
63 * c-tree.h (grokfield): New argument.
64 * c-decl.c (grokfield): Handle new location argument.
65 * c-parser.c (c_parser_struct_declaration): Pass location to
68 2008-08-21 Richard Guenther <rguenther@suse.de>
70 * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
72 2008-08-21 Jan Hubicka <jh@suse.cz>
74 * cgraph.c (first_cgraph_function_insertion_hook): New variable.
75 (cgraph_add_function_insertion_hook,
76 cgraph_remove_function_insertion_hook,
77 cgraph_call_function_insertion_hooks): New functions.
78 * cgraph.h (cgraph_add_function_insertion_hook,
79 cgraph_remove_function_insertion_hook,
80 cgraph_call_function_insertion_hooks): Declare.
81 * ipa-reference.c (function_insertion_hook_holder): New variable.
82 (check_operand, look_for_address_of): When checking late, do not care
84 (add_new_function): New function.
85 (generate_summary): Register hooks; zero module bitmaps.
86 (propagate): Unregister hooks.
87 * ipa-pure-const.c (function_insertion_hook_holder): New variable.
88 (add_new_function): New function.
89 (generate_summary): Register hook.
90 (propagate): Remove hook.
92 * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
94 * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
95 * ipa-cp.c (ipcp_update_cloned_node): New function.
96 (build_const_val): Handle functions correctly; bring type logic
97 into sync with tree-inline.c
98 (ipcp_init_stage): Take care of computing stuff needed by
99 indirect inlining; update clones.
100 (ipcp_generate_summary): Break out of ipcp_driver.
101 (ipcp_driver): Do only execution and transformation.
102 (pass_ipa_cp): Make IPA_PASS.
103 * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
105 * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
106 ipcp, some info is already available.
107 * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
108 * tree-inline.c (remap_ssa_name): Unshare expression.
110 2008-08-21 Richard Guenther <rguenther@suse.de>
112 * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
113 a PHI ask VN if it is already available.
114 * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
115 * tree-ssa-sccvn.c (vn_phi_lookup): Export.
117 2008-08-21 Richard Guenther <rguenther@suse.de>
120 * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
121 makes sure to produce a result of the correct type.
123 2008-08-21 Jan Hubicka <jh@suse.cz>
124 Backport from LTO branch:
126 2008-05-05 Kenneth Zadeck <zadeck@naturalbridge.com>
127 Jan Hubicka <jh@suse.cz>
130 (init_state, finish_state, set_function_state, generate_summary):
132 (scan_stmt): Renamed from scan_function. Changed to keep state in
133 local static vars rather than cgraph aux field.
134 (propagate): Renamed from static_execute. Changed to keep state in
135 local static vars rather than cgraph aux field.
136 (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
137 * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
139 2008-07-15 Kenneth Zadeck <zadeck@naturalbridge.com>
141 * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
142 * ipa-reference.c (init_function_info, generate_summary,
143 propagate): New functions.
144 (analyze_function): Call init_function_info.
145 (static_execute): Stripped into generate_summary and propagate.
146 (pass_ipa_reference): Made into ipa_opt_pass.
148 2008-08-21 Richard Guenther <rguenther@suse.de>
150 PR tree-optimization/37181
151 * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
153 (extract_range_from_unary_expr): Likewise.
155 2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
157 * diagnostic.c (pedwarn_at): Rename as pedwarn.
159 * toplev.h (pedwarn_at): Likewise.
160 * builtins.c: Update all calls to pedwarn.
162 * toplev.c: Likewise.
163 * c-tree.h: Likewise.
164 * c-decl.c: Likewise.
165 * c-errors.c: Likewise.
166 * c-typeck.c: Likewise.
167 * c-common.c: Likewise.
168 * c-parser.c: Likewise.
170 2008-08-20 Joseph Myers <joseph@codesourcery.com>
173 * config/sparc/sparc.c (function_arg_slotno): Handle structure
174 with MODE_VECTOR_INT mode.
176 2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
179 * tree-ssa.c (warn_uninit): Do not warn for variables that can be
180 initialized outside the current module.
181 (warn_uninitialized_var): Ignore left-hand side when walking the
182 trees. Ignore address expressions. Examine VUSE operands in gimple
183 statements with a variable declaration on the right-hand side.
185 2008-08-20 Richard Sandiford <rdsandiford@googlemail.com>
188 * rtlanal.c (subreg_offset_representable_p): Revert last change.
190 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
193 * c-common.c (conversion_warning): Do not warn if applying bit-and
194 operator to unsigned constant that fits in the target type.
196 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
199 * c-common.c (conversion_warning): Do not warn for artificial
202 2008-08-20 Richard Guenther <rguenther@suse.de>
204 * tree-vrp.c (op_with_constant_singleton_value_range): New function.
205 (extract_range_from_binary_expr): Fall back to constant propagation.
206 (extract_range_from_unary_expr): Likewise.
208 2008-08-20 Richard Guenther <rguenther@suse.de>
210 * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
211 with TREE_THIS_VOLATILE on shared nodes.
212 (fold_stmt_r): Likewise.
214 2008-08-20 Jakub Jelinek <jakub@redhat.com>
217 * c-parser.c (c_parser_attributes): For keywords use canonical
218 spelling for attr_name.
220 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
222 * value-prof.c (check_counter): Revert wrong call to error.
224 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
226 * profile.c: Update calls to inform.
227 * value-prof.c: Update calls to inform.
229 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
231 * diagnostic.c (inform): Add an explicit location_t parameter.
232 * toplev.h (inform): Update declaration.
233 * builtins.c: Update all calls to inform.
234 * c-common.c: Likewise.
235 * c-decl.c: Likewise.
236 * c-opts.c: Likewise.
238 * c-pragma.c: Likewise.
239 * c-typeck.c: Likewise.
240 * coverage.c: Likewise.
242 * toplev.c: Likewise.
243 * tree-cfg.c: Likewise.
244 * tree-ssa.c: Likewise.
246 2008-08-20 H.J. Lu <hongjiu.lu@intel.com>
249 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
250 V2DI mode, for SSE4.1, use movq instead of vector set if the
251 second element is zero and inter-unit moves are OK.
253 2008-08-20 Richard Guenther <rguenther@suse.de>
255 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
256 properly handle conversion/copy chains after tuplification.
258 2008-08-20 Richard Guenther <rguenther@suse.de>
260 * passes.c (init_optimization_passes): Move the second
261 forwprop pass before alias computation. Remove the second
262 DCE pass. Remove the first dominator and phi copy/const
265 2008-08-20 Nick Clifton <nickc@redhat.com>
267 * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
268 support of this feature. Do not assume that a sufficiently new
269 assembler will support the feature regardless of the target type.
270 (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
271 * configure: Regenerate.
273 2008-08-20 Richard Guenther <rguenther@suse.de>
275 * tree-vrp.c (found_in_subgraph): Remove.
276 (live): New global static.
277 (live_on_edge): New function.
278 (blocks_visited): Remove.
279 (register_edge_assert_for_2): Use live_on_edge.
280 (find_conditional_asserts): Remove code dealing with
281 found_in_subgraph. Do not walk the CFG.
282 (find_switch_asserts): Likewise.
283 (find_assert_locations_1): Renamed from find_assert_locations.
284 Move finding assert locations for conditional and switch
285 statements first. Update live bitmap. Do not walk the CFG.
286 (find_assert_locations): New function.
287 (insert_range_assertions): Remove entry of CFG walk.
288 Adjust call to find_assert_locations.
289 * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
290 that only can appear because of fake exit edges but assert we
291 never try to insert on those.
292 (fini_pre): Do not remove fake exit edges here...
293 (execute_pre): ...but here, before committing edge inserts.
295 2008-08-19 Richard Guenther <rguenther@suse.de>
297 * passes.c (init_optimization_passes): Exchange store-ccp
300 2008-08-19 Rafael Espindola <espindola@google.com>
302 * varasm.c (weak_decls): Move earlier in the file.
303 (assemble_external): Add weak decls to the weak_decls list.
304 (declare_weak): Don't add decls to the weak_decls list.
306 2008-08-19 H.J. Lu <hongjiu.lu@intel.com>
309 * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
310 before (sse2_shufpd_<mode>).
312 2008-08-19 Jakub Jelinek <jakub@redhat.com>
315 * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
316 * tree.c (block_nonartificial_location): Likewise.
318 2008-08-19 Richard Guenther <rguenther@suse.de>
320 PR tree-optimization/35972
321 PR tree-optimization/23094
322 * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
324 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
325 handle MISALIGNED_INDIRECT_REF.
326 (get_ref_from_reference_ops): New helper.
327 (vn_reference_lookup_pieces): Walk the use-def chain using the
328 alias-oracle if requested.
329 * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
330 walking the use-def chain.
331 (compute_avail): But not here.
332 (create_component_ref_by_pieces_1): Properly handle
333 MISALIGNED_INDIRECT_REF.
334 (do_regular_insertion): Handle fully redundant
335 expressions after PHI-translation also for SSA_NAME values, not
336 only constants. Correctly use edoubleprime for that.
338 2008-08-19 Ira Rosen <irar@il.ibm.com>
340 * tree-vectorizer.c (supportable_widening_operation): Support
341 multi-step conversion, return the number of steps in such conversion
342 and the required intermediate types.
343 (supportable_narrowing_operation): Likewise.
344 * tree-vectorizer.h (vect_pow2): New function.
345 (supportable_widening_operation): Change argument types.
346 (supportable_narrowing_operation): Likewise.
347 (vectorizable_type_promotion): Add an argument.
348 (vectorizable_type_demotion): Likewise.
349 * tree-vect-analyze.c (vect_analyze_operations): Call
350 vectorizable_type_promotion and vectorizable_type_demotion with
352 (vect_get_and_check_slp_defs): Detect patterns.
353 (vect_build_slp_tree): Add an argument, don't fail in case of multiple
355 (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
356 vect_build_slp_tree with correct arguments. Calculate unrolling factor
357 according to the smallest type in the loop.
358 (vect_detect_hybrid_slp_stmts): Include statements from patterns.
359 * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
360 supportable_widening_operation with correct arguments.
361 * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
362 operands lists according to the number of vector statements in left
363 or right node, if exists.
364 (vect_gen_widened_results_half): Remove unused argument.
365 (vectorizable_conversion): Call supportable_widening_operation,
366 supportable_narrowing_operation, and vect_gen_widened_results_half
367 with correct arguments.
368 (vectorizable_assignment): Change documentation, support multiple
370 (vectorizable_operation): Likewise.
371 (vect_get_loop_based_defs): New function.
372 (vect_create_vectorized_demotion_stmts): Likewise.
373 (vectorizable_type_demotion): Support loop-aware SLP and general
374 multi-step conversion. Call vect_get_loop_based_defs and
375 vect_create_vectorized_demotion_stmts for transformation.
376 (vect_create_vectorized_promotion_stmts): New function.
377 (vectorizable_type_promotion): Support loop-aware SLP and general
378 multi-step conversion. Call vect_create_vectorized_promotion_stmts
380 (vectorizable_store): Change documentation, support multiple
382 (vectorizable_load): Likewise.
383 (vect_transform_stmt): Pass SLP_NODE to
384 vectorizable_type_promotion and vectorizable_type_demotion.
385 (vect_schedule_slp_instance): Move here the calculation of number
386 of vectorized statements for each node from...
387 (vect_schedule_slp): ... here.
388 (vect_transform_loop): Call vect_schedule_slp without the last
391 2008-08-19 Dorit Nuzman <dorit@il.ibm.com>
394 * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
395 to == in assert statement.
396 (vectorizable_reduction): Fix typo.
398 2008-08-18 H.J. Lu <hongjiu.lu@intel.com>
401 * value-prof.c (check_counter): Dereference pointer to overall
402 count when printing it.
404 2008-08-18 H.J. Lu <hongjiu.lu@intel.com>
406 * profile.h: Really add it.
408 2008-08-18 H.J. Lu <hongjiu.lu@intel.com>
410 * mcf.c: Really add it.
412 2008-08-18 Paul Yuan <yingbo.com@gmail.com>
413 Vinodha Ramasamy <vinodha@google.com>
415 * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
417 * value-prof.c (check_counter): Fix the counter if
418 flag_profile_correction is true.
419 (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
420 tree_mod_subtract_transform):
421 Follow check_counter parameter change.
422 * common.opt (fprofile-correction): New option.
424 * profile.h: Likewise.
425 * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
426 (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
427 is_inconsistent, set_bb_counts, read_profile_edge_counts): New
429 (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
430 flag_profile_correction is set.
432 2008-08-18 Richard Sandiford <rdsandiford@googlemail.com>
434 * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
436 2008-08-18 Tomas Bily <tbily@suse.cz>
438 * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
439 * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
441 * tree-data-ref.c (split_constant_offset_1): Likewise.
442 * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
443 * tree-sra.c (sra_walk_expr): Likewise.
444 * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
445 * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
446 * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
447 * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
449 * gimple.c (gimple_assign_unary_nop_p): Likewise.
450 * tree-vect-transform.c (vectorizable_type_demotion)
451 (vectorizable_type_promotion): Likewise.
452 * tree-inline.c (expand_call_inline):
453 * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
454 (forward_propagate_addr_expr_1, forward_propagate_comparison)
455 (tree_ssa_forward_propagate_single_use_vars): Likewise.
456 * expr.c (expand_expr_real_1): Likewise.
457 * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
458 (gimple_assign_unary_useless_conversion_p): Likewise.
459 * tree-stdarg.c (execute_optimize_stdarg): Likewise.
460 * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
461 * fold-const.c (fold_unary): Likewise.
462 * tree.h (CONVERT_EXPR_P): Likewise.
463 * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
464 * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
466 (register_edge_assert_for_2, extract_range_from_unary_expr)
467 (register_edge_assert_for_1): Likewise.
469 2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
471 * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
472 dconst_third_ptr, dconst_sqrt2_ptr): Declare.
473 (enum real_value_const): Delete.
474 (get_real_const): Delete.
475 * real.c (get_real_const): Delete.
476 (dconst_e_ptr): Define.
477 (dconst_third_ptr): Define.
478 (dconst_sqrt2_ptr): Define.
479 * builtins.c: Update all callers.
481 2008-08-18 Richard Guenther <rguenther@suse.de>
483 * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
484 statement iterator after statement removal.
486 2008-08-18 Andreas Tobler <a.tobler@schweiz.org>
488 * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
489 (detect_processor_freebsd): Likewise.
490 (host_detect_local_cpu): Call newly added functions for FreeBSD.
492 2008-08-18 Richard Guenther <rguenther@suse.de>
494 * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
495 and loads have the correct types.
497 2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
500 * c-opts.c (cpp_opts): Remove static.
501 * c-parser.c (cpp_opts): Declare it extern.
502 (disable_extension_diagnostics): Handle cpp options.
503 (enable_extension_diagnostics): Likewise.
505 2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
507 * diagnostics.c (permerror_at): Rename as permerror.
509 * toplev.h: Likewise.
511 2008-08-18 Richard Guenther <rguenther@suse.de>
513 * passes.c (init_optimization_passes): Remove cleanup_cfg1,
514 sdse1 and addressables2 passes. Replace dce1 with cddce1.
515 Move call_cdce before build_alias. Move copyrename2,
516 cunrolli and ccp2 beafore build_alias. Re-add addressable2
517 right after final inlining.
518 * tree-cfg.c (build_gimple_cfg): Do not dump function here.
519 (pass_build_cfg): But instead via TODO_dump_func.
521 2008-08-18 Richard Guenther <rguenther@suse.de>
523 * tree-sra.c (generate_element_init_1): Deal with NULL constructor
525 (scalarize_init): If we failed to generate some initializers
526 do not generate zeros for not instantiated members. Instead
527 rely on the copy out.
528 * tree-ssa-operands.c (get_addr_dereference_operands): Warn
529 about missing flow-sensitive alias info only if we have
532 2008-08-17 Nick Clifton <nickc@redhat.com>
534 * doc/extend.texi (Function Attributes): Fix typo in description
535 if hot function attribute.
537 2008-08-17 Daniel Jacobowitz <dan@codesourcery.com>
538 Richard Sandiford <rdsandiford@googlemail.com>
540 * doc/install.texi (--with-mips-plt): Document.
541 * doc/invoke.texi (-mplt, -mno-plt): Document.
542 * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
543 and handle ${with_mips_plt}.
544 * config/mips/mips.opt (mplt): New option.
545 * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
546 (TARGET_ABICALLS_PIC2): Likewise.
547 (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
548 (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
549 (ASM_SPEC): Use !mabi=* instead of !mabi*.
550 (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
551 to decide whether to output ".option picX" directives.
552 * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
553 Pass -call_nonpic rather than -KPIC for -mplt.
554 (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
555 on the command line. Also remove it when -mabi=64 is used without
557 * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
558 * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
559 TARGET_ABICALLS_PIC0.
560 (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
562 (mips16_build_function_stub): Only output ".option pic" directives
563 and PIC stubs if TARGET_ABICALLS_PIC2. Call through $25 instead of $1.
564 (mips16_build_call_stub): Fix comment and remove redundant
565 ".set at"/"set .noat" directives.
566 (mips_function_rodata_section): Use the default behaviour for
567 TARGET_ABSOLUTE_ABICALLS.
568 (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
569 (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
570 (mips_restore_gp): Do nothing if the current function doesn't use
572 (mips_expand_prologue): Only save $gp if the current function uses it.
573 Use a normal move for TARGET_ABICALLS_PIC0.
574 (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
576 2008-08-17 Richard Sandiford <rdsandiford@googlemail.com>
578 * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
579 of function when handling GLOBAL_POINTER_REGNUM.
581 2008-08-16 Eric Botcazou <ebotcazou@adacore.com>
584 * common.opt (-fstack-check): Do not declare the variable here.
585 (-fstack-check=): New option variant.
586 * doc/invoke.texi (Code Gen Options): Document it.
587 * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
588 (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
589 (STACK_CHECK_STATIC_BUILTIN): New macro.
590 * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
591 * opts.c: Include expr.h.
592 (common_handle_option) <OPT_fold_stack_check_>: New case.
593 <OPT_fstack_check>: Likewise.
594 * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
595 consistently in the test for variable-sized types. Adjust for
596 new behaviour of flag_stack_check.
597 * explow.c: Include except.h.
598 (allocate_dynamic_stack_space): Do not take into account
599 STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
600 * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
601 for variable-sized parameters. Treat all parameters whose size is
602 greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
603 stack checking is enabled.
604 * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
605 size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
606 if generic stack checking is enabled.
607 (expand_function_end): Adjust for new behaviour of flag_stack_check.
608 * reload1.c (reload): Likewise.
609 * stmt.c (expand_decl): Assert that all automatic variables have
610 fixed size at this point and remove dead code.
611 * flags.h (stack_check_type): New enumeration type.
612 (flag_stack_check): Declare.
613 * toplev.c (flag_stack_check): New global variable.
614 * Makefile.in (opts.o): Add dependency on EXPR_H.
615 (explow.o): Add dependency on except.h.
617 2008-08-16 Andy Hutchinson <hutchinsonandy@aim.com>
619 * config/avr/avr.c (avr_override_options): Reduce value of
620 PARAM_INLINE_CALL_COST.
622 2008-08-15 Eric Botcazou <ebotcazou@adacore.com>
624 * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
625 to BLKmode, try to fetch an inner memory reference. Use 'mode' in
626 lieu of TYPE_MODE (type) throughout.
628 2008-08-15 Joseph Myers <joseph@codesourcery.com>
630 * config/arm/arm.c (add_minipool_backward_ref): Check for
631 8-byte-aligned entries in second case of forcing insertion after a
632 particular entry. Change third case to avoid inserting
633 non-8-byte-aligned entries before 8-byte-aligned ones.
635 2008-08-15 Richard Guenther <rguenther@suse.de>
637 * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
638 strip components for unknown size accesses.
640 2008-08-15 Wolfgang Gellerich <gellerich@de.ibm.com>
642 * config/s390/2097.md New file.
643 * config/s390/s390.md ("z10prop" attribute): Define none,
644 z10_super, z10_super_E1, z10_super_A1, z10_super_c,
645 z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
646 z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
647 possible values and apply them to insns as appropriate.
648 ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
649 ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
650 fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
651 fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible
653 ("bfp" mode attribute): Removed. Every occurence replaced
655 * config/s390/s390.c (struct "z10_cost"): Updated entries.
656 * config/s390/2084.md (insn_reservation "x_itof"): Updated
659 2008-08-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
662 * c-parser.c (c_lex_one_token): Do not store the canonical spelling
665 2008-08-14 Dorit Nuzman <dorit@il.ibm.com>
667 * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
668 additional argument. Support reduction when duplication is needed due
669 to data-types of different sizes in the loop.
670 (get_initial_def_for_induction): Fix printout.
671 (vect_get_vec_def_for_stmt_copy): Support case where the
672 vec_stmt_for_operand is a phi node.
673 (vectorizable_reduction): Support reduction when duplication is needed
674 due to data-types of different sizes in the loop.
675 (vectorizable_call): Remove restriction to not vectorize in case we
676 have data-types of different sizes in the loop.
677 (vectorizable_conversion): Likewise.
678 (vectorizable_operation): Likewise.
679 (vectorizable_type_demotion): Likewise.
680 (vectorizable_type_promotion): Likewise.
681 (vectorizable_induction): Add restriction to not vectorize in case
682 we have data-types of different sizes in the loop.
684 2008-08-14 Christophe Saout <christophe@saout.de>
685 Uros Bizjak <ubizjak@gmail.com>
688 * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
689 (*vec_concatv2di_rex64_sse4_1): Ditto.
690 (*vec_concatv2di_rex64_sse): Ditto.
692 2008-08-14 Jakub Jelinek <jakub@redhat.com>
695 * fold-const.c (fold_widened_comparison): Do not allow
696 sign changes that change the result even if shorter type
697 is wider than arg1_unw's type.
699 2008-08-13 Kazu Hirata <kazu@codesourcery.com>
701 * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
702 Skip if the multilib testing specifies -march that does not
703 agree with the one specified in the testcase.
705 2008-08-13 Joseph Myers <joseph@codesourcery.com>
707 * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
708 zero extend SImode values being converted to TFmode before passing
711 2008-08-13 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
713 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
714 __PPU__ when targeting the Cell/B.E. PPU processor.
716 2008-08-13 Eric Botcazou <ebotcazou@adacore.com>
718 * gimple.h (gimple_call_set_chain): Accept SSA variables.
719 * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
720 Rematerialize the static chain, if any.
721 * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
724 2008-08-13 H.J. Lu <hongjiu.lu@intel.com>
726 * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
727 (new_loc_descr): Likewise.
728 (add_loc_descr): Likewise.
729 (size_of_loc_descr): Likewise.
730 (size_of_locs): Likewise.
731 (output_loc_operands): Likewise.
732 (output_loc_sequence): Likewise.
733 (new_reg_loc_descr): New.
734 (build_cfa_loc): Use it.
735 (build_cfa_aligned_loc): Likewise.
736 (one_reg_loc_descriptor): Likewise.
737 (based_loc_descr): Likewise.
739 2008-08-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
742 * doc/invoke.texi (Wmain): Update.
743 * c-decl.c (start_decl): warn_main is only 0 or 1.
744 (start_function): Likewise. Fix formatting.
745 (finish_function): Delete redundant warning.
746 * c.opt (Wmain): Add Var(warn_main) and Init(-1).
747 * c-opts (c_common_handle_option): -Wall only has effect if
748 warn_main is uninitialized. OPT_Wmain is automatically
749 handled. -pedantic also enables Wmain.
750 (c_common_post_options): Handle all logic for Wmain here.
751 * c-common.c (warn_main): Delete.
752 (check_main_parameter_types): Make pedwarns conditional on
754 * c-common.h (warn_main): Delete.
756 2008-08-13 H.J. Lu <hongjiu.lu@intel.com>
759 * expr.c (emit_group_store): Allocate stack temp with the
760 largest alignment when copying from register to stack.
762 2008-08-13 Richard Guenther <rguenther@suse.de>
764 * tree.h (maybe_fold_offset_to_address): Declare.
765 * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
766 (ccp_fold): Handle pointer conversions the same as fold_stmt.
767 Likewise for POINTER_PLUS_EXPR.
768 (maybe_fold_offset_to_reference): Enable disabled code.
769 (maybe_fold_offset_to_address): New function.
770 (fold_stmt_r): Use it.
771 (fold_gimple_assign): Likewise.
772 * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
773 (gimplify_expr): Likewise.
775 2008-08-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
777 * toplev.h (pedwarn_at): Fix declaration.
779 2008-08-13 Joseph Myers <joseph@codesourcery.com>
781 * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
782 LINK_SPEC): Use %R in -Y P argument.
784 2008-08-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
787 * diagnostic.c (pedwarn_at): New.
788 * toplev.h (pedwarn_at): Declare.
789 * c-tree.h (build_enumerator): Update declaration.
790 * c-decl.c (finish_enum): Update comment.
791 (build_enumerator): Take a location parameter. Give a pedwarn but do
792 not perform any conversion.
793 * c-parser.c (c_parser_enum_specifier): Set correct location for
796 2008-08-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
799 * c-common.c (conversion_warning): Use a switch. Ignore boolean
800 expressions except for conversions to signed:1 bitfields. Handle
801 COND_EXPR with constant operands.
803 2008-08-13 Richard Guenther <rguenther@suse.de>
805 PR tree-optimization/15255
806 * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
807 (struct oecount_s): New struct and VEC types.
809 (oecount_hash): New function.
810 (oecount_eq): Likewise.
811 (oecount_cmp): Likewise.
812 (zero_one_operation): New function.
813 (build_and_add_sum): Likewise.
814 (undistribute_ops_list): Perform un-distribution of multiplication
815 and division on the chain of summands.
816 (should_break_up_subtract): Also break up subtracts for factors.
817 (reassociate_bb): Delete dead visited statements.
818 Call undistribute_ops_list. Re-sort and optimize if it did something.
819 * passes.c (init_optimization_passes): Move DSE before
821 * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
824 2008-08-12 Janis Johnson <janis187@us.ibm.com>
826 * doc/invoke.texi (-fipa-pta): Say the option is experimental.
828 * doc/invoke.texi: Revert unintended checkin.
830 2008-08-12 Nathan Froyd <froydnj@codesourcery.com>
833 * gcc.c (include_spec_function): Tweak call to find_a_file.
835 2008-08-12 Jakub Jelinek <jakub@redhat.com>
838 * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
840 * dojump.c (do_jump): Likewise.
842 PR tree-optimization/37084
843 * tree-inline.c (copy_bb): Call gimple_regimplify_operands
844 if id->regimplify, don't assume stmt is a cast assignment.
846 2008-08-12 Anatoly Sokolov <aesok@post.ru>
848 * final.c (final_scan_insn): Use app_enable/app_disable functions.
850 2008-08-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
853 * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
856 2008-08-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
858 * defaults.h (TARGET_FLOAT_FORMAT): Remove.
859 (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
861 * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
862 * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
863 * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
864 * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
865 * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
867 * doc/tm.texi (Storage Layout): Remove documentation for
870 * simplify-rtx.c (simplify_binary_operation_1): Replace
871 TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
873 2008-08-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
875 * real.h (struct real_format): New member has_sign_dependent_rounding.
876 * real.c (ieee_single_format, mips_single_format, motorola_single_format,
877 spu_single_format, ieee_double_format, mips_double_format,
878 motorola_double_format, ieee_extended_motorola_format,
879 ieee_extended_intel_96_format, ieee_extended_intel_128_format,
880 ieee_extended_intel_96_round_53_format, ibm_extended_format,
881 mips_extended_format, ieee_quad_format, mips_quad_format,
882 vax_f_format, vax_d_format, vax_g_format): Initialize it.
883 * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
885 * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
886 MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
887 * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
888 MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
889 (ROUND_TOWARDS_ZERO): Likewise.
891 * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
892 (FLOAT_MODE_FORMAT): New macro.
893 (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
894 (MODE_COMPOSITE_P): ... this new macro.
895 (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
896 MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
897 * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
899 * flags.h: Include "real.h".
901 * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
902 REAL_MODE_FORMAT_COMPOSITE_P.
903 * simplify-rtx.c (simplify_const_binary_operation): Likewise.
905 * doc/tm.texi (Storage Layout): Remove documentation of
906 MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
907 MODE_HAS_SIGN_DEPENDENT_ROUNDING. Update documentation of
908 ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
909 they only apply to libgcc2.a.
911 2008-08-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
913 * config/spu/float_disf.c: New file.
914 * config/spu/float_unsdisf.c: New file.
915 * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
916 (LIB2FUNCS_EXCLUDE): Define.
918 2008-08-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
919 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
921 * real.h (struct real_format): New member round_towards_zero.
922 * real.c (round_for_format): Respect fmt->round_towards_zero.
923 (ieee_single_format, mips_single_format, motorola_single_format,
924 spu_single_format, ieee_double_format, mips_double_format,
925 motorola_double_format, ieee_extended_motorola_format,
926 ieee_extended_intel_96_format, ieee_extended_intel_128_format,
927 ieee_extended_intel_96_round_53_format, ibm_extended_format,
928 mips_extended_format, ieee_quad_format, mips_quad_format,
929 vax_f_format, vax_d_format, vax_g_format): Initialize it.
930 * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
932 * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
933 real_format to choose rounding mode when calling MPFR functions.
934 (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
935 (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
937 * real.h (real_to_decimal_for_mode): Add prototype.
938 * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
939 Respect target rounding mode when generating decimal representation.
940 (real_to_decimal): New stub for backwards compatibility.
941 * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
942 real_to_decimal_for_mode instead of real_to_decimal.
944 * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
946 2008-08-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
947 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
949 * real.c (spu_single_format): New variable.
950 * real.h (spu_single_format): Declare.
952 * config/spu/spu.c (spu_override_options): Install SFmode format.
953 (spu_split_immediate): Use integer mode to operate on pieces of
954 floating-point values in all cases.
956 * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
957 ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
958 ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
960 2008-08-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
962 * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
964 2008-08-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
966 * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
968 2008-08-12 Jakub Jelinek <jakub@redhat.com>
971 * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
972 on the VAR_DECL instead of TYPE_READONLY on its type.
974 2008-08-12 Ira Rosen <irar@il.ibm.com>
976 * tree-vectorizer.c: Depend on langhooks.h.
977 (supportable_widening_operation): Add two arguments. Support double
979 (supportable_narrowing_operation): Likewise.
980 * tree-vectorizer.h (supportable_widening_operation): Add two
982 (supportable_narrowing_operation): Likewise.
983 * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
984 supportable_widening_operation with correct arguments.
985 * tree-vect-transform.c (vectorizable_conversion): Likewise.
986 (vectorizable_type_demotion): Support double type conversions.
987 (vectorizable_type_promotion): Likewise.
988 * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
990 2008-08-11 Michael Matz <matz@suse.de>
992 * i386/i386.c (override_options): Move initialisation from
993 flag_schedule_insns_after_reload to here from ...
994 (optimization_options): ... here.
996 2008-08-11 Jakub Jelinek <jakub@redhat.com>
998 PR rtl-optimization/36998
999 * dwarf2out.c (compute_barrier_args_size_1,
1000 compute_barrier_args_size): Temporarily remove assertions.
1002 2008-08-10 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1005 * tree-ssa.c (struct walk_data): Add new flag
1006 warn_possibly_uninitialized.
1007 (warn_uninitialized_var): Use it.
1008 (warn_uninitialized_vars): New.
1009 (execute_early_warn_uninitialized): Call it.
1010 (execute_late_warn_uninitialized): Likewise.
1012 2008-08-09 Andrew Pinski <andrew_pinski@playstation.sony.com>
1015 * reload1.c (gen_reload): Guard calls to get_secondary_mem
1018 2008-08-09 Jan Hubicka <jh@suse.cz>
1021 * optabs.c (maybe_emit_unop_insn): Remove produced code if
1023 (expand_fix): Be prepared for expansion to fail.
1024 (expand_sfix_optab): Remove instructions if expansion failed.
1026 2008-08-09 Anatoly Sokolov <aesok@post.ru>
1028 * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
1030 * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
1031 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1033 2008-08-09 Richard Sandiford <rdsandiford@googlemail.com>
1035 * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
1036 mips/t-libgcc-mips16 to tmake_file.
1037 * config/mips/mips-protos.h (mips_call_type): New enum.
1038 (mips_pic_base_register, mips_got_load): Declare.
1039 (mips_restore_gp): Take an rtx argument.
1040 (mips_use_pic_fn_addr_reg_p): Declare.
1041 (mips_expand_call): Replace the sibcall_p argument with
1042 a mips_call_type argument. Add a lazy_p parameter.
1043 (mips_split_call): Declare.
1044 * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
1045 (MIPS16_PIC_TEMP): Likewise.
1046 (reg_class): Delete M16_NA_REGS.
1047 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
1048 (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
1049 (mips_split_hi_p): Declare.
1050 * config/mips/mips.c (mips_split_hi_p): New array.
1051 (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
1052 (mips_got_symbol_type_p): New function.
1053 (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
1054 (mips16_stub_function_p): New function.
1055 (mips16_local_function_p): Likewise.
1056 (mips_use_pic_fn_addr_reg_p): Likewise.
1057 (mips_cannot_force_const_mem): Return false for HIGHs.
1058 Extend CONST_INT and symbolic handling to MIPS16, using
1059 mips_symbol_insns to check that the base symbol type is a
1060 legitimate constant. Reject GOT-based constants if
1061 TARGET_MIPS16_PCREL_LOADS.
1062 (mips_const_insns): Check targetm.cannot_force_const_mem when
1063 decomposing a symbolic base and a large offset.
1064 (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
1065 When calling a function that needs $25 from MIPS16 code,
1066 move the target address into $25 separately and add a USE
1068 (mips16_gp_pseudo_reg): Insert the initializer immediately
1069 before the first real insn.
1070 (mips_pic_base_register, mips_got_load): New functions.
1071 (mips_split_symbol): Generalize the name of the LO_SUM_OUT
1072 parameter to LOW_OUT. Say that it can be any valid SET_SRC
1073 when splitting a load-address operation. Split SYMBOL_GOT_DISP
1074 constants and highs of SYMBOL_GOT_PAGE_OFST constants.
1075 (mips_call_tls_get_addr): Update the call to mips_expand_call,
1076 also passing NULL_RTX rather than const0_rtx as the aux argument.
1077 (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
1078 instead of TARGET_EXPLICIT_RELOCS.
1079 (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
1080 (mips_load_call_address): Replace the sibcall_p argument with
1081 a mips_call_type argument. Use mips_got_load.
1082 (mips16_local_alias): New structure.
1083 (mips16_local_aliases): New variable.
1084 (mips16_local_aliases_hash): New function.
1085 (mips16_local_aliases_eq): Likewise.
1086 (mips16_local_alias): Likewise.
1087 (mips16_stub_function): Likewise.
1088 (mips16_build_function_stub): Create a local alias for the target
1089 function. Handle TARGET_ABICALLS. For PIC abicalls, emit a
1090 .cpload directive and an R_MIPS_NONE relocation for the target
1091 function, then load the alias rather than the function itself.
1092 Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
1093 (mips16_copy_fpr_return_value): Use mips16_stub_function and
1094 mips_expand_call. Set SYMBOL_REF_BIND_NOW on the symbol.
1095 (mips16_build_call_stub): Replace the FN parameter with an
1096 FN_PTR parameter. Force the address into a register if it
1097 isn't a call_insn_operand; don't rely on the caller to do this.
1098 If a call to a locally-defined and locally-binding MIPS16
1099 function must be made indirectly, redirect the call to the
1100 function's local alias. Use mips16_stub_function_p,
1101 mips16_stub_function, mips_expand_call and use_reg.
1102 Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
1103 Use explicit %hi and %lo accesses where possible.
1104 Use MIPS_CALL to generate the correct code form of a
1105 jal instruction. Add clobbers of $18 instead of uses.
1106 Update the call to mips_emit_call_insn.
1107 (mips_expand_call): Replace the SIBCALL_P argument with a
1108 mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
1109 Take a LAZY_P parameter. Call mips16_build_call_stub first,
1110 allowing it to modify the call address. Update the calls to
1111 mips_load_call_address and mips_emit_call_insn.
1112 (mips_split_call): New function.
1113 (mips_init_relocs): Clear mips_split_hi_p. Only use %gp_rel if
1114 !TARGET_MIPS16. Split SYMBOL_GOT_DISP, and the high parts of
1115 SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
1116 (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
1117 (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
1119 (mips_cprestore_slot): New function.
1120 (mips_restore_gp): Take a TEMP parameter. Handle TARGET_MIPS16
1121 and use mips_cprestore_slot.
1122 (mips_output_function_prologue): Handle TARGET_MIPS16 for
1124 (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
1125 then use a copygp_mips16 instruction to set up $28.
1126 (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
1127 (mips16_lay_out_constants): Call split_all_insns_noflow.
1128 (mips_reorg_process_insns): Explicitly set all_noreorder_p to
1129 false if TARGET_MIPS16.
1130 (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
1131 (mips_output_mi_thunk): Use mips_got_symbol_type_p. Use the
1132 mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
1133 (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
1134 MIPS16 code. Allow MIPS16 o32 PIC.
1135 (mips_override_options): Allow MIPS16 o32 PIC.
1136 * config/mips/mips.md: Lower CONST_GP_P moves into register moves
1137 after reload if TARGET_USE_GOT.
1138 (UNSPEC_COPYGP): New constant.
1139 (length): Use a default length of 8 for MIPS16 GOT loads.
1140 (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
1141 (*got_page<mode>): Check mips_split_hi_p.
1142 (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
1143 (unspec_got<mode>, unspec_call<mode>): New expanders.
1144 (load_got<mode>, load_call<mode>): Remove the length attributes.
1145 Use a got attribute instead of a type attribute.
1146 (copygp_mips16): New insn.
1147 (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
1148 (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
1149 (sibcall, sibcall_value, call, call_value): Update the calls
1150 to mips_expand_call.
1151 (call_internal, call_value_internal): Use mips_split_call.
1152 (call_value_multiple_internal): Likewise.
1153 (call_split): Move after call_internal (the insn it is split from).
1154 (call_internal_direct, call_value_internal_direct): Turn into
1155 define_insn_and_splits. Split if TARGET_SPLIT_CALLS.
1156 (call_direct_split, call_value_direct_split): New patterns.
1157 * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
1158 and use M16_REGS instead of M16_NA_REGS.
1159 * config/mips/predicates.md (const_call_insn_operand): Replace
1160 the TARGET_ABSOLUTE_ABICALLS-based check with a more general
1161 mips_use_pic_fn_addr_reg_p check.
1162 (move_operand): Reject HIGHs if mips_split_hi_p.
1163 * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
1164 (__mips16_floatunsisf): Inline __mips16_floatsisf.
1165 (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
1166 * config/mips/libgcc-mips16.ver: New file.
1167 * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
1168 $(srcdir)/config/mips/libgcc-mips16.ver.
1170 2008-08-09 Richard Sandiford <rdsandiford@googlemail.com>
1172 * config/mips/mips.c (mips_unspec_address_offset): Move earlier in file.
1173 (mips_unspec_address, mips_unspec_offset_high): Likewise.
1174 (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
1175 (mips16_cfun_returns_in_fpr_p): Likewise.
1177 2008-08-09 Richard Sandiford <rdsandiford@googlemail.com>
1179 * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
1180 * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
1181 rather than 4 to PC.
1183 2008-08-09 Richard Sandiford <rdsandiford@googlemail.com>
1185 * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
1186 (FUNCTION_PROFILER): Save the static chain pointer into $2
1187 beforehand and restore it aftewards.
1188 (TRAMPOLINE_TEMPLATE): Adjust accordingly. Load the target
1189 address directly into $25 and call the function through $25;
1190 do not clobber $3. Pad the DImode version to cover the space
1191 left by the deleted $25 <- $3 move.
1192 (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
1193 the removal of the $25 <- $3 move.
1194 (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
1195 * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
1197 2008-08-09 Richard Sandiford <rdsandiford@googlemail.com>
1198 Daniel Jacobowitz <dan@codesourcery.com>
1200 * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
1201 * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
1202 (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
1203 * config/mips/mips.c (mips_start_function_definition): New function.
1204 (mips_end_function_definition): Likewise.
1205 (mips_output_function_prologue): Use mips_start_function_definition.
1206 (mips_output_function_epilogue): Use mips_end_function_definition.
1207 (build_mips16_function_stub): Use mips_start_function_definition
1208 and mips_end_function_definition.
1209 (build_mips16_call_stub): Likewise.
1211 2008-08-09 Richard Guenther <rguenther@suse.de>
1213 * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
1214 * gimple.h (gimple_call_fn): Adjust comment.
1215 (gimple_call_set_fndecl): New function.
1216 (gimple_call_fndecl): Adjust for GIMPLE_CALL no
1217 longer having bare FUNCTION_DECL operand.
1218 (gimple_call_return_type): Likewise.
1219 * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
1221 * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
1222 (gimple_mod_pow2): Likewise.
1223 (gimple_mod_subtract): Likewise.
1224 (gimple_ic): Likewise.
1225 (gimple_stringop_fixed_value): Likewise.
1226 (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
1227 longer having bare FUNCTION_DECL operand.
1228 * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
1229 * omp-low.c (optimize_omp_library_calls): Likewise.
1230 * cgraphunit.c (update_call_expr): Likewise.
1231 * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
1232 (execute_convert_to_rsqrt): Likewise.
1233 * cfgexpand.c (gimple_to_tree): Simplify.
1234 (release_stmt_tree): Fix for GIMPLE_CALL no longer having
1235 bare FUNCTION_DECL operand.
1236 * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
1237 (convert_gimple_call): Use gimple_call_fndecl.
1238 * c-common.c (c_warn_unused_result): Likewise.
1240 2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1243 * c-typeck.c (digest_init): Call verify_sequence_points from here.
1244 (c_finish_return): Likewise.
1245 (c_start_case): Likewise.
1246 * c-common.c (warn_for_collisions_1): Use explicit location in
1248 * c-parser.c (c_parser_condition): New. Call
1249 verify_sequence_points.
1250 (c_parser_paren_condition): Call c_parser_condition.
1251 (c_parser_for_statement): Call c_parser_condition.
1253 2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1256 * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
1257 * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
1258 Moved from diagnostic.h
1259 (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
1261 (emit_diagnostic): New.
1262 (warning0, pedwarn0): Delete.
1263 (warning, warning_at, pedwarn, permerror): Return bool.
1264 * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
1265 Moved to diagnostic.c.
1266 (struct diagnostic_context): Use correct type for
1267 classify_diagnostic.
1268 (diagnostic_report_diagnostic): Update declaration.
1269 (emit_diagnostic): Declare.
1270 * errors.c (warning): Return bool.
1271 * errors.h (warning): Update declaration.
1272 * toplev.h (warning0, pedwarn0): Delete.
1273 (warning, warning_at, pedwarn, permerror): Return bool.
1274 * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
1275 * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
1276 inform. Update all calls.
1277 (diagnose_mismatched_decls): Check return value of warning/pedwarn
1278 before giving informative note.
1279 (implicit_decl_warning): Likewise.
1280 * c-typeck.c (build_function_call): Likewise.
1281 * tree-sssa.c (warn_uninit): Likewise.
1282 * builtins.c (gimplify_va_arg_expr): Likewise.
1284 2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1287 * doc/invoke.texi (-Wextra): Move warning from here...
1288 (-Wuninitialized): ... to here.
1290 2008-08-08 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1293 * flags.h (set_Wunused): Delete
1294 * toplev.c (process_options): Handle Wunused flags here.
1295 * opts.c (maybe_warn_unused_parameter): Delete.
1296 (common_handle_option): Replace set_Wunused by warn_unused.
1297 (set_Wextra): Do not handle Wunused-parameter here.
1298 (set_Wunused): Delete.
1299 * c-opts.c (c_common_handle_option): Replace set_Wunused by
1301 * common.opt (Wunused): Add Var and Init.
1302 (Wunused-function): Likewise.
1303 (Wunused-label): Likewise.
1304 (Wunused-parameter): Likewise.
1305 (Wunused-value): Likewise.
1306 (Wunused-variable): Likewise.
1308 2008-08-08 Peter Bergner <bergner@vnet.ibm.com>
1310 * doc/invoke.texi: Add cpu_type power7.
1311 * config.in (HAVE_AS_VSX): New.
1312 * config.gcc: Add cpu_type power7.
1313 * configure.ac (HAVE_AS_VSX): Check for assembler support of the
1315 * configure: Regenerate.
1316 * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
1318 * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
1319 (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
1320 (EXTRA_SPECS): Add asm_cpu_power7 spec string.
1322 2008-08-08 Dorit Nuzman <dorit@il.ibm.com>
1324 * tree-vect-transform.c (vectorizable_conversion): Pass the integral
1325 type to vectorize.builtin_conversion.
1326 (vectorizable_conversion): Likewise.
1327 * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
1328 integral type as input.
1329 * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
1331 (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
1332 and ALTIVEC_BUILTIN_VCTSXS.
1333 (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
1336 2008-08-08 Richard Guenther <rguenther@suse.de>
1338 * tree-ssa-ccp.c (likely_value): Calls are not all varying.
1339 (surely_varying_stmt_p): Calls are varying only if they are
1340 non-builtin and not indirect or have no result.
1341 (ccp_fold): Re-instantiate code before the tuples merge.
1343 2008-08-08 Richard Guenther <rguenther@suse.de>
1345 PR tree-optimization/37056
1346 * gimple.h (gimple_assign_rhs_class): New helper function.
1347 * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
1348 unary operations properly.
1350 2008-08-07 Jan Hubicka <jh@suse.cz>
1352 * i386.h (ix86_size_cost): Declare.
1353 (ix86_cur_cost): New function macro.
1354 * i386.md (peepholes expanding size and splitters): Predicate by
1355 optimize_insn_for_speed_p.
1356 (peepholes reduce size and splitters): Predicate by
1357 optimize_insn_for_size_p.
1358 * i386.c (ix86_size_cost): Rename from ...
1359 (size_cost): This one.
1360 (override_options): Update.
1361 (decide_alg): Likewise.
1362 (ix86_expand_clear): Use RTL profile.
1363 (ix86_pad_returns): Use RTL profile.
1365 2008-08-07 Jan Hubicka <jh@suse.cz>
1367 * recog.c (split_all_insns): Set RTL profile
1368 (peephole2_optimize): Likewise.
1369 * function.c (thread_prologue_and_epilogue_insns): Likewise.
1370 * combine.c (combine_instructions): Likewise.
1372 2008-08-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1374 * c-common.c (c_common_reswords): Also warn about keyword "bool".
1376 2008-08-07 Bob Wilson <bob.wilson@acm.org>
1378 * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
1379 value in a6 after the set_frame_ptr insn.
1381 2008-08-07 Richard Henderson <rth@redhat.com>
1384 * gcc.c (cpp_options): Pass along -g*.
1386 2008-08-07 Joseph Myers <joseph@codesourcery.com>
1388 * config/arm/arm.c (output_move_neon): Update comment describing
1389 big-endian vector layout.
1390 (arm_assemble_integer): Do not handle big-endian NEON vectors
1392 * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
1393 neon_vget_lane<mode>_sext_internal,
1394 neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
1395 element indices for big-endian.
1397 2008-08-07 Richard Henderson <rth@redhat.com>
1399 * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
1400 * configure, config.in: Rebuild.
1401 * debug.h (dwarf2out_do_cfi_asm): Declare.
1402 * c-cppbuiltin.c (c_cpp_builtins): Use it.
1403 * dwarf2out.c (dwarf2out_do_cfi_asm): New.
1404 (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
1405 dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
1407 2008-08-07 Joseph Myers <joseph@codesourcery.com>
1409 * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
1410 movv2si_internal): Combine into mov<mode>_internal.
1411 (movv2si_internal_2): Remove.
1413 2008-08-07 Jan Hubicka <jh@suse.cz>
1416 * i386.md (single stringop patterns): Enable unconditionally.
1418 2008-08-07 H.J. Lu <hongjiu.lu@intel.com>
1421 * config/i386/emmintrin.h (_mm_move_epi64): Use
1422 __builtin_ia32_movq128.
1424 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
1425 (bdesc_args): Add IX86_BUILTIN_MOVQ128.
1427 * config/i386/sse.md (sse2_movq128): New.
1429 * doc/extend.texi: Document __builtin_ia32_movq128.
1431 2008-08-07 Richard Guenther <rguenther@suse.de>
1434 * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
1435 pointers can access anything.
1437 2008-08-06 Jan Hubicka <jh@suse.cz>
1439 * optabs.c (emit_unop_insn): Break out to ...
1440 (maybe_emit_unop_insn): ... this one.
1441 (expand_sfix_optab): Use maybe variant.
1442 * optabs.h (maybe_emit_unop_insn): Declare.
1444 * i386.md (mov0 patterns): Enable by default.
1445 (FP conversion expanders): Disable expansion of code expanding
1446 sequences when instruction should be optimized for size.
1447 (single strinop patterns): Enable when optimizing for size.
1448 (string expanders): Disable expanding of code expanding sequences
1449 when optimizning instruction for size.
1450 * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
1452 (ix86_fp_comparison_sahf_cost): Likewise.
1453 (ix86_expand_branch): Likewise.
1454 (ix86_expand_ashl_const): Likewise.
1455 (ix86_split_ashl): Likewise.
1456 (ix86_expand_strlen): Likewise.
1457 (ix86_emit_fp_unordered_jump): Likewie.
1459 2008-08-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1461 * c-common.c: Fix typo.
1462 (c_common_reswords): Activate more C++ keyword warnings.
1464 * matrix-reorg.c (compute_offset): Avoid C++ keywords.
1466 2008-08-06 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1469 * diagnostic.c (permerror_at): New.
1470 * toplev.h (permerror_at): Declare.
1472 2008-08-06 Victor Kaplansky <victork@il.ibm.com>
1473 Ira Rosen <irar@il.ibm.com>
1475 * tree-vect-transform.c (vect_model_simple_cost): Return
1476 immediately if stmt is pure SLP.
1477 (vect_model_store_cost): Ditto.
1478 (vect_model_load_cost): Ditto.
1479 (vectorizable_store): Remove PURE_SLP check before call
1480 to vect_model_store_cost.
1481 (vect_model_store_cost): When checking whether stmt describe
1482 strided access, add a check that it is not slp_node.
1484 2008-08-06 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1487 * c-common.c (warn_for_sign_compare): New. Handle separately the
1488 case that 'constant' is zero.
1489 * c-typeck.c (build_binary_op): Move code to c-common.c
1491 2008-08-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1493 * config/alpha/alpha.c (alpha_preferred_reload_class,
1494 alpha_secondary_reload, alpha_emit_set_const_1, function_value,
1495 alpha_output_mi_thunk_osf): Avoid C++ keywords.
1496 * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
1497 * config/arm/arm.md: Likewise.
1498 * config/avr/avr-protos.h (preferred_reload_class,
1499 test_hard_reg_class, avr_simplify_comparison_p,
1500 out_shift_with_cnt, class_max_nregs): Likewise.
1501 * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
1502 output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
1503 preferred_reload_class, test_hard_reg_class): Likewise.
1504 * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
1505 bfin_memory_move_cost, bfin_secondary_reload,
1506 bfin_output_mi_thunk): Likewise.
1507 * config/crx/crx.c (crx_secondary_reload_class,
1508 crx_memory_move_cost): Likewise.
1509 * config/frv/frv-protos.h (frv_secondary_reload_class,
1510 frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
1511 * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
1512 frv_secondary_reload_class, frv_class_likely_spilled_p,
1513 frv_class_max_nregs): Likewise.
1514 * config/h8300/h8300.c (h8300_classify_operand,
1515 h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
1517 * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
1518 * config/ia64/ia64.c (ia64_preferred_reload_class,
1519 ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
1520 * config/iq2000/iq2000.c (gen_int_relational): Likewise.
1521 * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
1523 * config/m68hc11/m68hc11.c (preferred_reload_class,
1524 m68hc11_memory_move_cost): Likewise.
1525 * config/mcore/mcore.c (mcore_secondary_reload_class,
1526 mcore_reload_class): Likewise.
1527 * config/mips/mips.c (mips_hard_regno_mode_ok_p,
1528 mips_class_max_nregs, mips_cannot_change_mode_class,
1529 mips_preferred_reload_class, mips_secondary_reload_class,
1530 mips_output_mi_thunk): Likewise.
1531 * config/mmix/mmix.c (mmix_preferred_reload_class,
1532 mmix_preferred_output_reload_class, mmix_secondary_reload_class):
1534 * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
1536 * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
1537 pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
1538 * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
1539 * config/rs6000/rs6000.c (paired_expand_vector_init,
1540 rs6000_secondary_reload_class, rs6000_output_mi_thunk,
1541 compare_section_name, rs6000_memory_move_cost): Likewise.
1542 * config/s390/s390.c (s390_emit_compare_and_swap,
1543 s390_preferred_reload_class, s390_secondary_reload,
1544 legitimize_pic_address, legitimize_tls_address,
1545 legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
1546 s390_class_max_nregs): Likewise.
1547 * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
1548 * config/s390/s390.md: Likewise.
1549 * config/score/score-protos.h (score_secondary_reload_class,
1550 score_preferred_reload_class): Likewise.
1551 * config/score/score.c (score_preferred_reload_class,
1552 score_secondary_reload_class): Likewise.
1553 * config/score/score3.c (score3_output_mi_thunk,
1554 score3_preferred_reload_class, score3_secondary_reload_class,
1555 score3_hard_regno_mode_ok): Likewise.
1556 * config/score/score3.h (score3_preferred_reload_class,
1557 score3_secondary_reload_class): Likewise.
1558 * config/score/score7.c (score7_output_mi_thunk,
1559 score7_preferred_reload_class, score7_secondary_reload_class,
1560 score7_hard_regno_mode_ok): Likewise.
1561 * config/score/score7.h (score7_preferred_reload_class,
1562 score7_secondary_reload_class): Likewise.
1563 * config/sh/sh.c (prepare_move_operands, output_far_jump,
1564 output_branchy_insn, add_constant, gen_block_redirect,
1565 sh_insn_length_adjustment, sh_cannot_change_mode_class,
1566 sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload):
1568 * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
1569 * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
1570 xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
1571 xstormy16_preferred_reload_class): Likewise.
1572 * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
1573 xtensa_expand_atomic, override_options,
1574 xtensa_preferred_reload_class, xtensa_secondary_reload_class):
1576 * reorg.c (try_merge_delay_insns): Likewise.
1577 * tree.c (merge_dllimport_decl_attributes): Likewise.
1579 * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
1581 2008-08-06 Michael Matz <matz@suse.de>
1583 * Makefile.in (write_entries_to_file): Quote words.
1584 * gengtype.c: (read_input_line): Skip over leading white-space.
1586 2008-08-06 Marc Gauthier <marc@tensilica.com>
1588 * config.gcc: Match more processor names for Xtensa.
1589 * configure.ac: Likewise.
1590 * doc/install.texi (Specific): Likewise.
1591 * configure: Regenerate.
1593 2008-08-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1595 * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
1596 * calls.c (avoid_likely_spilled_reg): Likewise.
1597 * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
1598 * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
1599 * config/i386/i386.c (ix86_expand_special_args_builtin,
1600 ix86_secondary_reload): Likewise.
1601 * except.c (struct eh_region, gen_eh_region_catch,
1602 remove_unreachable_regions, duplicate_eh_regions,
1603 assign_filter_values, build_post_landing_pads,
1604 sjlj_find_directly_reachable_regions, remove_eh_handler,
1605 reachable_next_level, foreach_reachable_handler,
1606 can_throw_internal_1, can_throw_external_1,
1607 collect_one_action_chain): Likewise.
1608 * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
1609 * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
1610 * function.c (update_temp_slot_address, instantiate_new_reg,
1611 instantiate_virtual_regs_in_rtx,
1612 instantiate_virtual_regs_in_insn): Likewise.
1613 * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
1614 * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
1615 gimplify_cleanup_point_expr): Likewise.
1616 * ipa-cp.c (ipcp_lattice_changed): Likewise.
1617 * passes.c (next_pass_1): Likewise.
1618 * print-tree.c (print_node_brief, print_node): Likewise.
1619 * profile.c (branch_prob): Likewise.
1620 * tree-dump.c (dump_register): Likewise.
1621 * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
1623 * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
1624 copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
1625 copy_edges_for_bb, copy_cfg_body, copy_tree_r,
1626 copy_arguments_for_versioning, copy_static_chain): Likewise.
1627 * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
1628 add_new_name_mapping, register_new_name_mapping): Likewise.
1629 * tree-mudflap.c (mf_xform_derefs): Likewise.
1630 * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
1631 get_init_expr, combine_chains): Likewise.
1632 * tree-pretty-print.c (dump_generic_node): Likewise.
1633 * tree-ssa-structalias.c (create_variable_info_for): Likewise.
1634 * tree-vrp.c (simplify_cond_using_ranges): Likewise.
1635 * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
1636 * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
1638 2008-08-06 H.J. Lu <hongjiu.lu@intel.com>
1641 * calls.c (expand_call): Use the biggest preferred stack
1644 2008-08-06 Michael Matz <matz@suse.de>
1647 * reload.c (push_reload): Merge in,out,in_reg,out_reg members
1648 for reused reload, instead of overwriting them.
1650 2008-08-06 H.J. Lu <hongjiu.lu@intel.com>
1653 * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
1654 for incoming stack boundary.
1656 * function.c (assign_parm_find_entry_rtl): Update
1657 parm_stack_boundary.
1659 * function.h (rtl_data): Add parm_stack_boundary.
1661 * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
1662 parm_stack_boundary for incoming stack boundary.
1664 2008-08-06 Joseph Myers <joseph@codesourcery.com>
1666 * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
1667 for unrepresentable subregs or treat them as equal to other regs
1668 or subregs with the same register number.
1670 2008-08-06 Aldy Hernandez <aldyh@redhat.com>
1673 * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
1676 2008-08-06 Jan Hubicka <jh@suse.cz>
1678 * predict.c (maybe_hot_frequency_p): When profile is absent, all
1679 frequencies might be hot.
1681 2008-08-06 Andreas Krebbel <krebbel1@de.ibm.com>
1683 * reload.c (find_reloads): Force constants into literal pool
1684 also if they are wrapped in a SUBREG.
1686 2008-08-06 Maxim Kuvyrkov <maxim@codesourcery.com>
1689 * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
1690 * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
1691 Don't allow predicated instructions for data speculation.
1692 * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
1695 2008-08-06 Maxim Kuvyrkov <maxim@codesourcery.com>
1697 * haifa-sched.c (extend_global): Split to extend_global_data and
1698 extend_region_data. Update all uses.
1699 (extend_all): Rename to extend_block_data.
1701 2008-08-06 Maxim Kuvyrkov <maxim@codesourcery.com>
1703 * sched-rgn.c (new_ready): Check if instruction can be
1704 speculatively scheduled before attempting speculation.
1705 (debug_rgn_dependencies): Remove wrongful assert.
1707 2008-08-05 Bob Wilson <bob.wilson@acm.org>
1709 * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
1711 2008-08-05 Bob Wilson <bob.wilson@acm.org>
1713 * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
1714 (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
1715 va_size, and type_size.
1717 2008-08-04 Jason Merrill <jason@redhat.com>
1720 * tree-ssa.c (useless_type_conversion_p_1): Call langhook
1721 if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
1723 2008-08-05 Richard Henderson <rth@redhat.com>
1725 * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
1726 * configure: Rebuild.
1728 2008-08-05 Andrew Pinski <andrew_pinski@playstation.sony.com>
1731 * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
1732 instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
1735 2008-08-05 Richard Henderson <rth@redhat.com>
1737 * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
1738 * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
1739 * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
1740 * common.opt (fdwarf2-cfi-asm): New.
1741 * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
1742 * config.in, configure: Rebuild.
1743 * dwarf2asm.c (dw2_asm_output_data_raw): New.
1744 (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
1745 (dw2_force_const_mem): Externalize.
1746 * dwarf2asm.h: Update.
1747 * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
1748 generate a real label.
1749 (output_cfi_directive): New.
1750 (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
1751 (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
1752 (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
1754 (dwarf2out_end_epilogue): Emit .cfi_endproc.
1755 (output_loc_operands_raw, output_loc_sequence_raw): New.
1756 (output_cfa_loc_raw): New.
1758 2008-08-05 Paul Brook <paul@codesourcery.com>
1760 * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
1761 * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
1762 (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
1763 (arm_file_start): Add FPUTYPE_VFP3D16. Rename vfp3 to vfpv3.
1764 * config/arm/arm.h (TARGET_VFPD32): Define.
1765 (TARGET_VFP3): Use TARGET_VFPD32.
1766 (fputype): Add FPUTYPE_VFP3D16.
1767 (LAST_VFP_REGNUM): Use TARGET_VFPD32.
1768 * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
1769 * config/arm/arm-cores.def: Add cortex-r4f.
1770 * config/arm/arm-tune.md: Regenerate.
1772 2008-08-05 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1774 * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
1775 Reword some comments throughout the file.
1777 (MFC_MIN_DMA_LIST_ELEMENTS): New define.
1778 (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
1779 (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of MFC_MIN_DMA_LIST_ELEMENTS.
1780 (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of MFC_MAX_DMA_LIST_ELEMENTS.
1782 (MFC_START_ENABLE): Remove PPU-only define.
1783 (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
1784 (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
1786 (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
1787 (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
1788 (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
1789 (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
1790 (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
1791 (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
1792 (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
1794 (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
1795 (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
1796 (mfc_sdcrt, mfc_sdcrtst): Likewise.
1797 (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
1799 (spu_read_machine_status): Fix typo.
1801 2008-08-05 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1803 * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
1804 SUBREG of multi-word hard register.
1805 * config/spu/spu.c (valid_subreg): Likewise.
1806 (adjust_operand): Handle SUBREGs of multi-word hard registers.
1808 2008-08-04 Richard Guenther <rguenther@suse.de>
1810 * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
1811 the candidate with the stripped base if that base is different
1812 from the original base even for offset zero.
1814 2008-08-04 Richard Guenther <rguenther@suse.de>
1817 * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
1818 check for no_overflow.
1820 2008-08-04 Richard Guenther <rguenther@suse.de>
1822 * tree-vect-transform.c (vectorizable_call): Fix tuplification.
1824 2008-08-04 Paul Brook <paul@codesourcery.com>
1826 * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
1827 (arm_order_regs_for_local_alloc): New function.
1828 * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
1830 * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
1832 2008-08-04 H.J. Lu <hongjiu.lu@intel.com>
1835 * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
1836 instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
1837 (ix86_expand_epilogue): Likewise.
1839 2008-08-04 H.J. Lu <hongjiu.lu@intel.com>
1841 * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
1844 2008-08-03 Uros Bizjak <ubizjak@gmail.com>
1846 * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
1847 to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
1848 (*movv2sf_internal_rex64): Ditto.
1850 2008-08-03 Jan Hubicka <jh@suse.cz>
1852 * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
1853 expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
1854 * expmed.c (expand_smod_pow2): Likewise.
1856 2008-08-03 Uros Bizjak <ubizjak@gmail.com>
1859 * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
1860 alternative 0 of operand 1.
1861 (*vec_concatv2di_rex64_sse): Ditto.
1862 (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
1864 (*sse2_storeq_rex64): Penalize allocation of "r" registers.
1865 * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
1866 of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
1867 (*movv2sf_internal_rex64): Ditto.
1869 2008-08-02 Richard Guenther <rguenther@suse.de>
1872 * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
1873 (ssedoublesizemode): New mode attribute.
1874 (sse_shufps): Call gen_sse_shufps_v4sf.
1875 (sse_shufps_1): Macroize.
1876 (sse2_shufpd): Call gen_Sse_shufpd_v2df.
1877 (sse2_shufpd_1): Macroize.
1878 (vec_extract_odd, vec_extract_even): New expanders.
1879 (vec_interleave_highv4sf, vec_interleave_lowv4sf,
1880 vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
1881 * i386.c (ix86_expand_vector_init_one_nonzero): Call
1882 gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
1883 (ix86_expand_vector_set): Likewise.
1884 (ix86_expand_reduc_v4sf): Likewise.
1886 2008-08-01 Doug Kwan <dougkwan@google.com>
1888 * matrix-reorg.c: Re-enable all code.
1889 (struct malloc_call_data): Change CALL_STMT to gimple type.
1890 (collect_data_for_malloc_call): Tuplify.
1891 (struct access_site_info): Change STMT to gimple type.
1892 (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
1893 and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
1894 (struct free_info): Change STMT to gimple type.
1895 (struct matrix_access_phi_node): Change PHI to gimple type.
1896 (get_inner_of_cast_expr): Remove.
1897 (may_flatten_matrices_1): Tuplify.
1898 (may_flatten_matrices): Ditto.
1899 (mark_min_matrix_escape_level): Ditto.
1900 (ssa_accessed_in_tree): Refactor statement RHS related code into ...
1901 (ssa_accessed_in_call_rhs): New
1902 (ssa_accessed_in_assign_rhs): New
1903 (record_access_alloc_site_info): Tuplify.
1904 (add_allocation_site): Ditto.
1905 (analyze_matrix_allocation_site): Ditto.
1906 (analyze_transpose): Ditto.
1907 (get_index_from_offset): Ditto.
1908 (update_type_size): Ditto.
1909 (analyze_accesses_for_call_expr): Tuplify and renamed into ...
1910 (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
1911 (analyze_accesses_for_phi_node): Tuplify.
1912 (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
1913 (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
1914 (analyze_matrix_accesses): Tuplify.
1915 (check_var_data): New call-back type for check_var_notmodified_p.
1916 (check_var_notmodified_p): Tuplify and use call-back struct to
1917 return statement found.
1918 (can_calculate_expr_before_stmt): Factor out statement related code
1920 (can_calculate_stmt_before_stmt): New.
1921 (check_allocation_function): Tuplify.
1922 (find_sites_in_func): Ditto.
1923 (record_all_accesses_in_func): Ditto.
1924 (transform_access_sites): Ditto.
1925 (transform_allocation_sites): Ditto.
1926 (matrix_reorg): Re-enable.
1927 (gate_matrix_reorg): Re-enable.
1929 2008-08-01 Jakub Jelinek <jakub@redhat.com>
1931 * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
1932 for labels for which it hasn't been set yet. If it has been set,
1933 stop walking insns and continue with next worklist item.
1934 (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
1935 if the only BARRIER is at the very end of a function.
1937 2008-08-01 H.J. Lu <hongjiu.lu@intel.com>
1939 * cfgexpand.c (expand_stack_alignment): Assert that
1940 stack_realign_drap and drap_rtx must match.
1942 * function.c (instantiate_new_reg): If DRAP is used to realign
1943 stack, replace virtual_incoming_args_rtx with internal arg
1946 2008-08-01 Richard Guenther <rguenther@suse.de>
1948 * tree-ssa-pre.c (fini_pre): Take in_fre parameter. Free
1949 loop information only if we initialized it.
1950 (execute_pre): Call fini_pre with in_fre.
1951 * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
1952 if we do not unroll because we hit max-completely-peeled-insns.
1953 Use our estimation for consistency, do allow shrinking.
1955 2008-08-01 H.J. Lu <hongjiu.lu@intel.com>
1957 * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
1958 with MIN_STACK_BOUNDARY.
1959 (ix86_update_stack_boundary): Likewise.
1960 (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
1963 * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
1964 (MIN_STACK_BOUNDARY): This.
1966 2008-08-01 Richard Guenther <rguenther@suse.de>
1969 * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
1971 2008-08-01 Richard Guenther <rguenther@suse.de>
1973 PR tree-optimization/36988
1974 * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
1975 do not matter if that doesn't change volatile qualification.
1977 2008-08-01 Paolo Bonzini <bonzini@gnu.org>
1979 * configure.ac: Do not generate libada-mk. Do not subst
1981 * libada-mk.in: Remove.
1982 * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
1983 * configure: Regenerate.
1985 2008-08-01 Basile Starynkevitch <basile@starynkevitch.net>
1987 * tree-pass.h: Added comment about not dumping passes with name
1988 starting with star in struct opt_pass.
1989 * passes.c (register_dump_files_1): Don't do dump for a pass with
1990 name starting with star.
1991 * doc/passes.texi (Pass manager): Mention pass names and special
1992 meaning of star prefix to avoid dump.
1994 2008-07-31 Adam Nemet <anemet@caviumnetworks.com>
1996 * config.gcc (mipsisa64r2*-*-linux*): New configuration. Set ISA
1998 * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
1999 (ISA_MIPS64R2): New macro.
2000 (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
2001 (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
2002 ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
2003 ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
2004 ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
2005 ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
2006 ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
2007 (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
2008 (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
2009 Move up to keep list alphabetically sorted.
2010 (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
2011 * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
2013 * doc/invoke.texi (MIPS Options): Add -mips64r2.
2014 (-march=@var{arch}): Add mips64r2.
2016 2008-07-31 H.J. Lu <hongjiu.lu@intel.com>
2018 * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
2020 2008-07-31 Steve Ellcey <sje@cup.hp.com>
2022 * expr.c (expand_assignment): Check for complete type.
2024 2008-07-31 H.J. Lu <hongjiu.lu@intel.com>
2027 * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
2029 * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
2030 for stack alignment.
2032 * function.h (rtl_data): Add stack_realign_tried. Update comments.
2034 2008-07-31 Kaz Kojima <kkojima@gcc.gnu.org>
2036 * config/sh/sh.c (sh_canonical_va_list_type): Remove.
2037 (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
2039 2008-07-31 Jakub Jelinek <jakub@redhat.com>
2041 PR rtl-optimization/36419
2042 * dwarf2out.c (barrier_args_size): New variable.
2043 (compute_barrier_args_size, compute_barrier_args_size_1): New
2045 (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
2046 if not called yet in the current function, use barrier_args_size
2047 array to find the new args_size value.
2048 (dwarf2out_frame_debug): Free and clear barrier_args_size.
2050 2008-07-31 H.J. Lu <hongjiu.lu@intel.com>
2053 * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
2056 2008-07-31 H.J. Lu <hongjiu.lu@intel.com>
2059 * dwarf2out.c (dwarf2out_args_size_adjust): New.
2060 (dwarf2out_stack_adjust): Use it.
2061 (dwarf2out_frame_debug_expr): Likewise.
2063 2008-07-31 Richard Guenther <rguenther@suse.de>
2065 PR tree-optimization/36978
2066 * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
2067 the generated condition.
2069 2008-07-31 Richard Guenther <rguenther@suse.de>
2071 * passes.c (init_optimization_passes): Always call
2072 pass_early_warn_uninitialized.
2073 * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
2074 * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
2075 * doc/passes.texi (Warn for uninitialized variables): Adjust.
2077 2008-07-31 Jakub Jelinek <jakub@redhat.com>
2080 * builtins.c (maybe_emit_free_warning): New function.
2081 (expand_builtin): Process BUILT_IN_FREE even at -O0. Call
2082 maybe_emit_free_warning for BUILT_IN_FREE.
2085 * dwarf2out.c (get_context_die): New function.
2086 (force_decl_die, force_type_die): Use it.
2087 (dwarf2out_imported_module_or_decl): Likewise. If base_type_die
2088 returns NULL, force generation of DW_TAG_typedef and put that into
2091 PR preprocessor/36649
2092 * c-pch.c (c_common_read_pch): Save and restore
2093 line_table->trace_includes across PCH restore.
2095 2008-07-30 Eric Botcazou <ebotcazou@adacore.com>
2098 * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
2100 2008-07-30 Rafael Avila de Espindola <espindola@google.com>
2103 * final.c (call_from_call_insn): Handle COND_EXEC.
2105 2008-07-30 H.J. Lu <hongjiu.lu@intel.com>
2107 * builtins.c (std_gimplify_va_arg_expr): Replace
2108 PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
2109 * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
2111 2008-07-30 Joey Ye <joey.ye@intel.com>
2112 H.J. Lu <hongjiu.lu@intel.com>
2114 * builtins.c (expand_builtin_setjmp_receiver): Replace
2115 virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
2116 (expand_builtin_apply_args_1): Likewise.
2117 (expand_builtin_longjmp): Need DRAP for stack alignment.
2118 (expand_builtin_apply): Likewise.
2120 * caller-save.c (setup_save_areas): Call assign_stack_local_1
2121 instead of assign_stack_local to allow alignment reduction.
2123 * calls.c (emit_call_1): Need DRAP for stack alignment if
2125 (expand_call): Replace virtual_incoming_args_rtx with
2126 crtl->args.internal_arg_pointer.
2127 * stmt.c (expand_nl_goto_receiver): Likewise.
2129 * cfgexpand.c (get_decl_align_unit): Estimate stack variable
2130 alignment and store to stack_alignment_estimated and
2131 max_used_stack_slot_alignment.
2132 (expand_one_var): Likewise.
2133 (expand_stack_alignment): New function.
2134 (tree_expand_cfg): Initialize max_used_stack_slot_alignment
2135 and stack_alignment_estimated fields in rtl_data. Call
2136 expand_stack_alignment at end.
2138 * defaults.h (INCOMING_STACK_BOUNDARY): New.
2139 (MAX_STACK_ALIGNMENT): Likewise.
2140 (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
2141 (SUPPORTS_STACK_ALIGNMENT): Likewise.
2143 * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
2144 stack alignment when generating virtual registers.
2146 * function.c (assign_stack_local): Renamed to ...
2147 (assign_stack_local_1): This. Add a parameter to indicate
2148 if it is OK to reduce alignment.
2149 (assign_stack_local): Use it.
2150 (instantiate_new_reg): Instantiate virtual incoming args rtx
2151 to vDRAP if stack realignment and DRAP is needed.
2152 (assign_parms): Collect parameter/return type alignment and
2153 contribute to stack_alignment_estimated.
2154 (locate_and_pad_parm): Likewise.
2155 (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
2156 with crtl->args.internal_arg_pointer.
2158 * function.h (rtl_data): Add new field drap_reg,
2159 max_used_stack_slot_alignment, stack_alignment_estimated,
2160 stack_realign_needed, need_drap, stack_realign_processed and
2161 stack_realign_finalized.
2162 (stack_realign_fp): New macro.
2163 (stack_realign_drap): Likewise.
2165 * global.c (compute_regsets): Frame pointer is needed when
2166 stack is realigned. Can eliminate frame pointer when stack is
2167 realigned and dynamic realigned argument pointer isn't used.
2169 * reload1.c (update_eliminables): Frame pointer is needed
2170 when stack is realigned.
2171 (init_elim_table): Can eliminate frame pointer when stack is
2172 realigned and dynamic realigned argument pointer isn't used.
2174 * rtl.h (assign_stack_local_1): Declare new funtion.
2176 * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
2177 (TARGET_GET_DRAP_RTX): Likewise.
2178 (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
2179 TARGET_GET_DRAP_RTX.
2181 * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
2183 * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
2184 STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
2186 2008-07-30 Xuepeng Guo <xuepeng.guo@intel.com>
2187 H.J. Lu <hongjiu.lu@intel.com>
2189 * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
2190 vdrap_reg, stack_realign and drap_reg_saved.
2191 (add_cfi): Don't allow redefining CFA when DRAP is used.
2192 (reg_save): Handle stack alignment.
2193 (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
2194 alignment. Don't generate DWARF information for (set fp sp)
2196 (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
2198 (int_loc_descriptor): Move prototype forward. Also define if
2199 DWARF2_UNWIND_INFO is true.
2200 (output_cfa_loc): Handle DW_CFA_expression.
2201 (build_cfa_aligned_loc): New.
2202 (based_loc_descr): Update assert for stack realign. For local
2203 variables, use sp+offset when stack is aligned without drap and
2204 fp+offset when stack is aligned with drap. For arguments, use
2205 cfa+offset when drap is used to align stack.
2207 2008-07-30 Joey Ye <joey.ye@intel.com>
2208 H.J. Lu <hongjiu.lu@intel.com>
2210 * config/i386/i386.c (ix86_force_align_arg_pointer_string):
2212 (ix86_gen_andsp): New.
2213 (ix86_user_incoming_stack_boundary): Likewise.
2214 (ix86_default_incoming_stack_boundary): Likewise.
2215 (ix86_incoming_stack_boundary): Likewise.
2216 (ix86_can_eliminate): Likewise.
2217 (find_drap_reg): Likewise.
2218 (ix86_update_stack_boundary): Likewise.
2219 (ix86_get_drap_rtx): Likewise.
2220 (ix86_finalize_stack_realign_flags): Likewise.
2221 (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
2222 (TARGET_GET_DRAP_RTX): Likewise.
2223 (override_options): Overide option value for new options.
2224 (ix86_function_ok_for_sibcall): Remove check for
2225 force_align_arg_pointer.
2226 (ix86_handle_cconv_attribute): Likewise.
2227 (ix86_function_regparm): Likewise.
2228 (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
2229 (ix86_va_start): Replace virtual_incoming_args_rtx with
2230 crtl->args.internal_arg_pointer.
2231 (ix86_select_alt_pic_regnum): Check DRAP register.
2232 (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
2233 (ix86_compute_frame_layout): Compute frame layout wrt stack
2235 (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
2236 (ix86_expand_prologue): Decide if stack realignment is needed
2237 and generate prologue code accordingly.
2238 (ix86_expand_epilogue): Generate epilogue code wrt stack
2239 realignment is really needed or not.
2241 * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
2242 (ABI_STACK_BOUNDARY): Likewise.
2243 (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
2244 (STACK_REALIGN_DEFAULT): Likewise.
2245 (INCOMING_STACK_BOUNDARY): Likewise.
2246 (MAX_STACK_ALIGNMENT): Likewise.
2247 (ix86_incoming_stack_boundary): Likewise.
2248 (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
2249 (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
2250 (CAN_ELIMINATE): Defined with ix86_can_eliminate.
2251 (machine_function): Remove force_align_arg_pointer.
2253 * config/i386/i386.md (BX_REG): New.
2254 (R13_REG): Likewise.
2256 * config/i386/i386.opt (mforce_drap): New.
2257 (mincoming-stack-boundary): Likewise.
2258 (mstackrealign): Add Init(-1).
2260 * config/i386/i386-protos.h (ix86_can_eliminate): New
2262 2008-07-30 H.J. Lu <hongjiu.lu@intel.com>
2264 * doc/extend.texi: Update force_align_arg_pointer.
2266 * doc/invoke.texi: Document -mincoming-stack-boundary. Update
2269 * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
2270 (INCOMING_STACK_BOUNDARY): Likewise.
2271 (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
2272 (TARGET_GET_DRAP_RTX): Likewise.
2274 2008-07-30 Andreas Schwab <schwab@suse.de>
2276 PR rtl-optimization/36929
2277 * dse.c (replace_inc_dec): Use emit_insn_before instead of
2278 add_insn_before and fix argument order.
2279 (replace_inc_dec_mem): Handle NULL rtx.
2281 2008-07-30 Andrew Jenner <andrew@codesourcery.com>
2283 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
2285 (arm_compute_initial_elimination_offset): Use it.
2286 (arm_compute_save_reg_mask): Include static chain save slot when
2287 calculating alignment.
2288 (arm_get_frame_offsets): Ditto.
2289 (thumb1_compute_save_reg_mask): Ensure we have a low register saved
2290 that we can use to decrement the stack when the stack decrement
2291 could be too big for an immediate value in a single insn.
2292 (thumb1_expand_prologue): Avoid using r12 for stack decrement.
2294 2008-07-30 Richard Guenther <rguenther@suse.de>
2296 PR tree-optimization/36967
2297 * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
2298 Release defs of statements we remove.
2300 2008-07-30 Nathan Froyd <froydnj@codesourcery.com>
2302 * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
2303 instead of NULL_RTVEC.
2305 2008-07-30 Nathan Froyd <froydnj@codesourcery.com>
2309 * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
2312 2008-07-30 Rafael Avila de Espindola <espindola@google.com>
2314 * final.c (call_from_call_insn): New.
2315 (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
2317 2008-07-30 Paolo Bonzini <bonzini@gnu.org>
2319 * configure.ac: Substitute ADA_CFLAGS.
2320 * configure: Regenerate.
2321 * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
2322 * Makefile.in: Remove mention of X_* variables.
2323 * config/pa/x-ada-hpux10: Remove.
2324 * config/pa/x-ada: Remove.
2326 * doc/fragments.texi: Update.
2328 2008-07-30 Olivier Hainque <hainque@adacore.com>
2330 * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
2331 * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
2332 __dso_handle explicitly here.
2334 2008-07-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2337 * c-typeck.c (build_binary_op): Encapsulate code into...
2338 * c-common.c (shorten_binary_op): ...this new function.
2339 (conversion_warning): Use the new function. Handle non-negative
2340 constant in bitwise-and.
2341 * c-common.h (shorten_binary_op): Declare.
2343 2008-07-30 Olivier Hainque <hainque@adacore.com>
2345 * scan.c (make_sstring_space): Add explicit conversions of
2346 allocator's return value.
2347 * fix-header.c (recognized_function): Likewise.
2349 2008-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2351 * doc/cpp.texi: Update to GFDL 1.2.
2352 * doc/gcc.texi: Do not list GPL as Invariant Section.
2353 * doc/gccint.texi: Likewise. Update copyright years.
2354 * doc/install.texi: Update copyright years.
2356 2008-07-30 Alan Modra <amodra@bigpond.net.au>
2359 * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
2360 a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
2362 2008-07-29 Jan Hubicka <jh@suse.cz>
2364 * c-decl.c (merge_decls): Do not handle DECL_INLINE.
2365 (grokdeclarator): Likewise.
2366 * langhooks.c (lhd_warn_unused_global_decl): Use
2367 DECL_DECLARED_INLINE_P.
2368 * print-tree.c (print_node): Remove DECL_INLINE check.
2370 2008-07-29 Richard Guenther <rguenther@suse.de>
2372 PR tree-optimization/36945
2373 * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
2374 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
2375 Record invariant addresses un-decomposed.
2376 (copy_reference_ops_from_call): Record reference call
2377 arguments properly. Simplify.
2378 * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
2379 helper split out from ...
2380 (create_component_ref_by_pieces): ... here. Simplify.
2381 Prepare for recursive invocation for call arguments.
2382 (create_expression_by_pieces): Adjust call to
2383 create_component_ref_by_pieces.
2384 (compute_avail): Process operand 2 of reference ops.
2386 2008-07-29 Richard Guenther <rguenther@suse.de>
2388 * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
2390 2008-07-29 Jakub Jelinek <jakub@redhat.com>
2392 * c-format.c (check_format_types): Revert unwanted checkin.
2394 2008-07-29 Jan Hubicka <jh@suse.cz>
2396 * flags.h (flag_really_no_inline): Remove.
2397 * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
2398 * toplev.c (flag_really_no_inline): Remove.
2399 * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
2400 * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
2401 (cgraph_decide_inlining_incrementally): Likewise.
2402 (compute_inline_parameters): Likewise.
2403 * opts.c (decode_options): Simplify.
2404 * c-opts.c (c_common_post_options): Do not set flag_no_inline.
2405 * common.opt (finline): Initialize to 1.
2406 * tree-inline.c (inlinable_function_p): Check flag_no_inline.
2408 2008-07-29 Jan Hubicka <jh@suse.cz>
2410 * predict.c (always_optimize_for_size_p): New function.
2411 (optimize_bb_for_size_p, optimize_bb_for_speed_p,
2412 optimize_edge_for_size_p, optimize_edge_for_speed_p,
2413 optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
2415 (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
2416 * function.c (prepare_function_start): Set default profile.
2417 * function.h (rtl_data): Add maybe_hot_insn_p.
2418 * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
2419 (construct_exit_block): Likewise.
2420 (tree_expand_cfg): Likewise.
2422 (optimize_bb_for_size_p, optimize_bb_for_speed_p,
2423 optimize_edge_for_size_p, optimize_edge_for_speed_p,
2424 optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
2425 (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
2428 2008-07-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2431 * c-decl.c (merge_decls): Merge USED flags.
2433 2008-07-29 Kaz Kojima <kkojima@gcc.gnu.org>
2435 * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
2436 valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
2437 next_stack, lab_false and lab_over trees.
2439 2008-07-28 Richard Guenther <rguenther@suse.de>
2441 PR tree-optimization/36957
2442 * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
2443 (useless_type_conversion_p): Remove.
2444 (types_compatible_p): Remove.
2445 * gimple.h (tree_ssa_useless_type_conversion): Declare.
2446 (useless_type_conversion_p): Declare.
2447 (types_compatible_p): Declare.
2448 (gimple_expr_type): Return the base type only if it is
2449 trivially convertible to the subtype.
2451 2008-07-28 Andreas Tobler <a.tobler@schweiz.org>
2453 * configure.ac: Use the m4_do macro to concatenate the warnings into
2454 one string in ACX_PROG_CC_WARNING_OPTS,
2455 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
2456 * configure: Regenerate.
2458 2008-07-28 Richard Guenther <rguenther@suse.de>
2460 * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
2461 (insert_fake_stores): Remove.
2462 (realify_fake_stores): Likewise.
2463 (execute_pre): Remove dead code.
2464 * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
2465 (find_func_aliases): Deal with it here instead.
2466 Re-enable gcc_unreachable call.
2468 2008-07-28 Richard Guenther <rguenther@suse.de>
2470 Merge from gimple-tuples-branch.
2472 * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
2473 * gimple.def: New file.
2474 * gsstruct.def: Likewise.
2475 * gimple-iterator.c: Likewise.
2476 * gimple-pretty-print.c: Likewise.
2477 * tree-gimple.c: Removed. Merged into ...
2478 * gimple.c: ... here. New file.
2479 * tree-gimple.h: Removed. Merged into ...
2480 * gimple.h: ... here. New file.
2482 * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
2483 * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
2484 --enable-checking=gimple flag.
2485 * config.in: Likewise.
2486 * configure: Regenerated.
2488 * tree-ssa-operands.h: Tuplified.
2489 * tree-vrp.c: Likewise.
2490 * tree-loop-linear.c: Likewise.
2491 * tree-into-ssa.c: Likewise.
2492 * tree-ssa-loop-im.c: Likewise.
2493 * tree-dump.c: Likewise.
2494 * tree-complex.c: Likewise.
2495 * cgraphbuild.c: Likewise.
2496 * tree-ssa-threadupdate.c: Likewise.
2497 * tree-ssa-loop-niter.c: Likewise.
2498 * tree-pretty-print.c: Likewise.
2499 * tracer.c: Likewise.
2500 * gengtype.c: Likewise.
2501 * tree-loop-distribution.c: Likewise.
2502 * tree-ssa-loop-unswitch.c: Likewise.
2503 * cgraph.c: Likewise.
2504 * cgraph.h: Likewise.
2505 * tree-ssa-loop-manip.c: Likewise.
2506 * value-prof.c: Likewise.
2507 * tree-ssa-loop-ch.c: Likewise.
2508 * tree-tailcall.c: Likewise.
2509 * value-prof.h: Likewise.
2512 * tree-pass.h: Likewise.
2513 * ipa-cp.c: Likewise.
2514 * tree-scalar-evolution.c: Likewise.
2515 * tree-scalar-evolution.h: Likewise.
2516 * target.h: Likewise.
2517 * lambda-mat.c: Likewise.
2518 * tree-phinodes.c: Likewise.
2519 * diagnostic.h: Likewise.
2520 * builtins.c: Likewise.
2521 * tree-ssa-alias-warnings.c: Likewise.
2522 * cfghooks.c: Likewise.
2523 * fold-const.c: Likewise.
2524 * cfghooks.h: Likewise.
2525 * omp-low.c: Likewise.
2526 * tree-ssa-dse.c: Likewise.
2527 * ipa-reference.c: Likewise.
2528 * tree-ssa-uncprop.c: Likewise.
2529 * toplev.c: Likewise.
2530 * tree-gimple.c: Likewise.
2531 * tree-gimple.h: Likewise.
2532 * tree-chrec.c: Likewise.
2533 * tree-chrec.h: Likewise.
2534 * tree-ssa-sccvn.c: Likewise.
2535 * tree-ssa-sccvn.h: Likewise.
2536 * cgraphunit.c: Likewise.
2537 * tree-ssa-copyrename.c: Likewise.
2538 * tree-ssa-ccp.c: Likewise.
2539 * tree-ssa-loop-ivopts.c: Likewise.
2540 * tree-nomudflap.c: Likewise.
2541 * tree-call-cdce.c: Likewise.
2542 * ipa-pure-const.c: Likewise.
2543 * c-format.c: Likewise.
2544 * tree-stdarg.c: Likewise.
2545 * tree-ssa-math-opts.c: Likewise.
2546 * tree-ssa-dom.c: Likewise.
2547 * tree-nrv.c: Likewise.
2548 * tree-ssa-propagate.c: Likewise.
2549 * ipa-utils.c: Likewise.
2550 * tree-ssa-propagate.h: Likewise.
2551 * tree-ssa-alias.c: Likewise.
2552 * gimple-low.c: Likewise.
2553 * tree-ssa-sink.c: Likewise.
2554 * ipa-inline.c: Likewise.
2555 * c-semantics.c: Likewise.
2556 * dwarf2out.c: Likewise.
2558 * tree-ssa-loop-ivcanon.c: Likewise.
2559 * predict.c: Likewise.
2560 * tree-ssa-loop.c: Likewise.
2561 * tree-parloops.c: Likewise.
2562 * tree-ssa-address.c: Likewise.
2563 * tree-ssa-ifcombine.c: Likewise.
2564 * matrix-reorg.c: Likewise.
2565 * c-decl.c: Likewise.
2566 * tree-eh.c: Likewise.
2567 * c-pretty-print.c: Likewise.
2568 * lambda-trans.c: Likewise.
2569 * function.c: Likewise.
2570 * langhooks.c: Likewise.
2571 * ebitmap.h: Likewise.
2572 * tree-vectorizer.c: Likewise.
2573 * function.h: Likewise.
2574 * langhooks.h: Likewise.
2575 * tree-vectorizer.h: Likewise.
2576 * ipa-type-escape.c: Likewise.
2577 * ipa-type-escape.h: Likewise.
2578 * domwalk.c: Likewise.
2579 * tree-if-conv.c: Likewise.
2580 * profile.c: Likewise.
2581 * domwalk.h: Likewise.
2582 * tree-data-ref.c: Likewise.
2583 * tree-data-ref.h: Likewise.
2584 * tree-flow-inline.h: Likewise.
2585 * tree-affine.c: Likewise.
2586 * tree-vect-analyze.c: Likewise.
2587 * c-typeck.c: Likewise.
2588 * gimplify.c: Likewise.
2589 * coretypes.h: Likewise.
2590 * tree-ssa-phiopt.c: Likewise.
2591 * calls.c: Likewise.
2592 * tree-ssa-coalesce.c: Likewise.
2593 * tree.def: Likewise.
2594 * tree-dfa.c: Likewise.
2595 * except.c: Likewise.
2596 * except.h: Likewise.
2597 * cfgexpand.c: Likewise.
2598 * tree-cfgcleanup.c: Likewise.
2599 * tree-ssa-pre.c: Likewise.
2600 * tree-ssa-live.c: Likewise.
2601 * tree-sra.c: Likewise.
2602 * tree-ssa-live.h: Likewise.
2603 * tree-predcom.c: Likewise.
2604 * lambda.h: Likewise.
2605 * tree-mudflap.c: Likewise.
2606 * ipa-prop.c: Likewise.
2607 * print-tree.c: Likewise.
2608 * tree-ssa-copy.c: Likewise.
2609 * ipa-prop.h: Likewise.
2610 * tree-ssa-forwprop.c: Likewise.
2611 * ggc-page.c: Likewise.
2612 * c-omp.c: Likewise.
2613 * tree-ssa-dce.c: Likewise.
2614 * tree-vect-patterns.c: Likewise.
2615 * tree-ssa-ter.c: Likewise.
2616 * tree-nested.c: Likewise.
2617 * tree-ssa.c: Likewise.
2618 * lambda-code.c: Likewise.
2619 * tree-ssa-loop-prefetch.c: Likewise.
2620 * tree-inline.c: Likewise.
2621 * tree-inline.h: Likewise.
2622 * tree-iterator.c: Likewise.
2623 * tree-optimize.c: Likewise.
2624 * tree-ssa-phiprop.c: Likewise.
2625 * tree-vect-transform.c: Likewise.
2626 * tree-object-size.c: Likewise.
2627 * tree-outof-ssa.c: Likewise.
2628 * cfgloop.c: Likewise.
2629 * system.h: Likewise.
2630 * tree-profile.c: Likewise.
2631 * cfgloop.h: Likewise.
2632 * c-gimplify.c: Likewise.
2633 * c-common.c: Likewise.
2634 * tree-vect-generic.c: Likewise.
2635 * tree-flow.h: Likewise.
2636 * c-common.h: Likewise.
2637 * basic-block.h: Likewise.
2638 * tree-ssa-structalias.c: Likewise.
2639 * tree-switch-conversion.c: Likewise.
2640 * tree-ssa-structalias.h: Likewise.
2641 * tree-cfg.c: Likewise.
2642 * passes.c: Likewise.
2643 * ipa-struct-reorg.c: Likewise.
2644 * ipa-struct-reorg.h: Likewise.
2645 * tree-ssa-reassoc.c: Likewise.
2646 * cfgrtl.c: Likewise.
2647 * varpool.c: Likewise.
2649 * tree-ssanames.c: Likewise.
2650 * tree-ssa-threadedge.c: Likewise.
2651 * langhooks-def.h: Likewise.
2652 * tree-ssa-operands.c: Likewise.
2653 * config/alpha/alpha.c: Likewise.
2654 * config/frv/frv.c: Likewise.
2655 * config/s390/s390.c: Likewise.
2656 * config/m32c/m32c.c: Likewise.
2657 * config/m32c/m32c-protos.h: Likewise.
2658 * config/spu/spu.c: Likewise.
2659 * config/sparc/sparc.c: Likewise.
2660 * config/i386/i386.c: Likewise.
2661 * config/sh/sh.c: Likewise.
2662 * config/xtensa/xtensa.c: Likewise.
2663 * config/stormy16/stormy16.c: Likewise.
2664 * config/ia64/ia64.c: Likewise.
2665 * config/rs6000/rs6000.c: Likewise.
2666 * config/pa/pa.c: Likewise.
2667 * config/mips/mips.c: Likewise.
2669 2008-07-28 Simon Baldwin <simonb@google.com>
2671 * c-pragma.c (handle_pragma_message): New function.
2672 (init_pragma): Register handle_pragma_message.
2673 * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
2676 2008-07-27 Victor Kaplansky <victork@il.ibm.com>
2678 PR tree-optimization/35252
2679 * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
2680 REALPART_EXPR to be considered as same load operation.
2682 2008-07-27 Eric Botcazou <ebotcazou@adacore.com>
2684 PR tree-optimization/36830
2685 * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
2686 (expressions_equal_p): Return false if only one operand is null.
2688 2008-07-26 Gerald Pfeifer <gerald@pfeifer.com>
2690 * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
2691 version requirements.
2693 2008-07-26 Olivier Hainque <hainque@adacore.com>
2695 * collect2.c (symkind): New enum. Symbol kinds we care about.
2696 (is_ctor_dtor): Return symkind instead of int. Adjust prototype,
2697 code and head comment accordingly.
2698 (scan_prog_file): Use symkind names instead of bare integers.
2700 2008-07-25 Jan Hubicka <jh@suse.cz>
2702 * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
2704 * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
2705 (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
2706 * dojump.c (clear_pending_stack_adjust): Likewise.
2707 * print-tree.c (print_node): Ignore DECL_INLINE.
2708 * tree-inline.c (inlinable_function_p): Likewise.
2710 2008-07-25 Michael Meissner <gnu@the-meissners.org>
2712 * doc/extend.texi (hot attribute): Document that the hot attribute
2713 turns on -O3 for some ports.
2714 (cold attribute): Document that the cold attribute turns on -Os
2717 * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
2718 reflect function specific option support.
2720 * target.h (struct target_option_hooks): Add fields to say whether
2721 the cold attribute implies -Os and the hot attribute implies -O3.
2723 * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
2724 By default, do not turn on -Os for cold functions.
2725 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
2726 not turn on -O3 for hot functions.
2728 * c-common.c (handle_hot_attribute): Use target hook to determine
2729 if hot functions should enable -O3.
2730 (handle_cold_attribute): Use target hook to determine if cold
2731 functions should enable -Os.
2733 * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
2734 (override_options): Move disable scheduling to
2735 optimization_options.
2736 (optimization_options): Disable scheduling here, not
2738 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
2739 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
2741 * config/ia64/ia64.c (ia64_override_options): Move setting
2742 scheduling flags to ia64_optimization_options.
2743 (ia64_optimization_options): Disable scheduling options here, and
2744 not in ia64_override_options.
2745 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
2746 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
2748 2008-07-25 H.J. Lu <hongjiu.lu@intel.com>
2751 * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
2753 2008-07-25 Martin Jambor <mjambor@suse.cz>
2755 PR tree-optimization/36926
2756 * ipa-prop.c (ipa_analyze_call_uses): Call
2757 ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
2759 2008-07-25 Joseph Myers <joseph@codesourcery.com>
2761 * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
2762 movv2si_internal): Add mem = reg alternative.
2764 2008-07-25 Andreas Tobler <a.tobler@schweiz.org>
2767 * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
2768 DEFAULT_PCC_STRUCT_RETURN to 127.
2770 2008-07-24 Jan Hubicka <jh@suse.cz>
2772 * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
2773 (build_cgraph_edges): Likewise.
2774 * cgraph.c (cgraph_node): Do not update assembler hash.
2775 (cgraph_remove_node): Drop non-unit-at-a-time code.
2776 * tree-pass.h (pass_O0_always_inline): Remove.
2777 * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
2778 * toplev.c (process_options): Flag unit-at-a-time does not imply
2780 * cgraphunit.c: Update comments.
2781 (decide_is_function_needed): Drop non-unit-at-a-time mode.
2782 (cgraph_assemble_pending_functions): Remove.
2783 (cgraph_reset_node): Drop non-unit-at-a-time code.
2784 (cgraph_finalize_function): Likewise.
2785 (cgraph_analyze_function): Likewise.
2786 (cgraph_finalize_compilation_unit): Likewise.
2787 (cgraph_expand_function): Likewise.
2788 (cgraph_optimize): Likesise.
2789 (save_inline_function_body): Likewise.
2790 * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
2791 * tree-ssa-alias.c (maybe_be_aliased): Likewise.
2792 * ipa-inline.c: Update comments.
2793 (enum inlining_mode): remove INLINE_SPEED.
2794 (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
2795 (cgraph_mark_inline_edge): Likewise.
2796 (try_inline): Likewise.
2797 (cgraph_decide_inlining_incrementally): Likewise.
2798 (cgraph_gate_inlining): Remove.
2799 (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
2800 (cgraph_gate_early_inlining): Likewise.
2801 (gate_inline_passes): Remove.
2802 (pass_inline_parameters, pass_ipa_inline): Remove gates.
2803 (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
2804 pass_O0_always_inline): Remove.
2805 * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
2806 * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
2807 * opts.c (no_unit_at_a_time_default): Remove.
2808 (decode_options): Remove flag_unit_at_a_time reset and warning.
2809 * opts.h (no_unit_at_a_time_default): Remove.
2810 * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
2811 early in GNU dialect.
2812 (merge_decls): Update comment; drop unit-at-a-time check.
2813 (finish_decl): Likewise.
2814 (grok_declaration): Remove flag_inline_trees code.
2815 (finish_functions): Return on function returning non-void on all
2817 * ipa-tye-escape.c (gate_type_escape_vars): Remove.
2818 * cfgexpand.c (expand_one_static_var): Remove.
2819 (expand_one_var): Remove expand_one_static_var call.
2820 (expand_used_vars_for_block): Remove flag_unit_a_time check.
2821 * c-opts.c (c_common_post_options): Remove flag_inline_trees code
2822 and flag_unit_at_a-time compatibility checks.
2823 * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
2824 * tree-inline.c (flag_inline_trees): Remove.
2825 (inlinable_function_p): Don't check it.
2826 (expand_call_inline): Remove non-unit-at-a-time code.
2827 * tree-inline.h (flag_inline_trees): Remove.
2828 * tree-optimize.c (execute_early_local_optimizations): Remove
2829 unit-at-a-time checks.
2830 (tree_rest_of_compilation): Likewise.
2831 * combine.c (setup_incoming_promotions): Likewise.
2832 * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
2833 * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
2834 * passes.c (pass_inline_parameters): Update comments; remove
2835 O0_alwaysinline pass.
2836 (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
2837 (execute_one_pass): Likewise.
2838 * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
2839 (ix86_function_sseregparm): Likewise.
2840 * arm.c (arm_function_in_section_p): Likewise.
2841 * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
2842 * varpool.c: Update comments.
2843 (decide_is_variable_needed): Remove unit-at-a-time checks.
2844 (varpool_finalize_decl): Likewise.
2846 2008-07-24 Kaz Kojima <kkojima@gcc.gnu.org>
2848 * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
2850 (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
2852 2008-07-24 Kai Tietz <kai.tietz@onevision.com>
2854 * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
2855 imp symbol extension.
2857 2008-07-23 Ian Lance Taylor <iant@google.com>
2859 * tree-vrp.c (infer_value_range): Ignore asm statements when
2860 looking for memory accesses for -fdelete-null-pointer-checks.
2862 2008-07-24 Ben Elliston <bje@au.ibm.com>
2864 * config/spu/spu-c.c (__vector_keyword): New variable.
2865 (vector_keyword): Likewise.
2866 (spu_categorize_keyword): New function.
2867 (spu_macro_to_expand): Likewise.
2868 (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
2869 compiling an ISO C dialect.
2871 2008-07-24 Ben Elliston <bje@au.ibm.com>
2873 * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
2876 2008-07-23 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
2878 * configure: Regenerate.
2879 * configure.ac: Require texinfo 4.7.
2880 * doc/install.texi: Document texinfo 4.7 requirement.
2882 2008-07-23 Martin Jambor <mjambor@suse.cz>
2884 * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
2885 rather than for DECL_SAVED_TREE.
2886 * ipa-prop.c: Include diagnostic.h.
2887 (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
2889 (ipa_detect_param_modifications): Function rewritten from scratch.
2890 (ipa_compute_jump_functions): Changed accesses to modification flags.
2891 (ipa_free_node_params_substructures): Update flags destruction.
2892 (ipa_node_duplication_hook): Update flags duplication.
2893 (ipa_print_all_params_modified): Updated flag access.
2894 * ipa-prop.h (struct ipa_param_flags): New structure.
2895 (struct ipa_node_params): New field modification_analysis_done,
2896 modified_flags changed into param_flags.
2897 (ipa_is_ith_param_modified): Changed to use new flags.
2898 * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
2900 * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
2901 ipa-cp.c and split into two functions.
2902 (ipa_print_node_jump_functions): New function.
2903 (compute_scalar_jump_functions): New function.
2904 (type_like_member_ptr_p): New function.
2905 (compute_pass_through_member_ptrs): New function.
2906 (fill_member_ptr_cst_jump_function): New function.
2907 (determine_cst_member_ptr): New function.
2908 (compute_cst_member_ptr_arguments): New function.
2909 (ipa_compute_jump_functions): Complete rewrite.
2910 * ipa-prop.h (enum jump_func_type): Make explicit that we depend
2911 on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
2912 (struct ipa_member_ptr_cst): New structure.
2913 (union jump_func_value): New field member_cst.
2914 * ipa-cp.c (ipcp_lat_is_insertable): New function.
2915 (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
2916 jump function types.
2917 (ipcp_print_all_lattices): Slight fprintf rearrangement.
2918 (ipcp_print_all_structures): Call ipa_print_all_jump_functions
2919 instead of ipcp_print_all_jump_functions.
2920 (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
2921 only for replacable scalars.
2923 * doc/invoke.texi (Optimize options): Add description of
2924 -findirect-inlining.
2925 * common.opt (flag_indirect_inlining): New flag.
2926 * opts.c (decode_options): Set flag_indirect_inlining when
2929 * ipa-inline.c: Include ipa-prop.h.
2930 (inline_indirect_intraprocedural_analysis): New function.
2931 (inline_generate_summary): Allocate parameter and argument info
2932 structures, call inline_indirect_intraprocedural_analysis on each
2933 node when doing indirect inlining and deallocate indirect inlining
2934 data structures in the end.
2935 * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
2936 (free_all_ipa_structures_after_iinln): New function.
2937 (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
2939 * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
2941 * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
2942 (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
2943 of computing the frequency separately.
2944 (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
2945 of computing the frequency separately.
2946 * ipa-cp.c (ipcp_print_all_structures): Replace a call to
2947 ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
2948 * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
2949 (ipa_get_stmt_member_ptr_load_param): New function.
2950 (ipa_is_ssa_with_stmt_def): New function.
2951 (ipa_note_param_call): New function.
2952 (ipa_analyze_call_uses): New function.
2953 (ipa_analyze_stmt_uses): New function.
2954 (ipa_analyze_params_uses): New function.
2955 (ipa_free_node_params_substructures): Also free the param_calls linked
2957 (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
2958 (ipa_print_node_param_flags): New function.
2959 (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
2960 (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
2961 * ipa-prop.h (struct ipa_param_flags): New field called.
2962 (struct ipa_param_call_note): New structure.
2963 (struct ipa_node_params): New fields param_calls and
2965 (ipa_is_ith_param_called): New function.
2966 * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
2967 ipa_analyze_params_uses and dump parameter flags.
2969 * ipa-inline.c (cgraph_decide_recursive_inlining): Call
2970 ipa_propagate_indirect_call_infos if performing indirect inlining,
2971 pass a new parameter new_edges to it.
2972 (add_new_edges_to_heap): New fucntion.
2973 (cgraph_decide_inlining_of_small_functions): New vector
2974 new_indirect_edges for newly found indirect edges , call
2975 ipa_propagate_indirect_call_infos after inlining.
2976 (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
2977 inlining if performing indirect inlining. Call
2978 free_all_ipa_structures_after_iinln when doing so too.
2979 (inline_generate_summary): Do not call
2980 free_all_ipa_structures_after_iinln here.
2981 * ipa-prop.c (update_jump_functions_after_inlining): New function.
2982 (print_edge_addition_message): New function.
2983 (update_call_notes_after_inlining): New function.
2984 (propagate_info_to_inlined_callees): New function.
2985 (ipa_propagate_indirect_call_infos): New function.
2986 * ipa-prop.h: Include cgraph.h
2987 (struct ipa_param_call_note): Fields reordered, new field processed.
2988 * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
2990 * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
2991 rediscovered call statements.
2992 * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
2993 (dump_cgraph_node): Dump also the indirect_call flag.
2994 (cgraph_clone_edge): Copy also the indirect_call flag.
2995 * tree-inline.c (copy_bb): Do not check for fndecls from call
2996 expressions, check for edge availability when moving clones.
2997 (get_indirect_callee_fndecl): New function.
2998 (expand_call_inline): If callee declaration is not apprent from
2999 the statement, try calling get_indirect_callee_fndecl. Do not
3000 issue warnings or call sorry when not inlinings an indirect edge.
3001 * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
3003 * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
3004 bit more frandly to matching.
3005 * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
3006 * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
3007 * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
3009 2008-07-23 Michael Meissner <gnu@the-meissners.org>
3012 * opth-gen.awk: Suppress function specific features when building
3014 * optc-gen.awk: Ditto.
3016 2008-07-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3019 * diagnostic.c (pedwarn): Add opt parameter.
3021 * c-tree.h (pedwarn_init): Add opt parameter.
3022 (pedwarn_c90): Likewise.
3023 (pedwarn_c99): Likewise.
3024 * c-errors.c (pedwarn_c99): Likewise.
3025 (pedwarn_c90): Likewise.
3026 * toplev.h (pedwarn): Update declaration.
3027 (pedwarn0): Declare.
3028 * c-lex.c: All calls to pedwarn changed.
3029 * builtins.c: All calls to pedwarn changed.
3030 * toplev.c: All calls to pedwarn changed.
3031 * c-decl.c: All calls to pedwarn changed.
3032 * c-typeck.c: All calls to pedwarn changed.
3033 * c-common.c: All calls to pedwarn changed.
3034 * c-parser.c: All calls to pedwarn changed.
3036 2008-07-23 Michael Meissner <gnu@the-meissners.org>
3037 Karthik Kumar <karthikkumar@gmail.com>
3039 * attribs.c (file scope): Include c-common.h.
3040 (decl_attributes): Add support for #pragma GCC optimize and
3043 * targhooks.c (default_can_inline_p): New function that is the
3044 default for the TARGET_CAN_INLINE_P target hook.
3046 * targhooks.h (default_can_inline_p): Add declaration.
3048 * tree.c (cl_optimization_node): New static tree for building
3049 OPTIMIZATION_NODE tree.
3050 (cl_target_option_node): New static tree for building
3051 TARGET_OPTION_NODE tree.
3052 (cl_option_hash_table): New hash table for hashing
3053 OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
3054 (cl_option_hash_hash): New function to provide the hash value for
3055 OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
3056 (cl_option_hash_eq): New function to provide an equality test for
3057 OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
3058 (tree_code_size): Add support for OPTIMIZATION_NODE and
3059 TARGET_OPTION_NODE trees.
3060 (tree_code_structure): Add support for OPTIMIZATION_NODE and
3061 TARGET_OPTION_NODE trees.
3062 (build_optimization_node): Build a tree that has all of the
3063 current optimization options.
3064 (build_target_option_node): Build a tree that has the target
3065 options that might be changed on a per function basis.
3067 * tree.h (file scope): Include options.h.
3068 (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
3069 (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
3070 (TREE_OPTIMIZATION): Ditto.
3071 (TREE_TARGET_SPECIFIC): Ditto.
3072 (struct tree_function_decl): Add fields for remembering the
3073 current optimization options and target specific options.
3074 (struct tree_optimization_option): New tree variant that remembers
3075 the optimization options.
3076 (struct tree_target_option): New tree variant that remembers the
3077 target specific flags that might change for compiling a particular
3079 (union tree_node): Include tree_optimization_option and
3080 tree_target_option fields.
3081 (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
3082 TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
3083 TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
3084 TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
3085 TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
3086 optimization and target options.
3087 (optimization_default_node): New macro to refer to global_trees
3089 (optimization_current_node): Ditto.
3090 (optimization_cold_node): Ditto.
3091 (optimization_hot_node): Ditto.
3092 (target_option_default_node): Ditto.
3093 (target_option_current_node): Ditto.
3094 (current_option_pragma): Ditto.
3095 (current_optimize_pragma): Ditto.
3097 * target.h (struct gcc_target): Add valid_option_attribute_p,
3098 target_option_save, target_option_restore, target_option_print,
3099 target_option_pragma_parse, and can_inline_p hooks.
3101 * toplev.h (parse_optimize_options): Add declaration.
3102 (fast_math_flags_struct_set_p): Ditto.
3104 * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
3105 adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
3108 * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
3109 tree_can_inline_p hook to see if one function can inline another.
3110 (cgraph_decide_inlining): Ditto.
3111 (cgraph_decide_inlining_incrementally): Ditto.
3113 * opts.c (decode_options): Add support for running multiple times
3114 to allow functions with different target or optimization options
3115 than was specified on the command line.
3116 (fast_math_flags_struct_set_p): New function that is similar to
3117 fast_math_flags_set_p, except it uses the values in the
3118 cl_optimization structure instead of global variables.
3120 * optc-gen.awk: Add support for TargetSave to allow a back end to
3121 declare new fields that need to be saved when using function
3122 specific options. Include flags.h and target.h in the options.c
3123 source. Add support for Save to indicate which options can be set
3124 for individual functions. Generate cl_optimize_save,
3125 cl_optimize_restore, cl_optimize_print, cl_target_option_save,
3126 cl_target_option_restore, cl_target_option_print functions to
3127 allow functions to use different optimization or target options.
3129 * opt-functions.awk (var_type_struct): Return the type used for
3130 storing the field in a structure.
3132 * opth-gen.awk: Add support for TargetSave to allow a back end to
3133 declare new fields that need to be saved when using function
3134 specific options. Add support for Save to indicate which options
3135 can be set for individual functions. Only generate one extern for
3136 Mask fields. Generate cl_optimization and cl_target_option
3137 structures to remember optimization and target options.
3139 * treestruct.def (TS_OPTIMIZATION): Add support for garbage
3140 collecting new tree nodes.
3141 (TS_TARGET_OPTION): Ditto.
3143 * c-decl.c (merge_decls): Merge function specific target and
3144 optimization options.
3146 * function.c (invoke_set_current_function_hook): If the function
3147 uses different optimization options, change the global variables
3150 * coretypes.h (struct cl_optimization): Add forward reference.
3151 (struct cl_target_option): Ditto.
3153 * c-pragma.c (option_stack): New static vector to remember the
3154 current #pragma GCC option stack.
3155 (handle_pragma_option): New function to support #pragma GCC option
3156 to change target options.
3157 (optimize_stack): New static vector to remember the current
3158 #pragma GCC optimize stack.
3159 (handle_pragma_optimize): New function to support #pragma GCC
3160 optimize to change optimization options.
3161 (init_pragma): Add support for #pragma GCC optimize and #pragma
3164 * tree.def (OPTIMIZATION_NODE): New tree code for remembering
3165 optimization options.
3166 (TARGET_OPTION_NODE): New tree code for remembering certain target
3169 * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
3170 TARGET_OPTION_NODE trees.
3172 * common.opt (-O): Add Optimization flag.
3174 (-fmath-errno): Ditto.
3175 (-falign-functions): Add UInteger flag to make sure flag gets full
3176 int in cl_optimization structure.
3177 (-falign-jumps): Ditto.
3178 (-falign-labels): Ditto.
3179 (-falign-loops): Ditto.
3180 (-fsched-stalled-insns): Ditto.
3181 (-fsched-stalled-insns-dep): Ditto.
3183 * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
3185 (TARGET_OPTION_SAVE): Ditto.
3186 (TARGET_OPTION_RESTORE): Ditto.
3187 (TARGET_OPTION_PRINT): Ditto.
3188 (TARGET_OPTION_PRAGMA_PARSE): Ditto.
3189 (TARGET_CAN_INLINE_P): Ditto.
3190 (TARGET_INITIALIZER): Add new hooks.
3192 * tree-inline.c (tree_can_inline_p): New function to determine
3193 whether one function can inline another. Check if the functions
3194 use compatible optimization options, and also call the backend
3197 * tree-inline.h (tree_can_inline_p): Add declaration.
3199 * c-common.c (c_common_attribute): Add support for option and
3200 optimize attributes.
3201 (handle_option_attribute): Add support for the option attribute to
3202 allow the user to specify different target options for compiling a
3204 (handle_optimize_attribute): Add support for the optimize
3205 attribute to allow the user to specify different optimization
3206 options for compiling a specific function.
3207 (handle_hot_attribute): Turn on -O3 optimization for this one
3208 function if it isn't the default optimization level.
3209 (handle_cold_attribute): Turn on -Os optimization for this one
3210 function if it insn't the default optimization.
3211 (const_char_p): New const char * typedef.
3212 (optimize_args): New static vector to remember the optimization
3214 (parse_optimize_options): New function to set up the optimization
3215 arguments from either the optimize attribute or #pragma GCC optimize.
3217 * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
3218 (builtin_define_std): Ditto.
3220 * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
3221 Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
3222 (x86_64-*-*): Ditto.
3224 * Makefile.in (TREE_H): Add options.h.
3225 (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
3227 * doc/extend.texi (option attribute): Document new attribute.
3228 (optimize attribute): Ditto.
3229 (hot attribute): Document hot attribute sets -O3.
3230 (cold attribute): Document cold attribute sets -Os.
3231 (#pragma GCC option): Document new pragma.
3232 (#pragma GCC optimize): Ditto.
3234 * doc/options.texi (TargetSave): Document TargetSave syntax.
3235 (UInteger): Document UInteger must be used for certain flags.
3236 (Save): Document Save option to create target specific options
3237 that can be saved/restored on a function specific context.
3239 * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
3240 (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
3242 * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
3243 (TARGET_OPTION_SAVE): Ditto.
3244 (TARGET_OPTION_RESTORE): Ditto.
3245 (TARGET_OPTION_PRINT): Ditto.
3246 (TARGET_OPTION_PRAGMA_PARSE): Ditto.
3247 (TARGET_CAN_INLINE_P): Ditto.
3249 * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
3251 (-mfpmath=both): Ditto.
3253 2008-07-23 Michael Meissner <gnu@the-meissners.org>
3254 Karthik Kumar <karthikkumar@gmail.com>
3256 * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
3257 (TARGET_POPCNT): Ditto.
3258 (TARGET_SAHF): Ditto.
3259 (TARGET_AES): Ditto.
3260 (TARGET_PCLMUL): Ditto.
3261 (TARGET_CMPXCHG16B): Ditto.
3262 (TARGET_RECIP): Move switch into target_flags.
3263 (TARGET_FUSED_MADD): Ditto.
3264 (ix86_arch_features): Make an unsigned char type.
3265 (ix86_tune_features): Ditto.
3266 (OVERRIDE_OPTIONS): Add bool argument to override_options call.
3267 (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
3268 (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
3270 * config/i386/i386.opt (arch): New TargetSave field to define
3271 fields that need to be saved for function specific option support.
3274 (branch_cost): Ditto.
3275 (ix86_isa_flags_explicit): Ditto.
3276 (tune_defaulted): Ditto.
3277 (arch_specified): Ditto.
3278 (-m128-long-double): Add Save flag to save option for target
3279 specific option support.
3281 (-maccumulate-outgoing-args): Ditto.
3282 (-malign-double): Ditto.
3283 (-malign-stringops): Ditto.
3284 (-mfancy-math-387): Ditto.
3285 (-mhard-float): Ditto.
3287 (-minline-all-stringops): Ditto.
3288 (-minline-stringops-dynamically): Ditto.
3289 (-mms-bitfields): Ditto.
3290 (-mno-align-stringops): Ditto.
3291 (-mno-fancy-math-387): Ditto.
3292 (-mno-push-args): Ditto.
3293 (-mno-red-zone): Ditto.
3294 (-mpush-args): Ditto.
3295 (-mred-zone): Ditto.
3297 (-msseregparm): Ditto.
3298 (-mstack-arg-probe): Ditto.
3313 (-mrecip): Move flag into target_flags.
3315 (-mno-fused-madd): Ditto.
3316 (-mfused-madd): Ditto.
3317 (-mabm): Move flag into ix86_isa_flags.
3324 * config/i386/i386-c.c: New file for #pragma support.
3325 (ix86_target_macros_internal): New function to #define or #undef
3326 target macros based when the user uses the #pragma GCC option to
3327 change target options.
3328 (ix86_pragma_option_parse): New function to add #pragma GCC option
3330 (ix86_target_macros): Move defining the target macros here from
3331 TARGET_CPU_CPP_BUILTINS in i386.h.
3332 (ix86_register_pragmas): Register the #pragma GCC option hook. If
3333 defined, initialize any subtarget #pragmas.
3335 * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
3336 REGISTER_TARGET_PRAGMAS.
3338 * config/i386/t-i386: New file for x86 dependencies.
3339 (i386.o): Make dependencies mirror the include files used.
3340 (i386-c.o): New file, add dependencies.
3342 * config/i386/i386-protos.h (override_options): Add bool argument.
3343 (ix86_valid_option_attribute_tree): Add declaration.
3344 (ix86_target_macros): Ditto.
3345 (ix86_register_macros): Ditto.
3347 * config/i386/i386.c (ix86_tune_features): Move initialization of
3348 the target masks to initial_ix86_tune_features to allow functions
3349 to have different target options. Make type unsigned char,
3350 instead of unsigned int.
3351 (initial_ix86_tune_features): New static vector to hold processor
3352 masks for the tune variables.
3353 (ix86_arch_features): Move initialization of the target masks to
3354 initial_ix86_arch_features to allow functions to have different
3355 target options. Make type unsigned char, instead of unsigned int.
3356 (initial_ix86_arch_features): New static vector to hold processor
3357 masks for the arch variables.
3358 (enum ix86_function_specific_strings): New enum to describe the
3359 string options used for attribute((option(...))).
3360 (ix86_target_string): New function to return a string that
3361 describes the target options.
3362 (ix86_debug_options): New function to print the current options in
3364 (ix86_function_specific_save): New function hook to save the
3365 function specific global variables in the cl_target_option structure.
3366 (ix86_function_specific_restore): New function hook to restore the
3367 function specific variables from the cl_target_option structure to
3368 the global variables.
3369 (ix86_function_specific_print): New function hook to print the
3370 target specific options in the cl_target_option structure.
3371 (ix86_valid_option_attribute_p): New function hook to validate
3372 attribute((option(...))) arguments.
3373 (ix86_valid_option_attribute_tree): New function that is common
3374 code between attribute((option(...))) and #pragma GCC option
3375 support that parses the options and returns a tree holding the options.
3376 (ix86_valid_option_attribute_inner_p): New helper function for
3377 ix86_valid_option_attribute_tree.
3378 (ix86_can_inline_p): New function hook to decide if one function
3379 can inline another on a target specific basis.
3380 (ix86_set_current_function); New function hook to switch target
3381 options if the user used attribute((option(...))) or #pragma GCC
3383 (ix86_tune_defaulted): Move to static file scope from
3385 (ix86_arch_specified): Ditto.
3386 (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
3388 (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
3389 (OPTION_MASK_ISA_ABM_SET): Ditto.
3390 (OPTION_MASK_ISA_POPCNT_SET): Ditto.
3391 (OPTION_MASK_ISA_CX16_SET): Ditto.
3392 (OPTION_MASK_ISA_SAHF_SET): Ditto.
3393 (OPTION_MASK_ISA_AES_UNSET): Ditto.
3394 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
3395 (OPTION_MASK_ISA_ABM_UNSET): Ditto.
3396 (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
3397 (OPTION_MASK_ISA_CX16_UNSET): Ditto.