1 2008-07-30 H.J. Lu <hongjiu.lu@intel.com>
3 * builtins.c (std_gimplify_va_arg_expr): Replace
4 PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
5 * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
7 2008-07-30 Joey Ye <joey.ye@intel.com>
8 H.J. Lu <hongjiu.lu@intel.com>
10 * builtins.c (expand_builtin_setjmp_receiver): Replace
11 virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
12 (expand_builtin_apply_args_1): Likewise.
13 (expand_builtin_longjmp): Need DRAP for stack alignment.
14 (expand_builtin_apply): Likewise.
16 * caller-save.c (setup_save_areas): Call assign_stack_local_1
17 instead of assign_stack_local to allow alignment reduction.
19 * calls.c (emit_call_1): Need DRAP for stack alignment if
21 (expand_call): Replace virtual_incoming_args_rtx with
22 crtl->args.internal_arg_pointer.
23 * stmt.c (expand_nl_goto_receiver): Likewise.
25 * cfgexpand.c (get_decl_align_unit): Estimate stack variable
26 alignment and store to stack_alignment_estimated and
27 max_used_stack_slot_alignment.
28 (expand_one_var): Likewise.
29 (expand_stack_alignment): New function.
30 (tree_expand_cfg): Initialize max_used_stack_slot_alignment
31 and stack_alignment_estimated fields in rtl_data. Call
32 expand_stack_alignment at end.
34 * defaults.h (INCOMING_STACK_BOUNDARY): New.
35 (MAX_STACK_ALIGNMENT): Likewise.
36 (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
37 (SUPPORTS_STACK_ALIGNMENT): Likewise.
39 * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
40 stack alignment when generating virtual registers.
42 * function.c (assign_stack_local): Renamed to ...
43 (assign_stack_local_1): This. Add a parameter to indicate
44 if it is OK to reduce alignment.
45 (assign_stack_local): Use it.
46 (instantiate_new_reg): Instantiate virtual incoming args rtx
47 to vDRAP if stack realignment and DRAP is needed.
48 (assign_parms): Collect parameter/return type alignment and
49 contribute to stack_alignment_estimated.
50 (locate_and_pad_parm): Likewise.
51 (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
52 with crtl->args.internal_arg_pointer.
54 * function.h (rtl_data): Add new field drap_reg,
55 max_used_stack_slot_alignment, stack_alignment_estimated,
56 stack_realign_needed, need_drap, stack_realign_processed and
57 stack_realign_finalized.
58 (stack_realign_fp): New macro.
59 (stack_realign_drap): Likewise.
61 * global.c (compute_regsets): Frame pointer is needed when
62 stack is realigned. Can eliminate frame pointer when stack is
63 realigned and dynamic realigned argument pointer isn't used.
65 * reload1.c (update_eliminables): Frame pointer is needed
66 when stack is realigned.
67 (init_elim_table): Can eliminate frame pointer when stack is
68 realigned and dynamic realigned argument pointer isn't used.
70 * rtl.h (assign_stack_local_1): Declare new funtion.
72 * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
73 (TARGET_GET_DRAP_RTX): Likewise.
74 (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
77 * target.h (gcc_target): Add update_stack_boundary and
80 * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
81 STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
83 2008-07-30 Xuepeng Guo <xuepeng.guo@intel.com>
84 H.J. Lu <hongjiu.lu@intel.com>
86 * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
87 vdrap_reg, stack_realign and drap_reg_saved.
88 (add_cfi): Don't allow redefining CFA when DRAP is used.
89 (reg_save): Handle stack alignment.
90 (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
91 alignment. Don't generate DWARF information for (set fp sp)
93 (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
95 (int_loc_descriptor): Move prototype forward. Also define if
96 DWARF2_UNWIND_INFO is true.
97 (output_cfa_loc): Handle DW_CFA_expression.
98 (build_cfa_aligned_loc): New.
99 (based_loc_descr): Update assert for stack realign. For local
100 variables, use sp+offset when stack is aligned without drap and
101 fp+offset when stack is aligned with drap. For arguments, use
102 cfa+offset when drap is used to align stack.
104 2008-07-30 Joey Ye <joey.ye@intel.com>
105 H.J. Lu <hongjiu.lu@intel.com>
107 * config/i386/i386.c (ix86_force_align_arg_pointer_string):
109 (ix86_gen_andsp): New.
110 (ix86_user_incoming_stack_boundary): Likewise.
111 (ix86_default_incoming_stack_boundary): Likewise.
112 (ix86_incoming_stack_boundary): Likewise.
113 (ix86_can_eliminate): Likewise.
114 (find_drap_reg): Likewise.
115 (ix86_update_stack_boundary): Likewise.
116 (ix86_get_drap_rtx): Likewise.
117 (ix86_finalize_stack_realign_flags): Likewise.
118 (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
119 (TARGET_GET_DRAP_RTX): Likewise.
120 (override_options): Overide option value for new options.
121 (ix86_function_ok_for_sibcall): Remove check for
122 force_align_arg_pointer.
123 (ix86_handle_cconv_attribute): Likewise.
124 (ix86_function_regparm): Likewise.
125 (setup_incoming_varargs_64): Don't set stack_alignment_needed
127 (ix86_va_start): Replace virtual_incoming_args_rtx with
128 crtl->args.internal_arg_pointer.
129 (ix86_select_alt_pic_regnum): Check DRAP register.
130 (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
131 (ix86_compute_frame_layout): Compute frame layout wrt stack
133 (ix86_internal_arg_pointer): Just return
134 virtual_incoming_args_rtx.
135 (ix86_expand_prologue): Decide if stack realignment is needed
136 and generate prologue code accordingly.
137 (ix86_expand_epilogue): Generate epilogue code wrt stack
138 realignment is really needed or not.
140 * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
141 (ABI_STACK_BOUNDARY): Likewise.
142 (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
143 (STACK_REALIGN_DEFAULT): Likewise.
144 (INCOMING_STACK_BOUNDARY): Likewise.
145 (MAX_STACK_ALIGNMENT): Likewise.
146 (ix86_incoming_stack_boundary): Likewise.
147 (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
148 (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
149 (CAN_ELIMINATE): Defined with ix86_can_eliminate.
150 (machine_function): Remove force_align_arg_pointer.
152 * config/i386/i386.md (BX_REG): New.
155 * config/i386/i386.opt (mforce_drap): New.
156 (mincoming-stack-boundary): Likewise.
157 (mstackrealign): Add Init(-1).
159 * config/i386/i386-protos.h (ix86_can_eliminate): New
161 2008-07-30 H.J. Lu <hongjiu.lu@intel.com>
163 * doc/extend.texi: Update force_align_arg_pointer.
165 * doc/invoke.texi: Document -mincoming-stack-boundary. Update
168 * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
169 (INCOMING_STACK_BOUNDARY): Likewise.
170 (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
171 (TARGET_GET_DRAP_RTX): Likewise.
173 2008-07-30 Andreas Schwab <schwab@suse.de>
175 PR rtl-optimization/36929
176 * dse.c (replace_inc_dec): Use emit_insn_before instead of
177 add_insn_before and fix argument order.
178 (replace_inc_dec_mem): Handle NULL rtx.
180 2008-07-30 Andrew Jenner <andrew@codesourcery.com>
182 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
184 (arm_compute_initial_elimination_offset): Use it.
185 (arm_compute_save_reg_mask): Include static chain save slot when
186 calculating alignment.
187 (arm_get_frame_offsets): Ditto.
188 (thumb1_compute_save_reg_mask): Ensure we have a low register saved
189 that we can use to decrement the stack when the stack decrement
190 could be too big for an immediate value in a single insn.
191 (thumb1_expand_prologue): Avoid using r12 for stack decrement.
193 2008-07-30 Richard Guenther <rguenther@suse.de>
195 PR tree-optimization/36967
196 * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
197 Release defs of statements we remove.
199 2008-07-30 Nathan Froyd <froydnj@codesourcery.com>
201 * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
202 instead of NULL_RTVEC.
204 2008-07-30 Nathan Froyd <froydnj@codesourcery.com>
208 * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
211 2008-07-30 Rafael Avila de Espindola <espindola@google.com>
213 * final.c (call_from_call_insn): New.
214 (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
216 2008-07-30 Paolo Bonzini <bonzini@gnu.org>
218 * configure.ac: Substitute ADA_CFLAGS.
219 * configure: Regenerate.
220 * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
221 * Makefile.in: Remove mention of X_* variables.
222 * config/pa/x-ada-hpux10: Remove.
223 * config/pa/x-ada: Remove.
225 * doc/fragments.texi: Update.
227 2008-07-30 Olivier Hainque <hainque@adacore.com>
229 * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
230 * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
231 __dso_handle explicitly here.
233 2008-07-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
236 * c-typeck.c (build_binary_op): Encapsulate code into...
237 * c-common.c (shorten_binary_op): ...this new function.
238 (conversion_warning): Use the new function. Handle non-negative
239 constant in bitwise-and.
240 * c-common.h (shorten_binary_op): Declare.
242 2008-07-30 Olivier Hainque <hainque@adacore.com>
244 * scan.c (make_sstring_space): Add explicit conversions of
245 allocator's return value.
246 * fix-header.c (recognized_function): Likewise.
248 2008-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
250 * doc/cpp.texi: Update to GFDL 1.2.
251 * doc/gcc.texi: Do not list GPL as Invariant Section.
252 * doc/gccint.texi: Likewise. Update copyright years.
253 * doc/install.texi: Update copyright years.
255 2008-07-30 Alan Modra <amodra@bigpond.net.au>
258 * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
259 a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
261 2008-07-29 Jan Hubicka <jh@suse.cz>
263 * c-decl.c (merge_decls): Do not handle DECL_INLINE.
264 (grokdeclarator): Likewise.
265 * langhooks.c (lhd_warn_unused_global_decl): Use
266 DECL_DECLARED_INLINE_P.
267 * print-tree.c (print_node): Remove DECL_INLINE check.
269 2008-07-29 Richard Guenther <rguenther@suse.de>
271 PR tree-optimization/36945
272 * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
273 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
274 Record invariant addresses un-decomposed.
275 (copy_reference_ops_from_call): Record reference call
276 arguments properly. Simplify.
277 * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
278 helper split out from ...
279 (create_component_ref_by_pieces): ... here. Simplify.
280 Prepare for recursive invocation for call arguments.
281 (create_expression_by_pieces): Adjust call to
282 create_component_ref_by_pieces.
283 (compute_avail): Process operand 2 of reference ops.
285 2008-07-29 Richard Guenther <rguenther@suse.de>
287 * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for
290 2008-07-29 Jakub Jelinek <jakub@redhat.com>
292 * c-format.c (check_format_types): Revert unwanted checkin.
294 2008-07-29 Jan Hubicka <jh@suse.cz>
296 * flags.h (flag_really_no_inline): Remove.
297 * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
298 * toplev.c (flag_really_no_inline): Remove.
299 * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
300 * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
301 (cgraph_decide_inlining_incrementally): Likewise.
302 (compute_inline_parameters): Likewise.
303 * opts.c (decode_options): Simplify.
304 * c-opts.c (c_common_post_options): Do not set flag_no_inline.
305 * common.opt (finline): Initialize to 1.
306 * tree-inline.c (inlinable_function_p): Check flag_no_inline.
308 2008-07-29 Jan Hubicka <jh@suse.cz>
310 * predict.c (always_optimize_for_size_p): New function.
311 (optimize_bb_for_size_p, optimize_bb_for_speed_p,
312 optimize_edge_for_size_p, optimize_edge_for_speed_p,
313 optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
315 (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
316 * function.c (prepare_function_start): Set default profile.
317 * function.h (rtl_data): Add maybe_hot_insn_p.
318 * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
319 (construct_exit_block): Likewise.
320 (tree_expand_cfg): Likewise.
322 (optimize_bb_for_size_p, optimize_bb_for_speed_p,
323 optimize_edge_for_size_p, optimize_edge_for_speed_p,
324 optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
325 (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
328 2008-07-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
331 * c-decl.c (merge_decls): Merge USED flags.
333 2008-07-29 Kaz Kojima <kkojima@gcc.gnu.org>
335 * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
336 valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
337 next_stack, lab_false and lab_over trees.
339 2008-07-28 Richard Guenther <rguenther@suse.de>
341 PR tree-optimization/36957
342 * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
343 (useless_type_conversion_p): Remove.
344 (types_compatible_p): Remove.
345 * gimple.h (tree_ssa_useless_type_conversion): Declare.
346 (useless_type_conversion_p): Declare.
347 (types_compatible_p): Declare.
348 (gimple_expr_type): Return the base type only if it is
349 trivially convertible to the subtype.
351 2008-07-28 Andreas Tobler <a.tobler@schweiz.org>
353 * configure.ac: Use the m4_do macro to concatenate the warnings into
354 one string in ACX_PROG_CC_WARNING_OPTS,
355 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
356 * configure: Regenerate.
358 2008-07-28 Richard Guenther <rguenther@suse.de>
360 * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
361 (insert_fake_stores): Remove.
362 (realify_fake_stores): Likewise.
363 (execute_pre): Remove dead code.
364 * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary
366 (find_func_aliases): Deal with it here instead.
367 Re-enable gcc_unreachable call.
369 2008-07-28 Richard Guenther <rguenther@suse.de>
371 Merge from gimple-tuples-branch.
373 * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
374 * gimple.def: New file.
375 * gsstruct.def: Likewise.
376 * gimple-iterator.c: Likewise.
377 * gimple-pretty-print.c: Likewise.
378 * tree-gimple.c: Removed. Merged into ...
379 * gimple.c: ... here. New file.
380 * tree-gimple.h: Removed. Merged into ...
381 * gimple.h: ... here. New file.
383 * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
384 * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
385 --enable-checking=gimple flag.
386 * config.in: Likewise.
387 * configure: Regenerated.
389 * tree-ssa-operands.h: Tuplified.
390 * tree-vrp.c: Likewise.
391 * tree-loop-linear.c: Likewise.
392 * tree-into-ssa.c: Likewise.
393 * tree-ssa-loop-im.c: Likewise.
394 * tree-dump.c: Likewise.
395 * tree-complex.c: Likewise.
396 * cgraphbuild.c: Likewise.
397 * tree-ssa-threadupdate.c: Likewise.
398 * tree-ssa-loop-niter.c: Likewise.
399 * tree-pretty-print.c: Likewise.
400 * tracer.c: Likewise.
401 * gengtype.c: Likewise.
402 * tree-loop-distribution.c: Likewise.
403 * tree-ssa-loop-unswitch.c: Likewise.
404 * cgraph.c: Likewise.
405 * cgraph.h: Likewise.
406 * tree-ssa-loop-manip.c: Likewise.
407 * value-prof.c: Likewise.
408 * tree-ssa-loop-ch.c: Likewise.
409 * tree-tailcall.c: Likewise.
410 * value-prof.h: Likewise.
413 * tree-pass.h: Likewise.
414 * ipa-cp.c: Likewise.
415 * tree-scalar-evolution.c: Likewise.
416 * tree-scalar-evolution.h: Likewise.
417 * target.h: Likewise.
418 * lambda-mat.c: Likewise.
419 * tree-phinodes.c: Likewise.
420 * diagnostic.h: Likewise.
421 * builtins.c: Likewise.
422 * tree-ssa-alias-warnings.c: Likewise.
423 * cfghooks.c: Likewise.
424 * fold-const.c: Likewise.
425 * cfghooks.h: Likewise.
426 * omp-low.c: Likewise.
427 * tree-ssa-dse.c: Likewise.
428 * ipa-reference.c: Likewise.
429 * tree-ssa-uncprop.c: Likewise.
430 * toplev.c: Likewise.
431 * tree-gimple.c: Likewise.
432 * tree-gimple.h: Likewise.
433 * tree-chrec.c: Likewise.
434 * tree-chrec.h: Likewise.
435 * tree-ssa-sccvn.c: Likewise.
436 * tree-ssa-sccvn.h: Likewise.
437 * cgraphunit.c: Likewise.
438 * tree-ssa-copyrename.c: Likewise.
439 * tree-ssa-ccp.c: Likewise.
440 * tree-ssa-loop-ivopts.c: Likewise.
441 * tree-nomudflap.c: Likewise.
442 * tree-call-cdce.c: Likewise.
443 * ipa-pure-const.c: Likewise.
444 * c-format.c: Likewise.
445 * tree-stdarg.c: Likewise.
446 * tree-ssa-math-opts.c: Likewise.
447 * tree-ssa-dom.c: Likewise.
448 * tree-nrv.c: Likewise.
449 * tree-ssa-propagate.c: Likewise.
450 * ipa-utils.c: Likewise.
451 * tree-ssa-propagate.h: Likewise.
452 * tree-ssa-alias.c: Likewise.
453 * gimple-low.c: Likewise.
454 * tree-ssa-sink.c: Likewise.
455 * ipa-inline.c: Likewise.
456 * c-semantics.c: Likewise.
457 * dwarf2out.c: Likewise.
459 * tree-ssa-loop-ivcanon.c: Likewise.
460 * predict.c: Likewise.
461 * tree-ssa-loop.c: Likewise.
462 * tree-parloops.c: Likewise.
463 * tree-ssa-address.c: Likewise.
464 * tree-ssa-ifcombine.c: Likewise.
465 * matrix-reorg.c: Likewise.
466 * c-decl.c: Likewise.
467 * tree-eh.c: Likewise.
468 * c-pretty-print.c: Likewise.
469 * lambda-trans.c: Likewise.
470 * function.c: Likewise.
471 * langhooks.c: Likewise.
472 * ebitmap.h: Likewise.
473 * tree-vectorizer.c: Likewise.
474 * function.h: Likewise.
475 * langhooks.h: Likewise.
476 * tree-vectorizer.h: Likewise.
477 * ipa-type-escape.c: Likewise.
478 * ipa-type-escape.h: Likewise.
479 * domwalk.c: Likewise.
480 * tree-if-conv.c: Likewise.
481 * profile.c: Likewise.
482 * domwalk.h: Likewise.
483 * tree-data-ref.c: Likewise.
484 * tree-data-ref.h: Likewise.
485 * tree-flow-inline.h: Likewise.
486 * tree-affine.c: Likewise.
487 * tree-vect-analyze.c: Likewise.
488 * c-typeck.c: Likewise.
489 * gimplify.c: Likewise.
490 * coretypes.h: Likewise.
491 * tree-ssa-phiopt.c: Likewise.
493 * tree-ssa-coalesce.c: Likewise.
494 * tree.def: Likewise.
495 * tree-dfa.c: Likewise.
496 * except.c: Likewise.
497 * except.h: Likewise.
498 * cfgexpand.c: Likewise.
499 * tree-cfgcleanup.c: Likewise.
500 * tree-ssa-pre.c: Likewise.
501 * tree-ssa-live.c: Likewise.
502 * tree-sra.c: Likewise.
503 * tree-ssa-live.h: Likewise.
504 * tree-predcom.c: Likewise.
505 * lambda.h: Likewise.
506 * tree-mudflap.c: Likewise.
507 * ipa-prop.c: Likewise.
508 * print-tree.c: Likewise.
509 * tree-ssa-copy.c: Likewise.
510 * ipa-prop.h: Likewise.
511 * tree-ssa-forwprop.c: Likewise.
512 * ggc-page.c: Likewise.
514 * tree-ssa-dce.c: Likewise.
515 * tree-vect-patterns.c: Likewise.
516 * tree-ssa-ter.c: Likewise.
517 * tree-nested.c: Likewise.
518 * tree-ssa.c: Likewise.
519 * lambda-code.c: Likewise.
520 * tree-ssa-loop-prefetch.c: Likewise.
521 * tree-inline.c: Likewise.
522 * tree-inline.h: Likewise.
523 * tree-iterator.c: Likewise.
524 * tree-optimize.c: Likewise.
525 * tree-ssa-phiprop.c: Likewise.
526 * tree-vect-transform.c: Likewise.
527 * tree-object-size.c: Likewise.
528 * tree-outof-ssa.c: Likewise.
529 * cfgloop.c: Likewise.
530 * system.h: Likewise.
531 * tree-profile.c: Likewise.
532 * cfgloop.h: Likewise.
533 * c-gimplify.c: Likewise.
534 * c-common.c: Likewise.
535 * tree-vect-generic.c: Likewise.
536 * tree-flow.h: Likewise.
537 * c-common.h: Likewise.
538 * basic-block.h: Likewise.
539 * tree-ssa-structalias.c: Likewise.
540 * tree-switch-conversion.c: Likewise.
541 * tree-ssa-structalias.h: Likewise.
542 * tree-cfg.c: Likewise.
543 * passes.c: Likewise.
544 * ipa-struct-reorg.c: Likewise.
545 * ipa-struct-reorg.h: Likewise.
546 * tree-ssa-reassoc.c: Likewise.
547 * cfgrtl.c: Likewise.
548 * varpool.c: Likewise.
550 * tree-ssanames.c: Likewise.
551 * tree-ssa-threadedge.c: Likewise.
552 * langhooks-def.h: Likewise.
553 * tree-ssa-operands.c: Likewise.
554 * config/alpha/alpha.c: Likewise.
555 * config/frv/frv.c: Likewise.
556 * config/s390/s390.c: Likewise.
557 * config/m32c/m32c.c: Likewise.
558 * config/m32c/m32c-protos.h: Likewise.
559 * config/spu/spu.c: Likewise.
560 * config/sparc/sparc.c: Likewise.
561 * config/i386/i386.c: Likewise.
562 * config/sh/sh.c: Likewise.
563 * config/xtensa/xtensa.c: Likewise.
564 * config/stormy16/stormy16.c: Likewise.
565 * config/ia64/ia64.c: Likewise.
566 * config/rs6000/rs6000.c: Likewise.
567 * config/pa/pa.c: Likewise.
568 * config/mips/mips.c: Likewise.
570 2008-07-28 Simon Baldwin <simonb@google.com>
572 * c-pragma.c (handle_pragma_message): New function.
573 (init_pragma): Register handle_pragma_message.
574 * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
577 2008-07-27 Victor Kaplansky <victork@il.ibm.com>
579 PR tree-optimization/35252
580 * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
581 REALPART_EXPR to be considered as same load operation.
583 2008-07-27 Eric Botcazou <ebotcazou@adacore.com>
585 PR tree-optimization/36830
586 * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
587 (expressions_equal_p): Return false if only one operand is null.
589 2008-07-26 Gerald Pfeifer <gerald@pfeifer.com>
591 * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
592 version requirements.
594 2008-07-26 Olivier Hainque <hainque@adacore.com>
596 * collect2.c (symkind): New enum. Symbol kinds we care about.
597 (is_ctor_dtor): Return symkind instead of int. Adjust prototype,
598 code and head comment accordingly.
599 (scan_prog_file): Use symkind names instead of bare integers.
601 2008-07-25 Jan Hubicka <jh@suse.cz>
603 * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on DECL_INLINE.
604 * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
605 (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
606 * dojump.c (clear_pending_stack_adjust): Likewise.
607 * print-tree.c (print_node): Ignore DECL_INLINE.
608 * tree-inline.c (inlinable_function_p): Likewise.
610 2008-07-25 Michael Meissner <gnu@the-meissners.org>
612 * doc/extend.texi (hot attribute): Document that the hot attribute
613 turns on -O3 for some ports.
614 (cold attribute): Document that the cold attribute turns on -Os
617 * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
618 reflect function specific option support.
620 * target.h (struct target_option_hooks): Add fields to say whether
621 the cold attribute implies -Os and the hot attribute implies -O3.
623 * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
624 By default, do not turn on -Os for cold functions.
625 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
626 not turn on -O3 for hot functions.
628 * c-common.c (handle_hot_attribute): Use target hook to determine
629 if hot functions should enable -O3.
630 (handle_cold_attribute): Use target hook to determine if cold
631 functions should enable -Os.
633 * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
634 (override_options): Move disable scheduling to
635 optimization_options.
636 (optimization_options): Disable scheduling here, not
638 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
639 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
641 * config/ia64/ia64.c (ia64_override_options): Move setting
642 scheduling flags to ia64_optimization_options.
643 (ia64_optimization_options): Disable scheduling options here, and
644 not in ia64_override_options.
645 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
646 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
648 2008-07-25 H.J. Lu <hongjiu.lu@intel.com>
651 * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
653 2008-07-25 Martin Jambor <mjambor@suse.cz>
655 PR tree-optimization/36926
656 * ipa-prop.c (ipa_analyze_call_uses): Call
657 ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
659 2008-07-25 Joseph Myers <joseph@codesourcery.com>
661 * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
662 movv2si_internal): Add mem = reg alternative.
664 2008-07-25 Andreas Tobler <a.tobler@schweiz.org>
667 * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
668 DEFAULT_PCC_STRUCT_RETURN to 127.
670 2008-07-24 Jan Hubicka <jh@suse.cz>
672 * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
673 (build_cgraph_edges): Likewise.
674 * cgraph.c (cgraph_node): Do not update assembler hash.
675 (cgraph_remove_node): Drop non-unit-at-a-time code.
676 * tree-pass.h (pass_O0_always_inline): Remove.
677 * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
678 * toplev.c (process_options): Flag unit-at-a-time does not imply
680 * cgraphunit.c: Update comments.
681 (decide_is_function_needed): Drop non-unit-at-a-time mode.
682 (cgraph_assemble_pending_functions): Remove.
683 (cgraph_reset_node): Drop non-unit-at-a-time code.
684 (cgraph_finalize_function): Likewise.
685 (cgraph_analyze_function): Likewise.
686 (cgraph_finalize_compilation_unit): Likewise.
687 (cgraph_expand_function): Likewise.
688 (cgraph_optimize): Likesise.
689 (save_inline_function_body): Likewise.
690 * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
691 * tree-ssa-alias.c (maybe_be_aliased): Likewise.
692 * ipa-inline.c: Update comments.
693 (enum inlining_mode): remove INLINE_SPEED.
694 (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
695 (cgraph_mark_inline_edge): Likewise.
696 (try_inline): Likewise.
697 (cgraph_decide_inlining_incrementally): Likewise.
698 (cgraph_gate_inlining): Remove.
699 (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
700 (cgraph_gate_early_inlining): Likewise.
701 (gate_inline_passes): Remove.
702 (pass_inline_parameters, pass_ipa_inline): Remove gates.
703 (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
704 pass_O0_always_inline): Remove.
705 * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
706 * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
707 * opts.c (no_unit_at_a_time_default): Remove.
708 (decode_options): Remove flag_unit_at_a_time reset and warning.
709 * opts.h (no_unit_at_a_time_default): Remove.
710 * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
711 early in GNU dialect.
712 (merge_decls): Update comment; drop unit-at-a-time check.
713 (finish_decl): Likewise.
714 (grok_declaration): Remove flag_inline_trees code.
715 (finish_functions): Return on function returning non-void on all
717 * ipa-tye-escape.c (gate_type_escape_vars): Remove.
718 * cfgexpand.c (expand_one_static_var): Remove.
719 (expand_one_var): Remove expand_one_static_var call.
720 (expand_used_vars_for_block): Remove flag_unit_a_time check.
721 * c-opts.c (c_common_post_options): Remove flag_inline_trees code
722 and flag_unit_at_a-time compatibility checks.
723 * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
724 * tree-inline.c (flag_inline_trees): Remove.
725 (inlinable_function_p): Don't check it.
726 (expand_call_inline): Remove non-unit-at-a-time code.
727 * tree-inline.h (flag_inline_trees): Remove.
728 * tree-optimize.c (execute_early_local_optimizations): Remove
729 unit-at-a-time checks.
730 (tree_rest_of_compilation): Likewise.
731 * combine.c (setup_incoming_promotions): Likewise.
732 * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
733 * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
734 * passes.c (pass_inline_parameters): Update comments; remove
735 O0_alwaysinline pass.
736 (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
737 (execute_one_pass): Likewise.
738 * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
739 (ix86_function_sseregparm): Likewise.
740 * arm.c (arm_function_in_section_p): Likewise.
741 * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
742 * varpool.c: Update comments.
743 (decide_is_variable_needed): Remove unit-at-a-time checks.
744 (varpool_finalize_decl): Likewise.
746 2008-07-24 Kaz Kojima <kkojima@gcc.gnu.org>
748 * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
750 (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal
753 2008-07-24 Kai Tietz <kai.tietz@onevision.com>
755 * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
756 imp symbol extension.
758 2008-07-23 Ian Lance Taylor <iant@google.com>
760 * tree-vrp.c (infer_value_range): Ignore asm statements when
761 looking for memory accesses for -fdelete-null-pointer-checks.
763 2008-07-24 Ben Elliston <bje@au.ibm.com>
765 * config/spu/spu-c.c (__vector_keyword): New variable.
766 (vector_keyword): Likewise.
767 (spu_categorize_keyword): New function.
768 (spu_macro_to_expand): Likewise.
769 (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
770 compiling an ISO C dialect.
772 2008-07-24 Ben Elliston <bje@au.ibm.com>
774 * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
777 2008-07-23 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
779 * configure: Regenerate.
780 * configure.ac: Require texinfo 4.7.
781 * doc/install.texi: Document texinfo 4.7 requirement.
783 2008-07-23 Martin Jambor <mjambor@suse.cz>
785 * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
786 rather than for DECL_SAVED_TREE.
787 * ipa-prop.c: Include diagnostic.h.
788 (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
790 (ipa_detect_param_modifications): Function rewritten from scratch.
791 (ipa_compute_jump_functions): Changed accesses to modification flags.
792 (ipa_free_node_params_substructures): Update flags destruction.
793 (ipa_node_duplication_hook): Update flags duplication.
794 (ipa_print_all_params_modified): Updated flag access.
795 * ipa-prop.h (struct ipa_param_flags): New structure.
796 (struct ipa_node_params): New field modification_analysis_done,
797 modified_flags changed into param_flags.
798 (ipa_is_ith_param_modified): Changed to use new flags.
799 * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
801 * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
802 ipa-cp.c and split into two functions.
803 (ipa_print_node_jump_functions): New function.
804 (compute_scalar_jump_functions): New function.
805 (type_like_member_ptr_p): New function.
806 (compute_pass_through_member_ptrs): New function.
807 (fill_member_ptr_cst_jump_function): New function.
808 (determine_cst_member_ptr): New function.
809 (compute_cst_member_ptr_arguments): New function.
810 (ipa_compute_jump_functions): Complete rewrite.
811 * ipa-prop.h (enum jump_func_type): Make explicit that we depend
812 on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
813 (struct ipa_member_ptr_cst): New structure.
814 (union jump_func_value): New field member_cst.
815 * ipa-cp.c (ipcp_lat_is_insertable): New function.
816 (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
818 (ipcp_print_all_lattices): Slight fprintf rearrangement.
819 (ipcp_print_all_structures): Call ipa_print_all_jump_functions
820 instead of ipcp_print_all_jump_functions.
821 (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
822 only for replacable scalars.
824 * doc/invoke.texi (Optimize options): Add description of
826 * common.opt (flag_indirect_inlining): New flag.
827 * opts.c (decode_options): Set flag_indirect_inlining when
830 * ipa-inline.c: Include ipa-prop.h.
831 (inline_indirect_intraprocedural_analysis): New function.
832 (inline_generate_summary): Allocate parameter and argument info
833 structures, call inline_indirect_intraprocedural_analysis on each
834 node when doing indirect inlining and deallocate indirect inlining
835 data structures in the end.
836 * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
837 (free_all_ipa_structures_after_iinln): New function.
838 (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
840 * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
842 * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
843 (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
844 of computing the frequency separately.
845 (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
846 of computing the frequency separately.
847 * ipa-cp.c (ipcp_print_all_structures): Replace a call to
848 ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
849 * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
850 (ipa_get_stmt_member_ptr_load_param): New function.
851 (ipa_is_ssa_with_stmt_def): New function.
852 (ipa_note_param_call): New function.
853 (ipa_analyze_call_uses): New function.
854 (ipa_analyze_stmt_uses): New function.
855 (ipa_analyze_params_uses): New function.
856 (ipa_free_node_params_substructures): Also free the param_calls linked
858 (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
859 (ipa_print_node_param_flags): New function.
860 (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
861 (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
862 * ipa-prop.h (struct ipa_param_flags): New field called.
863 (struct ipa_param_call_note): New structure.
864 (struct ipa_node_params): New fields param_calls and
866 (ipa_is_ith_param_called): New function.
867 * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
868 ipa_analyze_params_uses and dump parameter flags.
870 * ipa-inline.c (cgraph_decide_recursive_inlining): Call
871 ipa_propagate_indirect_call_infos if performing indirect inlining,
872 pass a new parameter new_edges to it.
873 (add_new_edges_to_heap): New fucntion.
874 (cgraph_decide_inlining_of_small_functions): New vector
875 new_indirect_edges for newly found indirect edges , call
876 ipa_propagate_indirect_call_infos after inlining.
877 (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
878 inlining if performing indirect inlining. Call
879 free_all_ipa_structures_after_iinln when doing so too.
880 (inline_generate_summary): Do not call
881 free_all_ipa_structures_after_iinln here.
882 * ipa-prop.c (update_jump_functions_after_inlining): New function.
883 (print_edge_addition_message): New function.
884 (update_call_notes_after_inlining): New function.
885 (propagate_info_to_inlined_callees): New function.
886 (ipa_propagate_indirect_call_infos): New function.
887 * ipa-prop.h: Include cgraph.h
888 (struct ipa_param_call_note): Fields reordered, new field processed.
889 * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
891 * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
892 rediscovered call statements.
893 * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
894 (dump_cgraph_node): Dump also the indirect_call flag.
895 (cgraph_clone_edge): Copy also the indirect_call flag.
896 * tree-inline.c (copy_bb): Do not check for fndecls from call
897 expressions, check for edge availability when moving clones.
898 (get_indirect_callee_fndecl): New function.
899 (expand_call_inline): If callee declaration is not apprent from
900 the statement, try calling get_indirect_callee_fndecl. Do not
901 issue warnings or call sorry when not inlinings an indirect edge.
902 * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
904 * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
905 bit more frandly to matching.
906 * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
907 * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
908 * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
910 2008-07-23 Michael Meissner <gnu@the-meissners.org>
913 * opth-gen.awk: Suppress function specific features when building
915 * optc-gen.awk: Ditto.
917 2008-07-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
920 * diagnostic.c (pedwarn): Add opt parameter.
922 * c-tree.h (pedwarn_init): Add opt parameter.
923 (pedwarn_c90): Likewise.
924 (pedwarn_c99): Likewise.
925 * c-errors.c (pedwarn_c99): Likewise.
926 (pedwarn_c90): Likewise.
927 * toplev.h (pedwarn): Update declaration.
929 * c-lex.c: All calls to pedwarn changed.
930 * builtins.c: All calls to pedwarn changed.
931 * toplev.c: All calls to pedwarn changed.
932 * c-decl.c: All calls to pedwarn changed.
933 * c-typeck.c: All calls to pedwarn changed.
934 * c-common.c: All calls to pedwarn changed.
935 * c-parser.c: All calls to pedwarn changed.
937 2008-07-23 Michael Meissner <gnu@the-meissners.org>
938 Karthik Kumar <karthikkumar@gmail.com>
940 * attribs.c (file scope): Include c-common.h.
941 (decl_attributes): Add support for #pragma GCC optimize and
944 * targhooks.c (default_can_inline_p): New function that is the
945 default for the TARGET_CAN_INLINE_P target hook.
947 * targhooks.h (default_can_inline_p): Add declaration.
949 * tree.c (cl_optimization_node): New static tree for building
950 OPTIMIZATION_NODE tree.
951 (cl_target_option_node): New static tree for building
952 TARGET_OPTION_NODE tree.
953 (cl_option_hash_table): New hash table for hashing
954 OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
955 (cl_option_hash_hash): New function to provide the hash value for
956 OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
957 (cl_option_hash_eq): New function to provide an equality test for
958 OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
959 (tree_code_size): Add support for OPTIMIZATION_NODE and
960 TARGET_OPTION_NODE trees.
961 (tree_code_structure): Add support for OPTIMIZATION_NODE and
962 TARGET_OPTION_NODE trees.
963 (build_optimization_node): Build a tree that has all of the
964 current optimization options.
965 (build_target_option_node): Build a tree that has the target
966 options that might be changed on a per function basis.
968 * tree.h (file scope): Include options.h.
969 (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
970 (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
971 (TREE_OPTIMIZATION): Ditto.
972 (TREE_TARGET_SPECIFIC): Ditto.
973 (struct tree_function_decl): Add fields for remembering the
974 current optimization options and target specific options.
975 (struct tree_optimization_option): New tree variant that remembers
976 the optimization options.
977 (struct tree_target_option): New tree variant that remembers the
978 target specific flags that might change for compiling a particular
980 (union tree_node): Include tree_optimization_option and
981 tree_target_option fields.
982 (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
983 TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
984 TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
985 TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
986 TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
987 optimization and target options.
988 (optimization_default_node): New macro to refer to global_trees
990 (optimization_current_node): Ditto.
991 (optimization_cold_node): Ditto.
992 (optimization_hot_node): Ditto.
993 (target_option_default_node): Ditto.
994 (target_option_current_node): Ditto.
995 (current_option_pragma): Ditto.
996 (current_optimize_pragma): Ditto.
998 * target.h (struct gcc_target): Add valid_option_attribute_p,
999 target_option_save, target_option_restore, target_option_print,
1000 target_option_pragma_parse, and can_inline_p hooks.
1002 * toplev.h (parse_optimize_options): Add declaration.
1003 (fast_math_flags_struct_set_p): Ditto.
1005 * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
1006 adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
1009 * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
1010 tree_can_inline_p hook to see if one function can inline another.
1011 (cgraph_decide_inlining): Ditto.
1012 (cgraph_decide_inlining_incrementally): Ditto.
1014 * opts.c (decode_options): Add support for running multiple times
1015 to allow functions with different target or optimization options
1016 than was specified on the command line.
1017 (fast_math_flags_struct_set_p): New function that is similar to
1018 fast_math_flags_set_p, except it uses the values in the
1019 cl_optimization structure instead of global variables.
1021 * optc-gen.awk: Add support for TargetSave to allow a back end to
1022 declare new fields that need to be saved when using function
1023 specific options. Include flags.h and target.h in the options.c
1024 source. Add support for Save to indicate which options can be set
1025 for individual functions. Generate cl_optimize_save,
1026 cl_optimize_restore, cl_optimize_print, cl_target_option_save,
1027 cl_target_option_restore, cl_target_option_print functions to
1028 allow functions to use different optimization or target options.
1030 * opt-functions.awk (var_type_struct): Return the type used for
1031 storing the field in a structure.
1033 * opth-gen.awk: Add support for TargetSave to allow a back end to
1034 declare new fields that need to be saved when using function
1035 specific options. Add support for Save to indicate which options
1036 can be set for individual functions. Only generate one extern for
1037 Mask fields. Generate cl_optimization and cl_target_option
1038 structures to remember optimization and target options.
1040 * treestruct.def (TS_OPTIMIZATION): Add support for garbage
1041 collecting new tree nodes.
1042 (TS_TARGET_OPTION): Ditto.
1044 * c-decl.c (merge_decls): Merge function specific target and
1045 optimization options.
1047 * function.c (invoke_set_current_function_hook): If the function
1048 uses different optimization options, change the global variables
1051 * coretypes.h (struct cl_optimization): Add forward reference.
1052 (struct cl_target_option): Ditto.
1054 * c-pragma.c (option_stack): New static vector to remember the
1055 current #pragma GCC option stack.
1056 (handle_pragma_option): New function to support #pragma GCC option
1057 to change target options.
1058 (optimize_stack): New static vector to remember the current
1059 #pragma GCC optimize stack.
1060 (handle_pragma_optimize): New function to support #pragma GCC
1061 optimize to change optimization options.
1062 (init_pragma): Add support for #pragma GCC optimize and #pragma
1065 * tree.def (OPTIMIZATION_NODE): New tree code for remembering
1066 optimization options.
1067 (TARGET_OPTION_NODE): New tree code for remembering certain target
1070 * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
1071 TARGET_OPTION_NODE trees.
1073 * common.opt (-O): Add Optimization flag.
1075 (-fmath-errno): Ditto.
1076 (-falign-functions): Add UInteger flag to make sure flag gets full
1077 int in cl_optimization structure.
1078 (-falign-jumps): Ditto.
1079 (-falign-labels): Ditto.
1080 (-falign-loops): Ditto.
1081 (-fsched-stalled-insns): Ditto.
1082 (-fsched-stalled-insns-dep): Ditto.
1084 * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
1086 (TARGET_OPTION_SAVE): Ditto.
1087 (TARGET_OPTION_RESTORE): Ditto.
1088 (TARGET_OPTION_PRINT): Ditto.
1089 (TARGET_OPTION_PRAGMA_PARSE): Ditto.
1090 (TARGET_CAN_INLINE_P): Ditto.
1091 (TARGET_INITIALIZER): Add new hooks.
1093 * tree-inline.c (tree_can_inline_p): New function to determine
1094 whether one function can inline another. Check if the functions
1095 use compatible optimization options, and also call the backend
1098 * tree-inline.h (tree_can_inline_p): Add declaration.
1100 * c-common.c (c_common_attribute): Add support for option and
1101 optimize attributes.
1102 (handle_option_attribute): Add support for the option attribute to
1103 allow the user to specify different target options for compiling a
1105 (handle_optimize_attribute): Add support for the optimize
1106 attribute to allow the user to specify different optimization
1107 options for compiling a specific function.
1108 (handle_hot_attribute): Turn on -O3 optimization for this one
1109 function if it isn't the default optimization level.
1110 (handle_cold_attribute): Turn on -Os optimization for this one
1111 function if it insn't the default optimization.
1112 (const_char_p): New const char * typedef.
1113 (optimize_args): New static vector to remember the optimization
1115 (parse_optimize_options): New function to set up the optimization
1116 arguments from either the optimize attribute or #pragma GCC
1119 * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
1120 (builtin_define_std): Ditto.
1122 * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
1123 Add t-i386 Makefile fragment to add i386-c.o and i386.o
1125 (x86_64-*-*): Ditto.
1127 * Makefile.in (TREE_H): Add options.h.
1128 (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
1130 * doc/extend.texi (option attribute): Document new attribute.
1131 (optimize attribute): Ditto.
1132 (hot attribute): Document hot attribute sets -O3.
1133 (cold attribute): Document cold attribute sets -Os.
1134 (#pragma GCC option): Document new pragma.
1135 (#pragma GCC optimize): Ditto.
1137 * doc/options.texi (TargetSave): Document TargetSave syntax.
1138 (UInteger): Document UInteger must be used for certain flags.
1139 (Save): Document Save option to create target specific options
1140 that can be saved/restored on a function specific context.
1142 * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new
1144 (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
1146 * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new
1148 (TARGET_OPTION_SAVE): Ditto.
1149 (TARGET_OPTION_RESTORE): Ditto.
1150 (TARGET_OPTION_PRINT): Ditto.
1151 (TARGET_OPTION_PRAGMA_PARSE): Ditto.
1152 (TARGET_CAN_INLINE_P): Ditto.
1154 * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
1156 (-mfpmath=both): Ditto.
1158 2008-07-23 Michael Meissner <gnu@the-meissners.org>
1159 Karthik Kumar <karthikkumar@gmail.com>
1161 * config/i386/i386.h (TARGET_ABM): Move switch into
1163 (TARGET_POPCNT): Ditto.
1164 (TARGET_SAHF): Ditto.
1165 (TARGET_AES): Ditto.
1166 (TARGET_PCLMUL): Ditto.
1167 (TARGET_CMPXCHG16B): Ditto.
1168 (TARGET_RECIP): Move switch into target_flags.
1169 (TARGET_FUSED_MADD): Ditto.
1170 (ix86_arch_features): Make an unsigned char type.
1171 (ix86_tune_features): Ditto.
1172 (OVERRIDE_OPTIONS): Add bool argument to override_options call.
1173 (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
1174 (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
1176 * config/i386/i386.opt (arch): New TargetSave field to define
1177 fields that need to be saved for function specific option
1181 (branch_cost): Ditto.
1182 (ix86_isa_flags_explicit): Ditto.
1183 (tune_defaulted): Ditto.
1184 (arch_specified): Ditto.
1185 (-m128-long-double): Add Save flag to save option for target
1186 specific option support.
1188 (-maccumulate-outgoing-args): Ditto.
1189 (-malign-double): Ditto.
1190 (-malign-stringops): Ditto.
1191 (-mfancy-math-387): Ditto.
1192 (-mhard-float): Ditto.
1194 (-minline-all-stringops): Ditto.
1195 (-minline-stringops-dynamically): Ditto.
1196 (-mms-bitfields): Ditto.
1197 (-mno-align-stringops): Ditto.
1198 (-mno-fancy-math-387): Ditto.
1199 (-mno-push-args): Ditto.
1200 (-mno-red-zone): Ditto.
1201 (-mpush-args): Ditto.
1202 (-mred-zone): Ditto.
1204 (-msseregparm): Ditto.
1205 (-mstack-arg-probe): Ditto.
1220 (-mrecip): Move flag into target_flags.
1222 (-mno-fused-madd): Ditto.
1223 (-mfused-madd): Ditto.
1224 (-mabm): Move flag into ix86_isa_flags.
1231 * config/i386/i386-c.c: New file for #pragma support.
1232 (ix86_target_macros_internal): New function to #define or #undef
1233 target macros based when the user uses the #pragma GCC option to
1234 change target options.
1235 (ix86_pragma_option_parse): New function to add #pragma GCC option
1237 (ix86_target_macros): Move defining the target macros here from
1238 TARGET_CPU_CPP_BUILTINS in i386.h.
1239 (ix86_register_pragmas): Register the #pragma GCC option hook. If
1240 defined, initialize any subtarget #pragmas.
1242 * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
1243 REGISTER_TARGET_PRAGMAS.
1245 * config/i386/t-i386: New file for x86 dependencies.
1246 (i386.o): Make dependencies mirror the include files used.
1247 (i386-c.o): New file, add dependencies.
1249 * config/i386/i386-protos.h (override_options): Add bool
1251 (ix86_valid_option_attribute_tree): Add declaration.
1252 (ix86_target_macros): Ditto.
1253 (ix86_register_macros): Ditto.
1255 * config/i386/i386.c (ix86_tune_features): Move initialization of
1256 the target masks to initial_ix86_tune_features to allow functions
1257 to have different target options. Make type unsigned char,
1258 instead of unsigned int.
1259 (initial_ix86_tune_features): New static vector to hold processor
1260 masks for the tune variables.
1261 (ix86_arch_features): Move initialization of the target masks to
1262 initial_ix86_arch_features to allow functions to have different
1263 target options. Make type unsigned char, instead of unsigned
1265 (initial_ix86_arch_features): New static vector to hold processor
1266 masks for the arch variables.
1267 (enum ix86_function_specific_strings): New enum to describe the
1268 string options used for attribute((option(...))).
1269 (ix86_target_string): New function to return a string that
1270 describes the target options.
1271 (ix86_debug_options): New function to print the current options in
1273 (ix86_function_specific_save): New function hook to save the
1274 function specific global variables in the cl_target_option
1276 (ix86_function_specific_restore): New function hook to restore the
1277 function specific variables from the cl_target_option structure to
1278 the global variables.
1279 (ix86_function_specific_print): New function hook to print the
1280 target specific options in the cl_target_option structure.
1281 (ix86_valid_option_attribute_p): New function hook to validate
1282 attribute((option(...))) arguments.
1283 (ix86_valid_option_attribute_tree): New function that is common
1284 code between attribute((option(...))) and #pragma GCC option
1285 support that parses the options and returns a tree holding the
1287 (ix86_valid_option_attribute_inner_p): New helper function for
1288 ix86_valid_option_attribute_tree.
1289 (ix86_can_inline_p): New function hook to decide if one function
1290 can inline another on a target specific basis.
1291 (ix86_set_current_function); New function hook to switch target
1292 options if the user used attribute((option(...))) or #pragma GCC
1294 (ix86_tune_defaulted): Move to static file scope from
1296 (ix86_arch_specified): Ditto.
1297 (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
1299 (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
1300 (OPTION_MASK_ISA_ABM_SET): Ditto.
1301 (OPTION_MASK_ISA_POPCNT_SET): Ditto.
1302 (OPTION_MASK_ISA_CX16_SET): Ditto.
1303 (OPTION_MASK_ISA_SAHF_SET): Ditto.
1304 (OPTION_MASK_ISA_AES_UNSET): Ditto.
1305 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
1306 (OPTION_MASK_ISA_ABM_UNSET): Ditto.
1307 (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
1308 (OPTION_MASK_ISA_CX16_UNSET): Ditto.
1309 (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
1310 (struct ptt): Move to static file scope from override_options.
1311 (processor_target_table): Ditto.
1313 (ix86_handle_option): Add support for options that are now isa
1315 (override_options): Add support for declaring functions that
1316 support different target options than were specified on the
1317 command line. Move struct ptt, processor_target_table, cpu_names,
1318 ix86_tune_defaulted, ix86_arch_specified to static file scope.
1319 Add bool argument. Fix up error messages so the appropriate error
1320 is given for either command line or attribute.
1321 (ix86_previous_fndecl): New static to remember previous function
1322 declaration to see if we need to change target options.
1323 (ix86_builtins_isa): New array to record the ISA of each builtin
1325 (def_builtin): Always create the builtin function, even if the
1326 current ISA doesn't support it.
1327 (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
1328 tests for those builtins.
1329 (ix86_init_builtins): Remove TARGET_MMX test for calling
1330 ix86_init_mmx_sse_builtins.
1331 (ix86_expand_builtin): If the current ISA doesn't support a given
1332 builtin, signal an error.
1333 (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
1334 (TARGET_SET_CURRENT_FUNCTION): Ditto.
1335 (TARGET_OPTION_SAVE): Ditto.
1336 (TARGET_OPTION_RESTORE): Ditto.
1337 (TARGET_OPTION_PRINT): Ditto.
1338 (TARGET_CAN_INLINE_P): Ditto.
1340 2008-07-22 Rafael Avila de Espindola <espindola@google.com>
1342 * c-typeck.c (build_external_ref): Don't call assemble_external.
1343 * final.c (output_operand): Call assemble_external.
1345 2008-07-21 DJ Delorie <dj@redhat.com>
1347 * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
1348 (TARGET_HARD_REGNO_SCRATCH_OK): Define.
1350 2008-07-21 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1352 * config/spu/spu.md ("div<mode>3"): Convert into expander, move
1353 original insn and splitter contents into ...
1354 ("*div<mode>3_fast"): ... this new pattern. Enable only if
1355 flag_unsafe_math_optimizations. Add dummy scratch register.
1356 ("*div<mode>3_adjusted"): New insn and splitter. Enable only if
1357 !flag_unsafe_math_optimizations. Returns number with next
1358 highest magnitude if this is still less or equal to the true
1359 quotient in magnitude.
1361 2008-07-21 Rafael Avila de Espindola <espindola@google.com>
1363 * Makefile.in: Replace toplev.h with TOPLEV_H.
1364 * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
1365 * c-lex.c (fe_file_change): Don't set in_system_header.
1366 * c-parser.c (c_token): Remove in_system_header.
1367 (c_lex_one_token): Don't set in_system_header.
1368 (c_parser_set_source_position_from_token): Don't set in_system_header.
1369 * diagnostic.c (diagnostic_report_diagnostic): Use location from
1372 * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
1373 * flags.h (in_system_header): Remove.
1374 * function.c (saved_in_system_header): Remove.
1375 (push_cfun): Don't set in_system_header.
1376 (pop_cfun): Don't set in_system_header.
1377 (push_struct_function): Don't set in_system_header.
1378 * input.h (expanded_location): Add sysp.
1379 (in_system_header_at): New.
1380 (in_system_header): New.
1381 * toplev.c (in_system_header): Remove.
1382 * toplev.h: Include input.h
1384 * tree-cfg.c (execute_warn_function_return): Call warning_at.
1385 * tree-ssa.c (warn_uninit): Call warning_at.
1386 (warn_uninitialized_var): Update calls to warn_uninit.
1387 (warn_uninitialized_phi): Update calls to warn_uninit.
1388 * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
1389 (expand_location): Initialize xloc.sysp.
1390 * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
1391 (tree_decl_with_vis): Remove in_system_header_flag.
1393 2008-07-21 Andreas Krebbel <krebbel1@de.ibm.com>
1396 * recog.c (asm_operand_ok): Change the order of the extra
1397 memory constraint checks.
1399 2008-07-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
1402 * tree-switch-conversion.c (build_one_array): Call
1403 varpool_mark_needed_node and varpool_finalize_decl
1404 instead of assemble_variable.
1406 2008-07-19 Jan Hubicka <jh@suse.cz>
1408 * cgraph.c (cgraph_add_new_function): Do early local passes.
1409 * tree-nrv.c (gate_pass_return_slot): New gate.
1410 (pass_nrv): Add the gate.
1411 * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
1413 (coalesce_ssa_name): Coalesce SSA names.
1414 * tree-ssa-live.c (remove_unused_locals): Be more conservative when
1415 not optimizing so unused user vars remains visible.
1416 * common.opt (flag_tree_ter): Always enable by default.
1417 * tree-ssa-ter.c: Include flags.h
1418 (is_replaceable_p): Check that locations match; when aliasing is missing
1419 be conservative about loads.
1420 * tree-optimize.c (gate_init_datastructures): Remove.
1421 (pass_init_datastructures): New.
1422 * passes.c: Reorder passes so we always go into SSA.
1424 2008-07-19 Jan Hubicka <jh@suse.cz>
1426 * doc/extend.texi (flatten attribute): Remove note about unit-at-a-time
1427 * doc/invoke.texi (--combine): Likewise.
1428 (-finline-functions-called-once): Update levels when enabled.
1429 (-funit-at-a-time): Document new behaviour.
1430 (-ftoplevel-reorder): Document that it is enabled -O0 and imply
1431 -fno-section-anchors when disabled explicitly.
1432 (inline params): They are not ignored now.
1433 (precompiled headers): Remove unit-at-a-time as being incompatible.
1434 * opts.c (decode_options): Handle unit-at-a-time as alias;
1435 imply -fno-section-anchors when toplevel reorder is disabled
1437 * common.opt (ftoplevel-reorder): Set default value to 2.
1438 (funit-at-a-time): Set default value to 1.
1439 * config/rs6000/rs6000.c (optimization_options): Set section anchors
1442 2008-07-19 Jan Hubicka <jh@suse.cz>
1444 * builtins.c (expand_builtin_int_roundingfn,
1445 expand_builtin_int_roundingfn_2): Do not take subtarget argument;
1448 2008-07-19 Richard Guenther <rguenther@suse.de>
1451 * tree-ssa-sccvn.h (get_constant_value_id): Declare.
1452 * tree-ssa-sccvn.c (get_constant_value_id): New function.
1453 * tree-ssa-pre.c (get_expr_value_id): For newly created
1454 constant value-ids make sure to add the expression to its
1457 2008-07-19 Jakub Jelinek <jakub@redhat.com>
1460 * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
1461 return value of the builtin is ignored.
1463 2008-07-19 Olivier Hainque <hainque@adacore.com>
1465 * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
1466 bits, a C conformant malloc implementation has to provide.
1467 * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
1469 2008-07-19 Joseph Myers <joseph@codesourcery.com>
1473 * reload.c (find_reloads_subreg_address): Only reload address if
1474 reloaded == 0, not for reloaded != 1.
1477 2008-07-16 Joseph Myers <joseph@codesourcery.com>
1478 * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
1479 (m32c_legitimate_address_p): Handle "++rii" addresses created by
1480 m32c_legitimize_reload_address.
1482 2008-07-15 Kaz Kojima <kkojima@gcc.gnu.org>
1483 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
1484 (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
1486 2008-07-19 Olivier Hainque <hainque@adacore.com>
1488 * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
1489 argument, saying whether nested array are to be collapsed
1490 into a single array type DIE with multiple subscripts.
1491 (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
1492 issues, centralize the nested array types collapsing control and
1493 disable the transformation for Ada.
1495 2008-07-18 Uros Bizjak <ubizjak@gmail.com>
1498 * config/i386/i386.md (x86_64_shift_adj_1): Rename from
1500 (x86_64_shift_adj_2): New expander.
1501 (x86_64_shift_adj_3): Ditto.
1502 * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
1503 to split TImode operands.
1504 (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
1505 (ix86_split_lshr): Ditto.
1507 2008-07-18 Kris Van Hees <kris.van.hees@oracle.com>
1509 * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
1510 and __CHAR32_TYPE__.
1511 * c-typeck.c (digest_init): Support char16_t and char32_t.
1512 (set_nonincremental_init_from_string): Idem.
1514 2008-07-18 H.J. Lu <hongjiu.lu@intel.com>
1517 * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
1518 PREFERRED_STACK_BOUNDARY.
1519 * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
1521 2008-07-18 H.J. Lu <hongjiu.lu@intel.com>
1524 * function.c (locate_and_pad_parm): Cap boundary earlier.
1526 2008-07-17 Julian Brown <julian@codesourcery.com>
1528 * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
1529 no-op for targets which don't use DLLs.
1531 2008-07-17 Martin Jambor <mjambor@suse.cz>
1533 * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
1534 that nodes are relevant by examining the node->analyzed flag.
1535 (ipcp_init_stage): Check which nodes are relevant, assert that the
1536 relevant ones are also required.
1537 (ipcp_propagate_stage): Check on the side arrays are properly
1539 (ipcp_print_all_jump_functions): Make sure not to touch any node
1540 that is not analyzed or an edge that does not have a corresponding
1541 entry in the on-the-side vectors.
1542 (ipcp_function_scale_print): Likewise.
1543 (ipcp_update_callgraph): Check that the node is relevant.
1544 (ipcp_insert_stage): Check that the node is relevant. Check there is
1545 an info for every node and edge.
1546 * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
1547 (ipa_print_all_tree_maps): Likewise and a new variable info.
1548 (ipa_print_all_params_modified): Likewise.
1549 * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
1551 2008-07-17 Roman Zippel <zippel@linux-m68k.org>
1554 * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
1556 2008-07-17 Paolo Bonzini <bonzini@gnu.org>
1558 PR rtl-optimization/36753
1559 * fwprop.c (use_killed_between): Don't shortcut
1560 single-definition global registers.
1562 2008-07-16 Jan Hubicka <jh@suse.cz>
1564 * cgraph.h (varpool_empty_needed_queue): Declare.
1565 * cgraphunit.c (output_in_order): Mark all variables as needed;
1567 * varpool.c (varpool_assemble_node): Update debug queue.
1568 (varpool_assemble_pending_decls): Don't do it here.
1569 (varpool_empty_needed_queue): New function.
1571 2008-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1573 * recog.c (peephole2_optimize): Fix formatting.
1575 2008-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1577 * c-pch.c (get_ident): Avoid C++ keywords.
1578 * combine-stack-adj.c (single_set_for_csa): Likewise.
1579 * final.c (asm_insn_count, final_scan_insn, alter_subreg,
1580 output_asm_insn): Likewise.
1581 * reload.c (push_secondary_reload, find_reusable_reload,
1582 push_reload, combine_reloads, find_reloads,
1583 debug_reload_to_stream): Likewise.
1584 * reload.h (struct reload): Likewise.
1585 * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
1586 allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
1587 emit_output_reload_insns): Likewise.
1588 * targhooks.c (default_secondary_reload): Likewise.
1589 * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
1591 2008-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1593 * recog.c (validate_change_1, validate_change,
1594 validate_unshare_change, validate_replace_rtx_1, struct
1595 funny_match, constrain_operands, peephole2_optimize): Avoid C++
1597 * reload.c (push_secondary_reload, secondary_reload_class,
1598 scratch_reload_class, find_valid_class, find_reusable_reload,
1599 push_reload, find_dummy_reload, find_reloads_address_1,
1600 find_reloads_address_part, find_equiv_reg): Likewise.
1601 * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
1602 choose_reload_regs): Likewise.
1603 * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
1605 * rtlhooks.c (gen_lowpart_if_possible): Likewise.
1606 * sched-ebb.c (add_deps_for_risky_insns): Likewise.
1607 * sched-rgn.c (concat_INSN_LIST): Likewise.
1608 * stor-layout.c (mode_for_size, mode_for_size_tree,
1609 smallest_mode_for_size): Likewise.
1611 2008-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1613 * cfg.c (dump_reg_info): Avoid C++ keywords.
1614 * dwarf2asm.c (dw2_force_const_mem,
1615 dw2_asm_output_encoded_addr_rtx): Likewise.
1616 * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
1617 * expmed.c (expand_shift): Likewise.
1618 * global.c (find_reg): Likewise.
1619 * graph.c (draw_edge): Likewise.
1620 * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
1621 * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
1622 widen_clz, widen_bswap, expand_parity, expand_unop,
1623 emit_cmp_and_jump_insn_1): Likewise.
1624 * postreload.c (reload_cse_simplify_operands): Likewise.
1625 * ra.h (add_neighbor): Likewise.
1626 * reg-stack.c (remove_regno_note, change_stack): Likewise.
1627 * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
1628 record_reg_classes, copy_cost, record_address_regs,
1629 invalid_mode_change_p): Likewise.
1630 * regrename.c (regrename_optimize, scan_rtx_reg,
1631 dump_def_use_chain, find_oldest_value_reg,
1632 replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
1634 2008-07-16 David Edelsohn <edelsohn@gnu.org>
1636 * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
1637 MASK_POWERPC64 for power4 in previous commit.
1639 2008-07-16 Olivier Hainque <hainque@adacore.com>
1641 * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
1642 instead of bare conversion to cast const-ness away.
1644 2008-07-16 Anatoly Sokolov <aesok@post.ru>
1646 * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
1647 XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
1648 * config/xtensa/xtensa.c (xtensa_function_value): New function.
1649 (TARGET_FUNCTION_VALUE): Define.
1651 2008-07-16 David Edelsohn <edelsohn@gnu.org>
1653 * config/rs6000/rs6000.c (processor_target_table): Add
1654 MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
1656 2008-07-16 Joseph Myers <joseph@codesourcery.com>
1659 * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
1660 (m32c_legitimate_address_p): Handle "++rii" addresses created by
1661 m32c_legitimize_reload_address.
1663 2007-07-16 Rafael Avila de Espindola <espindola@google.com>
1665 * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
1666 DECL_IN_SYSTEM_HEADER in sync.
1668 2008-07-15 Daniel Berlin <dberlin@dberlin.org>
1670 * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
1671 * tree-ssa-pre.c (pre_expr_eq): Ditto
1672 (get_constant_for_value_id): Take a type as an argument.
1673 (fully_constant_expression): Pass in type.
1674 (find_or_generate_expression): Short circuit constant case.
1675 (create_expression_by_pieces): Remove special casing of
1677 (do_regular_insertion): Short circuit constant case.
1678 (do_partial_partial_insertion): Ditto.
1680 2008-07-15 Kaz Kojima <kkojima@gcc.gnu.org>
1683 * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
1685 2008-07-15 Bob Wilson <bob.wilson@acm.org>
1687 * config/xtensa/libgcc-xtensa.ver: New file.
1688 * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
1690 2008-07-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1692 * df-problems.c (df_set_note): Avoid C++ keywords.
1693 * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
1694 * dse.c (record_store, remove_useless_values): Likewise.
1695 * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
1696 gen_reg_rtx_offset, operand_subword, change_address_1,
1697 change_address, adjust_address_1, offset_address,
1698 widen_memory_access, emit_copy_of_insn_after): Likewise.
1699 * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
1700 * fwprop.c (should_replace_address, propagate_rtx_1,
1701 propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
1703 * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
1704 gcse_emit_move_after, update_ld_motion_stores): Likewise.
1705 * lcm.c (compute_insert_delete, pre_edge_lcm,
1706 compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
1707 * lower-subreg.c (resolve_reg_notes): Likewise.
1708 * mode-switching.c (optimize_mode_switching): Likewise.
1710 2008-07-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1712 * bt-load.c (add_btr_def, migrate_btr_def,
1713 branch_target_load_optimize): Avoid C++ keywords.
1714 * caller-save.c (insert_restore, insert_save, insert_one_insn):
1716 * combine.c (subst, simplify_set, make_extraction,
1717 make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
1718 * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
1719 fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
1721 2008-07-15 Richard Guenther <rguenther@suse.de>
1724 * c-common.c (strict_aliasing_warning): Do not warn for
1725 TYPE_REF_CAN_ALIAS_ALL pointers.
1726 (c_common_get_alias_set): may_alias types are not special.
1727 * tree.c (build_pointer_type_for_mode): Look up the may_alias
1728 attribute and set can_ref_all accordingly.
1729 (build_reference_type_for_mode): Likewise.
1730 * doc/extend.texi (may_alias): Clarify.
1732 2008-07-15 Kaz Kojima <kkojima@gcc.gnu.org>
1735 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
1736 (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
1738 2008-07-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
1741 * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
1742 gcc_assert, instead call output_operand_lossage.
1744 2008-07-15 Kai Tietz <kai.tietz@onevision.com>
1746 * builtins.c (std_canonical_va_list): Treat structure based
1749 2008-07-15 Ben Elliston <bje@au.ibm.com>
1751 * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
1753 2007-07-14 Rafael Avila de Espindola <espindola@google.com>
1755 * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
1758 2008-07-14 Jan Hubicka <jh@suse.cz>
1760 * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
1761 * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
1762 fix predicates and constraints.
1763 * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
1764 * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
1766 2008-07-14 Doug Kwan <dougkwan@google.com>
1768 * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
1769 additional option file arm/eabi.opt.
1770 * config/arm/eabi.h (File): New configuration file for EABI targets.
1771 * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
1772 SUBSUBTARGET_EXTRA_SPECS.
1773 (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
1774 * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
1775 from STARTFILE_SPEC so that it can be referenced in an override.
1776 (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
1777 (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
1778 can be referenced in an override.
1779 (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
1780 * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
1781 so that it can be referenced in an override.
1782 (LINK_SPEC): Use BPABI_LINK_SPEC.
1783 * config/arm/eabi.opt (File): New.
1785 2008-07-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1787 * Makefile.in (TARGET_DEF_H): Add targhooks.h.
1788 (FIXED_VALUE_H): New variable.
1789 (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
1790 input.h, fixed-value.h.
1791 (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
1792 (BASIC_BLOCK_H): Use $(BITMAP_H).
1793 (FUNCTION_H): Add varray.h.
1794 (IPA_REFERENCE_H): Use $(BITMAP_H).
1795 (CGRAPH_H): Add $(BASIC_BLOCK_H).
1796 (DF_H): Use $(BITMAP_H).
1797 (GGC_H): Add statistics.h.
1799 (INSN_ATTR_H): Use it.
1800 (SYSTEM_H): Add safe-ctype.h, filenames.h.
1802 (SYMTAB_H): Add $(OBSTACK_H).
1803 (CPP_INTERNAL_H): New.
1804 (TREE_DUMP_H): Add tree-pass.h.
1805 (TREE_FLOW_H): Use $(BITMAP_H)
1806 (PRETTY_PRINT_H): Use $(INPUT_H).
1807 (EBITMAP_H): Rename from typo-ed EBIMAP_H.
1810 (many object files): Fix lots of header dependencies throughout.
1812 2008-07-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1814 * Makefile.in (write_entries_to_file, write_entries_to_file_split):
1816 (s-gtyp-input): Use them to write tmp-gi.list.
1817 (echo_to_gi.list): Remove.
1819 2008-07-14 Richard Guenther <rguenther@suse.de>
1821 * tree-ssa-sccvn.c (pre_info): Remove.
1822 (switch_to_PRE_table): Likewise.
1823 (free_scc_vn): Do not clear SSA_NAME_VALUE. Do not free pre_info.
1824 (set_hashtable_value_ids): Do not create value-ids for the
1826 (run_scc_vn): Remove double test. Remove bogus special-case
1827 in value-number printing.
1828 * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
1829 * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
1831 * tree-flow-inline.h (get_value_handle): Remove.
1832 * tree-flow.h (get_value_handle): Remove.
1834 2008-07-14 Martin Jambor <mjambor@suse.cz>
1836 * tree-switch-conversion.c (gen_inbound_check): Make sure the type
1837 in which we generate arithmetics is not a subrange.
1839 2008-07-14 Martin Jambor <mjambor@suse.cz>
1841 * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
1843 2008-07-14 Richard Guenther <rguenther@suse.de>
1845 * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
1847 2008-07-14 Andreas Krebbel <krebbel1@de.ibm.com>
1850 * config/s390/s390.c: (s390_secondary_reload): Add a secondary
1851 reload for symbol refs moved to r0 with -fPIC.
1852 (legitimize_pic_address): Use the target register as temporary
1854 (emit_symbolic_move): Adjust comment.
1855 * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
1858 2008-07-14 Ben Elliston <bje@au.ibm.com>
1860 * c-common.h (C_CPP_HASHNODE): New macro.
1861 * coretypes.h (struct cpp_token): Forward declare.
1862 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
1863 the context-sensitive keyword method.
1864 * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
1865 __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
1866 expand_bool_pixel): New.
1867 (altivec_categorize_keyword): New function.
1868 (init_vector_keywords): New function.
1869 (rs6000_macro_to_expand): Likewise.
1870 (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
1871 compiling an ISO C dialect.
1873 2008-07-13 Daniel Berlin <dberlin@dberlin.org>
1875 * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
1876 (create_expression_by_pieces): Fix typo.
1877 (do_regular_insertion): Use debug counter here too.
1879 2008-07-14 Hans-Peter Nilsson <hp@axis.com>
1882 * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
1883 CONST_OK_FOR_LETTER_P. All port-local users changed.
1884 (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
1885 implement Kp matching power-of-two.
1886 (CONSTRAINT_LEN): Define to match.
1887 * config/cris/cris.md: Replace all use of constraint K with Kc.
1888 ("*btst*): Use Kp for operand 0 of last alternative.
1890 2008-07-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1893 * tree-call-cdce.c (check_target_format): Accept MIPS single, double
1896 2008-07-13 Jan Hubicka <jh@suse.cz>
1898 * tree.c (decl_assembler_name_equal): Expect assembler name of decl
1901 2008-07-13 Richard Guenther <rguenther@suse.de>
1904 * langhooks.c (lhd_print_error_function): Deal with recursive
1907 2008-07-12 Jan Hubicka <jh@suse.cz>
1909 * cgraph.c (assembler_name_hash): New static var.
1910 (hash_node_by_assembler_name, eq_assembler_name): New.
1911 (cgraph_node_for_asm): Use hashtable.
1912 (cgraph_remove_node): Maintain hashtable.
1913 (change_decl_assembler_name): Sanity check that names are not changing
1914 after aliasing was processed.
1915 * cgraph.h (varpoon_node): Add next GGC marker.
1916 * tree.c (decl_assembler_name_equal): Constify.
1917 (decl_assembler_name_hash): New.
1918 * tree.h (decl_assembler_name_equal): Constify.
1919 (decl_assembler_name_hash): Update.
1921 2008-07-12 David Daney <ddaney@avtrex.com>
1923 * config/mips/driver-native.c (host_detect_local_cpu): Handle
1926 2008-07-12 Richard Sandiford <rdsandiford@googlemail.com>
1928 * doc/md.texi: Document the MIPS "v" constraint.
1929 * config/mips/mips.h (reg_class): Revert last change.
1930 (REG_CLASS_NAMES): Likewise.
1931 (REG_CLASS_CONTENTS): Likewise.
1932 * config/mips/mips.c (mips_regno_to_class): Likewise.
1933 * config/mips/constraints.md (v): Likewise, but add documentation.
1934 Add a comment to say that this constraint should not be used in
1937 2008-07-11 DJ Delorie <dj@redhat.com>
1939 * config/h8300/h8300.md (length): Fix branch offset limit.
1941 2008-07-11 Anatoly Sokolov <aesok@post.ru>
1943 * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
1944 * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
1945 (avr_hard_regno_scratch_ok): New function.
1946 (TARGET_HARD_REGNO_SCRATCH_OK): Define.
1947 * config/avr/avr.md (all peepholes that request a scratch register):
1948 Remove avr_peep2_scratch_safe use.
1950 2008-07-11 Tom Tromey <tromey@redhat.com>
1951 Ian Lance Taylor <iant@google.com>
1953 * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
1954 (struct c_common_resword): Define.
1955 (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
1956 (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
1957 (c_common_reswords, num_c_common_reswords): Declare.
1958 * c-common.c (c_common_reswords): New global const array.
1959 (num_c_common_reswords): New const int.
1960 * c-parser.c (struct resword, reswords): Don't define.
1961 (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
1962 (c_parse_init): Clarify mask code. Use c_common_reswords rather
1963 than reswords. If warning about C++ keywords, give them a special
1965 (c_lex_one_token): Warn about C++ keywords. Call
1966 objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
1967 (c_parser_external_declaration): Look for RID_xxx rather than
1968 RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
1969 (c_parser_statement_after_labels): Likewise.
1970 (c_parser_objc_class_instance_variables): Likewise.
1971 (c_parser_objc_class_declaration): Likewise.
1972 (c_parser_objc_try_catch_statement): Likewise.
1973 * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
1974 (declspecs_add_type): Likewise.
1976 2008-07-11 Angelo Graziosi <angelo.graziosi@alice.it>
1978 * ggc-page.c (alloc_page):
1979 Substituting xmalloc, xcalloc with
1980 XNEWVEC and XCNEWVAR macros which add the
1983 2008-07-11 Richard Guenther <rguenther@suse.de>
1985 PR tree-optimization/36765
1986 * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
1987 aliases from HEAP vars to SMTs.
1989 2008-07-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1991 * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
1992 * configure.ac (loose_warn): Move -Wc++-compat from here...
1993 (strict_warn): ...to here.
1994 * configure: Regenerate.
1996 2008-07-10 Joseph Myers <joseph@codesourcery.com>
1998 * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
1999 i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
2000 m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
2001 rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
2002 excluding more specific h8300-*-* and sh-*-* targets.
2004 2008-07-10 Daniel Berlin <dberlin@dberlin.org>
2006 * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
2008 (execute_pre): Call loop_optimizer_finalize in early exit.
2010 2008-07-10 Jakub Jelinek <jakub@redhat.com>
2013 * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
2014 uids in the bitmap, not just VAR_DECL uids.
2016 PR rtl-optimization/36419
2017 * combine-stack-adj.c (adjust_frame_related_expr): New function.
2018 (combine_stack_adjustments_for_block): Call it if needed. Delete
2020 * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
2021 DW_CFA_GNU_args_size if CSA pass merged some adjustments into
2022 prologue sp adjustment.
2024 2008-07-10 Peter Maydell <pmaydell@chiark.greenend.org.uk>
2027 * opts.c (print_ignored_options): Report postponed diagnostics for
2028 unknown -Wno-* options as warnings, not errors.
2029 (postpone_unknown_option_error): Renamed to...
2030 (postpone_unknown_option_warning): ... this.
2032 2008-07-09 Doug Kwan <dougkwan@google.com>
2035 2008-07-08 Doug Kwan <dougkwan@google.com>
2037 * config/arm/arm.opt (mandroid): New option.
2038 * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
2039 (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
2041 (CC1PLUS_SPEC): Same.
2043 (STARTFILE_SPEC): Same.
2044 (ENDFILE_SPEC): Same.
2045 (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
2048 2008-07-09 Richard Sandiford <rdsandiford@googlemail.com>
2051 * config/mips/mips.h (reg_class): Remove V1_REG.
2052 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
2053 * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
2055 (mips_get_tp): New function.
2056 (mips_legitimize_tls_address): Use it.
2057 * config/mips/constraints.md (v): Delete.
2058 * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
2059 (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
2060 After reload, split into a move and ...
2061 (*tls_get_tp_<mode>_split): ...this new instruction.
2063 2008-07-09 David Daney <ddaney@avtrex.com>
2065 * config/mips/driver-native.c: Include coretypes.h and tm.h.
2067 2008-07-09 Jakub Jelinek <jakub@redhat.com>
2069 * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
2070 (push_gimplify_context): Don't allocate temp_htab nor c itself here.
2072 (pop_gimplify_context): Check c->temp_htab instead of optimize whether
2073 htab_delete should be called. Don't free c.
2074 (lookup_tmp_var): Create temp_htab lazily.
2075 (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
2076 gimplify_body, force_gimple_operand): Adjust push_gimplify_context
2078 * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
2079 lower_omp_ordered, lower_omp_critical, lower_omp_for,
2080 create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
2081 * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
2082 * tree-sra.c (generate_element_init): Likewise.
2083 * tree-mudflap.c (execute_mudflap_function_ops,
2084 execute_mudflap_function_decls): Likewise.
2085 * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
2086 * tree-gimple.h (struct gimplify_ctx): New type.
2087 (push_gimplify_context): Adjust prototype.
2089 2008-07-09 Daniel Berlin <dberlin@dberlin.org>
2091 * tree-ssa-pre.c (phi_translate_1): Update placement of
2094 2008-07-09 Anatoly Sokolov <aesok@post.ru>
2096 * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
2097 * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
2098 (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
2099 * targhooks.c (default_hard_regno_scratch_ok): New function.
2100 * targhooks.h (default_hard_regno_scratch_ok): Declare function.
2101 * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
2102 * recog.c: Include "target.h".
2103 (peep2_find_free_register): Add check for global regs. Add target
2105 * Makefile.in (recog.o): Depend on target.h.
2107 2008-07-09 Kaz Kojima <kkojima@gcc.gnu.org>
2109 * config/sh/sh.c (sh_canonical_va_list_type): New.
2110 (TARGET_CANONICAL_VA_LIST_TYPE): Define.
2112 2008-07-09 Raksit Ashok <raksit@google.com>
2114 * doc/invoke.texi (Option Summary): Mention new option
2115 -Wdisallowed-function-list=...
2116 (Warning Options): Document -Wdisallowed-function-list=...
2117 * common.opt (Wdisallowed-function-list=): New flag.
2118 * flags.h (warn_disallowed_functions): External definition of new
2119 boolean warning flag.
2120 (warn_if_disallowed_function_p): Declare new function.
2121 * opts.c (warning_disallowed_functions): New static variable.
2122 (warn_disallowed_functions): New boolean warning flag.
2123 (warn_if_disallowed_function_p): New function.
2124 (add_comma_separated_to_vector): Rename
2125 add_instrument_functions_exclude_list to this.
2126 (common_handle_option): Handle new option. Rename calls to
2127 add_instrument_functions_exclude_list into calls to
2128 add_comma_separated_to_vector.
2129 * c-parser.c (c_parser_postfix_expression_after_primary): New warning
2130 based on flag warn_disallowed_functions.
2132 2008-07-09 Christian Bruel <christian.bruel@st.com>
2134 * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
2135 instead of get_attr_length.
2137 2008-07-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2139 * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
2141 * genemit.c (gen_insn): Likewise.
2142 * gengtype.c (note_def_vec): Likewise.
2143 * gengtype.h (note_def_vec): Likewise.
2144 * genoutput.c (struct data, output_insn_data, process_template,
2145 gen_expand, gen_split, note_constraint): Likewise.
2146 * genrecog.c (new_decision, add_to_sequence, factor_tests,
2147 make_insn_sequence): Likewise.
2148 * gensupport.c (record_insn_name): Likewise.
2150 2008-07-08 Doug Kwan <dougkwan@google.com>
2152 * config/arm/arm.opt (mandroid): New option.
2153 * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
2154 (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
2156 (CC1PLUS_SPEC): Same.
2158 (STARTFILE_SPEC): Same.
2159 (ENDFILE_SPEC): Same.
2160 (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
2163 2008-07-08 Raksit Ashok <raksit@google.com>
2165 * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
2166 (set_storage_via_setmem): Fix expected_align parameter.
2167 * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
2168 missing from the list.
2169 * doc/md.texi (movmem): Explicitly state that expected alignment is
2170 to be expressed in bytes.
2171 (setmem): Explicitly state that expected alignment is to be expressed
2174 2008-07-08 Joseph Myers <joseph@codesourcery.com>
2176 * reload.c (find_reloads_subreg_address): Do not require validity
2177 of address in original mode before reloading address.
2179 2008-07-07 Tianwei Sheng <tianweis@google.com>
2181 * df-core.c (df_remove_problem): Adjust the access to avoid out of
2182 bounds array access.
2184 2008-07-08 Jakub Jelinek <jakub@redhat.com>
2186 * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
2188 2008-07-05 Daniel Berlin <dberlin@dberlin.org>
2190 Fix PR tree-optimization/23455
2191 Fix PR tree-optimization/35286
2192 Fix PR tree-optimization/35287
2193 * Makefile.in (OBJS-common): Remove tree-vn.o.
2194 (tree-vn.o): Remove.
2195 * dbgcnt.def: Add treepre_insert debug counter.
2196 * gcc/tree-flow.h (add_to_value): Updated for other changes.
2197 (debug_value_expressions): Ditto.
2198 (print_value_expressions): Ditto.
2199 * tree-pretty-print.c (dump_generic_node): Updated for
2200 VALUE_HANDLE removal.
2201 * tree-ssa-dom.c (record_equality): Ditto.
2202 (cprop_operand): Ditto.
2203 (lookup_avail_expr): Ditto.
2204 * tree-ssa-threadedge.c
2205 (record_temporary_equivalences_from_stmts_at_dest): Ditto.
2206 (simplify_control_stmt_condition): Ditto.
2207 * tree.c (tree_code_size): Ditto.
2208 (tree_node_structure): Ditto.
2209 (iterative_hash_expr): Ditto.
2211 * tree.h (VALUE_HANDLE_ID): Ditto.
2212 (VALUE_HANDLE_EXPR_SET): Ditto.
2213 (struct tree_value_handle): Ditto.
2214 (union tree_node): Ditto.
2215 * treestruct.def: Ditto.
2216 * tree-vn.c: Removed.
2217 * tree-ssa-pre.c: Rewritten entirely.
2218 * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
2219 (constant_value_ids): Ditto.
2220 (vn_nary_op_t): Moved to header.
2222 (vn_reference_op_t): Ditto
2223 (vn_reference_t): Ditto.
2224 (next_value_id): New variable.
2225 (VN_INFO): Add an assert.
2226 (vn_constant_eq): New function.
2227 (vn_constant_hash): Ditto.
2228 (get_or_alloc_constant_value_id): Ditto.
2229 (value_id_constant_p): Ditto.
2230 (vn_reference_compute_hash): De-staticify.
2231 (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
2232 Disable some code with a FIXME. Remove VALUE_HANDLE use.
2233 (valueize_refs): Update opcode if it changes from ssa name to constant.
2234 (vn_reference_lookup_1): Add new argument.
2235 (vn_reference_lookup): Ditto.
2236 (vn_reference_lookup_pieces): New function.
2237 (vn_reference_insert): Add return type. Modify to deal with value ids.
2238 (vn_reference_insert_pieces): New function.
2239 (vn_nary_op_compute_hash): De-staticify.
2240 (vn_nary_op_eq): Ditto.
2241 (vn_nary_op_lookup_pieces): New function.
2242 (vn_nary_op_lookup): Add new argument.
2243 (vn_nary_op_insert_pieces): New function.
2244 (vn_nary_op_insert): Add return type. Modify to deal with value ids.
2245 (vn_phi_insert): Ditto.
2246 (visit_unary_op): Update for callee changes.
2247 (visit_binary_op): Ditto.
2248 (visit_reference_op_load): Ditto.
2249 (visit_reference_op_store): Ditto.
2250 (init_scc_vn): Init next_value_id, constant_to_value_id and
2252 (free_scc_vn): Free them.
2253 (set_hashtable_value_ids): New function.
2254 (run_scc_vn): Use it.
2255 (get_max_value_id): New function.
2256 (get_next_value_id): Ditto.
2257 (expressions_equal_p): Moved from tree-vn.c
2258 (sort_vuses): Ditto.
2259 (sort_vuses_heap): Ditto.
2260 * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
2262 * tree.c (iterative_hash_hashval_t): Made non-static
2263 * tree.h (iterative_hash_hashval_t): Declare it.
2265 2008-07-08 Martin Jambor <mjambor@suse.cz>
2267 * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
2268 instead of ipa_create_node_params.
2269 (ipcp_driver): Allocate infos with ipa_check_create_node_params and
2270 ipa_check_create_edge_args, free them with
2271 free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
2273 * ipa-prop.c: Include flags.h and tree-inline.h.
2274 (ipa_node_params_vector): New variable.
2275 (ipa_edge_args_vector): New variable.
2276 (edge_removal_hook_holder): New variable.
2277 (node_removal_hook_holder): New variable.
2278 (edge_duplication_hook_holder): New variable.
2279 (node_duplication_hook_holder): New variable.
2280 (ipa_detect_param_modifications): Check for presence of modified flags.
2281 (ipa_compute_jump_functions): Check for presence of jump functions.
2282 (ipa_free_edge_args_substructures): New function.
2283 (ipa_create_node_params): Removed.
2284 (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
2285 (ipa_free_node_params_substructures): New function.
2286 (ipa_free_all_node_params): Changed to deallocate the on-the-side
2288 (ipa_edge_removal_hook): New function.
2289 (ipa_node_removal_hook): New function.
2290 (duplicate_array): New function.
2291 (ipa_edge_duplication_hook): New function.
2292 (ipa_node_duplication_hook): New function.
2293 (ipa_register_cgraph_hooks): New function.
2294 (ipa_unregister_cgraph_hooks): New function.
2295 (free_all_ipa_structures_after_ipa_cp): New function.
2297 * ipa-prop.h: Include vec.h.
2298 (ipa_node_params_t): New typedef with vector types for it.
2299 (ipa_edge_args_t): New typedef with vector types for it.
2300 (IPA_NODE_REF): Changed to access an on-the-side vector.
2301 (IPA_EDGE_REF): Changed to access an on-the-side vector.
2302 (ipa_check_create_node_params): New function.
2303 (ipa_check_create_edge_args): New function.
2305 * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h. Converted
2308 2008-07-07 Tom Tromey <tromey@redhat.com>
2310 * configure, config.in: Rebuilt.
2311 * configure.ac: Don't check for scandir or alphasort.
2313 2008-07-07 Joseph Myers <joseph@codesourcery.com>
2315 * config/arm/arm.c (arm_init_neon_builtins): Register built-in
2316 types immediately after creating them.
2318 2008-07-07 Joseph Myers <joseph@codesourcery.com>
2320 * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
2322 2008-07-07 Fernando Pereira <fernando@cs.ucla.edu>
2324 * tree-ssa-structalias.c (compute_points_to_sets): Add call to
2325 dump_constraint_graph.
2326 (dump_constraint_edge): New function.
2327 (dump_constraint_graph): New function.
2328 (debug_constraint_graph): New function.
2329 (dump_constraint): Removed useless comparison.
2330 * tree-ssa-structalias.h (dump_constraint_edge): Declare.
2331 (dump_constraint_graph): Declare.
2332 (debug_constraint_graph): Declare.
2333 * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
2335 2008-07-07 Kai Tietz <kai.tietz@onevision.com>
2337 * config/i386/i386.c (is_va_list_char_pointer): New.
2338 (ix86_va_start): Replace compare with ms_va_list_type_node
2339 by is_va_list_char_pointer.
2340 (ix86_gimplify_va_arg): Likewise.
2342 2008-07-07 Martin Jambor <mjambor@suse.cz>
2344 * cgraph.c (cgraph_edge_max_uid): New variable.
2345 (struct cgraph_edge_hook_list): New type.
2346 (struct cgraph_node_hook_list): New type.
2347 (struct cgraph_2edge_hook_list): New type.
2348 (struct cgraph_2node_hook_list): New type.
2349 (first_cgraph_edge_removal_hook): New variable.
2350 (first_cgraph_node_removal_hook): New variable.
2351 (first_cgraph_edge_duplicated_hook): New variable.
2352 (first_cgraph_node_duplicated_hook): New variable.
2353 (cgraph_add_edge_removal_hook): New function.
2354 (cgraph_remove_edge_removal_hook): New function.
2355 (cgraph_call_edge_removal_hooks): New function.
2356 (cgraph_add_node_removal_hook): New function.
2357 (cgraph_remove_node_removal_hook): New function.
2358 (cgraph_call_node_removal_hooks): New function.
2359 (cgraph_add_edge_duplication_hook): New function.
2360 (cgraph_remove_edge_duplication_hook): New function.
2361 (cgraph_call_edge_duplication_hooks): New function.
2362 (cgraph_add_node_duplication_hook): New function.
2363 (cgraph_remove_node_duplication_hook): New function.
2364 (cgraph_call_node_duplication_hooks): New function.
2365 (cgraph_create_edge): Assign to edge uid.
2366 (cgraph_remove_edge): Call edge removal hooks.
2367 (cgraph_node_remove_callees): Call edge removal hooks.
2368 (cgraph_node_remove_callers): Call edge removal hooks.
2369 (cgraph_remove_node): Call node removal hooks.
2370 (cgraph_clone_edge): Call edge duplication hooks.
2371 (cgraph_clone_node): Call node duplication hooks.
2373 * cgraph.h (cgraph_edge): New field uid.
2374 (cgraph_edge_hook): New type.
2375 (cgraph_node_hook): New type.
2376 (cgraph_2edge_hook): New type.
2377 (cgraph_2node_hook): New type.
2379 2008-07-07 Andreas Tobler <a.tobler@schweiz.org>
2381 * config.in: Regenerate.
2383 2008-07-07 Vladimir Prus <vladimir@codesourcery.com>
2385 * gcc.c (print_sysroot): New.
2386 (option_map, display_help, process_command): Handle the
2387 -print-sysroot option.
2388 (main): Print the sysroot if requested.
2389 * doc/invoke.texi (Debugging Options): Document -print-sysroot.
2391 2008-07-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2394 * unwind-pe.h (size_of_encoded_value): add attribute unused.
2396 2008-07-07 Daniel Jacobowitz <dan@codesourcery.com>
2398 * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
2399 (assign_parm_setup_block_p): Also check mode of entry_parm.
2401 2008-07-07 Richard Guenther <rguenther@suse.de>
2403 * tree-ssa-structalias.h (set_used_smts): Remove.
2404 * tree-ssa-structalias.c (used_smts): Likewise.
2405 (set_used_smts): Likewise.
2406 * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
2407 call to set_used_smts.
2409 2008-07-07 Richard Guenther <rguenther@suse.de>
2411 * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
2412 (new_var_info): Set it to false.
2413 (solution_set_add): Correctly handle pointers outside a var and
2415 (type_safe): Treat variables with is_full_var properly.
2416 (do_sd_constraint): Likewise.
2417 (do_ds_constraint): Likewise.
2418 (process_constraint): Remove zeroing offset for !use_field_sensitive.
2419 (get_constraint_for_ptr_offset): New function.
2420 (get_constraint_for_component_ref): For addresses at least include
2421 the last field of the variable. Handle is_full_vars properly.
2422 (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
2423 (handle_ptr_arith): Remove.
2424 (find_func_aliases): Simplify assignment handling.
2425 (create_function_info_for): For parameter and result varinfos set
2427 (create_variable_info_for): Set is_full_var flag whenever we
2428 just created a single varinfo for a decl.
2429 (init_alias_vars): Initialize use_field_sensitive from
2430 max-fields-for-field-sensitive parameter.
2432 2008-07-07 Richard Guenther <rguenther@suse.de>
2434 PR tree-optimization/36713
2435 * tree-flow-inline.h (is_call_used): New function.
2436 * tree-nrv.c (dest_safe_for_nrv_p): Use it.
2437 * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
2438 * tree-outof-ssa.c (create_temp): Set call-used flag if required.
2440 2008-07-07 Maxim Kuvyrkov <maxim@codesourcery.com>
2442 * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
2444 2008-07-07 Mark Shinwell <shinwell@codesourcery.com>
2446 * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
2448 2008-07-07 Maxim Kuvyrkov <maxim@codesourcery.com>
2449 Nathan Sidwell <nathan@codesourcery.com>
2451 * config.gcc (m68k-*-linux*): Add with_arch. Add sysroot-suffix.h
2452 to tm_file. Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
2454 * config/m68k/t-linux: New.
2455 * doc/install.texi: Document m68k-*-linux is now multilibbed by
2458 2008-07-07 Nathan Sidwell <nathan@codesourcery.com>
2460 * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
2461 * config/m68k/m68k-devices.def: Remove multilibs that only differ
2464 2008-07-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2466 * gcc.c (execute): Fix -Wc++-compat warning.
2468 2008-07-06 H.J. Lu <hongjiu.lu@intel.com>
2471 * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
2472 constant for little endian.
2474 2008-07-06 Richard Sandiford <rdsandiford@googlemail.com>
2476 * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
2477 mips_base_mips16 instead of TARGET_MIPS16.
2478 (mips_base_mips16): Declare.
2479 * config/mips/mips.c (mips_base_mips16): Make global.
2480 (was_mips16_p): Remove GTY marker.
2481 (was_mips16_pch_p): New variable.
2482 (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
2483 (mips_override_options): Force to non-MIPS16 mode initially.
2484 Do not complain about MIPS16 PIC incompatibilities here.
2485 Only allow -mgpopt if -mexplicit-relocs is in force for
2488 2008-07-06 Andreas Tobler <a.tobler@schweiz.org>
2490 * configure.ac: Check for caddr_t, define to char * if not defined.
2491 * configure: Regenerate.
2492 * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
2493 (mmap_gt_pch_use_address): Likewise.
2494 * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
2496 2008-07-06 Richard Guenther <rguenther@suse.de>
2498 * tree-ssa-structalias.c (struct variable_info): Remove has_union.
2499 (new_var_info): Deal with it.
2500 (solution_set_add): Likewise.
2501 (bitpos_of_field): Make signed, fix.
2502 (struct fieldoff): Remove type and decl fields. Make size field
2503 unsigned HOST_WIDE_INT. Add has_unknown_size and may_have_pointers
2505 (fieldoff_compare): Deal with it.
2506 (push_fields_onto_fieldstack): Remove has_union argument, glob
2507 adjacent non-pointer fields together.
2508 (create_function_info_for): Do not set has_union.
2509 (create_variable_info_for): Simplify.
2511 2008-07-06 Kai Tietz <kai.tietz@onevision.com>
2513 * config.gcc (extra_headers): Add cross-stdarg.h for target
2514 x86_64-*-* and i?86-*-*.
2515 * config/i386/cross-stdarg.h: New.
2516 * builtins.c (std_fn_abi_va_list): New.
2517 (std_canonical_va_list_type): New.
2518 (stabilize_va_list): Replace va_list_type_node use by
2519 mtarget.canonical_va_list_type.
2520 (gimplify_va_arg_expr): Likewise.
2521 (expand_builtin_va_copy): Replace va_list_type_node use by
2522 mtarget.fn_abi_va_list.
2523 * tree-sra.c (is_va_list_type): New helper.
2524 (decl_can_be_decomposed_p): Replace
2525 va_list_type_node use by is_va_list_type.
2526 * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
2527 * tree-stdarg.c (execute_optimize_stdarg): Likewise.
2528 * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
2529 * config/i386/i386-protos.h (ix86_get_valist_type): New.
2530 (ix86_enum_va_list): New.
2531 * config/i386/i386.c (sysv_va_list_type_node): New.
2532 (ms_va_list_type_node): New.
2533 (ix86_function_type_abi): Remove sorry.
2534 (ix86_build_builtin_va_list_abi): New.
2535 (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
2537 (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
2538 (ix86_init_builtins_va_builtins_abi): New.
2539 (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
2541 (ix86_handle_abi_attribute): New.
2542 (attribute_spec): Add sysv_abi and ms_abi.
2543 (ix86_fn_abi_va_list): New.
2544 (ix86_canonical_va_list_type): New.
2545 (ix86_enum_va_list): New.
2546 (TARGET_FN_ABI_VA_LIST): New.
2547 (TARGET_CANONICAL_VA_LIST_TYPE): New.
2548 * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
2549 * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
2550 (TARGET_CANONICAL_VA_LIST_TYPE): New.
2551 (TARGET_ENUM_VA_LIST): New.
2552 * expr.h (std_fn_abi_va_list): New.
2553 (std_canonical_va_list_type): New.
2554 * target-def.h (TARGET_FN_ABI_VA_LIST): New.
2555 (TARGET_CANONICAL_VA_LIST_TYPE): New.
2556 (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
2557 TARGET_CANONICAL_VA_LIST_TYPE.
2558 * target.h (struct gcc_target): Add fn_abi_va_list hook
2559 and canonical_va_list_type hook.
2561 2008-07-05 Andrew Pinski <andrew_pinski@playstation.sony.com>
2563 * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
2564 integral and pointer types.
2566 2008-07-04 Roger Sayle <roger@eyesopen.com>
2568 * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
2569 the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
2571 2008-07-04 Kaz Kojima <kkojima@gcc.gnu.org>
2574 * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
2576 2008-07-04 Jakub Jelinek <jakub@redhat.com>
2578 * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
2579 build_gimple_modify_stmt.
2580 (build_arrays, gen_inbound_check): Likewise. Force RHS to be
2581 gimple operand. Use fold_build* instead of build*.
2583 2008-07-04 Richard Guenther <rguenther@suse.de>
2585 * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
2586 (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
2587 properly to compute the reachability set if we do field-sensitive PTA.
2588 * invoke.texi (max-fields-for-field-sensitive): Document default.
2589 * opts.c (decode_options): Set max-fields-for-field-sensitive to
2590 100 for optimize >= 2.
2592 2008-07-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2594 * ggc-zone.c (lookup_page_table_if_allocated,
2595 set_page_table_entry, zone_find_object_size, alloc_small_page,
2596 alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
2597 new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
2598 -Wc++-compat and/or -Wcast-qual warnings.
2600 2008-07-04 Alan Modra <amodra@bigpond.net.au>
2603 * config/rs6000/rs6000.md (call, call_value): Don't arrange for
2604 pic_offset_table_rtx to be marked as used here.
2605 (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
2606 TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
2607 (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
2608 (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
2611 2008-07-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2613 * alloc-pool.c (hash_descriptor, eq_descriptor,
2614 alloc_pool_descriptor): Fix -Wc++-compat warnings.
2615 * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
2617 * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
2618 loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
2619 final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
2620 * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
2623 2008-07-03 Eric Botcazou <ebotcazou@adacore.com>
2625 * tree-flow.h (loop_only_exit_p): Declare.
2626 * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
2627 * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
2628 the number of iterations if it is constant. Otherwise, if this is the
2629 only possible exit of the loop, use the conservative estimate on the
2630 number of iterations of the entire loop if available.
2632 2008-07-03 Richard Sandiford <rdsandiford@googlemail.com>
2634 * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
2635 * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
2636 Add synchronization functions.
2637 * config/sync.c: New file.
2638 * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
2639 (LIBGCC_SYNC_CFLAGS): Likewise.
2641 2008-07-03 Uros Bizjak <ubizjak@gmail.com>
2644 * config/i386/i386.md (mode): Add TF to "mode" attribute.
2645 (*pushtf_sse): New insn pattern.
2646 (pushtf splitters): New splitters.
2648 2008-07-03 Michael Meissner <gnu@the-meissners.org>
2651 * predict.c (build_predict_expr): Use void_type_node for the tree
2652 type, instead of NULL_TREE.
2654 2008-07-03 H.J. Lu <hongjiu.lu@intel.com>
2656 * config/i386/i386.c (contains_aligned_value_p): Return true
2658 (ix86_data_alignment): Align TCmode to 128bits.
2659 (ix86_local_alignment): Likewise.
2661 2008-07-03 Andrew Haley <aph@redhat.com>
2664 * vec.h (VEC_TA): New.
2665 (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
2666 DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
2667 * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
2668 (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
2669 (C_COMMON_FIXED_TYPES): Remove first arg.
2670 (C_COMMON_FIXED_MODE_TYPES): Likewise.
2671 * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
2672 MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
2673 not to use empty macro arguments.
2675 2008-07-02 Joseph Myers <joseph@codesourcery.com>
2677 * config/alpha/vms_tramp.asm, config/arm/crti.asm,
2678 config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
2679 config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
2680 config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
2681 config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
2682 config/i386/sol2-gc1.asm, config/ia64/crti.asm,
2683 config/ia64/crtn.asm, config/m68hc11/larith.asm,
2684 config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
2685 config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
2686 config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
2687 config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
2688 config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
2689 config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
2690 config/rs6000/e500crtres64gpr.asm,
2691 config/rs6000/e500crtres64gprctr.asm,
2692 config/rs6000/e500crtrest32gpr.asm,
2693 config/rs6000/e500crtrest64gpr.asm,
2694 config/rs6000/e500crtresx32gpr.asm,
2695 config/rs6000/e500crtresx64gpr.asm,
2696 config/rs6000/e500crtsav32gpr.asm,
2697 config/rs6000/e500crtsav64gpr.asm,
2698 config/rs6000/e500crtsav64gprctr.asm,
2699 config/rs6000/e500crtsavg32gpr.asm,
2700 config/rs6000/e500crtsavg64gpr.asm,
2701 config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
2702 config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
2703 config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
2704 config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
2705 config/sparc/sol2-cn.asm: Remove .file directives.
2707 2008-07-02 Richard Sandiford <rdsandiford@googlemail.com>
2709 * resource.c (mark_referenced_resources): Look inside
2710 UNSPEC_VOLATILEs and ASM_INPUTs.
2712 2008-07-02 Ian Lance Taylor <iant@google.com>
2714 * rtlanal.c (add_reg_note): New function.
2715 * rtl.h (add_reg_note): Declare.
2716 * auto-inc-dec.c (attempt_change): Use add_reg_note.
2717 * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
2718 * builtins.c (expand_builtin_longjmp): Likewise.
2719 (expand_builtin_nonlocal_goto): Likewise.
2720 * calls.c (emit_call_1, expand_call): Likewise.
2721 * cfgexpand.c (add_reg_br_prob_note): Likewise.
2722 * cfglayout.c (fixup_reorder_chain): Likewise.
2723 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
2724 (commit_one_edge_insertion): Likewise.
2725 * combine.c (move_deaths, distribute_notes): Likewise.
2726 * df-problems.c (df_set_note): Likewise.
2727 * emit-rtl.c (link_cc0_insns, try_split): Likewise.
2728 (set_unique_reg_note): Likewise.
2729 (emit_copy_of_insn_after): Likewise.
2730 * expr.c (expand_expr_real): Likewise.
2731 * gcse.c (add_label_notes): Likewise.
2732 * haifa-sched.c (create_check_block_twin): Likewise.
2733 * jump.c (mark_jump_label_1): Likewise.
2734 * loop-doloop.c (add_test, doloop_modify): Likewise.
2735 * loop-unswitch.c (compare_and_jump_seq): Likewise.
2736 * lower-subreg.c (move_eh_region_note): Likewise.
2737 * optabs.c (emit_libcall_block): Likewise.
2738 * predict.c (predict_insn): Likewise.
2739 (combine_predictions_for_insn): Likewise.
2740 * recog.c (peephole2_optimize): Likewise.
2741 * regmove.c (try_auto_increment): Likewise.
2742 * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
2743 * reload.c (find_reloads): Likewise.
2744 * reload1.c (fixup_eh_region_note): Likewise.
2745 (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
2746 * reorg.c (delete_prior_computation): Likewise.
2747 (delete_computation, dbr_schedule): Likewise.
2748 * config/pa/pa.c (legitimize_pic_address): Likewise.
2749 * config/sh/sh.c (sh_reorg): Likewise.
2751 2008-07-02 H.J. Lu <hongjiu.lu@intel.com>
2754 * config/libgcc-glibc.ver: Add %exclude.
2755 * config/m32r/libgcc-glibc.ver: Likwise.
2756 * config/s390/libgcc-glibc.ver: Likwise.
2757 * config/sh/libgcc-glibc.ver: Likwise.
2758 * config/sparc/libgcc-sparc-glibc.ver: Likwise.
2760 * config/i386/libgcc-glibc.ver: New.
2762 * config/i386/libgcc-x86_64-glibc.ver: Removed.
2764 2008-07-02 H.J. Lu <hongjiu.lu@intel.com>
2766 * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
2767 from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
2768 i[34567]86-*-linux*, x86_64-*-linux*. Add
2769 i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
2770 i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
2771 x86_64-*-linux*. Add i386/t-linux to tmake_file for
2772 i[34567]86-*-linux*, x86_64-*-linux*.
2774 * libgcc-std.ver: Add empty GCC_4.4.0.
2776 * mkmap-symver.awk: Support multiple versions per symbol.
2778 * config/i386/i386.c (ix86_init_builtins): Always define
2779 __builtin_fabsq and __builtin_copysignq with fallbacks.
2780 (ix86_expand_builtin): Emit normal call for __builtin_fabsq
2781 and __builtin_copysignq if SSE2 isn't available.
2783 * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
2784 (LIBGCC2_TF_CEXT): Likwise.
2787 * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
2789 * config/i386/sfp-machine.h: Moved to libgcc.
2791 * config/i386/sfp-machine.h: New.
2792 * config/i386/t-linux: Likwise.
2794 * config/i386/t-darwin: Remove softfp_wrap_start and
2796 * config/i386/t-darwin64: Likewise.
2798 * config/i386/t-fprules-softfp64: Renamed to ...
2799 * config/i386/t-fprules-softfp: This.
2801 * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
2802 and softfp_wrap_end.
2804 2008-07-02 Jason Merrill <jason@redhat.com>
2806 * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
2808 * tree.c (ctor_to_list): New fn.
2809 * tree.h: Declare it.
2810 (CONSTRUCTOR_ELT): New macro.
2811 (CONSTRUCTOR_NELTS): New macro.
2813 2008-07-02 Richard Guenther <rguenther@suse.de>
2815 * tree-ssa-structalias.c (struct variable_info): Reorder
2816 to fill padding on 64bit hosts. Make collapsed_to an int.
2817 (get_varinfo_fc): Deal with that.
2818 (new_var_info): Likewise.
2819 (collapse_rest_of_var): Likewise.
2821 2008-07-02 Joshua Sumali <jsumali@redhat.com>
2823 * doc/install.texi (--enable-java-home): Document.
2824 (--enable-aot-compile-rpm): Likewise.
2825 (--with-arch-directory): Likewise.
2826 (--with-os-directory): Likewise.
2827 (--with-origin-name): Likewise.
2828 (--with-arch-suffix): Likewise.
2829 (--with-jvm-root-dir): Likewise.
2830 (--with-jvm-jar-dir): Likewise.
2831 (--with-python-dir): Likewise.
2833 2008-07-02 Richard Guenther <rguenther@suse.de>
2835 * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
2836 from decls explicitly. Merge operand checking from tuples.
2838 2008-07-02 Martin Jambor <mjambor@suse.cz>
2840 * tree-switch-conversion.c: Included timevar.h which I forgot before.
2842 2008-07-02 Martin Jambor <mjambor@suse.cz>
2844 * tree-switch-conversion.c: Included timevar.h
2845 (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
2847 * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
2849 2008-07-02 Martin Jambor <mjambor@suse.cz>
2851 * tree-switch-conversion.c: Corrected various comments and
2853 (build_constructors): Fixed minor formatting mistakes.
2855 * invoke.texi (Optimize Options): Corrected the
2856 switch-conversion-max-branch-ratio parameter.
2858 2008-07-02 Mark Shinwell <shinwell@codesourcery.com>
2860 * final.c (asm_insn_count): Return zero for an empty asm body.
2862 2008-07-02 Richard Guenther <rguenther@suse.de>
2864 * bitmap.h (bitmap_set_bit): Return bool.
2865 (bitmap_clear_bit): Likewise.
2866 * bitmap.c (bitmap_set_bit): Return if the bit changed. Only
2867 write to the bitmap if it would.
2868 (bitmap_clear_bit): Likewise.
2869 * tree-ssa-structalias.c (add_implicit_graph_edge): Use
2870 bitmap_set_bit return value.
2871 (add_pred_graph_edge): Likewise.
2872 (add_graph_edge): Likewise.
2873 (do_sd_constraint): Likewise.
2874 (do_ds_constraint): Likewise.
2876 2008-07-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2878 * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
2879 Fix -Wc++-compat and/or -Wcast-qual warnings.
2880 * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
2881 gen_regparm_prefix): Likewise.
2882 * vmsdbgout.c (write_modbeg, lookup_filename,
2883 vmsdbgout_source_line, vmsdbgout_init): Likewise.
2885 2008-07-02 Danny Smith <dannysmith@users.sourceforge.net>
2887 * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
2888 defaults.h definition apply.
2890 2008-07-01 Daniel Jacobowitz <dan@codesourcery.com>
2892 * function.c (assign_parm_remove_parallels): New.
2893 (assign_parm_setup_block_p): Do not return true for non-BLKmode
2895 (assign_parm_setup_block): Do not handle them.
2896 (assign_parm_setup_reg, assign_parm_setup_stack): Call
2897 assign_parm_remove_parallels.
2899 2008-07-01 Daniel Jacobowitz <dan@codesourcery.com>
2901 * c-typeck.c (convert_for_assignment): Use
2902 vector_targets_convertible_p.
2903 * c-common.c (vector_targets_convertible_p): New.
2904 * c-common.h (vector_targets_convertible_p): New prototype.
2905 * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
2906 opaque_p_V2SI_type_node.
2908 2008-07-01 Steve Ellcey <sje@cup.hp.com>
2910 * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
2913 2008-07-01 Uros Bizjak <ubizjak@gmail.com>
2915 * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
2916 TFmode constants via two element DImode vector for hosts with
2917 HOST_BITS_PER_WIDE_INT < 64.
2918 (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
2919 also for HOST_BITS_PER_WIDE_INT < 64.
2921 2008-07-01 Richard Guenther <rguenther@suse.de>
2923 PR tree-optimization/36666
2924 * tree-ssa-structalias.c (get_constraint_for_1): Declare.
2925 (get_constraint_exp_from_ssa_var): Split into ...
2926 (get_constraint_exp_for_temp): ... this ...
2927 (get_constraint_for_ssa_var): ... and that.
2928 Return constraint expressions for all touched sub-fields
2929 if the results address is not taken.
2930 (process_constraint): Remove assertion that aggregate
2931 assignments do not happen at this place.
2932 (get_constraint_for_component_ref): Add address_p argument.
2933 Return constraint expressions for all touched sub-fields
2934 if the results address is not taken.
2935 (do_deref): Use get_constraint_exp_for_temp.
2936 (get_constraint_for_1): Rename from ...
2937 (get_constraint_for): ... this. Add the old function as wrapper.
2938 (do_structure_copy): Use get_constraint_for_1.
2940 2008-07-01 Martin Jambor <mjambor@suse.cz>
2942 * Makefile.in (tree-switch-conversion.o): Add.
2943 (OBJS-common): Add tree-swtch-conversion.o.
2944 * passes.c (init_optimization_passes): Add pass_convert_switch.
2945 * tree-pass.h: (pass_convert_switch): Add.
2946 * tree-switch-conversion.c: New file.
2947 * gcc.dg/tree-ssa/cswtch.c: New testcase.
2948 * common.opt (ftree-cswtch): New option.
2949 * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
2950 * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
2951 * opts.c (decode_options): Set flag_tree_switch_conversion when
2952 optimization level is >= 2.
2953 * doc/invoke.texi (Optimize Options): Added description of
2954 -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
2956 2008-06-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2958 * config/darwin-driver.c (darwin_default_min_version): Fix
2959 -Wc++-compat warnings.
2961 2008-06-30 Uros Bizjak <ubizjak@gmail.com>
2963 * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
2966 2008-06-30 Kenneth Zadeck <zadeck@naturalbridge.com>
2968 * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
2970 2008-06-30 Kenneth Zadeck <zadeck@naturalbridge.com>
2972 PR rtl-optimization/34744
2973 * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
2974 (df_scan_free_internal): Free data structures not
2975 allocated in storage pools.
2976 (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
2977 (df_refs_add_to_chains): Use df_scan_free_ref_vec and
2978 df_scan_free_mws_vec.
2979 * dse.c (dse_step6): Free offset_map_p and offset_map_n
2982 2008-06-30 H.J. Lu <hongjiu.lu@intel.com>
2984 * config/i386/i386.c (contains_aligned_value_p): Return true
2986 (ix86_function_arg_boundary): Return its natural boundary
2988 (return_in_memory_32): Don't check TDmode.
2989 (ix86_split_to_parts): Support splitting into 4 parts and
2990 support TFmode for 32bit target.
2991 (ix86_split_long_move): Support splitting into 4 parts.
2992 (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
2994 (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
2995 (ix86_init_builtins): Here.
2996 (ix86_scalar_mode_supported_p): Always return true for TFmode.
2997 (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
2998 'q' and 'w', respectively.
3000 * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
3002 (movtf_internal): Likewise.
3003 (<code>tf2): Likewise.
3004 (*absnegtf2_sse): Likewise.
3005 (copysign<mode>3): Likewise.
3006 (copysign<mode>3_const): Likewise.
3007 (copysign<mode>3_var): Likewise.
3008 (define_split UNSPEC_COPYSIGN): Likewise.
3009 * config/i386/sse.md (*nandtf3): Likewise.
3010 (<code>tf3): Likewise.
3011 (*<code>tf3): Likewise.
3013 2008-06-30 Joey Ye <joey.ye@intel.com>
3014 H.J. Lu <hongjiu.lu@intel.com>
3016 * global.c (compute_regsets): Set frame_pointer_needed here.
3017 * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
3019 2008-06-30 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
3021 * doc/install.texi (specific): Expand Windows build notes.
3023 2008-06-30 Ira Rosen <irar@il.ibm.com>
3025 PR tree-optimization/36648
3026 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
3027 number of prolog iterations by step. Fix the comment.
3029 2008-06-30 Richard Guenther <rguenther@suse.de>
3032 * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
3033 handle calls from ECF_MALLOC functions.
3034 (handle_pure_call): ECF_MALLOC functions do not return
3036 (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
3038 2008-06-29 Andreas Schwab <schwab@suse.de>
3040 * config/m68k/m68k.c (print_operand): Always print a float
3042 * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
3043 (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
3046 * config/rs6000/x-linux64: Remove never used file.
3048 2008-06-29 Richard Guenther <rguenther@suse.de>
3050 * tree-ssa-structalias.h (compute_points_to_sets): Adjust
3052 (struct alias_info): Move ...
3053 * tree-ssa-alias.c: ... here.
3054 (update_alias_info): Declare.
3055 (compute_may_aliases): Call it.
3056 (update_alias_info): New function.
3057 * tree-ssa-structalias.c (update_alias_info): Move ...
3058 * tree-ssa-alias.c (update_alias_info_1): ... here.
3059 * tree-ssa-structalias.c (process_constraint_1): Remove
3060 unused from_call argument. Rename to ...
3061 (process_constraint): ... this. Delete old wrapper.
3062 (make_constraint_to): Adjust callers.
3063 (handle_const_call): Likewise.
3064 (handle_pure_call): Likewise.
3065 (init_base_vars): Likewise.
3066 (handle_lhs_call): Likewise. Remove unnecessary constraint.
3067 (find_func_aliases): We don't need structure copies for
3069 (make_constraint_from_anything): Remove.
3070 (create_variable_info_for): For globals make constraints
3071 from escaped, not from anything.
3072 (compute_points_to_sets): Do not call update_alias_info.
3073 (ipa_pta_execute): Use make_constraint_from.
3075 2008-06-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3077 * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
3078 (bitmap.o-warn, dominance.o-warn): New.
3079 * configure.ac (cxx_compat_warn): Delete.
3080 (loose_warn): Add -Wcast-qual and -Wc++-compat.
3081 * system.h: Remove #pragma diagnostic for -Wcast-qual and
3083 * configure: Regenerate.
3085 * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
3088 2008-06-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3090 * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
3091 * df-scan.c (df_notes_rescan): Likewise.
3092 * ggc-page.c (set_page_table_entry): Likewise.
3093 * intl.c (gcc_gettext_width): Likewise.
3094 * varasm.c (get_unnamed_section, get_noswitch_section,
3095 get_section): Likewise.
3097 2008-06-28 Andrew Jenner <andrew@codesourcery.com>
3099 * regrename.c (build_def_use): Don't copy RTX.
3101 2008-06-28 Sandra Loosemore <sandra@codesourcery.com>
3103 * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
3104 (Type Attributes): Fix nesting of @table and @subsection. Adjust
3105 punctuation. Use @ref instead of @xref.
3106 (Function Names): Remove stray @display/@end display.
3107 (C++ Attributes): Use @ref instead of @xref.
3108 (Deprecated Features): Fix punctuation around @xref.
3109 (Backwards Compatibility): Likewise.
3110 * doc/rtl.texi (Incdec): Remove stray @table/@end table.
3112 2008-06-28 Joseph Myers <joseph@codesourcery.com>
3114 * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
3115 constants for E500 double.
3117 2008-06-28 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3119 * doc/rtl.texi (const_vector): Document const_fixed as legitimate
3120 element type of const_vector.
3122 2008-06-28 Uros Bizjak <ubizjak@gmail.com>
3124 * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
3125 Remove FLAGS_REG clobber from expander pattern.
3126 (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
3127 (anddi3, andsi3, andhi3, andqi3): Ditto.
3128 (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
3129 (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
3130 (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
3131 (ashlsi3, ashlhi3, ashlqi3): Ditto.
3132 (ashrsi3, ashrhi3, ashrqi3): Ditto.
3133 (lshrsi3, lshrhi3, lshrqi3): Ditto.
3134 (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
3135 (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
3137 2008-06-28 Richard Guenther <rguenther@suse.de>
3139 * tree-ssa-structalias.c (callused_id, var_callused,
3140 callused_tree): Add.
3141 (handle_pure_call): New function.
3142 (find_func_aliases): Call it.
3143 (find_what_p_points_to): Handle the call-used set.
3144 (clobber_what_escaped): Likewise.
3145 (compute_call_used_vars): New function.
3146 (init_base_vars): Init the call-used variable.
3147 (do_sd_constraint): Do not propagate the solution from CALLUSED
3148 but use CALLUSED as a placeholder.
3149 (solve_graph): Likewise.
3150 * tree-flow-inline.h (gimple_call_used_vars): New function.
3151 * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
3152 (compute_call_used_vars): Declare.
3153 * tree-ssa-alias.c (set_initial_properties): Call
3154 compute_call_used_vars.
3155 (reset_alias_info): Clear call-used variables.
3156 (add_call_clobber_ops): Assert we are not called for const/pure
3157 functions. Remove handling of them.
3158 (add_call_read_ops): Handle pure functions by adding the
3159 call-used set of variables as VUSEs.
3160 * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
3161 (delete_tree_ssa): Free it.
3162 * tree-dfa.c (remove_referenced_var): Clear the var from the
3165 2008-06-28 Kai Tietz <kai.tietz@onevision.com>
3167 * tree.c (build_varargs_function_type_list): New.
3168 (build_function_type_list_1): New.
3169 (build_function_type_list): Use build_function_type_list_1.
3170 * tree.h (build_varargs_function_type_list): New.
3172 2008-06-28 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3175 * config/spu/spu.c (spu_builtin_splats): Do not generate
3176 invalid CONST_VECTOR expressions.
3177 (spu_expand_vector_init): Likewise.
3179 2008-06-28 Richard Sandiford <rdsandiford@googlemail.com>
3181 * optabs.c (libfunc_decls): New variable.
3182 (libfunc_decl_hash, libfunc_decl_eq): New functions.
3183 (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
3184 for the same function twice.
3186 2008-06-27 Uros Bizjak <ubizjak@gmail.com>
3188 * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
3189 ix86_expand_binary_operator directly.
3190 (*ashlti3_1): Rename from ashlti3_1. Use nonmemory_operand predicate
3192 (*ashrti3_1): Ditto.
3193 (*lshrti3_1): Ditto.
3194 (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
3195 (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
3196 using only one splitter. Conditionaly execute splitter before or
3197 after peephole2 pass.
3198 (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
3199 (x86_shld): Rename from x86_shld_1. Compress operand 2 constraints.
3200 Use only one alternative in asm template.
3201 (x86_64_shld): Compress operand 2 constraints. Use only one alternative
3203 (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
3204 "J" operand constraint for operand 2.
3205 (*ashldi3_cconly_rex64): Ditto.
3206 (*ashrdi3_cmp_rex64): Ditto.
3207 (*ashrdi3_cconly_rex64): Ditto.
3208 (*lshrdi3_cmp_rex64): Ditto.
3209 (*lshrdi3_cconly_rex64): Ditto.
3210 * config/i386/predicates.md (const_1_to_63_operand): New predicate.
3211 * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
3212 (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
3215 2008-06-27 Jakub Jelinek <jakub@redhat.com>
3217 * gimplify.c (omp_is_private): Don't return true if decl is not
3218 already private on #pragma omp for or #pragma omp parallel for.
3221 * tree-cfg.c (struct move_stmt_d): Replace block field with
3222 orig_block and new_block fields.
3223 (move_stmt_r): Only set TREE_BLOCK to p->new_block if
3224 if it used to be NULL, p->orig_block or if p->orig_block is NULL.
3225 (move_block_to_fn): Replace vars_map and new_label_map arguments
3226 with struct move_stmt_d pointer.
3227 (replace_block_vars_by_duplicates): New function.
3228 (move_sese_region_to_fn): Add ORIG_BLOCK argument. Adjust
3229 move_block_to_fn caller. If ORIG_BLOCK is non-NULL, move over
3230 all subblocks of ORIG_BLOCK to the new function. Call
3231 replace_block_vars_by_duplicates.
3232 * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
3233 * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
3234 BLOCK of the new function. Adjust move_sese_region_to_fn caller.
3235 Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
3236 (expand_omp): Temporarily set input_location to the location of
3237 region's controlling stmt.
3238 (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
3239 BIND_EXPR, push ctx->block_vars and gimplification vars into
3240 the BIND_EXPR and its block's BLOCK_VARS instead of directly
3242 (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
3243 there are any BLOCK_VARS.
3244 (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
3245 OMP_PARALLEL or OMP_TASK stmt.
3246 (lower_omp): Save and restore input_location around the lower_omp_1
3249 2008-06-27 Richard Guenther <rguenther@suse.de>
3251 PR tree-optimization/36400
3252 PR tree-optimization/36373
3253 PR tree-optimization/36344
3254 * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
3255 var_nonlocal, nonlocal_tree, nonlocal_id): New globals
3256 (update_alias_info): Remove call clobbering code.
3257 (make_constraint_to): New helper function.
3258 (make_escape_constraint): Likewise.
3259 (handle_rhs_call): Use it on all pointer containing arguments.
3260 Also mark the static chain escaped.
3261 (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
3262 instead of ANYTHING.
3263 (make_constraint_from): New helper split out from ...
3264 (make_constraint_from_anything): ... here.
3265 (find_func_aliases): Add constraints for escape sites.
3266 (intra_create_variable_infos): Make constraints from NONLOCAL
3268 (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
3270 (clobber_what_p_points_to): Remove.
3271 (clobber_what_escaped): New function.
3272 (init_base_vars): Init NONLOCAL and ESCAPED.
3273 (do_sd_constraint): Do not propagate the solution from ESCAPED
3274 but use ESCAPED as a placeholder.
3275 (solve_graph): Likewise.
3276 * tree-flow.h (clobber_what_p_points_to): Remove.
3277 (clobber_what_escaped): Declare.
3278 * tree-ssa-alias.c (set_initial_properties): Call it.
3279 Remove code clobbering escaped pointers.
3281 2008-06-27 Richard Sandiford <rdsandiford@googlemail.com>
3283 * function.c (allocate_struct_function): Only allocate a unique
3284 funcdef_no if the decl is nonzero.
3286 2008-06-27 Richard Sandiford <rdsandiford@googlemail.com>
3288 * config/mips/mips-protos.h (mips_split_const_insns): Declare.
3289 * config/mips/mips.c (mips_split_const_insns): New function.
3290 * config/mips/mips.md (move_type): New attribute.
3291 (mode): Move attribute definition earlier in file. Add "TI" and "TF".
3292 (dword_mode): New attribute.
3293 (type): Avoid long line. Map "move_type"s to "type"s,
3294 choosing "multi" for doubleword moves if appropriate.
3295 Swap MTC/MFC comments to match their declaration order.
3296 (extended_mips16): Default to "yes" if "move_type" is "sll0",
3297 "type" is "branch" or "jal" is "direct".
3298 (length): Handle "extended_mips16" first. Make the default
3299 "0" for "ghost" instructions. Set the length from "move_type".
3300 (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
3301 of "type", with "sll0" for the register alternative. Remove the
3302 "extended_mips16" attribute.
3303 (zero_extendsidi2, *clear_upper32): Use "move_type" instead
3304 of "type", with "shift_shift" for the register alternative.
3305 Remove the "length" attribute.
3306 (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
3307 (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
3308 of "type", with "andi" for the register alternative.
3309 (*zero_extendqihi2): Likewise.
3310 (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
3311 of "andi" instead of a "type" of "arith".
3312 (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
3314 (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
3315 (mov_<store>r, *mov<mode>_ra): Likewise.
3316 (extendsidi2): Use "move_type" instead of "type", with "move"
3317 for the register alternative.
3318 (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
3319 of "type", with "signext" for the register alternative.
3320 (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
3321 (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
3322 (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
3323 (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
3324 (floatdisf2, *branch_equality<mode>_mips16): Likewise.
3325 (unnamed branch insn): Likewise.
3326 (*movdi_gp32_fp64): Fold into...
3327 (*movdi_32bit): ...here.
3328 (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
3329 (*movdf_hardfloat): ...this new pattern.
3330 (*movdf_softfloat): Remove redundant FPR alternatives.
3331 (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
3332 (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
3333 (*movv2sf): ...this new pattern. Use "DF" rather than "SF" for
3334 the "move" attribute.
3335 (*movdi_32bit): Use "move_type" instead of "type" and remove the
3336 "length" attribute. Use "fpload" and "fpstore" instead of "load"
3337 and "store" for COP loads and stores.
3338 (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
3339 (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
3340 (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
3341 (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
3342 (*movtf_mips16, *movv2sf): Likewise.
3343 (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
3344 (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
3345 (mfhc1<mode>): Use "move_type" instead of "move".
3346 (*low<mode>_mips16): Use "extended_mips16" instead of "length".
3347 (loadgp_blockage): Remove the "length" attribute.
3348 (blockage, set_got_version, update_got_version): Likewise.
3349 (call_internal): Remove the "extended_mips16" attribute.
3350 (call_value_internal, call_value_multiple_internal): Likewise.
3351 * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
3353 * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
3354 the "length" attribute.
3356 2008-06-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3358 * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
3359 -Wcast-qual warnings.
3360 * c-pragma.c (dpm_eq, handle_pragma_push_macro,
3361 handle_pragma_pop_macro): Likewise.
3362 * collect2.c (resolve_lib_name): Likewise.
3363 * config/arc/arc.c (arc_init): Likewise.
3364 * config/arm/arm.c (neon_builtin_compare,
3365 locate_neon_builtin_icode): Likewise.
3366 * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
3367 * config/bfin/bfin.c (bfin_init_machine_status,
3368 bfin_optimize_loop): Likewise.
3369 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
3370 * config/cris/cris.c (cris_init_expanders): Likewise.
3371 * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
3372 * config/darwin.c (machopic_indirection_eq,
3373 machopic_indirection_name, machopic_output_indirection): Likewise.
3374 * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
3375 frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
3376 frv_optimize_membar): Likewise.
3377 * config/i386/cygwin.h (mingw_scan,
3378 GCC_DRIVER_HOST_INITIALIZATION): Likewise.
3379 * config/i386/cygwin1.c (mingw_scan): Likewise.
3380 * config/i386/i386.c (machopic_output_stub): Likewise.
3381 * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
3382 i386_pe_unique_section): Likewise.
3383 * config/ia64/ia64.c (ia64_init_machine_status,
3384 ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
3386 * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
3387 * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
3388 * config/m68k/m68k.c (m68k_handle_option,
3389 m68k_sched_md_init_global): Likewise.
3390 * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
3391 mcore_unique_section): Likewise.
3392 * config/mips/mips.c (mips_block_move_straight,
3393 mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
3395 * config/mmix/mmix.c (mmix_init_machine_status,
3396 mmix_encode_section_info): Likewise.