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