1 2009-05-27 Diego Novillo <dnovillo@google.com>
3 * tree-pretty-print.c (dump_location): New.
4 (dump_generic_node): Call it.
5 Factor code to handle BLOCK nodes ...
6 (dump_block_node): ... here.
8 2009-05-27 Rafael Avila de Espindola <espindola@google.com>
10 * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with
12 * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
14 * gcc-plugin.h: Include config.h and system.h.
15 (IN_GCC): Define if not defined.
17 2009-05-27 Hans-Peter Nilsson <hp@axis.com>
20 * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
23 2009-05-27 Shujing Zhao <pearly.zhao@oracle.com>
25 * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
27 * config/m32r/m32r.h: Ditto.
28 * config/m32r/m32r.md: Ditto.
29 * config/m32r/predicates.md: Ditto.
31 2009-05-27 Alexandre Oliva <aoliva@redhat.com>
33 * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
35 2009-05-26 Basile Starynkevitch <basile@starynkevitch.net>
38 (Loading plugins): typo.
39 (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
40 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
41 (Interacting with the GCC Garbage Collector): Added new section.
42 (Giving information about a plugin): Added new section for
44 * testsuite/gcc.dg/plugin/plugin.exp: Added ggcplug.c test plugin
45 with ggcplug-test-1.c for testing PLUGIN_GGC_MARKING etc...
46 * testsuite/gcc.dg/plugin/ggcplug-test-1.c: Added new file.
47 * testsuite/gcc.dg/plugin/ggcplug.c: Added new file.
48 * ggc.h (ggc_register_root_tab): Added declaration.
49 * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
50 (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
51 (register_callback): Improved comment in declaration.
52 * ggc-common.c (const_ggc_root_tab_t) Added new typedef for
54 (extra_root_vec) Added static variable for dynamic roots
56 (ggc_register_root_tab) Added new routine.
57 (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
58 PLUGIN_GGC_MARKING event.
59 * ggc-zone.c: Include plugin.h.
60 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
61 * ggc-page.c: Include plugin.h.
62 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
63 * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
64 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
65 (register_callback): check lack of callbacks for
66 pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
67 PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
68 (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
69 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
70 * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
71 dependency on plugin.h.
72 (plugin.o): Added dependency on ggc.h...
74 2009-05-26 Richard Guenther <rguenther@suse.de>
78 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
79 with mismatched comparison modes.
81 * expr.c (expand_expr_real_1): Expand the operand of a
82 VIEW_CONVERT_EXPR in its natural mode.
84 2009-05-26 Ian Lance Taylor <iant@google.com>
86 * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
87 (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
88 (ALL_COMPILERFLAGS): Define.
89 (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
90 (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
91 (collect2$(exeext), collect2.o): Likewise.
92 (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
93 (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
94 ($(out_object_file), mips-tfile, mips-tdump): Likewise.
95 (libbackend.o, intl.o, cppdefault.o): Likewise.
96 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
97 (build/%.o): Use $(COMPILER_FOR_BUILD).
98 (build/gen%$(build_exeext)): Likewise.
99 (build/gcov-iov$(build_exeext)): LIkewise.
100 * config/t-darwin (darwin.o): Use $(COMPILER).
101 (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
102 * config/t-sol2 (sol2-c.o): Likewise.
104 * config/t-vxworks (vxworks.o): Likewise.
105 * config/x-darwin (host-darwin.o): Likewise.
106 * config/x-hpux (host-hpux.o): Likewise.
107 * config/x-linux (host-linux.o): Likewise.
108 * config/x-solaris (host-solaris.o): Likewise.
109 * config/alpha/x-alpha (driver-alpha.o): Likewise.
110 * config/arm/t-arm (arm-c.o): Likewise.
111 * config/arm/t-pe (pe.o): Likewise.
112 * config/arm/t-wince-pe (pe.o): Likewise.
113 * config/i386/t-cygming (winnt.o): Likewise.
114 (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
115 * config/i386/t-cygwin (cygwin1.o): Likewise.
116 (cygwin2.o): Likewise.
117 * config/i386/t-i386 (i386-c.o): Likewise.
118 * config/i386/t-interix (winnt.o): Likewise.
119 * config/i386/t-netware (netware.o): Likewise.
120 * config/i386/t-nwld (nwld.o): Likewise.
121 * config/i386/x-darwin (host-i386-darwin.o): Likewise.
122 * config/i386/x-i386 (driver-i386.o): Likewise.
123 * config/i386/x-cygwin (host-cygwin.o): Likewise.
124 * config/i386/x-mingw32 (host-mingw32.o): Likewise.
125 * config/ia64/t-ia64 (ia64-c.o): Likewise.
126 * config/m32c/t-m32c (m32c-pragma.o): Likewise.
127 * config/mips/x-native (driver-native.o): Likewise.
128 * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
129 * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
130 * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
131 * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
132 * config/score/t-score-elf (score7.o): Likewise.
133 (score3.o): Likewise.
134 * config/sh/t-sh (sh-c.o): Likewise.
135 * config/sh/t-symbian (sh-c.o): Likewise.
136 (symbian.o): Likewise.
137 * config/spu/t-spu-elf (spu-c.o): Likewise.
138 * config/v850/t-v850 (v850-c.o): Likewise.
139 * config/v850/t-v850e (v850-c.o): Likewise.
141 2009-05-26 Richard Guenther <rguenther@suse.de>
143 PR tree-optimization/40122
144 * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
145 VECTOR_CSTs if possible.
146 (fold_gimple_assign): Likewise.
148 2009-05-26 Richard Guenther <rguenther@suse.de>
151 * fold-const.c (fold_binary): Use the correct types for building
154 2009-05-26 Richard Guenther <rguenther@suse.de>
156 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
157 redundant calls to merge_alias_info.
158 (bump_vector_ptr): Likewise.
159 * tree-ssa-copy.c (merge_alias_info): Remove.
160 (replace_exp_1): Remove call to merge_alias_info.
161 (propagate_tree_value): Likewise.
162 (fini_copy_prop): Propagate points-to info.
163 * tree-flow.h (merge_alias_info): Remove.
165 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
167 * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
169 2009-05-25 Jan Hubicka <jh@suse.cz>
171 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
172 * cgraph.h (struct inline_summary): New filed self_wize,
173 size_inlining_benefit, self_time and time_inlining_benefit.
174 (struct cgraph_global_info): Replace insns by time ans size fields.
175 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
176 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
177 (ipcp_update_callgraph): Do not touch function bodies.
178 * ipa-inline.c: Include except.h
179 (MAX_TIME): New constant.
180 (overall_insns): Remove.
182 (overall_size, max_benefit): New static variables.
183 (cgraph_estimate_time_after_inlining): New function.
184 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
185 (cgraph_clone_inlined_nodes): Update size.
186 (cgraph_mark_inline_edge): Update size.
187 (cgraph_estimate_growth): Use size info.
188 (cgraph_check_inline_limits): Check size.
189 (cgraph_default_inline_p): Likewise.
190 (cgraph_edge_badness): Compute badness based on benefit and size cost.
191 (cgraph_decide_recursive_inlining): Check size.
192 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
194 (cgraph_decide_inlining): Likewise.
195 (cgraph_decide_inlining_incrementally): Likewise; honor
196 PARAM_EARLY_INLINING_INSNS.
197 (likely_eliminated_by_inlining_p): New predicate.
198 (estimate_function_body_sizes): New function.
199 (compute_inline_parameters): Use it.
200 * except.c (must_not_throw_labels): New function.
201 * except.h (must_not_throw_labels): Declare.
202 * tree-inline.c (init_inline_once): Kill inlining_weigths
203 * tree-ssa-structalias.c: Avoid uninitialized warning.
204 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
205 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
206 (PARAM_INLINE_CALL_COST): Remove.
207 (PARAM_EARLY_INLINING_INSNS): New.
209 2009-05-25 Richard Guenther <rguenther@suse.de>
211 PR tree-optimization/36327
212 * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
213 callback for reference translation or lookup at the point
215 * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
216 * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
217 for union COMPONENT_REFs.
218 (vn_reference_lookup_3): New callback. Lookup from memset
219 and CONSTRUCTOR assignment, translate through struct copies.
220 (vn_reference_lookup_pieces): Make sure to not free the
221 passed operands array. Adjust walk_non_aliased_vuses call.
222 (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
223 make sure we do not leak memory.
225 2009-05-25 Richard Guenther <rguenther@suse.de>
227 * tree-ssa-alias.h (dump_points_to_solution): Declare.
228 * tree-inline.c (expand_call_inline): Reset the escaped and
230 * tree-ssa-structalias.c (pass_build_ealias): New.
231 * tree-pass.h (pass_build_ealias): Declare.
232 * passes.c (init_optimization_passes): Add PTA during
234 * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
235 and CALLUSED solutions.
236 (dump_points_to_solution): New function, split out from ...
237 (dump_points_to_info_for): ... here.
238 * tree-parloops.c (parallelize_loops): Reset the escaped and
241 2009-05-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
244 * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
245 * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
247 2009-05-25 Ira Rosen <irar@il.ibm.com>
249 PR tree-optimization/40238
250 * tree-vect-stmts.c (vect_init_vector): Insert initialization
251 statements after basic block's labels.
252 * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
253 to free the allocated memory.
255 2009-05-24 Kaz Kojima <kkojima@gcc.gnu.org>
257 * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
258 return address with a USE.
260 2009-05-24 Richard Guenther <rguenther@suse.de>
263 * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
264 array type from the main variant of the inner type.
266 2009-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
268 * config/vax/vax-protos.h (legitimate_constant_address_p): Change
269 definition to bool (from int) to un-break build.
270 (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
272 2009-05-24 Paolo Bonzini <bonzini@gnu.org>
274 * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
275 discard_stmt_changes): Delete.
276 * tree-ssa-operands.c (scb_stack): Delete.
277 (init_ssa_operands): Do not initialize it.
278 (fini_ssa_operands): Do not free it.
279 (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
281 * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
282 update_stmt, remove the others. Fix comments.
283 * tree-dfa.c (optimize_stack_restore): Likewise.
284 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
285 * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
286 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
287 * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
289 * tree-ssa-propagate.c (substitute_and_fold): Likewise.
290 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
291 (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan.
292 (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
293 (stmts_to_rescan): Change item type to gimple.
294 (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
296 2009-05-24 Ira Rosen <irar@il.ibm.com>
298 * doc/passes.texi (Tree-SSA passes): Document SLP pass.
299 * tree-pass.h (pass_slp_vectorize): New pass.
300 * params.h (SLP_MAX_INSNS_IN_BB): Define.
301 * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
302 * tree-vectorizer.c (timevar.h): Include.
303 (user_vect_verbosity_level): Declare.
304 (vect_location): Fix comment.
305 (vect_set_verbosity_level): Update user_vect_verbosity_level
306 instead of vect_verbosity_level.
307 (vect_set_dump_settings): Add an argument. Ignore user defined
308 verbosity if dump flags require higher level of verbosity. Print to
309 stderr only for loop vectorization.
310 (vectorize_loops): Update call to vect_set_dump_settings.
311 (execute_vect_slp): New function.
312 (gate_vect_slp): Likewise.
313 (struct gimple_opt_pass pass_slp_vectorize): New.
314 * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
316 (vec_info_for_bb): New function.
317 (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
318 (VECTORIZATION_ENABLED): New macro.
319 (SLP_ENABLED, SLP_DISABLED): Likewise.
320 (vect_is_simple_use): Add bb_vec_info argument.
321 (new_stmt_vec_info, vect_analyze_data_ref_dependences,
322 vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
323 vect_analyze_data_ref_accesses, vect_analyze_data_refs,
324 vect_schedule_slp, vect_analyze_slp): Likewise.
325 (vect_analyze_stmt): Add slp_tree argument.
326 (find_bb_location): Declare.
327 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
328 * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
329 (vect_analyze_loop_operations, vect_analyze_loop,
330 get_initial_def_for_induction, vect_create_epilog_for_reduction,
331 vect_finalize_reduction, vectorizable_reduction,
332 vectorizable_live_operation, vect_transform_loop): Likewise.
333 * tree-data-ref.c (dr_analyze_innermost): Update comment,
334 skip evolution analysis if analyzing a basic block.
335 (dr_analyze_indices): Likewise.
336 (initialize_data_dependence_relation): Skip the test whether the
337 object is invariant for basic blocks.
338 (compute_all_dependences): Skip dependence analysis for data
339 references in basic blocks.
340 (find_data_references_in_stmt): Don't fail in case of invariant
341 access in basic block.
342 (find_data_references_in_bb): New function.
343 (find_data_references_in_loop): Move code to
344 find_data_references_in_bb and add a call to it.
345 (compute_data_dependences_for_bb): New function.
346 * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
347 * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
349 (vect_analyze_data_ref_dependence): Check for interleaving in case of
350 unknown dependence in basic block and fail in case of dependence in
352 (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
353 dependence instances from either loop or basic block vectorization
355 (vect_compute_data_ref_alignment): Check if it is loop vectorization
356 before calling nested_in_vect_loop_p.
357 (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
358 dependence instances from either loop or basic block vectorization
360 (vect_verify_datarefs_alignment): Likewise.
361 (vect_enhance_data_refs_alignment): Adjust function calls.
362 (vect_analyze_data_refs_alignment): Likewise.
363 (vect_analyze_group_access): Fix printing. Skip different checks if
364 DR_STEP is 0. Keep strided stores either in loop or basic block
365 vectorization data structure. Fix indentation.
366 (vect_analyze_data_ref_access): Fix comments, allow zero step in
368 (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
369 dependence instances from either loop or basic block vectorization
371 (vect_analyze_data_refs): Update comment. Call
372 compute_data_dependences_for_bb to analyze basic blocks.
373 (vect_create_addr_base_for_vector_ref): Check for outer loop only in
374 case of loop vectorization. In case of basic block vectorization use
375 data-ref itself as a base.
376 (vect_create_data_ref_ptr): In case of basic block vectorization:
377 don't advance the pointer, add new statements before the current
378 statement. Adjust function calls.
379 (vect_supportable_dr_alignment): Support only aligned accesses in
380 basic block vectorization.
381 * common.opt (ftree-slp-vectorize): New flag.
382 * tree-vect-patterns.c (widened_name_p): Adjust function calls.
383 (vect_pattern_recog_1): Likewise.
384 * tree-vect-stmts.c (process_use): Likewise.
385 (vect_init_vector): Add new statements in the beginning of the basic
386 block in case of basic block SLP.
387 (vect_get_vec_def_for_operand): Adjust function calls.
388 (vect_finish_stmt_generation): Likewise.
389 (vectorizable_call): Add assert that it is loop vectorization, adjust
391 (vectorizable_conversion, vectorizable_assignment): Likewise.
392 (vectorizable_operation): In case of basic block SLP, take
393 vectorization factor from statement's type and skip the relevance
394 check. Adjust function calls.
395 (vectorizable_type_demotion): Add assert that it is loop
396 vectorization, adjust function calls.
397 (vectorizable_type_promotion): Likewise.
398 (vectorizable_store): Check for outer loop only in case of loop
399 vectorization. Adjust function calls. For basic blocks, skip the
400 relevance check and don't advance pointers.
401 (vectorizable_load): Likewise.
402 (vectorizable_condition): Add assert that it is loop vectorization,
403 adjust function calls.
404 (vect_analyze_stmt): Add argument. In case of basic block SLP, check
405 that it is not reduction, get vector type, call only supported
406 functions, skip loop specific parts.
407 (vect_transform_stmt): Check for outer loop only in case of loop
409 (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
410 (vect_is_simple_use): Fix comment, add new argument, fix conditions
411 for external definition.
412 * passes.c (pass_slp_vectorize): New pass.
413 * tree-vect-slp.c (find_bb_location): New function.
414 (vect_get_and_check_slp_defs): Add argument, adjust function calls,
415 check for patterns only in loops.
416 (vect_build_slp_tree): Add argument, adjust function calls, fail in
417 case of multiple types in basic block SLP.
418 (vect_mark_slp_stmts_relevant): New function.
419 (vect_supported_load_permutation_p): Fix comment.
420 (vect_analyze_slp_instance): Add argument. In case of basic block
421 SLP, take vectorization factor from statement's type, check that
422 unrolling factor is 1. Adjust function call. Save SLP instance in
423 either loop or basic block vectorization structure. Return FALSE,
425 (vect_analyze_slp): Add argument. Get strided stores groups from
426 either loop or basic block vectorization structure. Return FALSE
427 if basic block SLP failed.
428 (new_bb_vec_info): New function.
429 (destroy_bb_vec_info, vect_slp_analyze_node_operations,
430 vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
431 (vect_schedule_slp): Add argument. Get SLP instances from either
432 loop or basic block vectorization structure. Set vectorization factor
433 to be 1 for basic block SLP.
434 (vect_slp_transform_bb): New function.
435 * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
437 2009-05-23 Mark Mitchell <mark@codesourcery.com>
439 * final.c (shorten_branches): Do not align labels for jump tables.
440 (final_scan_insn): Use JUMP_TABLE_DATA_P.
442 2009-05-23 Eric Botcazou <ebotcazou@adacore.com>
444 * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
445 Remove outdated reference to flow.c and fix nits.
446 * doc/gccint.texi: Tweak RTL description.
447 * doc/rtl.texi: Likewise.
449 2009-05-23 Denis Chertykov <chertykov@gmail.com>
451 * config/avr/avr.c: Change my email address.
452 * config/avr/avr.h: Likewise.
453 * config/avr/avr.md: Likewise.
454 * config/avr/avr-protos.h: Likewise.
455 * config/avr/libgcc.S: Likewise.
457 2009-05-22 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
459 * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
460 (spu_split_load, spu_split_store): Change return type to int.
461 (spu_split_convert): Declare.
462 * config/spu/predicates.md (spu_mem_operand): Remove.
463 (spu_mov_operand): Update.
464 (spu_dest_operand, shiftrt_operator, extend_operator): Define.
465 * config/spu/spu.c (regno_aligned_for_load): Remove.
466 (reg_aligned_for_addr, spu_expand_load): Define.
467 (spu_expand_extv): Reimplement and handle MEM.
468 (spu_expand_insv): Handle MEM.
469 (spu_sched_reorder): Handle insn's with length 0.
470 (spu_legitimate_address_p): Reimplement.
471 (store_with_one_insn_p): Return TRUE for any mode with size
472 larger than 16 bytes.
473 (address_needs_split): Define.
474 (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
476 (spu_convert_move): Define.
477 (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
478 (spu_split_store): Change all MEM's to TImode.
479 (spu_init_expanders): Preallocate registers that correspond to
480 LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
482 (spu_split_convert): Define.
483 * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
484 (_move<mode>, _movdi, _movti): Update predicate and condition.
485 (load, store): Change to define_split.
486 (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
488 (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
489 (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
490 define_insn_and_split of lshr<mode>3.
491 (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
492 (<v>ashr<mode>3_imm): Define.
493 (extv, extzv, insv): Allow MEM operands.
494 (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
495 shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
496 sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
497 (_spu_convert2): Change to define_insn_and_split and remove the
498 corresponding define_peephole2.
499 (stack_protect_set, stack_protect_test, stack_protect_test_si):
500 Change predicates to memory_operand.
502 2009-05-22 Mark Mitchell <mark@codesourcery.com>
504 * config/arm/thumb2.md: Add 16-bit multiply instructions.
506 2009-05-21 Michael Meissner <meissner@linux.vnet.ibm.com>
508 PR tree-optimization/40219
509 * tree.c (iterative_hash_expr): Make sure the builtin function is
510 a normal builtin function and not a front end or back end builtin
511 before indexing into the built_in_decls array.
513 2009-05-22 Richard Guenther <rguenther@suse.de>
516 * alias.c (write_dependence_p): Do not use TBAA for answering
517 anti-dependence or output-dependence.
518 * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
519 (emit_pointer_definition): Remove.
520 (emit_alias_warning): Likewise.
521 (find_what_var_points_to): Remove TBAA pruning code.
522 (find_what_p_points_to): Likewise. Do not warn about strict-aliasing
524 (compute_points_to_sets): Remove code computing the set of
525 dereferenced pointers.
526 * tree-data-ref.c (dr_may_alias_p): Properly use the split
527 oracle for querying anti and output dependencies.
528 * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
529 if TBAA may be applied.
530 (refs_anti_dependent_p): New function.
531 (refs_output_dependent_p): Likewise.
532 * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
533 (refs_output_dependent_p): Likewise.
534 * doc/tree-ssa.texi (Memory model): New section.
535 * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
536 * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
537 * cfgexpand.c (expand_gimple_basic_block): Do not handle
538 GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
539 * expr.c (expand_expr_real_1): Likewise.
540 * gimple-low.c (lower_stmt): Likewise.
541 * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
542 (dump_gimple_cdt): Remove.
543 * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
544 (gimple_size): Likewise.
545 (walk_gimple_op): Likewise.
546 (is_gimple_stmt): Likewise.
547 (walk_stmt_load_store_addr_ops): Likewise.
548 (gimple_build_cdt): Remove.
549 * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
550 * gimple.h (gimple_cdt_new_type): Remove.
551 (gimple_cdt_new_type_ptr): Likewise.
552 (gimple_cdt_set_new_type): Likewise.
553 (gimple_cdt_location): Likewise.
554 (gimple_cdt_location_ptr): Likewise.
555 (gimple_cdt_set_location): Likewise.
556 * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
557 * tree-cfg.c (remove_useless_stmts_1): Do not handle
558 GIMPLE_CHANGE_DYNAMIC_TYPE.
559 (verify_types_in_gimple_stmt): Likewise.
560 * tree-inline.c (estimate_num_insns): Likewise.
561 (expand_call_inline): Do not copy DECL_NO_TBAA_P.
562 (copy_decl_to_var): Likewise.
563 (copy_result_decl_to_var): Likewise.
564 * tree-pretty-print.c (dump_generic_node): Do not handle
565 CHANGE_DYNAMIC_TYPE_EXPR.
566 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
567 * tree-ssa-operands.c (get_expr_operands): Likewise.
568 * tree-ssa-structalias.c (struct variable_info): Remove
569 no_tbaa_pruning member.
570 (new_var_info): Do not set it based on DECL_NO_TBAA_P.
571 (unify_nodes): Do not copy it.
572 (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
573 (dump_solution_for_var): Do not dump no_tbaa_pruning state.
574 (set_uids_in_ptset): Do not check it.
575 (find_what_var_points_to): Likewise.
576 (compute_tbaa_pruning): Remove.
577 (compute_points_to_sets): Do not call it.
578 * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
579 * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
580 * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
581 (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
582 (DECL_NO_TBAA_P): Likewise.
583 (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
584 * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
585 (expand_omp_atomic_pipeline): Do not set it.
586 * print-tree.c (print_node): Do not dump it.
587 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
590 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
593 * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
596 2009-05-22 Mark Mitchell <mark@codesourcery.com>
598 * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
601 2009-05-22 Ben Elliston <bje@au.ibm.com>
603 * Makefile.in (bversion.h, s-bversion): New targets.
604 (TOPLEV_H): Add bversion.h.
605 * toplev.h: Include "bversion.h".
606 (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
607 the __format__ attribute only if compiling with the same version
608 of GCC as the sources (the "build version").
610 2009-05-22 Ben Elliston <bje@au.ibm.com>
612 * c-format.c (handle_format_attribute): Fix comment typo.
614 2009-05-21 Steve Ellcey <sje@cup.hp.com>
617 * config/ia64/ia64.opt (mfused-madd): New.
618 * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
619 * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
620 * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
621 madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
622 nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
623 msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
624 nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
625 * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
626 instruction if !TARGET_FUSED_MADD.
627 (fpma, fpms): Remove colon from name.
629 2009-05-22 Richard Guenther <rguenther@suse.de>
631 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
632 TMR_ORIGINAL. Always either record TMR_SYMBOL or TMR_BASE.
633 * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
635 (create_expression_by_pieces): Only convert if necessary.
636 * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
637 * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
639 2009-05-21 Adam Nemet <anemet@caviumnetworks.com>
641 * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
642 regular pattern from a template and rename it ...
643 (*extzv_truncsi_exts): ... to this.
645 2009-05-21 Richard Guenther <rguenther@suse.de>
647 * cgraph.h (struct cgraph_node): Remove inline_decl member.
648 * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
649 (cgraph_default_inline_p): Likewise.
650 (cgraph_decide_inlining_incrementally): Likewise.
652 2009-05-21 H.J. Lu <hongjiu.lu@intel.com>
653 Uros Bizjak <ubizjak@gmail.com>
655 * config/i386/cpuid.h (bit_MOVBE): New.
657 * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
659 * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
660 (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
661 (ix86_handle_option): Handle OPT_mmovbe.
662 (ix86_target_string): Add -mmovbe.
663 (pta_flags): Add PTA_MOVBE.
664 (processor_alias_table): Add PTA_MOVBE to "atom".
665 (override_options): Handle PTA_MOVBE.
667 * config/i386/i386.h (TARGET_MOVBE): New.
669 * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
670 (*bswapsi_movbe): New.
671 (*bswapdi_movbe): Likewise.
672 (bswapdi2): Renamed to ...
674 (bswapdi2): New expander.
676 * config/i386/i386.opt (mmovbe): New.
678 * doc/invoke.texi: Document -mmovbe.
680 2009-05-21 Taras Glek <tglek@mozilla.com>
682 * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
683 * gcc-plugin.h (plugin_init): Updated signature.
684 * gcc-plugin.h (plugin_name_args): Moved to this header.
685 * doc/plugins.texi (plugin_init): Updated documention to reflect
687 * doc/plugins.texi (plugin_name_args): Added to documention.
689 2009-05-21 Mark Mitchell <mark@codesourcery.com>
691 * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
692 (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
694 2009-05-21 Shujing Zhao <pearly.zhao@oracle.com>
696 * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
697 JUMP_TABLE_DATA_P predicates where applicable.
698 * config/i386/predicates.md: Ditto.
699 * config/i386/sse.md: Ditto.
701 2009-05-21 Jakub Jelinek <jakub@redhat.com>
703 * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
704 operand2 -128 override length_immediate attribute to 1.
705 * config/i386/predicates.md (constm128_operand): New predicate.
707 * config/i386/i386.c (memory_address_length): Handle %r12
708 the same as %rsp and %r13 the same as %rbp. For %rsp and %rbp
710 (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
711 mode look through optional ZERO_EXTEND and SUBREG.
712 * config/i386/i386.md (R12_REG): New define_constant.
713 (prefix_data16): For sse unit set also for MODE_TI insns.
714 (prefix_rex): For -m32 always return 0. For TYPE_IMOVX
715 insns set if operand 1 is ext_QIreg_operand.
716 (modrm): For TYPE_IMOV clear only if not MODE_DI. For
717 TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
719 (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
720 mode from MODE_DI to MODE_SI.
721 (movdi_1_rex64): Override modrm and length_immediate attributes
722 only for movabs (TYPE_IMOV, alternative 2).
723 (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
724 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
725 *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
726 *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
727 *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
728 prefix_rex attribute if DImode.
729 (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
730 *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
731 *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
732 *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
733 attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
734 (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
735 Likewise. For TYPE_IMOV clear length_immediate attribute.
736 (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
737 *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
738 *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
739 *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
740 *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
741 or one operand TYPE_ISHIFT.
742 (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
743 *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
744 *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
745 *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
746 *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
747 *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
748 *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
749 *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
750 *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
751 *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
752 *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
753 *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
754 *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
755 *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
756 *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
757 *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
758 *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
759 set mode attribute, don't override length attribute.
760 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
762 (return_internal_long): Set length attribute to 2 instead of 1.
763 (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
764 *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
765 prefix_rex attribute.
766 * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
768 (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
770 2009-05-21 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
772 * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
774 2009-05-20 Ian Lance Taylor <iant@google.com>
776 * tree.c (build_tree_list_vec_stat): New function.
777 (ctor_to_vec): New function.
778 (build_nt_call_vec): New function.
779 (build_call_array): Change args to be a const pointer.
780 (build_call_vec): New function.
781 * tree.h (build_nt_call_vec): Declare.
782 (build_tree_list_vec_stat): Declare.
783 (build_tree_list_vec): Define.
784 (build_call_array): Update declaration.
785 (build_call_vec): Declare.
786 (ctor_to_vec): Declare.
787 * c-common.c (tree_vector_cache): New static variable.
788 (make_tree_vector): New function.
789 (release_tree_vector): New function.
790 (make_tree_vector_single): New function.
791 (make_tree_vector_copy): New function.
792 * c-common.h (tree_vector_cache, make_tree_vector): Declare.
793 (make_tree_vector_single, make_tree_vector_copy): Declare.
794 * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
795 (c_parser_expr_list): Don't manage cache here, instead call
797 (c_parser_release_expr_list): Remove static function.
798 (c_parser_vec_to_tree_list): Remove static function.
799 (c_parser_attributes): Call build_tree_list_vec instead of
800 c_parser_vec_to_tree_list. Call release_tree_vector instead of
801 c_parser_release_expr_list.
802 (c_parser_postfix_expression_after_primary): Likewise.
803 (c_parser_objc_keywordexpr): Likewise.
805 2009-05-20 Sandra Loosemore <sandra@codesourcery.com>
807 * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
808 TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
809 TARGET_CONVERT_TO_TYPE.
810 * hooks.c (hook_tree_const_tree_null): Define.
811 * hooks.h (hook_tree_const_tree_null): Declare.
812 * target.h (struct gcc_target): Add invalid_parameter_type,
813 invalid_return_type, promoted_type, and convert_to_type fields.
814 * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
815 (TARGET_INVALID_RETURN_TYPE): Define.
816 (TARGET_PROMOTED_TYPE): Define.
817 (TARGET_CONVERT_TO_TYPE): Define.
818 (TARGET_INITIALIZER): Update for new fields.
819 * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
820 (grokparms): Check targetm.invalid_parameter_type.
821 * c-typeck.c (default_conversion): Check targetm.promoted_type.
822 * c-convert.c (convert): Check targetm.convert_to_type.
824 2009-05-20 Adam Nemet <anemet@caviumnetworks.com>
826 * config/mips/mips.md (*extenddi_truncate<mode>,
827 *extendsi_truncate<mode>): Emit exts if supported. Add attribute
829 (*extendhi_truncateqi): New define_insn_and_sptit.
831 2009-05-20 Jakub Jelinek <jakub@redhat.com>
834 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
835 recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
837 2009-05-20 Eric Botcazou <ebotcazou@adacore.com>
839 * fold-const.c (build_fold_addr_expr_with_type): Take the address of
840 the operand of VIEW_CONVERT_EXPR.
842 2009-05-20 H.J. Lu <hongjiu.lu@intel.com>
844 * config/i386/driver-i386.c (host_detect_local_cpu): Check
845 extended family and model for Intel processors. Support Intel
848 2009-05-20 Olivier Hainque <hainque@adacore.com>
850 * gstab.h (stab_code_type): Define, to be used instead of the
851 __stab_debug_code enum, made anonymous. Add 2009 to the copyright
853 * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
854 occurrences by stab_code_type.
855 * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
857 2009-05-20 Martin Jambor <mjambor@suse.cz>
859 * tree-flow.h (insert_edge_copies_seq): Undeclare.
860 (sra_insert_before): Likewise.
861 (sra_insert_after): Likewise.
862 (sra_init_cache): Likewise.
863 (sra_type_can_be_decomposed_p): Likewise.
864 * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
865 * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
866 (sra_insert_before): Likewise.
867 (sra_insert_after): Likewise.
868 (sra_init_cache): Likewise.
869 (insert_edge_copies_seq): Made static and moved upwards.
871 * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
874 * tree-flow-inline.h (contains_view_convert_expr_p): New function.
876 * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
877 (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
880 2009-05-20 Richard Guenther <rguenther@suse.de>
882 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
883 with mismatched comparison modes.
885 2009-05-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
887 * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
888 (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
889 * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
890 with shifts for Thumb2.
891 (orsi_notsi): New for orn.
892 (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
893 (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
894 * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
895 (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
896 Don't invert remainder for IOR.
898 2009-05-19 Zdenek Dvorak <ook@ucw.cz>
900 PR tree-optimization/40087
901 * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
902 number_of_iterations_ne): Rename never_infinite argument.
903 (number_of_iterations_lt_to_ne, number_of_iterations_lt,
904 number_of_iterations_le): Handle pointer-type ivs when
905 exit_must_be_taken is false.
906 (number_of_iterations_cond): Do not always assume that
907 exit_must_be_taken if the control variable is a pointer.
909 2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
911 * c-typeck.c (build_binary_op): Allow % on integal vectors.
912 * doc/extend.texi (Vector Extension): Document that % is allowed too.
914 2009-05-19 H.J. Lu <hongjiu.lu@intel.com>
916 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
917 ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
919 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
922 * c.opt (Wlogical-op): Disabled by default.
923 * c-opt (c_common_post_options): Do not enable Wlogical-op with
925 * doc/invoke.texi (Wlogical-op): Likewise.
927 2009-05-19 Eric Botcazou <ebotcazou@adacore.com>
929 * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
931 <PLUS_EXPR>: Strip useless type conversions instead of type nops.
932 Propagate the type of the first operand.
933 <ASSERT_EXPR>: Simplify.
934 (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
935 Rewrite using the RHS code as discriminant.
936 <NOP_EXPR>: Turn into CASE_CONVERT.
937 <PLUS_EXPR>: Propagate the type of the first operand.
939 2009-05-19 Steve Ellcey <sje@cup.hp.com>
941 * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
942 (ia64_dconst_0_375): New.
943 * config/ia64/ia64.c (ia64_override_options): Remove
944 -minline-sqrt-min-latency warning.
945 (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
946 (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
947 * config/ia64/ia64.md (*sqrt_approx): Remove.
948 (sqrtsf2): Remove #if 0.
949 (sqrtsf2_internal_thr): Rewrite and move to div.md.
950 (sqrtdf): Remove assert.
951 (sqrtdf2_internal_thr): Rewrite and move to div.md.
952 (sqrtxf2): Remove #if 0.
953 (sqrtxf2_internal_thr): Rewrite and move to div.md.
954 * div.md (sqrt_approx_rf): New.
955 (sqrtsf2_internal_thr): New implementation.
956 (sqrtsf2_internal_lat): New.
957 (sqrtdf2_internal_thr: New implementation.
958 (sqrtxf2_internal): New implementation.
960 2009-05-19 Francois-Xavier Coudert <fxcoudert@gmail.com>
961 Hans-Peter Nilsson <hp@axis.com>
963 * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
964 (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
965 (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
966 (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
967 (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
968 (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
969 (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
970 (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
971 (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
972 (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
973 * c-common.c: ...from here.
975 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
977 * c-common.c (warn_logical_operator): Remove unnecessary
980 2009-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
982 * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
984 2009-05-19 Ben Elliston <bje@au.ibm.com>
986 * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
987 assignments with memcpy calls.
988 (add_fdes): Likewise.
989 (binary_search_unencoded_fdes): Likewise.
990 (linear_search_fdes): Eliminate type puns.
992 2009-05-19 Richard Guenther <rguenther@suse.de>
994 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
995 not falsely claim to have propagated into all uses.
997 2009-05-19 Ben Elliston <bje@au.ibm.com>
999 * doc/invoke.texi (C Dialect Options): Update OpenMP specification
1002 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
1004 * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
1005 * config/sh/sh.c (sh_legitimate_address_p): Make static.
1006 (TARGET_LEGITIMATE_ADDRESS_P): New.
1007 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1008 * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1010 2009-05-18 Dodji Seketeli <dodji@redhat.com>
1013 * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
1014 child of the containing namespace's DIE.
1016 2009-05-18 Adam Nemet <anemet@caviumnetworks.com>
1018 * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
1019 *zero_extendhi_truncqi): Move after the zero_extend patterns.
1020 (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
1023 2009-05-18 H.J. Lu <hongjiu.lu@intel.com>
1026 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
1027 gen_align with gen_pad.
1028 (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
1029 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
1031 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
1032 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
1034 * config/i386/i386.md (align): Renamed to ...
1035 (pad): This. Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
1036 ASM_OUTPUT_MAX_SKIP_PAD.
1038 2009-05-18 Andreas Schwab <schwab@linux-m68k.org>
1040 * config.gcc: Fix variable syntax.
1043 * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
1044 before calling exact_log2.
1045 (output_iorsi3): Likewise.
1046 (output_xorsi3): Likewise.
1048 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
1050 * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
1051 for the none zero constant operand except for EQ and NE
1052 comprisons even when the first operand is R0.
1054 2009-05-18 Andreas Krebbel <krebbel1@de.ibm.com>
1056 * config/s390/2064.md: Remove trailing whitespaces.
1057 * config/s390/2084.md: Likewise.
1058 * config/s390/constraints.md: Likewise.
1059 * config/s390/fixdfdi.h: Likewise.
1060 * config/s390/libgcc-glibc.ver: Likewise.
1061 * config/s390/s390-modes.def: Likewise.
1062 * config/s390/s390-protos.h: Likewise.
1063 * config/s390/s390.c: Likewise.
1064 * config/s390/s390.h: Likewise.
1065 * config/s390/s390.md: Likewise.
1066 * config/s390/tpf-unwind.h: Likewise.
1068 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
1070 * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
1072 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
1075 * configure.ac (m68k-*-*): Check if binutils support TLS.
1076 * configure: Regenerate.
1077 * config/m68k/predicates.md (symbolic_operand): Extend comment.
1078 * config/m68k/constraints.md (Cu): New constraint.
1079 * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
1080 (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
1081 (movsi): Handle TLS symbols.
1082 (addsi3_5200): Handle XTLS symbols, indent.
1083 * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
1084 (m68k_tls_reference_p): Declare.
1085 (m68k_legitimize_address): Declare.
1086 (m68k_unwrap_symbol): Declare.
1087 * config/m68k/m68k.opt (mxtls): New option.
1088 * config/m68k/m68k.c (ggc.h): Include.
1089 (m68k_output_dwarf_dtprel): Implement hook.
1090 (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1091 (m68k_expand_prologue): Load GOT pointer when function needs it.
1092 (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
1093 (m68k_legitimate_constant_address_p): Same.
1094 (m68k_decompose_address): Handle TLS references.
1095 (m68k_get_gp): New static function.
1096 (enum m68k_reloc): New contants.
1097 (TLS_RELOC_P): New macro.
1098 (m68k_wrap_symbol): New static function.
1099 (m68k_unwrap_symbol): New function.
1100 (m68k_final_prescan_insn_1): New static function.
1101 (m68k_final_prescan_insn): New function.
1102 (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
1104 (legitimize_pic_address): Handle TLS references..
1105 (m68k_tls_get_addr, m68k_get_tls_get_addr)
1106 (m68k_libcall_value_in_a0_p)
1107 (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
1108 (m68k_call_m68k_read_tp): Helper variables and functions for ...
1109 (m68k_legitimize_tls_address): Handle TLS references.
1110 (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
1112 (m68k_legitimize_address): Handle TLS symbols.
1113 (m68k_get_reloc_decoration): New static function.
1114 (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
1116 (m68k_output_dwarf_dtprel): Implement hook.
1117 (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
1118 (m68k_libcall_value): Return result in A0 instead of D0 when asked by
1119 m68k_call_* routines.
1120 (sched_attr_op_type): Handle TLS symbols.
1121 (gt-m68k.h): Include.
1122 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
1123 (LEGITIMATE_PIC_OPERAND_P): Support TLS.
1125 2009-05-18 Martin Jambor <mjambor@suse.cz>
1127 * ipa-prop.c (ipa_check_stmt_modifications): Removed.
1128 (visit_store_addr_for_mod_analysis): New function.
1129 (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
1130 (determine_cst_member_ptr): Use gimple_assign_single_p.
1131 (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
1132 (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
1133 operands. Don't check number of operands of a NOP_EXPR.
1135 2009-05-18 Eric Fisher <joefoxreal@gmail.com>
1137 * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
1139 2009-05-17 Manuel López-Ibáñez <manu@gcc.gnu.org>
1142 * c-common.c (warn_logical_operator): Don't warn if one of
1143 expression isn't always true or false.
1145 2009-05-17 Kai Tietz <kai.tietz@onevision.com>
1147 * config/i386/biarch32.h: New file.
1148 * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
1150 2009-05-17 Adam Nemet <anemet@caviumnetworks.com>
1152 * config/mips/mips.md (*zero_extend<mode>_trunchi,
1153 *zero_extend<mode>_truncqi): Merge these into ...
1154 (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
1155 Name the pattern following this as *zero_extendhi_truncqi.
1157 2009-05-16 Brad Lucier <lucier@math.purdue.edu>
1160 * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
1161 * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
1162 (output_info): Make field HOST_WIDEST_INT.
1163 (print_statistics): Use HOST_WIDEST_INT_PRINT.
1164 (dump_bitmat_statistics): Same.
1166 2009-05-16 Francois-Xavier Coudert <fxcoudert@gmail.com>
1168 * config.gcc (use_gcc_stdint): Set to wrap.
1169 * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
1170 INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
1171 UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1172 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
1173 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
1174 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
1175 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1176 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
1178 2009-05-16 Joseph Myers <joseph@codesourcery.com>
1180 * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
1182 * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
1183 Move definitions earlier.
1184 (OPT_ARCH64, OPT_ARCH32): Define.
1185 (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
1188 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
1191 * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
1194 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
1196 * arm.md (movdi2): Copy non-reg values to DImode registers.
1198 2009-05-16 Jakub Jelinek <jakub@redhat.com>
1201 * final.c (label_to_max_skip): New function.
1202 (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
1203 CODE_LABEL_NUMBER <= max_labelno.
1204 * output.h (label_to_max_skip): New prototype.
1205 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
1206 (ix86_avoid_jump_mispredicts): ... this. Don't define if
1207 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined. Update comment.
1208 Handle CODE_LABELs with >= 16 byte alignment or with
1209 max_skip == (1 << align) - 1.
1210 (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
1211 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
1214 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
1215 .p2align 3 if MAX_SKIP is smaller than 7.
1216 * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1218 2009-05-15 Ian Lance Taylor <iant@google.com>
1220 * alias.c (struct alias_set_entry_d): Rename from struct
1221 alias_set_entry. Change all uses.
1222 * except.c (struct call_site_record_d): Rename from struct
1223 call_site_record. Change all uses.
1224 * except.h (struct eh_region_d): Rename from struct eh_region.
1226 * gcse.c (struct hash_table_d): Rename from struct hash_table.
1228 * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
1229 ivtype_map_elt. Change all uses.
1230 (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
1232 (struct ifsese_d): Rename fromstruct ifsese. Change all uses.
1233 * graphite.h (struct name_tree_d): Rename from struct name_tree.
1235 (struct sese_d): Rename from struct sese. Change all uses.
1236 * omega.h (struct eqn_d): Rename from struct eqn. Change all uses.
1237 (struct omega_pb_d): Rename from struct omega_pb. Change all uses.
1238 * optabs.h (struct optab_d): Rename from struct optab. Change all
1240 (struct convert_optab_d): Rename from struct convert_optab.
1242 * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
1243 ipa_opt_pass. Change all uses.
1244 * tree-predcom.c (struct dref_d): Rename from struct dref. Change
1247 * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
1248 defined as a typedef.
1249 (grokdeclarator): If -Wc++-compat, warn if a typedef is already
1252 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
1255 * fold-const.c (make_range,build_range_check,merge_ranges): Move
1257 (merge_ranges): Returns bool.
1258 * tree.h (make_range): .. to here.
1259 (build_range_check): Likewise.
1260 (merge_ranges): Likewise. Renamed from merge_ranges.
1261 * c-typeck.c (parser_build_binary_op): Update calls to
1262 warn_logical_operator.
1263 * c-common.c (warn_logical_operator): Add new warning.
1264 * c-common.h (warn_logical_operator): Update declaration.
1266 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
1268 * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
1270 2009-05-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1272 * doc/install.texi: Document MPC requirements, flags etc.
1274 * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
1275 (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
1276 Evaluate constant arguments.
1277 (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
1278 (fold_builtin_1): Likewise, also evaluate constant arguments.
1279 Remove superfluous break.
1280 (do_mpc_ckconv): New.
1281 * real.h: Include mpc.h.
1282 * toplev.c (print_version): Output MPC version info if available.
1284 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
1286 * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
1288 2009-05-15 H.J. Lu <hongjiu.lu@intel.com>
1290 * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
1293 2009-05-15 Jan Hubicka <jh@suse.cz>
1295 * doc/invoke.texi (max-early-inliner-iterations): New flag.
1296 * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
1297 (try_inline): Fix return value.
1298 (cgraph_decide_inlining_incrementally): Honor new value.
1299 (cgraph_early_inlining): Handle indirect inlining.
1300 * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
1302 2009-05-15 Jan Hubicka <jh@suse.cz>
1304 * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
1305 * cgraphunit.c (cgraph_finalize_function): Set it.
1306 (cgraph_expand_function): Use it.
1308 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
1310 * real.c (encode_ieee_half): Define.
1311 (decode_ieee_half): Define.
1312 (ieee_half_format): Define.
1313 (arm_half_format): Define.
1314 * real.h (ieee_half_format): Declare.
1315 (arm_half_format): Declare.
1317 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
1319 * optabs.c (prepare_float_lib_cmp): Test that the comparison,
1320 swapped, and reversed optabs exist before trying to use them.
1322 2009-05-15 Paul Brook <paul@codesourcery.com>
1323 Sandra Loosemore <sandra@codesourcery.com>
1325 * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
1326 loads. Allow PRE_DEC.
1327 (output_move_neon): Handle PRE_DEC.
1328 (arm_print_operand): Add 'A' for neon structure loads.
1329 * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
1330 * config/arm/neon.md (neon_mov): Update comment.
1331 * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
1333 (Um): New constraint.
1335 2009-05-15 Jan Hubicka <jh@suse.cz>
1337 Revert the following patch until testsuite fallout is fixed:
1338 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1339 * cgraph.h (struct inline_summary): New filed self_wize,
1340 size_inlining_benefit, self_time and time_inlining_benefit.
1341 (struct cgraph_global_info): Replace insns by time ans size fields.
1342 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1343 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1344 (ipcp_update_callgraph): Do not touch function bodies.
1345 * ipa-inline.c: Include except.h
1346 (MAX_TIME): New constant.
1347 (overall_insns): Remove
1348 (overall_size, max_benefit): New static variables.
1349 (cgraph_estimate_time_after_inlining): New function.
1350 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1351 (cgraph_clone_inlined_nodes): Update size.
1352 (cgraph_mark_inline_edge): Update size.
1353 (cgraph_estimate_growth): Use size info.
1354 (cgraph_check_inline_limits): Check size.
1355 (cgraph_default_inline_p): Likewise.
1356 (cgraph_edge_badness): Compute badness based on benefit and size cost.
1357 (cgraph_decide_recursive_inlining): Check size.
1358 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
1360 (cgraph_decide_inlining): Likewise.
1361 (cgraph_decide_inlining_incrementally): Likewise; honor
1362 PARAM_EARLY_INLINING_INSNS.
1363 (likely_eliminated_by_inlining_p): New predicate.
1364 (estimate_function_body_sizes): New function.
1365 (compute_inline_parameters): Use it.
1366 * except.c (must_not_throw_labels): New function.
1367 * except.h (must_not_throw_labels): Declare.
1368 * tree-inline.c (init_inline_once): Kill inlining_weigths
1369 * tree-ssa-structalias.c: Avoid uninitialized warning.
1370 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1371 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1372 (PARAM_INLINE_CALL_COST): Remove.
1373 (PARAM_EARLY_INLINING_INSNS): New.
1375 2009-05-15 Richard Guenther <rguenther@suse.de>
1377 * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
1378 not TODO_update_ssa.
1380 2009-05-15 Richard Guenther <rguenther@suse.de>
1382 PR tree-optimization/39999
1383 * gimple.h (gimple_expr_type): Use the expression type looking
1384 through useless conversions.
1385 * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
1386 (vn_nary_op_insert_stmt): Likewise.
1387 (simplify_binary_expression): Likewise.
1389 2009-05-15 Richard Guenther <rguenther@suse.de>
1391 * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
1392 New options, enabled by default.
1393 * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
1395 * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
1396 * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
1397 * tree-ssa-structalias.c (gate_tree_pta): New function.
1398 (pass_build_alias): Use it.
1400 2009-05-15 Joseph Myers <joseph@codesourcery.com>
1402 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
1403 recurse on an invariant address if a conversion from a pointer
1404 type to a wider integer type is involved.
1406 2009-05-15 Jan Hubicka <jh@suse.cz>
1408 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1409 * cgraph.h (struct inline_summary): New filed self_wize,
1410 size_inlining_benefit, self_time and time_inlining_benefit.
1411 (struct cgraph_global_info): Replace insns by time ans size fields.
1412 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1413 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1414 (ipcp_update_callgraph): Do not touch function bodies.
1415 * ipa-inline.c: Include except.h
1416 (MAX_TIME): New constant.
1417 (overall_insns): Remove
1418 (overall_size, max_benefit): New static variables.
1419 (cgraph_estimate_time_after_inlining): New function.
1420 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1421 (cgraph_clone_inlined_nodes): Update size.
1422 (cgraph_mark_inline_edge): Update size.
1423 (cgraph_estimate_growth): Use size info.
1424 (cgraph_check_inline_limits): Check size.
1425 (cgraph_default_inline_p): Likewise.
1426 (cgraph_edge_badness): Compute badness based on benefit and size cost.
1427 (cgraph_decide_recursive_inlining): Check size.
1428 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
1430 (cgraph_decide_inlining): Likewise.
1431 (cgraph_decide_inlining_incrementally): Likewise; honor
1432 PARAM_EARLY_INLINING_INSNS.
1433 (likely_eliminated_by_inlining_p): New predicate.
1434 (estimate_function_body_sizes): New function.
1435 (compute_inline_parameters): Use it.
1436 * except.c (must_not_throw_labels): New function.
1437 * except.h (must_not_throw_labels): Declare.
1438 * tree-inline.c (init_inline_once): Kill inlining_weigths
1439 * tree-ssa-structalias.c: Avoid uninitialized warning.
1440 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1441 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1442 (PARAM_INLINE_CALL_COST): Remove.
1443 (PARAM_EARLY_INLINING_INSNS): New.
1444 doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
1445 (inline-call-cost): Remove.
1446 (early-inlining-insns): New.
1448 2009-05-15 Eric Botcazou <ebotcazou@adacore.com>
1450 * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use them
1452 (print_int_cst_bounds_in_octal_p): Likewise.
1453 (dbxout_type): Adjust calls to above functions. Be prepared to deal
1455 * dwarf2out.c (base_type_die): Likewise.
1456 (is_subrange_type): Delete.
1457 (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds.
1458 (modified_type_die): Call subrange_type_for_debug_p on subtypes.
1459 * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
1460 the destination type is boolean.
1461 (build_range_check): Do not special-case subtypes.
1462 (fold_sign_changed_comparison): Likewise.
1463 (fold_unary): Likewise.
1464 * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
1465 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
1466 * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
1467 * tree.c (subrange_type_for_debug_p): New predicate based on the former
1469 * tree.h (subrange_type_for_debug_p): Declare.
1470 * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
1471 (convert_affine_scev): Remove call to above function.
1472 (chrec_convert_aggressive): Likewise.
1473 * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
1474 false for conversions involving subtypes.
1475 * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
1476 (vrp_val_min): Likewise.
1477 (needs_overflow_infinity): Likewise.
1478 (extract_range_from_unary_expr): Likewise.
1480 2009-05-15 Paolo Bonzini <bonzini@gnu.org>
1482 * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1483 * config/frv/frv.c: Likewise.
1484 * config/s390/s390.c: Likewise.
1485 * config/sparc/sparc.h: Likewise.
1486 * config/i386/i386.h: Likewise.
1487 * config/i386/i386.c: Likewise.
1488 * config/crx/crx.c: Likewise.
1489 * config/m68hc11/m68hc11.h: Likewise.
1490 * config/iq2000/iq2000.c: Likewise.
1491 * config/mn10300/mn10300.h: Likewise.
1492 * config/mn10300/mn10300.c: Likewise.
1493 * config/m68k/m68k.c: Likewise.
1494 * config/rs6000/rs6000.c: Likewise.
1495 * config/rs6000/xcoff.h: Likewise.
1496 * config/rs6000/linux64.h: Likewise.
1497 * config/rs6000/sysv4.h: Likewise.
1498 * config/score/score3.c: Likewise.
1499 * config/score/score7.c: Likewise.
1500 * config/score/score.c: Likewise.
1501 * config/arm/arm.md: Likewise.
1502 * config/mips/mips.c: Likewise.
1503 * config/mips/mips.md: Likewise.
1504 * config/bfin/bfin.h: Likewise.
1505 * config/pa/pa.c: Likewise.
1506 * config/pa/constraints.md: Likewise.
1508 * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
1509 * config/pdp11/pdp11.c (legitimate_address_p): Delete.
1510 * config/pdp11/pdp11.h: Use memory_address_p instead.
1512 2009-05-14 Ian Lance Taylor <iant@google.com>
1514 * passes.c (finish_optimization_passes): Change i to int.
1515 * plugin.c (plugins_active_p): Change event to int.
1516 (dump_active_plugins): Likewise.
1517 * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
1519 * tree.c (tree_range_check_failed): Change c to unsigned int.
1520 (omp_clause_range_check_failed): Likewise.
1521 (build_common_builtin_nodes): Change mode to int. Add cast.
1522 * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
1523 (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
1525 * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
1526 ++ or -- with a variable of enum type.
1528 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
1531 * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
1533 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
1535 * store-motion.c: Do not include params.h
1536 * Makefile.in: Fix dependencies for various files.
1538 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
1540 * auto-inc-dec.c: Fix pass description, remove apparent
1541 accidental duplication.
1543 2009-05-14 H.J. Lu <hongjiu.lu@intel.com>
1546 * ipa-utils.h (memory_identifier_string): Moved to ...
1547 * tree.h (memory_identifier_string): Here. Add GTY(()).
1549 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
1551 * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
1552 in the former documentation of...
1553 (GO_IF_LEGITIMATE_ADDRESS): ... this.
1554 * ira-conflicts.c (get_dup_num): Use address_operand.
1555 * targhooks.c (default_legitimate_address_p): New.
1556 * targhooks.h (default_legitimate_address_p): New.
1557 * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
1559 * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
1560 * target.h (struct target): Add legitimate_address_p.
1561 * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
1562 (TARGET_INITIALIZER): Include it.
1564 * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1565 * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
1566 * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
1567 (TARGET_LEGITIMATE_ADDRESS_P): New.
1569 * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1570 (REG_OK_STRICT_P): Delete.
1571 * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
1572 (frv_legitimate_address_p_1): ... this.
1573 * config/frv/frv.c (frv_legitimate_address_p): Forward to...
1574 (frv_legitimate_address_p_1): ... the renamed old
1575 frv_legitimate_address_p.
1576 * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
1577 (TARGET_LEGITIMATE_ADDRESS_P): New.
1579 * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1580 * config/s390/s390-protos.h (legitimate_address_p): Remove.
1581 * config/s390/s390.c (legitimate_address_p): Rename to...
1582 (s390_legitimate_address_p): ... this, make static.
1583 (legitimize_address): Adjust call.
1584 (TARGET_LEGITIMATE_ADDRESS_P): New.
1585 * config/s390/constraints.md ("e"): Call strict_memory_address_p.
1587 * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1588 * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
1589 * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
1590 (TARGET_LEGITIMATE_ADDRESS_P): New.
1592 * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1593 * config/spu/spu-protos.h (spu_legitimate_address): Remove.
1594 * config/spu/spu.c (spu_legitimate_address): Rename to...
1595 (spu_legitimate_address_p): ... this, make static.
1596 (TARGET_LEGITIMATE_ADDRESS_P): New.
1598 * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1599 * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
1600 * config/sparc/sparc.c (legitimate_address_p): Rename to...
1601 (sparc_legitimate_address_p): ... this, make static and return bool.
1602 (legitimize_address): Adjust call.
1603 (TARGET_LEGITIMATE_ADDRESS_P): New.
1605 * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1606 * config/i386/i386-protos.h (legitimate_address_p): Remove.
1607 * config/i386/i386.c (legitimate_address_p): Rename to...
1608 (ix86_legitimate_address_p): ... this, make static.
1609 (constant_address_p): Move after it, adjust call.
1610 (TARGET_LEGITIMATE_ADDRESS_P): New.
1612 * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1613 * config/avr/avr-protos.h (legitimate_address_p): Remove.
1614 * config/avr/avr.c (legitimate_address_p): Rename to...
1615 (avr_legitimate_address_p): ... this, make static.
1616 (legitimize_address): Adjust call.
1617 (TARGET_LEGITIMATE_ADDRESS_P): New.
1619 * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1620 * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
1621 * config/crx/crx.c (crx_legitimate_address_p): Make static.
1622 (TARGET_LEGITIMATE_ADDRESS_P): New.
1624 * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1625 * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
1626 * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
1627 (TARGET_LEGITIMATE_ADDRESS_P): New.
1629 * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1630 * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
1632 * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
1634 (TARGET_LEGITIMATE_ADDRESS_P): New.
1636 * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1637 * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
1639 * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
1641 (m68hc11_legitimate_address_p): ... this, make static.
1642 (go_if_legitimate_address_internal): Rename to...
1643 (m68hc11_legitimate_address_p_1): ... this.
1644 (legitimize_address): Adjust call.
1645 (TARGET_LEGITIMATE_ADDRESS_P): New.
1647 * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1648 * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
1649 * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
1650 (TARGET_LEGITIMATE_ADDRESS_P): New.
1652 * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1653 * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
1654 * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
1655 (mn10300_legitimate_address_p): ... this, make static.
1656 (TARGET_LEGITIMATE_ADDRESS_P): New.
1658 * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1659 * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
1660 * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
1661 (TARGET_LEGITIMATE_ADDRESS_P): New.
1663 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1664 (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
1665 (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
1666 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1667 * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
1668 * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
1669 (rs6000_legitimate_address_p): ... this, make static.
1670 (TARGET_LEGITIMATE_ADDRESS_P): New.
1671 (REG_MODE_OK_FOR_BASE_P): Delete.
1672 (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
1674 * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1675 * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
1677 * config/picochip/picochip.c (picochip_legitimate_address_p): Make
1678 static, adjust types.
1679 (TARGET_LEGITIMATE_ADDRESS_P): New.
1681 * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1682 * config/score/score.c (score_address_p): Rename to...
1683 (score_legitimate_address_p): ... this.
1684 (TARGET_LEGITIMATE_ADDRESS_P): New.
1685 * config/score/score3.c (score3_address_p): Rename to...
1686 (score3_legitimate_address_p): ... this.
1687 * config/score/score7.c (score7_address_p): Rename to...
1688 (score7_legitimate_address_p): ... this.
1690 * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
1691 THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
1692 GO_IF_LEGITIMATE_ADDRESS): Delete.
1693 * config/arm/arm-protos.h (thumb1_legitimate_address_p,
1694 thumb2_legitimate_address_p): Delete.
1695 (arm_legitimate_address_p): Rename to...
1696 (arm_legitimate_address_outer_p): ... this.
1697 * config/arm/constraints.md ("Uq"): Adjust call.
1698 * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
1699 * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
1700 (arm_legitimate_address_outer_p): ... this.
1701 (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
1702 (TARGET_LEGITIMATE_ADDRESS_P): New.
1704 * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1705 * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
1706 * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
1707 (TARGET_LEGITIMATE_ADDRESS_P): New.
1709 * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1710 * config/vax/vax-protos.h (legitimate_address_p): Remove.
1711 * config/vax/vax.c (legitimate_address_p): Rename to...
1712 (vax_legitimate_address_p): ... this, make static.
1713 (TARGET_LEGITIMATE_ADDRESS_P): New.
1715 * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1716 * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
1717 * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
1718 (TARGET_LEGITIMATE_ADDRESS_P): New.
1720 * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1721 * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
1722 * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
1723 (mmix_legitimate_address_p): ... this, make static.
1724 (TARGET_LEGITIMATE_ADDRESS_P): New.
1726 * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1727 * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
1728 * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
1729 (TARGET_LEGITIMATE_ADDRESS_P): New.
1731 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
1733 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
1734 of MODE_COMPLEX_INT.
1736 2009-05-14 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
1738 * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
1739 LCT_NORMAL in function call.
1740 * mips-tdump.c (print_file_desc): Add cast to enum type.
1741 * mips-tfile.c (add_ext_symbol): Add casts to enum types.
1742 (mark_stabs): Add casts to enum types.
1743 (parse_stabs_common): Add casts to enum types.
1745 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
1747 * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
1748 Check for invalid values of LETTER.
1750 2009-05-13 Taras Glek <tglek@mozilla.com>
1752 * attribs.c (register_attribute): moved out attribute registration into
1754 * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
1755 * gcc-plugin.h: Added forward decl for register_attribute.
1756 * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
1757 * plugin.c (register_callback, invoke_plugin_callbacks): Added
1758 PLUGIN_ATTRIBUTES boilerplate.
1760 2009-05-14 Dave Korn <dave.korn.cygwin@gmail.com>
1762 * config/i386/msformat-c.c (ms_printf_length_specs): Use enumeration
1763 values even in sentinel and empty entries.
1764 (ms_printf_flag_specs): Likewise.
1765 (ms_scanf_flag_specs): Likewise.
1766 (ms_strftime_flag_specs): Likewise.
1767 (ms_print_char_table): Likewise.
1768 (ms_scan_char_table): Likewise.
1769 (ms_time_char_table): Likewise.
1771 2009-05-13 Doug Kwan <dougkwan@google.com>
1773 * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
1775 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
1777 * config/mips/mips.md (store): Add attributes for QI and HI.
1779 (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
1780 (truncdi<mode>2): ... this new pattern.
1782 2009-05-13 Brad Hards <bradh@kde.org>
1784 * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
1786 2009-05-14 Jakub Jelinek <jakub@redhat.com>
1787 Ben Elliston <bje@au.ibm.com>
1790 * dse.c (check_mem_read_rtx): Guard against width == -1.
1792 2009-05-13 Michael Matz <matz@suse.de>
1795 * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
1796 (trivially_conflicts_p): New function.
1797 (insert_backedge_copies): Use it.
1799 2009-05-13 Janis Johnson <janis187@us.ibm.com>
1801 * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
1802 (handle_stdc_pragma): Use new enum constant names.
1803 (handle_pragma_float_const_decimal64): Ditto.
1805 2009-05-13 Ian Lance Taylor <iant@google.com>
1807 * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
1810 2009-05-13 Nathan Sidwell <nathan@codesourcery.com>
1812 * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
1813 * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
1815 * config/m68k/m68k.h (FL_UCLINUX): Define.
1817 2009-05-13 Jan Hubicka <jh@suse.cz>
1819 * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
1821 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
1823 * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
1824 unless -fschedule-insns is specified.
1826 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
1829 * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
1830 TARGET_EXPAND_CBRANCHDI4.
1831 * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
1832 * config/sh/sh.opt (mexpand-cbranchdi): Remove.
1833 (cmpeqdi): Fix comment.
1835 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
1837 * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
1838 (sh_legitimate_address_p): Likewise.
1839 * config/sh/sh.c (sh_legitimate_index_p): New.
1840 (sh_legitimate_address_p): Likewise.
1841 * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
1842 (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
1843 (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
1844 (MAYBE_BASE_REGISTER_RTX_P): New macro.
1845 (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
1846 (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
1847 (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
1848 (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
1849 (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
1851 2009-05-12 Jan Hubicka <jh@suse.cz>
1853 * tree-inline.c (estimate_operator_cost): Add operands;
1854 when division happens by constant, it is cheap.
1855 (estimate_num_insns): Loads and stores are not having cost of 0;
1856 EH magic stuff is cheap; when computing runtime cost of switch,
1857 use log2 base of amount of its cases; builtin_expect has cost of 0;
1858 compute cost for moving return value of call.
1859 (init_inline_once): Initialize time_based flags.
1860 * tree-inline.h (eni_weights_d): Add time_based flag.
1862 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
1864 * df-core.c: Update head documentation.
1866 2009-05-12 Michael Meissner <meissner@linux.vnet.ibm.com>
1869 * rs6000.c (rs6000_generate_compare): Use op1b instead of
1870 shadowing exisiting variable op1.
1872 2009-05-12 Uros Bizjak <ubizjak@gmail.com>
1875 * config/i386/driver-i386.c (processor_signatures): New enum.
1876 (SIG_GEODE): Move from vendor_signatures to processor_signatures.
1877 (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
1878 processor signature to detect geode processor.
1880 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
1884 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
1886 * optabs.c (prepare_cmp_insn): Temporarily disable test that
1887 causes spurious differences between trunk and cond-optab branch.
1889 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
1891 * dojump.c (compare_from_rtx): Delete.
1892 * expmed.c (emit_store_flag): Only try cstore_optab. Canonicalize
1893 any MODE_CC mode to the cstorecc4 pattern. Use prepare_operand, fail
1894 if the comparison does not satisfy the predicate; test predicates for
1895 operands 2 and 3 of a cstore pattern. Don't try cstore optab
1896 further if one existing pattern fails.
1897 * expr.h (compare_from_rtx): Delete.
1898 (prepare_operand): Declare it.
1899 * optabs.c: Change "lib call" to "libcall" throughout.
1900 (bcc_gen_fctn, setcc_gen_code, trap_rtx,
1901 HAVE_conditional_trap, emit_cmp_insn): Delete.
1902 (can_compare_p): Delete cmp_optab case.
1903 (prepare_float_lib_cmp): Return an rtx and a machine mode.
1904 Accept other parameters by value.
1905 (prepare_operand): Make non-static.
1906 (prepare_cmp_insn): Return an rtx and a machine mode. Accept
1907 other parameters by value. Try to widen operands here based on
1908 an optab_methods argument and looking at cbranch_optab.
1909 (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
1910 loop. Use cbranch_optab directly.
1911 (emit_cmp_and_jump_insns): Fix comment. Adjust call to
1912 prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
1914 (emit_conditional_move, emit_conditional_add): Inline what's needed
1915 of compare_from_rtx, using new prepare_cmp_insn for the rest.
1916 (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
1917 with COMPARE. Move cmov_optab and cstore_optab above
1918 with cbranch_optab, move cmp_optab down with ucmp_optab,
1919 remove tst_otpab. Do not initialize trap_rtx.
1920 (gen_cond_trap): Do it here. Use ctrap_optab. Test predicate
1921 for trap code. Do not check HAVE_conditional_trap. Use
1922 prepare_cmp_insn. Accept no predicate for operand 3.
1923 * optabs.h (OTI_cmp): Mark as used only for libcalls.
1924 (OTI_ctrap, ctrap_optab): New.
1925 (tst_optab): Delete.
1926 (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
1927 * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
1928 with lookup of ctrap_optab.
1929 * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
1930 setcc_gen_code): Delete.
1933 * combine.c (combine_simplify_rtx, simplify_set): Do not
1934 special case comparing against zero for cc0 machines.
1935 * simplify-rtx.c (simplify_binary_operation_1): Never remove
1936 COMPARE on cc0 machines.
1937 (simplify_relational_operation): Return a new expression when
1938 a COMPARE could be removed.
1939 * final.c (final_scan_insn): Compare cc_status values
1940 against LHS of a (compare FOO (const_int 0)) cc0 source.
1941 Also check if cc_status.value is the full compare.
1943 * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
1944 (cstoreMM4): Document.
1945 (conditional_trap): Document ctrapMM4 instead.
1946 (sync_compare_and_swapMM): Refer to cbranchcc4.
1947 (Dependent Patterns): Eliminate obsolete information referring to
1948 the old jump optimization phase.
1949 (Canonicalization): Include cbranchcc4 case, omit canonicalization
1950 of compares with 0 on cc0 machines.
1951 (Jump Patterns): Refer to MODE_CC jump patterns preferably,
1952 avoiding references to cc0. Remove text about storing operands
1954 * doc/tm.texi (Condition Codes): Include blurb on different
1955 condition code representations, separate into subsections for
1956 CC0, MODE_CC and conditional execution.
1958 * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
1959 alpha_emit_setcc): Accept operands and a machine mode.
1960 * config/alpha/alpha.c (alpha_emit_conditional_branch):
1961 Get code/op0/op1 from operands, use machine mode argument
1962 instead of alpha_compare.fp_p. Emit the branch here.
1963 (alpha_emit_setcc): Likewise, and return boolean.
1964 (alpha_emit_conditional_move): Likewise. Assert that
1965 cmp_op_mode == cmp_mode, and simplify accordingly.
1966 * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
1967 * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
1968 (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
1970 (stack probe test): Use cbranchdi4.
1971 * config/alpha/predicates.md (alpha_cbranch_operator): New.
1973 * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
1974 * config/arc/arc.h (movsicc, movsfcc): Use it.
1975 (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
1976 (cbranchsi4, cstoresi4): New.
1977 (cmpsi, bCC and sCC expanders): Remove.
1979 * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
1980 * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
1981 * config/arm/predicates.md (arm_comparison_operator): Only include
1982 floating-point operators if there is a hardware floating-point unit.
1983 * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
1984 deferring to cbranch_cc and cstore_cc respectively.
1985 (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
1986 cbranch_cc, cstore_cc): New.
1987 (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
1989 (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
1991 * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
1992 * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
1994 (adjust_insn_length): Adjust calls.
1995 (avr_reorg): Handle (compare (foo) (const_int 0)).
1996 * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
1997 (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
1998 (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
1999 (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
2001 (cbranchqi4, cbranchhi4, cbranchsi4): New.
2002 (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
2004 * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
2005 (cbranchsi4, cstorebi4, cstoresi4): New.
2006 (movbisi): This insn is duplicate, split it to zero_extend.
2007 * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
2008 (bfin_gen_compare): Do not use them. Emit VOIDmode SET, not BImode.
2009 (bfin_optimize_loop): Use cbranch expander.
2010 * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
2011 * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
2012 (bfin_bimode_comparison_operator): ... this.
2013 (bfin_direct_comparison_operator): New.
2015 * config/cris/cris.c (cris_normal_notice_update_cc): Look
2016 inside (compare FOO (const_int 0)).
2017 (cris_rtx_costs): Handle ZERO_EXTRACT.
2018 * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
2019 (*tstdi_non_v32): Fold in *cmpdi_non_v32.
2020 (*tstdi_v32): Delete.
2021 (*cmpdi_non_v32): Add M alternative for operand 1.
2022 (cmpsi, cmp<mode>): Make private.
2023 (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
2025 (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
2027 * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
2028 (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
2029 (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
2030 (cc_reg_operand): New.
2032 * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
2033 crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
2034 * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
2035 * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
2036 crx_expand_scond): Delete.
2038 * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
2040 * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
2041 * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
2043 * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
2044 cstoresi4, cstoresf4, cstoredf4): New.
2045 (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
2046 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2047 Receive the entire operands array.
2048 * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
2049 * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
2050 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2051 Get test/op0/op1 from the operands array.
2052 (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
2054 * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
2055 (h8300_expand_store): New.
2056 * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
2058 (h8300_expand_branch): Emit compare here. Adjust for new arguments.
2059 (h8300_expand_store): New.
2060 * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
2061 or do not try to produce (set (cc0) REG).
2062 (peepholes): Wrap arguments with COMPARE. Add a peephole to
2063 change a compare into a move to a scratch register. Disable some
2064 peepholes when comparing with zero.
2065 (tstsi, tsthi, tstsi, cmpqi): Make private.
2068 (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
2071 * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
2072 ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
2073 (ix86_emit_i387_log1p): Use gen_cbranchxf4.
2074 (ix86_emit_i387_log1p): Use cbranchxf2.
2075 (ix86_expand_setcc): Return void.
2076 * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
2077 * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
2078 cmp<MODEF>, cmpcc): Remove.
2079 (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
2080 cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
2081 cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
2082 (sCC and bCC expanders): Remove.
2083 (stack_protect_test): Use cbranchcc4.
2085 * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
2087 (ia64_expand_compare): Accept three rtx by reference and return void.
2088 * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
2089 (ia64_expand_compare): Replace op0/op1 with *op0/*op1. Get code
2090 from *expr. Update *expr with the BImode comparison to do.
2091 * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
2092 cmptf, bCC, sCC, conditional_trap): Delete.
2093 (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
2094 cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
2095 cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
2096 ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
2097 * config/ia64/predicates.md (ia64_cbranch_operator): New.
2099 * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
2100 type of last argument.
2101 * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
2102 (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
2103 use machine mode argument instead of branch_type. Remove dead
2104 code for floating-point comparisons.
2105 * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
2106 * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
2108 (cbranchsi4, cstoresi4): New.
2109 * config/iq2000/predicates.md (reg_or_const_operand): New.
2111 * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
2112 * config/m32c/m32c.md (any_cond, gl_cond): Delete.
2113 (b<code>_op): Rewrite to...
2114 (bcc_op): ... this, using match_operator.
2115 (s<code>_op): Rewrite to...
2116 (scc_op): ... this, using match_operator.
2117 (s<code>_24_op): Rewrite to...
2118 (scc_op_24): ... this, using match_operator.
2119 (s<code>_<mode>): Rewrite to...
2120 (cstore<mode>4): ... this, using match_operator.
2121 (s<code>_<mode>_24): Rewrite to...
2122 (cstore<mode>4_24): ... this, using match_operator.
2123 * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
2124 m32c_unpend_compare, m32c_expand_scc): Delete.
2125 * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
2126 m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
2127 (m32c_expand_movcc): Change NE to EQ if necessary.
2128 (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
2130 * config/m32r/m32r-protos.h (gen_cond_store): New.
2131 * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
2132 (gen_cond_store): New, from sCC patterns.
2133 (m32r_expand_block_move): Use cbranchsi4.
2134 * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
2135 * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
2136 (cbranchsi4, cstoresi4): New.
2138 * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
2140 (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
2141 (m68hc11_notice_update_cc): Look into a compare with 0.
2142 * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
2144 * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
2145 cmphi, cmpqi, bCC): Delete.
2146 (cbranchsi4, cbranchhi4, cbranchqi4): New.
2147 (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
2148 bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
2151 * config/m68k/predicates.md (m68k_cstore_comparison_operator,
2152 const0_operand, const1_operand, m68k_subword_comparison_operand): New.
2153 * config/m68k/constraints.md (H): New.
2154 * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
2155 the define_insn below.
2156 (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
2157 (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
2158 *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
2159 patterns): Wrap RHS with COMPARE.
2160 (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
2161 (*cmpdi_internal): Name this pattern.
2162 (cmpdi): Change to define_insn.
2163 (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
2164 cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
2165 (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
2167 (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
2168 sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
2169 (conditional_trap): Change to...
2170 (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
2171 (*conditional_trap): Use the ordered_comparison_operator and
2172 const1_operand predicates.
2173 * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
2174 (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
2175 (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
2176 * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
2178 * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
2179 mcore_modify_comparison, mcore_gen_compare_reg): Remove.
2180 (mcore_gen_compare): New.
2181 * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
2182 (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
2183 (mcore_gen_compare): ... this.
2184 * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
2185 (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
2186 (stack probe pattern): Use cbranchsi4.
2188 * config/mips/predicates.md (mips_cstore_operator): New.
2189 * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
2190 * config/mips/mips.md (any_cond): Delete.
2191 (conditional_trap): Rename to ctrap<GPR:mode>4. Adjust predicates,
2193 (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
2194 fixuns_truncsfdi2): Use cbranch patterns.
2195 (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
2196 (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
2197 Adjust call to mips_expand_conditional_branch.
2198 (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
2200 * config/mips/mips-protos.h (mips_expand_conditional_branch,
2201 mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
2202 * config/mips/mips.c (cmp_operands): Delete.
2203 (mips_emit_compare): Get comparison operands from *op0/*op1.
2204 (mips_expand_scc): Get code/op0/op1/target from operands. Assert
2205 that it succeeds. Use op0/op1 instead of cmp_operands.
2206 (mips_expand_conditional_branch, mips_expand_conditional_move,
2207 mips_expand_conditional_trap): Likewise.
2208 (mips_block_move_loop): Use cbranch patterns.
2209 * config/mips/mips.h (cmp_operands): Delete.
2211 * config/mmix/mmix.c (mmix_valid_comparison): Delete.
2212 (mmix_gen_compare_reg): Just return a register in the right CC mode.
2213 * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
2214 * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
2215 (*cmpcc_folded): Rename to...
2216 (*cmpdi_folded): this.
2217 (*cmpcc): Rename to...
2219 (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
2222 (cbranchdf4): New. Handle invalid comparisons here.
2223 * config/mmix/predicates.md (float_comparison_operator): New.
2225 * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
2226 zero_extract to be cheap in (compare (zero_extract) (const_int 0).
2227 * config/mn10300/mn10300.md (tst): Delete.
2228 (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
2229 Name these patterns and wrap RHS in a compare.
2230 (*cmpsi): Make this pattern private. Include tst.
2231 (*cmpsf): Make this pattern private.
2232 (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
2233 (compare with zero peepholes): Likewise.
2235 (cbranchsi4, cbranchsf4): New.
2236 (casesi): Use cbranchsi4.
2238 * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
2239 hppa_branch_type): Delete.
2240 (return_addr_rtx): Use cbranchsi4.
2241 (emit_bcond_fp): Accept all operands. Replace CODE with NE.
2242 Emit CCFPmode comparison here.
2243 (gen_cmp_fp): Delete, now part of emit_bcond_fp.
2244 * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
2245 hppa_branch_type): Delete.
2246 * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
2247 (movsicc, movdicc): Remove references to hppa_compare_op0,
2248 hppa_compare_op1 and compare_from_rtx.
2249 (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
2250 (casesi): Use cbranchsi4.
2252 * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
2253 * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
2254 * config/pdp11/pdp11.md (register_or_const0_operand): New.
2255 (cmpdf, cmphi, cmpqi): Make private. Add tst alternatives.
2256 (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
2258 (cbranchdf4, cbranchhi4, cbranchqi4): New.
2259 (*branch, *branch_inverted): New.
2261 * config/picochip/picochip.md (cbranchhi4): Use
2262 ordered_comparison_operator.
2263 (cmphi, bCC): Remove.
2265 * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
2266 (trap_comparison_operator): Delete.
2267 * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
2268 rs6000_emit_cbranch): Accept mode and operands.
2269 * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
2270 rs6000_compare_fp_p): Delete.
2271 (rs6000_generate_compare): Accept mode and comparison. Extract code
2272 and op0/op1 from there. Replace references to rs6000_compare_op0
2273 and rs6000_compare_op1.
2274 (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
2275 extract result from passed operands.
2276 (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
2277 extract loc from passed operands.
2278 (rs6000_emit_cmove): Likewise.
2279 * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
2280 rs6000_compare_fp_p): Delete.
2281 * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
2282 (cbranch<GPR>4, cbranch<FP>4): New.
2283 (cstore<mode>4): New. Consolidate here all choices about when to use
2284 portable or specialized sCC sequences.
2285 (stack_protect_test): Use cbranchsi4.
2286 (conditional_trap): Replace with ctrap<GPR>4.
2287 (conditional trap insn): Replace trap_comparison_operator with
2288 ordered_comparison_operator.
2290 * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
2291 (s390_emit_prologue): Use ctrap.
2292 * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
2293 * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
2294 New predicates replacing...
2295 * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
2296 (cmp<GPR>, cmp<FP>, cmpcc): Delete.
2297 (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
2298 (add<mode>cc): Do not use s390_compare_op0/op1.
2299 (s<code>): Change to...
2300 (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
2302 (cstorecc4): ... this. Handle EQ or NE equally.
2303 (*sne): Un-privatize for use in cstorecc4.
2304 (b<code>): Change to...
2305 (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
2306 (conditional_trap): Replace with...
2307 (ctrap<GPR>4, ctrap<FP>4): ... these.
2308 (stack_protect): Use cbranchcc4.
2310 * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
2311 * config/score/score-protos.h (score_gen_cmp): Delete.
2312 * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
2313 (score_block_move-loop): Use cbranchsi4.
2314 * config/score/score.md (cbranchsi4): New.
2315 (cmpsi, bCC): Delete.
2316 * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
2317 (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2318 * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
2319 (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2320 * config/score/score3.h (score3_gen_cmp): Delete.
2321 * config/score/score7.h (score7_gen_cmp): Delete.
2323 * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
2324 (sh_emit_scc_to_t): ... this. Return void.
2325 (from_compare): Rename to...
2326 (sh_emit_compare_and_branch): ... this.
2327 (sh_emit_compare_and_set): New.
2328 (sh_expand_t_scc): Accept operands.
2329 * config/sh/predicates.md (sh_float_comparison_operator): New.
2330 * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
2331 (prepare_scc_operands): Rename to...
2332 (sh_emit_scc_to_t): ... this. Return void. Get op0/op1 from
2334 (sh_emit_cheap_store_flag): New.
2335 (sh_emit_set_t_insn): New.
2336 (from_compare): Rename to...
2337 (sh_emit_compare_and_branch): ... this. Accept mode. Rewrite
2338 handling of TARGET_SH2E floating point to avoid recursive call.
2339 Generate branch here.
2340 (sh_emit_compare_and_set): New.
2341 (sh_expand_t_scc): Get op0/op1 from arguments.
2342 (sh_emit_cheap_store_flag): New.
2343 * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
2345 (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
2346 (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
2347 (movsicc, movdicc): Do nothing when it recreated operands from
2348 sh_compare_*. Use sh_emit_cheap_store_flag. Adjust call to
2349 prepare_scc_operands (now sh_emit_scc_to_t).
2350 (udivdi3): Use cstoresi4.
2351 (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
2352 bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
2353 (cbranchint4_media, cbranchfp4_media): New.
2354 (casesi): Use cbranchdi4.
2355 (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
2357 (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
2358 (movnegt): Remove second operand.
2359 (cbranchsf4, cbranchdf4): New.
2360 (stack_protect): Use cbranchdi4/cbranchsi4.
2362 * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
2363 (gen_compare_reg): Accept comparison, extract part of it to...
2364 (gen_compare_reg_1): ... this.
2365 (gen_compare_operator): Delete.
2366 (gen_v9_scc): Accept separate destination, comparison code and arms.
2367 Do not use sparc_compare_op0/sparc_compare_op1.
2368 (emit_scc_insn, emit_conditional_branch_insn): New.
2369 (emit_v9_brxx): Make static. Remove useless assertion.
2370 (sparc_emit_float_lib_cmp): Return RTL instead of calling
2372 (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
2373 * config/sparc/sparc-protos.h (gen_compare_reg,
2374 sparc_emit_float_lib_cmp): Adjust prototype.
2375 (emit_scc_insn, emit_conditional_branch_insn): New.
2376 (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
2377 * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
2378 * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
2379 iterators to the top.
2380 (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
2381 snesi_special_extend, sCC, bCC, seqdi_special_trunc,
2382 snedi_special_trunc): Delete.
2383 (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
2384 and snedi_special_trunc.
2385 (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
2386 cbranchdi4, cbranch<F:mode>4): New.
2387 (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
2388 here. Use gen_compare_reg instead of gen_compare_operator.
2389 (conditional_trap): Replace with...
2390 (ctrapsi4, ctrapdi4): ... this.
2391 (stack_protect_test): Use cbranchcc4.
2393 * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
2395 * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
2396 (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
2397 Change spu_compare_op0/op1 to op0/op1 throughout. Get target
2398 from operands[0] or operands[3] depending on is_set.
2399 * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
2400 * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
2401 cmpdf, bCC), sCC: Remove.
2402 (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
2403 cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
2405 (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
2406 spu_emit_branch_or_set.
2408 * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
2410 * config/stormy16/stormy16.h (xstormy16_compare_op0,
2411 xstormy16_compare_op1): Delete.
2412 * config/stormy16/stormy16.c (xstormy16_compare_op0,
2413 xstormy16_compare_op1): Delete.
2414 (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
2416 * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
2417 (cmphi, cmpsi, bCC): Remove.
2419 * config/v850/v850.md (tstsi, cmpsi): Fold into...
2420 (*cmpsi): ... this one.
2421 (cbranchsi4, cstoresi4): New.
2422 (bCC expanders): Delete.
2423 (sCC insns): Fold into...
2424 (*setcc): ... this one.
2425 (casesi): Do not use gen_cmpsi and gen_bgtu.
2426 (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
2427 (movsicc): Simplify.
2428 * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
2430 * config/vax/vax-protos.h (cond_name): New.
2431 (vax_output_conditional_branch): Remove.
2432 * config/vax/vax.c (cond_name): New.
2433 (vax_output_conditional_branch): Remove.
2434 * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
2435 * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
2436 (cmp<VAXint>, cmp<VAXfp>): Privatize. Add constraints for tst.
2437 (bit<VAXint>): Wrap source with (compare).
2438 (b<code> and following unnamed pattern): Rename to *branch and
2439 *branch_reversed. Change macroization to match_operator.
2440 (cbranch<VAXint>4, cbranch<VAXfp>4): New.
2442 * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
2443 * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
2444 Change last argument to machine_mode.
2445 (xtensa_expand_scc): Add machine_mode argument.
2446 * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
2447 (gen_conditional_move, xtensa_expand_conditional_branch,
2448 xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
2449 instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
2450 Adjust operand numbers.
2451 * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
2453 * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
2454 (cmpsi, cmpsf, b<code>, s<code>): Delete.
2455 (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
2457 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2459 * optabs.c (prepare_cmp_insn): Temporarily disable test that
2460 causes spurious differences between trunk and cond-optab branch.
2462 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
2465 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
2467 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
2469 * tree.c (iterative_hash_pointer): Delete.
2470 (iterative_hash_expr): Short-circuit handling of NULL pointer.
2471 Hash UIDs and versions of SSA names. Don't special-case built-in
2472 function declarations.
2474 2009-05-11 Ian Lance Taylor <iant@google.com>
2477 * graphite.c: Force -Wc++-compat to only be a warning before
2478 #including "cloog/cloog.h".
2480 2009-05-11 Martin Jambor <mjambor@suse.cz>
2482 * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
2484 2009-05-11 Jan Hubicka <jh@suse.cz>
2486 * tree-ssa-loop-ivcanon.c: Include target.h
2487 (struct loop_size): new structure.
2488 (constant_after_peeling): New predicate.
2489 (tree_estimate_loop_size): New function.
2490 (estimated_unrolled_size): Rewrite for new estimates.
2491 (try_unroll_loop_completely): Use new estimates.
2492 * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
2494 2009-05-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
2496 * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
2497 libcpp interface change.
2498 (spu_macro_to_expand): Likewise.
2500 2009-05-11 Paolo Bonzini <bonzini@gnu.org>
2502 PR tree-optimization/40026
2503 * gimplify.c (gimplify_init_constructor): Change initial conditional
2504 to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after
2505 optimize_compound_literals_in_ctor.
2507 2009-05-11 Nathan Sidwell <nathan@codesourcery.com>
2509 * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
2511 * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
2513 2009-05-11 H.J. Lu <hongjiu.lu@intel.com>
2515 * tree-vect-data-refs.c (vect_analyze_group_access): Use
2516 HOST_WIDE_INT for gap.
2518 2009-05-11 Ira Rosen <irar@il.ibm.com>
2520 PR tree-optimization/40074
2521 * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
2522 account in group size and step comparison.
2524 2009-05-11 Richard Guenther <rguenther@suse.de>
2526 * passes.c (init_optimization_passes): Strip now incorrect comment.
2527 (execute_function_todo): Do not set PROP_alias.
2528 * tree-pass.h (PROP_alias): Remove.
2529 * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
2530 * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
2531 * tree-nrv.c (pass_return_slot): Likewise.
2532 * tree-object-size.c (pass_object_sizes): Likewise.
2533 * tree-ssa-dom.c (pass_dominator): Likewise.
2534 (pass_phi_only_cprop): Likewise.
2535 * tree-ssa-dse.c (pass_dse): Likewise.
2536 * tree-ssa-phiopt.c (pass_phiopt): Likewise.
2537 (pass_cselim): Likewise.
2538 * tree-ssa-pre.c (pass_pre): Likewise.
2539 (pass_fre): Likewise.
2540 * tree-ssa-reassoc.c (pass_reassoc): Likewise.
2541 * tree-ssa-sink.c (pass_sink_code): Likewise.
2542 * tree-stdarg.c (pass_stdarg): Likewise.
2543 * tree-tailcall.c (pass_tail_calls): Likewise.
2544 * tree-vrp.c (pass_vrp): Likewise.
2546 2009-05-10 Ian Lance Taylor <iant@google.com>
2548 * basic-block.h (enum profile_status): Break out of struct
2550 * cgraph.h (struct inline_summary): Break out of struct
2552 * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
2553 of struct cgraph_order_sort.
2554 * combine.c (enum undo_kind): New enum, broken out of struct undo.
2555 * cse.c (struct branch_path): Break out of struct
2556 cse_basic_block_data.
2557 * except.h (enum eh_region_type): Break out of struct eh_region.
2558 * gcc.c (enum add_del): Break out of struct modify_target.
2559 * genrecog.c (enum decision_type): Break out of struct decision_test.
2560 * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
2562 * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
2563 * regmove.c (enum match_use): New enum, broken out of struct match.
2564 * sched-int.h (enum post_call_group): New enum, broken out of
2566 (struct deps_reg): Break out of struct deps.
2567 * target.h (struct asm_int_op): Break out of struct gcc_target.
2568 * tree-eh.c (struct goto_queue_node): Break out of struct
2570 * tree-inline.h (enum copy_body_cge_which): Break out of
2572 * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
2574 * c-decl.c (in_struct, struct_types): New static variables.
2575 (pushtag): Add loc parameter. Change all callers.
2576 (lookup_tag): Add ploc parameter. Change all callers.
2577 (check_compound_literal_type): New function.
2578 (parser_xref_tag): Add loc parameter. Change all callers. If
2579 -Wc++-compat, warn about struct/union/enum types defined within a
2581 (start_struct): Add enclosing_in_struct, enclosing_struct_types,
2582 and loc parameters. Change all callers. Change error calls to
2583 error_at, using loc. For a redefinition, if the location of the
2584 original definition is known, report it. Set in_struct and
2585 struct_types. If -Wc++-compat warn if in sizeof, typeof, or alignof.
2586 (finish_struct): Add new parameters enclosing_in_struct and
2587 enclosing_struct_types. Change all callers. Set
2588 C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
2589 in the struct. If in a struct, add this struct to struct_types.
2590 (start_enum): Add loc parameter. Change all callers. Use
2591 error_at for errors, using loc. For a redefinition, if the
2592 location of the original definition is known, report it. If in a
2593 struct, add this enum type to struct_types. If -Wc++-compat warn
2594 if in sizeof, typeof, or alignof.
2595 * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
2596 (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
2597 (c_parser_enum_specifier): Get enum location for start_enum.
2598 (c_parser_struct_or_union_specifier): Get struct location for
2599 start_struct. Save in_struct and struct_types status between
2600 start_struct and finish_struct.
2601 (c_parser_cast_expression): Get location of cast.
2602 (c_parser_alignof_expression): Get location of type.
2603 (c_parser_postfix_expression): Likewise.
2604 (c_parser_postfix_expression_after_paren_type): Add type_loc
2605 parameter. Change all callers. Call check_compound_literal_type.
2606 Use type_loc for error about variable size type.
2607 * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
2608 of an enum constant from an enum type defined in a struct or union.
2609 (c_cast_expr): Add loc parameter. Change all callers. If
2610 -Wc++-compat, warn about defining a type in a cast.
2611 * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
2612 (start_enum, start_struct, finish_struct): Update declarations.
2613 (parser_xref_tag, c_cast_expr): Update declarations.
2614 (check_compound_literal_type): Declare.
2616 2009-05-11 Ben Elliston <bje@au.ibm.com>
2618 * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
2619 for recent libcpp interface change.
2620 (rs6000_macro_to_expand): Likewise.
2622 2009-05-10 Michael Matz <matz@suse.de>
2625 * config/arm/arm.c (require_pic_register): Emit on entry edge,
2626 not at entry of function.
2628 2009-05-10 Richard Guenther <rguenther@suse.de>
2630 PR tree-optimization/40081
2632 * tree-sra.c (instantiate_element): Instantiate scalar replacements
2633 using the main variant of the element type. Do not fiddle with
2634 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
2636 * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
2637 structs with volatile fields.
2639 2009-05-10 Jan Hubicka <jh@suse.cz>
2641 * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
2642 (estimate_move_cost): Assert that it does not get called for
2644 (estimate_num_insns): Skip VOID types in argument handling.
2645 (optimize_inline_calls): Delete unreachable blocks and verify that
2648 2009-05-10 Jan Hubicka <jh@suse.cz>
2650 * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
2651 * cgraph.c (cgraph_mark_address_taken_node): New function.
2652 (dump_cgraph_node): Dump new flag.
2653 * cgraph.h (struct cgraph_node): Add address_taken.
2654 (cgraph_mark_address_taken_node): New function.
2655 * ipa.c (cgraph_postorder): Prioritize functions with address taken
2656 since new direct calls can be born.
2658 2009-05-10 Joseph Myers <joseph@codesourcery.com>
2660 * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
2663 2009-05-10 Jan Hubicka <jh@suse.cz>
2666 * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
2668 (cgraph_update_edges_for_call_stmt): Take old_decl argument.
2669 * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
2670 * tree-inline.c (copy_bb): Set frequency correctly.
2671 (fold_marked_statements): Update call to
2672 cgraph_update_edges_for_call_stmt.
2674 2009-05-10 Joseph Myers <joseph@codesourcery.com>
2676 * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
2677 identifiers in diagnostics.
2678 * config/arm/arm.c (arm_handle_fndecl_attribute,
2679 arm_handle_isr_attribute): Likewise.
2680 * config/avr/avr.c (avr_handle_progmem_attribute,
2681 avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
2682 * config/bfin/bfin.c (handle_int_attribute,
2683 bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
2684 bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
2685 bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
2687 * config/darwin.c (darwin_handle_kext_attribute,
2688 darwin_handle_weak_import_attribute): Likewise.
2689 * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
2690 h8300_handle_eightbit_data_attribute,
2691 h8300_handle_tiny_data_attribute): Likewise.
2692 * config/i386/i386.c (ix86_handle_cconv_attribute,
2693 ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
2694 * config/i386/winnt.c (ix86_handle_shared_attribute,
2695 ix86_handle_selectany_attribute): Likewise.
2696 * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
2697 * config/m32c/m32c.c (function_vector_handler): Likewise.
2698 * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
2699 m68hc11_handle_fntype_attribute): Likewise.
2700 * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
2701 * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
2702 * config/mips/mips.c (mips_insert_attributes,
2703 mips_merge_decl_attributes, mips_expand_builtin): Likewise.
2704 * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
2705 rs6000_handle_struct_attribute): Likewise.
2706 * config/sh/sh.c (sh_insert_attributes,
2707 sh_handle_resbank_handler_attribute,
2708 sh_handle_interrupt_handler_attribute,
2709 sh2a_handle_function_vector_handler_attribute,
2710 sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
2712 * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
2713 * config/spu/spu.c (spu_handle_fndecl_attribute,
2714 spu_handle_vector_attribute): Likewise.
2715 * config/stormy16/stormy16.c
2716 (xstormy16_handle_interrupt_attribute): Likewise.
2717 * config/v850/v850-c.c (ghs_pragma_section): Likewise.
2718 * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
2720 2009-05-10 Joseph Myers <joseph@codesourcery.com>
2722 * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
2723 (pp_translate_identifiers): New.
2724 (pp_identifier): Only conditionally translate identifier to locale
2726 * pretty-print.c (pp_construct): Set pp_translate_identifiers.
2727 (pp_base_tree_identifier): Only conditionally translate identifier
2728 to locale character set.
2729 * c-pretty-print.c (M_): Define.
2730 (pp_c_type_specifier, pp_c_primary_expression): Mark English
2731 fragments for conditional translation with M_.
2732 * tree-pretty-print.c (maybe_init_pretty_print): Disable
2733 identifier translation.
2735 2009-05-10 Richard Guenther <rguenther@suse.de>
2737 PR tree-optimization/40081
2738 * tree-sra.c (instantiate_element): Instantiate scalar replacements
2739 using the main variant of the element type. Do not fiddle with
2740 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
2742 2009-05-09 Jan Hubicka <jh@suse.cz>
2745 * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
2746 indirect calls; verify cgraph afterwards.
2748 2009-05-09 Jan Hubicka <jh@suse.cz>
2751 * ipa.c (update_inlined_to_pointer): New function.
2752 (cgraph_remove_unreachable_nodes): Use it.
2754 2009-05-09 Jan Hubicka <jh@suse.cz>
2756 * tree-eh.c (struct leh_state): Remove prev_try.
2757 (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
2759 * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
2760 copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
2761 remove_eh_handler_and_replace, foreach_reachable_handler,
2762 verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
2763 * except.h (struct eh_region): Remove eh_region_u_cleanup.
2764 (gen_eh_region_cleanup): Update prototype.
2766 2009-05-09 Jan Hubicka <jh@suse.cz>
2769 * except.c (copy_eh_region): Always set prev_try.
2770 (redirect_eh_edge_to_label): Find outer try.
2771 (foreach_reachable_handler): When looking for prev try
2772 handle case where previous try is not going to be taken.
2774 2009-05-07 Michael Meissner <meissner@linux.vnet.ibm.com>
2776 PR tree-optimization/40049
2777 * tree-vect-stmts.c (vectorizable_operation): If the machine has
2778 only vector/vector shifts, convert the type of the constant to the
2779 appropriate type to avoid building incorrect trees, which
2780 eventually have problems with garbage collection.
2782 2009-05-08 Joseph Myers <joseph@codesourcery.com>
2784 * fold-const.c (fold_binary): Do not fold multiplication by 1 or
2785 -1 for complex floating-point types if honoring signed zeros.
2787 2009-05-08 Jan Hubicka <jh@suse.cz>
2789 * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
2790 argument; handle correctly when profile is absent.
2791 (build_cgraph_edges): Update.
2792 (rebuild_cgraph_edges): Update.
2793 * cgraph.c: Do not include varray.h.
2794 (cgraph_set_call_stmt_including_clones): New function.
2795 (cgraph_create_edge_including_clones): Likewise
2796 (cgraph_update_edges_for_call_stmt_node): New static cfunction.
2797 (cgraph_update_edges_for_call_stmt): Handle clones.
2798 (cgraph_remove_node): Handle clone tree.
2799 (cgraph_remove_node_and_inline_clones): New function.
2800 (dump_cgraph_node): Dump clone tree.
2801 (cgraph_clone_node): Handle clone tree.
2802 (clone_function_name): Bring here from tree-inline.c.
2803 (cgraph_create_virtual_clone): New function.
2804 * cgraph.h (ipa_replace_map): Move here from ipa.h.
2805 (cgraph_clone_info): New function.
2806 (strut cgraph_node): Add clone_info and new clone tree pointers.
2807 (cgraph_remove_node_and_inline_clones,
2808 cgraph_set_call_stmt_including_clones,
2809 cgraph_create_edge_including_clones,
2810 cgraph_create_virtual_clone): Declare.
2811 (cgraph_function_versioning): Use VEC argument.
2812 (compute_call_stmt_bb_frequency): Update prototype.
2813 (cgraph_materialize_all_clones): New function.
2814 * ipa-cp.c (ipcp_update_cloned_node): Remove.
2815 (ipcp_create_replace_map): Update to VECtors.
2816 (ipcp_update_callgraph): Use virtual clones.
2817 (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
2818 (ipcp_update_profiling): Do not update local profiling.
2819 (ipcp_insert_stage): Use VECtors and virtual clones.
2820 * cgraphunit.c (verify_cgraph_node): Verify clone tree.
2821 (clone_of_p): New function.
2822 (cgraph_preserve_function_body_p): Use clone tree.
2823 (cgraph_optimize): Materialize clones.
2824 (cgraph_function_versioning): Update for VECtors.
2825 (save_inline_function_body): Use clone tree.
2826 (cgraph_materialize_clone): New function.
2827 (cgraph_materialize_all_clones): Likewise.
2828 * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
2829 * ipa.c: Include gimple.h.
2830 (cgraph_remove_unreachable_nodes): Use clone tree.
2831 * ipa-prop.c (ipa_note_param_call): Update call to
2832 compute_call_stmt_bb_frequencycall.
2833 * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
2834 * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
2835 (copy_bb): Handle updating of clone tree; add new edge when new call
2837 (expand_call_inline): Be strict about every call having edge.
2838 (clone_fn_id_num, clone_function_name): Move to cgraph.c.
2839 (delete_unreachable_blocks_update_callgraph): New function.
2840 (tree_function_versioning): Use VECtors; always remove unreachable
2841 blocks and fold conditionals.
2842 * tree-inline.h: Do not include varray.h.
2843 (tree_function_versioning): Remove.
2844 * Makefile.in (GTFILES): Remove tree-inline.c
2845 * passes.c (do_per_function): Do only functions having body.
2846 * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
2849 2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
2850 Andrew Morrow <acm@google.com>
2853 * c-common.c (c_common_attribute_table): Permit deprecated
2854 attribute to take an optional argument.
2855 (handle_deprecated_attribute): If the optional argument to
2856 __attribute__((deprecated)) is not a string ignore the attribute
2859 * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
2860 * c-typeck.c (build_component_ref): Likewise.
2861 (build_external_ref): Likewise.
2863 * toplev.c (warn_deprecated_use): Add an attribute argument.
2864 Emit the message associated with __attribute__((deprecated)).
2866 * toplev.h (warn_deprecated_use): Updated.
2868 * doc/extend.texi: Document new optional parameter to
2869 __attribute__((deprecated))
2871 2009-05-08 Michael Eager <eager@eagercon.com>
2873 * config/rs6000/rs6000.md (*movdf_softfloat32): replace
2874 !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
2876 2009-05-08 Richard Guenther <rguenther@suse.de>
2878 PR tree-optimization/40062
2879 * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
2880 Avoid exponential behavior.
2882 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
2884 PR rtl-optimization/33928
2886 * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
2887 process_uses, build_single_def_use_links): New.
2888 (update_df): Update use_def_ref.
2889 (forward_propagate_into): Use get_def_for_use instead of use-def
2891 (fwprop_init): Call build_single_def_use_links and let it initialize
2893 (fwprop_done): Free use_def_ref.
2894 (fwprop_addr): Eliminate duplicate call to df_set_flags.
2895 * df-problems.c (df_rd_simulate_artificial_defs_at_top,
2896 df_rd_simulate_one_insn): New.
2897 (df_rd_bb_local_compute_process_def): Update head comment.
2898 (df_chain_create_bb): Use the new RD simulation functions.
2899 * df.h (df_rd_simulate_artificial_defs_at_top,
2900 df_rd_simulate_one_insn): New.
2901 * opts.c (decode_options): Enable fwprop at -O1.
2902 * doc/invoke.texi (-fforward-propagate): Document this.
2904 2009-05-08 Joseph Myers <joseph@codesourcery.com>
2907 * c-typeck.c (build_binary_op): Handle arithmetic between one real
2908 and one complex operand specially.
2909 * tree-complex.c (some_nonzerop): Do not identify a real value as
2910 zero if flag_signed_zeros.
2912 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
2914 PR rtl-optimization/33928
2915 * loop-invariant.c (record_use): Fix && vs. || mishap.
2917 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
2919 PR rtl-optimization/33928
2920 * loop-invariant.c (struct use): Add addr_use_p.
2921 (struct def): Add n_addr_uses.
2922 (struct invariant): Add cheap_address.
2923 (create_new_invariant): Set cheap_address.
2924 (record_use): Accept df_ref. Set addr_use_p and update n_addr_uses.
2925 (record_uses): Pass df_ref to record_use.
2926 (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
2929 2009-05-08 Kaz Kojima <kkojima@gcc.gnu.org>
2931 * config/sh/sh.c: Do not include c-pragma.h.
2933 2009-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
2935 * config/spu/spu.c: Remove include of c-common.h.
2937 2009-05-07 Janis Johnson <janis187@us.ibm.com>
2940 * c-common.h (mark_valid_location_for_stdc_pragma,
2941 valid_location_for_stdc_pragma_p, set_float_const_decimal64,
2942 clear_float_const_decimal64, float_const_decimal64_p): New.
2943 * c.opt (Wunsuffixed-float-constants): New.
2944 * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
2945 unsuffixed float constant, handle new warning.
2946 * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
2947 * c-decl.c (c_scope): New flag float_const_decimal64.
2948 (set_float_const_decimal64, clear_float_const_decimal64,
2949 float_const_decimal64_p): New.
2950 (push_scope): Set new flag.
2951 * c-parser.c (c_parser_translation_unit): Mark when it's valid
2952 to use STDC pragmas.
2953 (c_parser_external_declaration): Ditto.
2954 (c_parser_compound_statement_nostart): Ditto.
2955 * c-pragma.c (valid_location_for_stdc_pragma,
2956 mark_valid_location_for_stdc_pragma,
2957 valid_location_for_stdc_pragma_p, handle_stdc_pragma,
2958 handle_pragma_float_const_decimal64): New.
2959 (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
2960 * cp/semantics.c (valid_location_for_stdc_pragma_p,
2961 set_float_const_decimal64, clear_float_const_decimal64,
2962 float_const_decimal64_p): New dummy functions.
2963 * doc/extend.texi (Decimal Float): Remove statement that the
2964 pragma, and suffix for double constants, are not supported.
2965 * doc/invoke.texi (Warning Options): List new option.
2966 (-Wunsuffixed-float-constants): New.
2968 2009-05-08 Steven Bosscher <steven@gcc.gnu.org>
2970 * config/i386/i386.c: Do not include c-common.h.
2972 2009-05-07 Mark Heffernan <meheff@google.com>
2974 * doc/invoke.texi (Debugging Options): Document change of debugging
2976 * opts.c (decode_options): Make dump_base_name relative to
2977 aux_base_name directory.
2979 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
2981 * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
2982 * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
2984 2009-05-07 Rafael Avila de Espindola <espindola@google.com>
2986 * Makefile.in (install-plugin): Simplify a bit.
2988 2009-05-07 Paolo Bonzini <bonzini@gnu.org>
2990 * Makefile.in (OBJS-common): Add regcprop.o.
2992 * timevar.def (TV_CPROP_REGISTERS): New.
2993 * regrename.c (regrename_optimize): Return 0.
2994 (rest_of_handle_regrename): Delete.
2995 (pass_rename_registers): Point to regrename_optimize.
2996 (struct value_data_entry, struct value_data,
2997 kill_value_one_regno, kill_value_regno, kill_value,
2998 set_value_regno, init_value_data, kill_clobbered_value,
2999 kill_set_value, kill_autoinc_value, copy_value,
3000 mode_change_ok, maybe_mode_change, find_oldest_value_reg,
3001 replace_oldest_value_reg, replace_oldest_value_addr,
3002 replace_oldest_value_mem, copyprop_hardreg_forward_1,
3003 debug_value_data, validate_value_data): Move...
3004 * regcprop.c: ... here.
3005 (rest_of_handle_cprop): Delete.
3006 (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
3008 2009-05-07 Jakub Jelinek <jakub@redhat.com>
3011 * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
3012 GEN_INT for 1 << bitnum.
3013 (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
3016 2009-05-07 Uros Bizjak <ubizjak@gmail.com>
3018 * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
3019 Remove wrong description of "nand" operation.
3021 2009-05-06 Richard Guenther <rguenther@suse.de>
3022 Adam Nemet <anemet@caviumnetworks.com>
3024 * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
3025 comment. Add that if LHS is not a gimple register, then RHS1 has
3026 to be a single object (GIMPLE_SINGLE_RHS).
3028 2009-05-06 Adam Nemet <anemet@caviumnetworks.com>
3030 * expr.c (get_def_for_expr): Move it up in the file.
3031 (store_field): When expanding a bit-field store, look at the
3032 defining gimple stmt for the masking conversion.
3034 2009-05-06 Janis Johnson <janis187@us.ibm.com>
3037 * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
3038 decode_decimal64, encode_decimal128, decode_decimal128): Avoid
3039 32-bit memcpy into long.
3041 2009-05-06 Jakub Jelinek <jakub@redhat.com>
3043 * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
3044 (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
3046 (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
3047 instead of appending DW_OP_deref*.
3049 2009-05-06 Michael Matz <matz@suse.de>
3052 * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
3053 (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
3055 2009-05-06 Rafael Avila de Espindola <espindola@google.com>
3057 * Makefile.in (install-plugin): Fix srcdir handling.
3059 2009-05-06 Andrey Belevantsev <abel@ispras.ru>
3061 * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
3062 when processing for not_regs_needed bitmap.
3063 * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
3064 handle TARGET_MEM_REF in lhs. Check TMR_BASE for NULL while
3065 handling it for rhs.
3067 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
3069 * config/i386/i386.md (unnamed inc/dec peephole): Use
3070 optimize_insn_for_size_p instead of optimize_size.
3071 * config/i386/predicates.md (incdec_operand): Likewise.
3072 (aligned_operand): Likewise.
3073 * config/i386/sse.md (divv8sf3): Likewise.
3074 (sqrtv8sf2): Likewise.
3076 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
3078 * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
3080 * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
3082 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
3084 * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
3085 ssemodesuffixf2c with avxmodesuffixf2c.
3087 2009-05-06 Joseph Myers <joseph@codesourcery.com>
3090 * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
3092 2009-05-05 Jakub Jelinek <jakub@redhat.com>
3094 * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
3095 (struct tree_base): Adjust spacing for 8 bit boundaries.
3096 (struct tree_decl_common): Add decl_by_reference_flag bit.
3097 (DECL_BY_REFERENCE): Adjust.
3098 * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
3099 print DECL_BY_REFERENCE bit.
3100 * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
3101 * dwarf2out.c (loc_by_reference, gen_decl_die): Check
3102 DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
3103 (gen_variable_die): Likewise. Check TREE_PRIVATE/TREE_PROTECTED
3107 * gimplify.c (gimplify_switch_expr): If case labels cover the whole
3108 range of the type, but default label is missing, add it with one
3109 of the existing labels instead of adding a new label for it.
3111 2009-05-05 Joseph Myers <joseph@codesourcery.com>
3115 2009-05-05 Rafael Avila de Espindola <espindola@google.com>
3117 * Makefile.in (enable_plugin, plugin_includedir): New.
3118 (install): Depend on install-plugin.
3119 (PLUGIN_HEADERS): New.
3120 (install-plugin): New.
3121 * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
3123 2009-05-05 Richard Guenther <rguenther@suse.de>
3125 PR tree-optimization/40022
3126 * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
3128 (phivn_valid_p): Fix tuplification error, simplify.
3129 (phiprop_insert_phi): Add dumps.
3130 (propagate_with_phi): Simplify.
3132 2009-05-05 Richard Guenther <rguenther@suse.de>
3135 * builtins.c (gimplify_va_arg_expr): Properly build the address.
3137 2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
3139 * tree.h (strip_float_extensions): Remove duplicate declaration.
3140 (build_low_bits_mask, debug_fold_checksum, expand_function_end,
3141 expand_function_start, stack_protect_prologue, stack_protect_epilogue,
3142 block_ultimate_origin): Rearrange the declarations line to match the
3143 comment that indicates the .c file which the functions are defined.
3144 (dwarf2out_*, set_decl_rtl): Add comment.
3145 (get_base_address): Adjust comment.
3146 (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
3147 declarations line and add comment.
3148 (is_builtin_name): Add blank after function name, for clarity.
3150 2009-05-04 Joseph Myers <joseph@codesourcery.com>
3152 * attribs.c (decl_attributes): Use %qE for identifiers in
3154 * cgraphunit.c (verify_cgraph_node): Translate function names to
3155 locale character set in diagnostics.
3156 * coverage.c (get_coverage_counts): Use %qE for identifiers in
3158 * doc/invoke.texi (-finstrument-functions-exclude-function-list):
3159 Document that functions are named in UTF-8.
3160 * expr.c (expand_expr_real_1): Translate function names to locale
3161 character set in diagnostics.
3162 * gimplify.c (omp_notice_variable, omp_is_private,
3163 gimplify_scan_omp_clauses): Use %qE for identifiers in
3165 * langhooks.c (lhd_print_error_function): Translate function names
3166 to locale character set.
3167 * langhooks.h (decl_printable_name): Document that return value is
3168 in internal character set.
3169 * stmt.c: Include pretty-print.h
3170 (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
3172 (resolve_operand_name_1): Translate named operand name to locale
3174 * stor-layout.c (finalize_record_size): Use %qE for identifiers in
3176 * toplev.c (announce_function): Translate function names to locale
3178 (warn_deprecated_use): Use %qE for identifiers in diagnostics.
3179 (default_tree_printer): Use pp_identifier or translate identifiers
3180 to locale character set. Mark "<anonymous>" for translation.
3181 * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
3182 for identifiers in diagnostics.
3183 * tree.c (handle_dll_attribute): Use %qE for identifiers in
3185 * varasm.c (output_constructor): Use %qE for identifiers in
3188 2009-05-04 Rafael Avila de Espindola <espindola@google.com>
3190 * configure.ac: use ` ` instead of $()
3191 * configure: Regenerate.
3193 2009-05-05 Ben Elliston <bje@au.ibm.com>
3195 * config/pa/linux-atomic.c: Eliminate conditional include of
3196 errno.h on non-LP64 systems to simplify build requirements.
3198 2009-05-04 Joseph Myers <joseph@codesourcery.com>
3200 * c-common.c (handle_mode_attribute): Use %qE for identifiers in
3202 * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
3203 and pass value to identifier_to_locale.
3204 (warn_variable_length_array): Make name a tree.
3205 (grokdeclarator): Separate diagnostic texts for named and unnamed
3206 declarators. Use %qE for named declarators.
3207 * c-parser.c (c_lex_one_token): Use %qE for identifiers in
3209 * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
3210 identifiers in diagnostics.
3211 * c-typeck.c (push_member_name, start_init): Pass identifiers to
3212 identifier_to_locale. Mark "anonymous" strings for translation.
3214 2009-05-04 Michael Eager <eager@eagercon.com>
3216 * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
3217 address for DImode/DFmode only if double-precision FP regs.
3219 2009-05-04 Michael Eager <eager@eagercon.com>
3221 * config/rs6000/rs6000.c (rs6000_libcall_value): Add
3222 TARGET_SINGLE_FLOAT check.
3224 2009-05-04 Michael Eager <eager@eagercon.com>
3226 * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
3228 2009-05-04 Michael Eager <eager@eagercon.com>
3230 * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
3231 * config/rs6000/t-xilinx: New
3233 2009-05-04 Paolo Bonzini <bonzini@gnu.org>
3235 * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
3236 * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
3237 * gcc/explow.c (memory_address): Use target hook.
3238 * gcc/targhooks.c (default_legitimize_address): New.
3239 * gcc/targhooks.h (default_legitimize_address): New.
3240 * gcc/target.h (legitimize_address): New.
3241 * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
3242 (TARGET_INITIALIZER): Include it.
3243 * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
3245 * config/bfin/bfin-protos.h (legitimize_address): Remove.
3246 * config/bfin/bfin.c (legitimize_address): Remove.
3247 * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
3248 * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
3250 * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
3251 * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
3253 * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
3254 THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
3255 * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
3256 * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
3257 * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
3258 * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
3259 * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
3260 * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
3261 * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
3262 * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
3263 * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
3264 * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
3265 * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
3266 * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
3267 * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
3268 * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
3269 * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
3270 * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
3271 * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
3272 * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
3273 * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
3274 * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
3275 * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
3277 * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
3278 * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
3279 * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
3280 * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
3281 * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
3282 * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
3283 * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
3284 * gcc/config/arm/arm-protos.h (arm_legitimize_address,
3285 (thumb_legitimize_address): Delete.
3286 * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
3287 * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
3288 * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
3289 * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
3290 * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
3291 * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
3293 * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
3296 * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
3297 * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
3298 * config/m32r/m32r.c (m32r_legitimize_address): New.
3299 * config/m68k/m68k.c (m68k_legitimize_address): New.
3300 * config/score/score.c (score_legitimize_address): Standardize.
3301 * config/score/score3.c (score3_legitimize_address): Standardize.
3302 * config/score/score3.h (score3_legitimize_address): Adjust.
3303 * config/score/score7.c (score7_legitimize_address): Standardize.
3304 * config/score/score7.h (score7_legitimize_address): Adjust.
3305 * config/sh/sh.c (sh_legitimize_address): New.
3306 * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
3308 * gcc/config/s390/s390.c (legitimize_address): Rename to...
3309 (s390_legitimize_address): ... this.
3310 * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
3311 (sparc_legitimize_address): ... this.
3312 * gcc/config/i386/i386.c (legitimize_address): Rename to...
3313 (ix86_legitimize_address): ... this.
3314 * gcc/config/avr/avr.c (legitimize_address): Rename to...
3315 (avr_legitimize_address): ... this.
3316 * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
3317 (mn10300_legitimize_address): ... this.
3318 * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
3319 (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
3320 (alpha_expand_mov): Adjust call.
3322 * config/frv/frv.c (frv_legitimize_address): Return x on failure.
3323 * config/spu/spu.c (spu_legitimize_address): Likewise.
3324 * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
3325 * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
3327 2009-05-04 Joseph Myers <joseph@codesourcery.com>
3329 * intl.c (locale_encoding, locale_utf8): New.
3330 (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
3331 * intl.h (locale_encoding, locale_utf8): Declare.
3332 * pretty-print.c: Include ggc.h. Include iconv.h if HAVE_ICONV.
3333 (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
3335 * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
3337 (pp_tree_identifier): Define to call pp_base_tree_identifier.
3338 (pp_base_tree_identifier): Declare as function.
3339 (identifier_to_locale): Declare.
3340 * Makefile.in (pretty-print.o): Update dependencies.