OSDN Git Service

Make scev_is_linear_expression return false if the evolution is not affine multivariate.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2
3         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
4         (scev_is_linear_expression): Return false if the evolution is not
5         affine multivariate.
6
7 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8
9         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
10         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
11
12 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13
14         * tree-data-ref.c (debug_data_references): New.
15         (debug_data_reference): New.
16         * tree-data-ref.h (debug_data_references): Declared.
17         (debug_data_reference): Declared.
18
19 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
20
21         * tree-data-ref.c (stmt_simple_memref_p: Removed.
22         * tree-data-ref.h (scop_p): Removed.
23         (struct data_reference): Remove field scop.
24         (DR_SCOP): Removed.
25         (stmt_simple_memref_p): Removed.
26
27 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
28
29         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
30         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
31         basic block empty.
32
33 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
34
35         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
36
37 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
38
39         * doc/invoke.texi (-fgraphite-identity): Documented.
40
41 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
42
43         * tree-scalar-evolution.c: Fix comment.
44         (instantiate_scev_1): Return unknow from scev instantiation if the
45         result is not above instantiate_below.
46
47 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
48
49         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
50         static anymore.  Instantiate the symbols that may have been introduced
51         by chrec_apply.
52         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
53         Declared.
54
55 2009-07-30  DJ Delorie  <dj@redhat.com>
56
57         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
58         .vliw directive to VLIW sections.
59
60 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
61
62         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
63         New variables.
64         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
65         (AUTOHEADER): New variable.
66         ($(srcdir)/cstamp-h.in): Use it.
67
68 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
69             Pat Haugen  <pthaugen@us.ibm.com>
70             Revital Eres <ERES@il.ibm.com>
71
72         * config/rs6000/vector.md (VEC_F): Add VSX support.
73         (VEC_A): Ditto.
74         (VEC_N): Ditto.
75         (mov<mode>): Ditto.
76         (vector_load_<mode>): Ditto.
77         (vector_store_<mode>): Ditto.
78         (vector GPR move split): Ditto.
79         (vec_reload_and_plus_<mptrsize>): Ditto.
80         (vec_reload_and_reg_<mptrsize>): Ditto.
81         (add<mode>3): Ditto.
82         (sub<mode>3): Ditto.
83         (mul<mode>3): Ditto.
84         (neg<mode>2): Ditto.
85         (abs<mode>2): Ditto.
86         (smin<mode>3): Ditto.
87         (smax<mode>3): Ditto.
88         (vector_eq<mode>): Ditto.
89         (vector_gt<mode>): Ditto.
90         (vector_ge<mode>): Ditto.
91         (vector_gtu<mode>): Ditto.
92         (vector_select_<mode>_uns): Ditto.
93         (vector_eq_<mode>_p): Ditto.
94         (vector_gt_<mode>_p): Ditto.
95         (vector_ge_<mode>_p): Ditto.
96         (vector_gtu_<mode>_p): Ditto.
97         (cr6_test_for_zero): Ditto.
98         (cr6_test_for_zero_reverse): Ditto.
99         (cr6_test_for_lt): Ditto.
100         (cr6_test_for_lt_reverse): Ditto.
101         (xor<mode>3): Ditto.
102         (ior<mode>3): Ditto.
103         (and<mode>3): Ditto.
104         (one_cmpl<mode>2): Ditto.
105         (nor<mode>2): Ditto.
106         (andc<mode>2): Ditto.
107         (float<VEC_int<mode>2): Ditto.
108         (unsigned_float<VEC_int><mode>2): Ditto.
109         (fix_trunc<mode><VEC_int>2): Ditto.
110         (fixuns_trunc<mode><VEC_int>2): Ditto.
111         (vec_init<mode>):
112         (vec_set<mode>): Ditto.
113         (vec_extract<mode>): Ditto.
114         (vec_interleave_highv4sf): Ditto.
115         (vec_interleave_lowv4sf): Ditto.
116         (vec_realign_load_<mode>): Ditto.
117         (vec_shl_<mode>): Ditto.
118         (vec_shr_<mode>): Ditto.
119         (div<mode>3): New patterns for VSX.
120         (vec_interleave_highv2df): Ditto.
121         (vec_interleave_lowv2df): Ditto.
122         (vec_pack_trunc_v2df): Ditto.
123         (vec_pack_sfix_trunc_v2df): Ditto.
124         (vec_pack_ufix_trunc_v2df): Ditto.
125         (vec_unpacks_hi_v4sf): Ditto.
126         (vec_unpacks_lo_v4sf): Ditto.
127         (vec_unpacks_float_hi_v4si): Ditto.
128         (vec_unpacku_float_lo_v4si): Ditto.
129         (vec_unpacku_float_hi_v4si): Ditto.
130         (vec_unpacks_float_lo_v4si): Ditto.
131         (movmisalign<mode>): Ditto.
132         (vector_ceil<mode>2): New patterns for vectorizing math library.
133         (vector_floor<mode>2): Ditto.
134         (vector_btrunc<mode>2): Ditto.
135         (vector_copysign<mode>3): Ditto.
136
137         * config/rs6000/predicates.md (easy_vector_constant_msb): New
138         predicate for setting the high bit in each word, used for
139         copysign.
140
141         * config/rs6000/ppc-asm.h (f19): Whitespace.
142         (f32-f63): Define if VSX.
143         (v0-v31): Define if Altivec.
144         (vs0-vs63): Define if VSX.
145
146         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
147
148         * config/rs6000/power7.md: New file, provide tuning parameters for
149         -mcpu=power7.
150
151         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX
152         support.
153         (rs6000_cpu_cpp_builtins): Ditto.
154         (altivec_overloaded_builtins): Ditto.
155         (altivec_resolve_overloaded_builtin): Ditto.
156
157         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
158         debug switch to disable vectorizing simple math builtin
159         functions.
160
161         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
162         Vectorize simple math builtin functions.
163         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
164         hook to vectorize math builtins.
165         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
166         (rs6000_builtin_conversion): Add VSX/power7 support.
167         (rs6000_builtin_vec_perm): Ditto.
168         (vsplits_constant): Add support for loading up a vector constant
169         with just the high bit set in each part.
170         (rs6000_expand_vector_init): Add VSX/power7 support.
171         (rs6000_expand_vector_set): Ditto.
172         (rs6000_expand_vector_extract): Ditto.
173         (rs6000_emit_move): Ditto.
174         (bdesc_3arg): Ditto.
175         (bdesc_2arg): Ditto.
176         (bdesc_1arg): Ditto.
177         (rs6000_expand_ternop_builtin): Ditto.
178         (altivec_expand_builtin): Ditto.
179         (rs6000_expand_unop_builtin): Ditto.
180         (rs6000_init_builtins): Ditto.
181         (altivec_init_builtins): Ditto.
182         (builtin_function_type): Ditto.
183         (rs6000_common_init_builtins): Ditto.
184         (rs6000_handle_altivec_attribute); Ditto.
185         (rs6000_mangle_type): Ditto.
186         (rs6000_vector_mode_supported_p): Ditto.
187         (rs6000_mode_dependent_address): Altivec addresses with AND -16
188         are mode dependent.
189
190         * config/rs6000/vsx.md: New file for VSX support.
191
192         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
193         identifing values with just the most significant bit set.
194         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
195         vectorized builtins.
196
197         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
198         (UNSPEC_VRFIM): Delete.
199         (splitter for loading up vector with most significant bit): New
200         splitter for vectorizing copysign.
201         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
202         vectorizing simple math functions.
203         (altivec_vrfip): Add support for vectorizing simple math
204         functions.
205         (altivec_vrfim): Ditto.
206         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
207
208         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
209         (power7.md, vsx.md): Include for power7 support.
210         (copysigndf3): Use VSX instructions if -mvsx.
211         (negdf2_fpr): Ditto.
212         (absdf2_fpr): Ditto.
213         (nabsdf2_fpr): Ditto.
214         (adddf3_fpr): Ditto.
215         (subdf3_fpr): Ditto.
216         (muldf3_fpr): Ditto.
217         (divdf3_fpr): Ditto.
218         (fix_truncdfdi2_fpr): Ditto.
219         (cmpdf_internal1): Ditto.
220         (fred, fred_fpr): Convert into expander/insn to add VSX support.
221         (btruncdf2, btruncdf2_fpr): Ditto.
222         (ceildf2, ceildf2_fpr): Ditto.
223         (floordf2, floordf2_fpr): Ditto.
224         (floatdidf2, floatdidf2_fpr): Ditto.
225         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
226         (fmsubdf4_fpr): Ditto.
227         (fnmadddf4_fpr_1): Ditto.
228         (fnmadddf4_fpr_2): Ditto.
229         (fnmsubdf4_fpr_1): Ditto.
230         (fnmsubdf4_fpr_2): Ditto.
231         (fixuns_truncdfdi2): Add expander for VSX support.
232         (fix_truncdfdi2): Ditto.
233         (fix_truncdfsi2): Ditto.
234         (ftruncdf2): Ditto.
235         (btruncsf2): Whitespace.
236         (movdf_hardfloat32): Add support for VSX registers.
237         (movdf_softfloat32): Ditto.
238         (movdf_hardfloat64): Ditto.
239         (movdf_hardfloat64_mfpgpr): Ditto.
240         (movdf_softfloat64): Ditto.
241         (movti splitters): Add check for vector registers supporting
242         TImode in the future.
243         (bpermd): Add power7 bpermd instruction.
244
245         * config/rs6000/altivec.h (vec_div): Define if VSX.
246         (vec_mul): Ditto.
247         (vec_msub): Ditto.
248         (vec_nmadd): Ditto.
249         (vec_nearbyint): Ditto.
250         (vec_rint): Ditto.
251         (vec_sqrt): Ditto.
252         (all predicates): Use the generic builtin function, and not the
253         V4SF specific function so that the predicates will work with
254         VSX's V2DF.
255         (vec_all_*): Ditto.
256         (vec_any_*): Ditto.
257
258         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
259         Document new VSX functions and types.
260
261         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
262         switches.
263
264         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
265         "wa", and "j" constraints.  Modify "v" to talk about Altivec
266         instead of just vector.
267
268 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
269
270         PR debug/26475
271         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
272         location for phi arguments.
273         (rewrite_update_phi_arguments): Find locations for reaching defs.
274         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
275         Add location to add_phi_arg calls.
276         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
277         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
278         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
279         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
280         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
281         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
282         * tree-phinodes.c (make_phi_node): Initialize location.
283         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
284         (add_phi_arg): Add location parameter.
285         (remove_phi_arg_num): Move location when moving phi argument.
286         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set 
287         location.
288         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
289         slpeel_update_phi_nodes_for_guard1,
290         slpeel_update_phi_nodes_for_guard2,
291         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
292         vect_loop_versioning): Set locations.
293         * tree-parloops.c (create_phi_for_local_result,
294         transform_to_exit_first_loop, create_parallel_loop): Add locations.
295         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
296         * tree-vect-loop.c (get_initial_def_for_induction,
297         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
298         locations.
299         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
300         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
301         (gimple_phi_arg_set_location): New.  Set locus.
302         (gimple_phi_arg_has_location): New.  Check for locus.
303         (redirect_edge_var_map_location): New.  Return locus from var_map.
304         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
305         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
306         combining PHI arguments.
307         (cond_store_replacement): Set location.
308         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
309         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
310         scop_add_exit_phis_edge): Add locations.
311         * tree-cfgcleanup.c (remove_forwarder_block,
312         remove_forwarder_block_with_phi): Add locations.
313         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
314         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
315         locations.
316         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
317         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
318         flush_pending_stmts): Add source location.
319         * lambda-code.c (perfect_nestify): Maintain location stack with argument
320         stack to preserve locations.
321         * tree-vect-stmts.c (vectorizable_load): Add location.
322         * tree-inline.c (copy_phis_for_bb): Copy locus.
323         (setup_one_parameter): Add call locus to inlined parameter stmts.
324         (initialize_inlined_parameters): Pass in call location as parameter
325         assignment locus.
326         (tree_function_versioning): Pass location to setup_one_parameter.
327         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
328         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
329         copy and edge lists.
330         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
331         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a 
332         locus parameter and override the stmt default if provided.
333         (new_elim_graph, clear_elim_graph, delete_elim_graph,
334         elim_graph_add_edge, elim_graph_remove_succ_edge,
335         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
336         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
337         eliminate_phi):  Add locus info in elimination graph for each edge and
338         value copy.
339         (insert_backedge_copies): Copy locus if present.
340         * tree-flow.h (struct _edge_var_map): Add locus field.
341         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
342         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
343         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add 
344         locations.
345         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
346         
347 2009-07-30  Martin Jambor  <mjambor@suse.cz>
348
349         PR tree-optimization/40570
350         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
351         use inlining loops.
352
353 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
354
355         * ssa-loop-manip.c: Include langhooks.h.
356         (rewrite_phi_with_iv): New.
357         (rewrite_all_phi_nodes_with_iv): New.
358         (canonicalize_loop_ivs): Move here from tree-parloops.c.
359         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
360         * tree-parloops.c (loop_parallel_p): Move out all conditions
361         except dependency check.
362         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
363         (gen_parallel_loop): Call canonicalize_loop_ivs without
364         reduction_list argument.
365         (build_new_reduction): New.
366         (gather_scalar_reductions): New.
367         (try_get_loop_niter): New.
368         (try_create_reduction_list): New.
369         (parallleize_loops): Change the parallel conditions check.
370         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
371         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
372
373 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
374
375         * opt-functions.awk (opt_args): Allow argument to be enclosed in
376         curly braces.
377         * doc/options.texi (Option properties):  Mention new quoting syntax.
378
379 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
380
381         * config/alpha/alpha.c (alpha_start_function):
382         Handle VMS_DEBUG_MAIN_POINTER
383         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
384         * doc/invoke.texi: Document -mdebug-main switch.
385
386 2009-07-29  Richard Henderson  <rth@redhat.com>
387
388         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
389         (cgraph_create_edge_including_clones): Likewise.
390         * tree-inline.c (copy_bb): Operate on the correct edges
391         when updating the callgraph.
392
393 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
394
395         * config/alpha/vms-cc.c: Deleted.
396         * config/alpha/vms-ld.c: Deleted.
397         * config/alpha/t-vms64: Moved to config/vms
398         * config/alpha/vms-crt0-64.c: Moved to config/vms
399         * config/alpha/vms-crt0.c: Moved to config/vms
400         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
401         * config/alpha/vms-psxcrt0.c: Moved to config/vms
402         * config/alpha/xm-vms.h: Moved to config/vms
403         * config/alpha/x-vms: Moved to config/vms
404         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
405         config/vms/t-vms.
406         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
407         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
408         (version): Set.
409         * config/vms/t-vms64: Moved here from config/alpha
410         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
411         (argc,argv,envp): Enforce 32bit malloc'ing.
412         * config/vms/vms-psxcrt0-64.c: Likewise.
413         * config/vms/vms-crt0.c: Moved here from config/alpha.
414         * config/vms/vms-psxcrt0.c: Likewise.
415         * config/vms/vms-crtl-64.h: New file.
416         * config/vms/vms-crtl.h: New file.
417         * config/vms/vms.opt: New file.
418         * config/vms/xm-vms64.h: New file.
419         * config/vms/xm-vms.h: Moved here from config/alpha.
420         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
421         Set.
422         * config/vms/x-vms: Moved here from config/alpha.
423         (version, VMS_EXTRA_PARTS): Moved to t-vms.
424         (vms-ld.o, vms-cc.o): Removed.
425         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
426
427 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
428
429         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
430         correct stack (obvious VMS fix).
431
432 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
433
434         * dwarf2out.c (output_file_names): Output VMS style file name, size,
435         date, version info if VMS_DEBUGGING_INFO defined.
436         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
437         size, date calculating code moved here.
438
439 2009-07-29  Paul Brook  <paul@codesourcery.com>
440
441         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
442         do_push/do_pop.
443
444 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
445
446         PR target/40577
447         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
448         to DImode when generating insq_le insn.
449
450 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
451
452         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
453         New macro set for VMS_DEBUGGGING_INFO.
454         (AT_string_form): Use it.
455
456 2009-07-28  DJ Delorie  <dj@redhat.com>
457
458         * config/mep/mep.c (vtext_section): New.
459         (vftext_section): New.
460         (ftext_section): New.
461         (mep_select_section): Add support for functions.
462         (mep_unique_section): Likewise.
463         (mep_asm_init_sections): Likewise.
464         (mep_encode_section_info): Remove it from here.
465
466         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
467
468 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
469
470         * tree.h (TREE_DEPRECATED): Document it is used for types too.
471         (TYPE_VECTOR_OPAQUE): Use default_def_flag
472
473 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
474
475         * dwarf2out.c (output_file_names): Test new macro
476         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
477         (add_comp_dir_attribute): Likewise.
478
479 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
480
481         * config/i386/mingw-w64.h (LINK_SPEC): Add
482         separating space between commands.
483
484 2009-07-28  Jan Hubicka  <jh@suse.cz>
485
486         PR tree-optimization/40759
487         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
488         for renaming.
489
490 2009-07-27  DJ Delorie  <dj@redhat.com>
491
492         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
493         types are dword-aligned.
494         (mep_expand_va_start): Likewise.
495
496 2009-07-27  Olivier Hainque  <hainque@adacore.com>
497             Douglas B Rupp  <rupp@gnat.com>
498
499         * convert.c (convert_to_pointer): Don't assume the target
500         pointer type is POINTER_SIZE long. Fetch its precision instead.
501
502 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
503
504         * system.h (fopen): Undefine if macro.
505
506 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
507
508         * dwarf2out.c (output_cfi_p): Removed.
509         (output_cfis): New function.
510         (output_fde): New function, split from output_call_frame_info.
511         (output_call_frame_info): Use it.
512         (dwarf2out_switch_text_section): Use output_cfis.
513
514 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
515
516         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
517         TARGET_BI_ARCH is specified without enabling SJLJ.
518         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
519         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
520
521 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
522
523         * arm.md (negdi2): Use DImode if forcing a value into a register.
524
525 2009-07-26  Ira Rosen  <irar@il.ibm.com>
526
527         PR tree-optimization/40801
528         * tree-vect-stmts.c (vectorizable_call): Get previous copy
529         of vector operand from the previous copy of vector statement.
530         Pass the correct definition type value to
531         vect_get_vec_def_for_stmt_copy().
532
533 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
534
535         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
536         const char ** conversion.
537
538 2009-07-25 David Daney <ddaney@caviumnetworks.com>
539
540         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
541         fancy_abort() if !ENABLE_ASSERT_CHECKING.
542         (gcc_unreachable): Invoke __builtin_unreachable() if
543         !ENABLE_ASSERT_CHECKING.
544
545 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
546
547         PR rtl-optimization/40445
548         * emit-rtl.c (next_nonnote_insn_bb): New function.
549         * rtl.h (next_nonnote_insn_bb): Declare new function.
550         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
551         with no successors that is the successor of the ENTRY_BLOCK.
552         Continue from the top after removing an empty fallthrough block.
553         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
554         of next_nonnote_insn.
555
556 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
557
558         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
559         
560 2009-07-25  Martin Jambor  <mjambor@suse.cz>
561
562         * c-common.c (c_common_attribute_table): New element for noclone.
563         (handle_noclone_attribute): New function. Forward-declare.
564         * tree-inline.c (tree_versionable_function_p): Check for noclone
565         attribute.
566         * doc/extend.texi (Labels as Values): Document need for noclone.
567         (Function Attributes): Document noclone attribute.
568
569 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
570
571         PR rtl-optimization/34999
572         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
573         and dw_fde_switched_cold_to_hot fields.
574         (output_cfi_p): New function.
575         (output_call_frame_info): If fde->dw_fde_switched_sections,
576         output 2 FDEs instead of one with corrupted header.
577         (dwarf2out_do_cfi_startproc): New function.
578         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
579         and fde->dw_fde_switched_cold_to_hot.
580         (dwarf2out_switch_text_section): Compute
581         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
582         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
583         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
584         Otherwise, compute fde->dw_fde_switch_cfi.
585
586 2009-07-24  Cary Coutant  <ccoutant@google.com>
587
588         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
589
590 2009-07-24  Cary Coutant  <ccoutant@google.com>
591
592         * cfghooks.c (split_block): Copy discriminator to new block.
593         * tree-cfg.c (assign_discriminator): Check location of last
594         instruction in block as well as first.
595
596 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
597
598         * config/i386/linux.c: Use fputs or putc instead of fprintf
599         where appropriate.
600         * config/i386/gas.h: Ditto.
601         * config/i386/x86-64.h: Ditto.
602         * config/i386/att.h: Ditto.
603
604 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
605
606         * expmed.c (emit_store_flag): Use a recursive call to optimize the
607         xor case.
608
609 2009-07-24  Martin Jambor  <mjambor@suse.cz>
610
611         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
612         (ipa_push_func_to_list_1): Declare.
613         (ipa_push_func_to_list): New function.
614
615         * ipa-prop.c (ipa_push_func_to_list_1): New function.
616         (ipa_init_func_list): Call ipa_push_func_to_list_1.
617         (ipa_push_func_to_list): Removed.
618         (ipa_pop_func_from_list): Clear node_enqueued flag.
619
620 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
621         
622         * config/s390/s390.c (override_options): Default
623         max-unrolled-insns to 100 for z10 tuning.
624
625 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
626
627         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
628         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
629         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
630         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
631         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
632         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
633         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
634
635 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
636
637         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
638         use default set in mingw32.h header.
639         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
640         64-bit /mingw/include path.
641         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
642         path.
643
644 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
645
646         PR rtl-optimization/40209
647         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
648
649 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
650
651         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
652         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
653         with the rest of string where appropriate.  Use fputs or putc
654         instead of fprintf where appropriate.
655
656 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
657             Pat Haugen  <pthaugen@us.ibm.com>
658             Revital Eres <ERES@il.ibm.com>
659
660         * config/rs6000/vector.md: New file.  Move most of the vector
661         expander support here from altivec.md to allow for the VSX vector
662         unit in the future.  Add support for secondary_reload patterns.
663         Rewrite the patterns for vector comparison, and vector comparison
664         predicate instructions so that the RTL expresses the desired
665         behavior, instead of using unspec.
666
667         * config/rs6000/constraints.md ("f" constraint): Use
668         rs6000_constraints to hold the precalculated register class.
669         ("d" constraint): Ditto.
670         ("wd" constraint): New constraint for VSX.
671         ("wf" constraint): Ditto.
672         ("ws" constraint): Ditto.
673         ("wa" constraint): Ditto.
674         ("wZ" constraint): Ditto.
675         ("j" constraint): Ditto.
676
677         * config/rs6000/predicates.md (vsx_register_operand): New
678         predicate for VSX.
679         (vfloat_operand): New predicate for vector.md.
680         (vint_operand): Ditto.
681         (vlogical_operand): Ditto.
682         (easy_fp_constant): If VSX, 0.0 is an easy constant.
683         (easy_vector_constant): Add VSX support.
684         (altivec_indexed_or_indirect_operand): New predicate for
685         recognizing Altivec style memory references with AND -16.
686
687         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
688         for vector secondary reload support.
689         (rs6000_vector_reg_class): Delete, replacing it with
690         rs6000_constraints.
691         (rs6000_vsx_reg_class): Ditto.
692         (rs6000_constraints): New array to hold the register classes of
693         each of the register constraints that can vary at runtime.
694         (builtin_mode_to_type): New static array for builtin function type
695         creation.
696         (builtin_hash_table): New static hash table for builtin function
697         type creation.
698         (TARGET_SECONDARY_RELOAD): Define target hook.
699         (TARGET_IRA_COVER_CLASSES): Ditto.
700         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
701         registers are 128 bits if VSX memory reference instructions are used.
702         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
703         unit is being used.
704         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
705         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
706         Print several of the scheduling related parameters.
707         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
708         rs6000_constraints instead of rs6000_vector_reg_class.  Move
709         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
710         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
711         Altivec.  Add VSX support.  Setup for secondary reload support on
712         Altivec/VSX registers.
713         (rs6000_override_options): Make power7 set the scheduling groups
714         like the power5.  Add support for new debug switches to override
715         the scheduling defaults.  Temporarily disable -mcpu=power7 from
716         setting -mvsx.  Add support for debug switches -malways-hint,
717         -msched-groups, and -malign-branch-targets.
718         (rs6000_buitlin_conversion): Add support for returning unsigned
719         vector conversion functions to fix regressions due to stricter
720         type checking.
721         (rs6000_builtin_mul_widen_even): Ditto.
722         (rs6000_builtin_mul_widen_odd): Ditto.
723         (rs6000_builtin_vec_perm): Ditto.
724         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
725         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
726         to zero a register.
727         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
728         generated upstream.
729         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
730         VSX types for bit operations.  Changes to accomidate vector.md.
731         (bdesc_2arg): Ditto.
732         (bdesc_1arg): Ditto.
733         (struct builtin_description_predicates): Rewrite predicate
734         handling so that RTL describes the operation, instead of passing
735         the instruction to be used as a string argument.
736         (bdesc_altivec_preds): Ditto.
737         (altivec_expand_predicate_builtin): Ditto.
738         (altivec_expand_builtin): Ditto.
739         (rs6000_expand_ternop_builtin): Use a switch instead of an if
740         statement for vsldoi support.
741         (altivec_expand_ld_builtin): Change to use new names from vector.md.
742         (altivec_expand_st_builtin): Ditto.
743         (paired_expand_builtin): Whitespace changes.
744         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
745         builtin_mode_to_type table for secondary reload.  Call
746         builtin_function_type to build random builtin functions.
747         (altivec_init_builtins): Change to use builtin_function_type to
748         create builtin function types dynamically as we need them.
749         (builtin_hash_function): New support for hashing the tree types
750         for builtin function as we need it, rather than trying to build
751         all of the trees that we need.  Add initial preliminary VSX support.
752         (builtin_function_type): Ditto.
753         (builtin_function_eq): Ditto.
754         (builtin_hash_struct): Ditto.
755         (rs6000_init_builtins): Ditto.
756         (rs6000_common_init_builtins): Ditto.
757         (altivec_init_builtins): Ditto.
758         (rs6000_common_init_builtins): Ditto.
759         (enum reload_reg_type): New enum for simplifing reg classes.
760         (rs6000_reload_register_type): Simplify register classes into GPR,
761         Vector, and other registers.  Altivec and VSX addresses in reload.
762         (rs6000_secondary_reload_inner): Ditto.
763         (rs6000_ira_cover_classes): New target hook, that returns the
764         appropriate cover classes, based on -mvsx being used or not.
765         (rs6000_secondary_reload_class): Add VSX support.
766         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
767         (get_vsel_insn): Ditto.
768         (rs6000_emit_vector_compare): Rewrite vector conditional support
769         so that where we can, we use RTL operators, instead of blindly use
770         UNSPEC.
771         (rs6000_emit_vector_select): Ditto.
772         (rs6000_emit_vector_cond_expr): Ditto.
773         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
774         (create_TOC_reference): Add -mdebug=addr support.
775         (emit_frame_save): VSX loads/stores need register indexed addressing.
776
777         * config/rs6000/rs6000.md: Include vector.md.
778
779         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
780
781         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
782         support for V2DI, V2DF in logical, permute, select operations.
783
784         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
785         switch for vsx/power7.
786         (-mvsx-scalar-memory): Ditto.
787         (-mvsx-align-128): Ditto.
788         (-mallow-movmisalign): Ditto.
789         (-mallow-df-permute): Ditto.
790         (-msched-groups): Ditto.
791         (-malways-hint): Ditto.
792         (-malign-branch-targets): Ditto.
793         
794         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
795         hook instead.
796         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
797         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
798         (rs6000_vector_reg_class): Delete.
799         (rs6000_vsx_reg_class): Ditto.
800         (enum rs6000_reg_class_enum): New enum for the constraints that
801         vary based on target switches.
802         (rs6000_constraints): New array to hold the register class for all
803         of the register constraints that vary based on the switches used.
804         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
805         (enum rs6000_builtins): Add unsigned varients for the builtin
806         declarations returned by target hooks for expanding multiplies,
807         select, and permute operations.  Add VSX builtins.
808         (enum rs6000_builtin_type_index): Add entries for VSX.
809         (V2DI_type_node): Ditto.
810         (V2DF_type_node): Ditto.
811         (unsigned_V2DI_type_node): Ditto.
812         (bool_long_type_node): Ditto.
813         (intDI_type_internal_node): Ditto.
814         (uintDI_type_internal_node): Ditto.
815         (double_type_internal_node): Ditto.
816
817         * config/rs6000/altivec.md (whole file): Move all expanders to
818         vector.md from altivec.md.  Rename insn matching functions to be
819         altivec_foo.
820         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
821         (altivec_vcmp*): Ditto.
822         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
823         (VM): New iterator for moves that includes the VSX types.
824         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
825         (altivec_vperm_<mode>_uns): New, for unsigned types.
826         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
827         (altivec_eq<mode>): Ditto.
828         (altivec_gt<mode>): Ditto.
829         (altivec_gtu<mode>): Ditto.
830         (altivec_eqv4sf): Ditto.
831         (altivec_gev4sf): Ditto.
832         (altivec_gtv4sf): Ditto.
833         (altivec_vcmpbfp_p): Ditto.
834
835 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
836
837         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to 
838         unsigned HWI.
839
840 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
841
842         PR target/40832
843         * config/i386/i386.c (output_387_ffreep): Rewrite to use
844         ASM_SHORT instead of .word.
845         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
846         instead of .word in asm template.
847
848 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
849
850         PR target/37488
851         * ira-lives.c (bb_has_abnormal_call_pred): New function.
852         (process_bb_node_lives): Use it.
853
854         * ira.c (setup_cover_and_important_classes): Don't setup
855         ira_important_class_nums.  Add cover classes to the end of
856         important classes.
857         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
858         New.
859         (find_reg_class_closure): Use reorder_important_classes.
860
861         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
862
863         * config/i386/i386.c (i386_ira_cover_classes): New function.
864         (TARGET_IRA_COVER_CLASSES): Redefine.
865
866         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
867         importance of order of cover classes in the array.
868         
869 2009-07-22  Diego Novillo  <dnovillo@google.com>
870
871         * tree-pass.h (TDF_EH): Define.
872         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
873         contains TDF_EH, print the EH region number holding GS.
874         * tree-dump.c (dump_options): Add "eh".
875         * doc/invoke.texi: Document it.
876
877 2009-07-22  Doug Kwan  <dougkwan@google.com>
878
879         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
880
881 2009-07-22  Michael Matz  <matz@suse.de>
882
883         PR tree-optimization/35229
884         PR tree-optimization/39300
885
886         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
887         (inhibit_phi_insertion): New function.
888         (insert_into_preds_of_block): Call it for REFERENCEs.
889         (init_pre): Initialize and finalize scalar evolutions.
890         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
891
892 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
893
894         * config/i386/predicates.md (zero_extended_scalar_load_operand):
895         Use CONST_VECTOR_NUNITS to determine number of elements.
896
897 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
898
899         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
900         (U, W): Constraints are now deprecated and will be removed if we
901         run out of letters.     
902         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
903         the file.
904         ("prefetch"): Add the stcmh instruction for prefetching.
905         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
906         changes.
907         (s390_short_displacement): Return always true if compiling for
908         machines not providing the long displacement facility.
909         (s390_mem_constraint): Support the new constraint letter Z.
910         (s390_check_qrst_address): New function.
911
912 2009-07-21  DJ Delorie  <dj@redhat.com>
913
914         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
915         alone too.
916
917 2009-07-21  Jason Merrill  <jason@redhat.com>
918
919         * c-common.c (max_tinst_depth): Increase default to 1024.
920
921 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
922
923         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
924         (vec_unpacku_float_lo_v4si): Ditto.
925
926 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
927
928         PR target/40811
929         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
930         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
931         (builtin_description): Add __builtin_ia32_cvtudq2ps.
932         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
933
934 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
935
936         PR tree-optimization/40813
937         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
938         it.
939
940 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
941
942         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
943         with a NOP_EXPR if needed.
944
945 2009-07-21  Paul Brook <paul@codesourcery.com>
946
947         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
948         Terminate debug dump with newline.
949
950 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
951
952         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
953         Cast "1" to unsigned HOST_WIDE_INT.
954         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
955         deposit length to the maximum length - lsb.  Extend length if
956         HOST_BITS_PER_WIDE_INT is 32.
957
958 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
959
960         * cgraph.h (constant_pool_htab): New function.
961         (constant_descriptor_tree): Move from varasm.c.
962         * varasm.c (constant_pool_htab): New function.
963         (constant_descriptor_tree): Move to cgraph.h.
964
965 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
966
967         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
968
969 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
970
971         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
972         $(VARRAY_H).
973
974 2009-07-20  Xinliang David Li  <davidxl@google.com>
975
976         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
977
978 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
979
980         * config/mips/mips.md (move_type): Add arith.
981         (type): Handle arith.
982         (zero_extendsidi2): Rename this into ...
983         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
984         (zero_extendsidi2): New expander.
985         (*zero_extendsidi2_dext): New pattern.
986
987 2009-07-20  Nick Clifton  <nickc@redhat.com>
988
989         * config.gcc (mips64-*-*): Add definition of tm_defines in order
990         to set MIPS_ABI_DEFAULT.
991         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
992
993 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
994
995         * tree-object-size.c (addr_object_size): Handle unions with
996         array in it as last field of structs in __bos (, 1) as __bos (, 0).
997
998         PR tree-optimization/40792
999         * tree.c (build_function_type_skip_args): Remove bogus assert.
1000
1001 2009-07-20  Jan Hubicka  <jh@suse.cz>
1002             Martin Jambor  <mjambor@suse.cz>
1003
1004         * cgraph.h (combined_args_to_skip): New field.
1005         * cgraph.c (cgraph_create_virtual_clone): Properly handle
1006         combined_args_to_skip and args_to_skip.
1007         * tree-inline.c (update_clone_info): New function.
1008         (tree_function_versioning): Call update_clone_info.
1009         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
1010         functions.
1011         (cgraph_materialize_all_clones): More extensive dumping, working
1012         with combined_args_to_skip rather than args_to_skip.
1013
1014 2009-07-20  Ira Rosen  <irar@il.ibm.com>
1015
1016         * tree-vectorizer.h (vectorizable_condition): Add parameters.
1017         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
1018         (get_initial_def_for_reduction): Likewise.
1019         (vectorizable_reduction): Skip the check of first operand in case
1020         of COND_EXPR. Add check that it is outer loop vectorization if
1021         nested cycle was detected. Call vectorizable_condition() for 
1022         COND_EXPR. If reduction epilogue cannot be created do not fail for
1023         nested cycles (if it is not double reduction). Assert that there
1024         is only one type in the loop in case of COND_EXPR. Call
1025         vectorizable_condition() to vectorize COND_EXPR.
1026         * tree-vect-stmts.c (vectorizable_condition): Update comment.
1027         Add parameters. Allow nested cycles if called from 
1028         vectorizable_reduction(). Use reduction vector variable if provided.
1029         (vect_analyze_stmt): Call vectorizable_reduction() before
1030         vectorizable_condition().
1031         (vect_transform_stmt): Update call to vectorizable_condition().
1032
1033 2009-07-20  Christian Bruel  <christian.bruel@st.com>
1034         
1035         * config/sh/sh.opt (-mfmovd): Resurrect and document.
1036         * doc/invoke.texi (-mfmovd): Likewise.
1037         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
1038         
1039 2009-07-20  Jan Hubicka  <jh@suse.cz>
1040
1041         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
1042         when handling SSA name.
1043
1044 2009-07-19  Jan Hubicka  <jh@suse.cz>
1045
1046         PR tree-optimization/40676
1047         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
1048         virtual PHIs in empty BBs.
1049
1050 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
1051
1052         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
1053         re-expanded the compound use gen_lowpart instead to convert to the
1054         desired mode.
1055
1056 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
1057
1058         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
1059         OUTER_CONST arguments.
1060         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
1061         the new wider mode will be masked off.
1062         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
1063
1064 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
1065
1066         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
1067         high-order bits are zero.
1068
1069 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
1070
1071         * combine.c (simplify_shift_const_1): Split code to determine
1072         shift_mode into ...
1073         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
1074         new bits shifted in are identical to the old sign bit.
1075
1076 2009-07-18  Richard Guenther  <rguenther@suse.de>
1077
1078         PR c/40787
1079         * gimplify.c (gimplify_call_expr): Reject code using results from
1080         functions returning void.
1081
1082 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
1083
1084         * doc/md.texi: Document the new PowerPC "es" constraint.
1085         Document that "m" can include automodified addresses on this target,
1086         and explain how %U must be used.  Extend the "Q" and "Z" documentation
1087         to suggest "es" as well as "m".
1088         * config/rs6000/constraints.md (es): New memory constraint.
1089         (Q, Z): Update strings to match new documentation.
1090
1091 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
1092
1093         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
1094         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
1095         * config/rs6000/predicates.md (volatile_mem_operand): Use
1096         offsettable_nonstrict_memref_p.
1097         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
1098         (*floatunssidf2_internal): Likewise.
1099         (*fix_truncdfsi2_internal): Likewise.
1100         (*fix_trunctfsi2_internal): Likewise.
1101
1102 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
1103
1104         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
1105         atmega32u2 devices.
1106         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1107
1108 2009-07-17  Richard Guenther  <rguenther@suse.de>
1109
1110         PR c/40401
1111         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
1112         (pass_warn_unused_result): Likewise.
1113         (TODO_set_props): Remove.
1114         * omp-low.c (diagnose_omp_structured_block_errors): Change to
1115         run as a pass.
1116         (pass_diagnose_omp_blocks): Define.
1117         * c-decl.c (pop_file_scope): Do not finalize the CU here.
1118         (c_gimple_diagnostics_recursively): Remove.
1119         (finish_function): Do not call it.
1120         (c_write_global_declarations): Continue after errors.
1121         Finalize the CU here.
1122         * c-gimplify.c (c_genericize): Do not gimplify here.
1123         * c-common.c (c_warn_unused_result): Move ...
1124         * tree-cfg.c (do_warn_unused_result): ... here.
1125         (run_warn_unused_result): New function.
1126         (gate_warn_unused_result): New function.
1127         (pass_warn_unused_result): New pass.
1128         * c-common.h (c_warn_unused_result): Remove.
1129         * flags.h (flag_warn_unused_result): Declare.
1130         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
1131         * opts.c (flag_warn_unused_result): Initialize to false.
1132         * toplev.c (compile_file): Add comment.
1133         * omp-low.c (create_omp_child_function): Do not register
1134         the function with the frontend.
1135         (diagnose_omp_structured_block_errors): Prepare to be
1136         called as optimization pass.
1137         (gate_diagnose_omp_blocks): New function.
1138         (pass_diagnose_omp_blocks): New pass.
1139         * cgraph.h (cgraph_optimize): Remove.
1140         (cgraph_analyze_function): Likewise.
1141         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
1142         * cgraphunit.c (cgraph_lower_function): Lower nested functions
1143         before their parents here.
1144         (cgraph_finalize_function): Not here.
1145         (cgraph_analyze_function): Gimplify functions here.
1146         (cgraph_finalize_compilation_unit): Continue after errors.
1147         Optimize the callgraph from here.
1148         (cgraph_optimize): Make static.
1149         * langhooks.c (write_global_declarations): Finalize the CU.
1150         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
1151         (gimplify_function_tree): Assert we gimplify only once.
1152         Set PROP_gimple_any property.
1153         * tree-nested.c (gimplify_all_functions): New function.
1154         (lower_nested_functions): Gimplify all nested functions.
1155         * gimple.h (diagnose_omp_structured_block_errors): Remove.
1156         * passes.c (init_optimization_passes): Add pass_warn_unused_result
1157         and pass_diagnose_omp_blocks after gimplification.  Do not
1158         set TODO_set_props on all_lowering_passes.
1159         (execute_one_pass): Do not handle TODO_set_props.
1160         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
1161         (gimplify.o): Add tree-pass.h dependency.
1162         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
1163         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
1164         (unsave_r): Likewise.
1165         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
1166         temporary variable.
1167
1168 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
1169
1170         * doc/service.texi (Service): Restore previously removed link,
1171         which isn't broken after all.
1172
1173 2009-07-17  Richard Guenther  <rguenther@suse.de>
1174
1175         PR tree-optimization/40321
1176         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
1177         PHI nodes to the maximal set.
1178         (make_values_for_phi): Add PHI arguments to the maximal set.
1179         (execute_pre): Dump PHI_GEN and the maximal set.
1180
1181 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
1182
1183         PR c++/40780
1184         * gimplify.c (gimplify_conversion): Don't change non-conversions into
1185         VIEW_CONVERT_EXPR.
1186
1187 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
1188
1189         * doc/extend.texi (Nested Functions): Replace broken link with
1190         textual reference.
1191         * doc/service.texi (Service): Remove broken link.
1192
1193 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
1194
1195         PR bootstrap/40781
1196         * builtins.c (expand_builtin_memcmp): Use loc instead of
1197         EXPR_LOCATION (exp).
1198         (expand_builtin_strncmp): Likewise.
1199
1200 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
1201             Manuel López-Ibáñez  <manu@gcc.gnu.org>
1202
1203         PR 40435 
1204         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
1205         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
1206         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
1207         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
1208         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
1209         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
1210         tree-inline.c, c-common.c, c-common.h, gimple.c,
1211         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
1212         convert.c: Add location argument to fold_{unary,binary,ternary},
1213         fold_build[123], build_call_expr, build_size_arg,
1214         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
1215         fold_build1_initializer, fold_build2_initializer,
1216         fold_build3_initializer, fold_build_call_array,
1217         fold_build_call_array_initializer, fold_single_bit_test,
1218         omit_one_operand, omit_two_operands, invert_truthvalue,
1219         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
1220         combine_comparisons, fold_builtin_*, fold_call_expr,
1221         build_range_check, maybe_fold_offset_to_address, round_up,
1222         round_down.
1223
1224 2009-07-16  Jason Merrill  <jason@redhat.com>
1225
1226         PR libstdc++/37907
1227         * c-common.c (c_common_reswords): Add __is_standard_layout
1228         and __is_trivial.
1229         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
1230         * doc/implement-cxx.texi: New.
1231         * doc/gcc.texi: Include it.
1232
1233 2009-07-16  DJ Delorie  <dj@redhat.com>
1234
1235         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
1236         compares that may be indirectly affected by previous instructions.
1237
1238 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1239
1240         * builtins.c (do_mpc_arg2): New.
1241         (fold_builtin_2): Fold builtin cpow.
1242         * real.h (HAVE_mpc_pow): New.
1243
1244 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
1245
1246         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
1247         comparison to skip unprofitable schedule
1248
1249 2009-07-16  Simon Baldwin  <simonb@google.com>
1250
1251         * gcc.c (option_map): New flag -no-canonical-prefixes.
1252         * (display_help): Print help text for new flag.
1253         * (process_command): Move options translation and language specifics
1254         and handle new flag early.  Use it to set a function pointer to a
1255         prefix builder.  Replace make_relative_prefix calls with calls to
1256         the function pointed to.  Ignore new flag in regular options handling.
1257         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
1258
1259 2009-07-15  DJ Delorie  <dj@redhat.com>
1260
1261         * config/mep/mep.md (sibcall_internal): Change register to avoid
1262         argument registers.
1263         (sibcall_value_internal): Likewise.
1264
1265 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
1266
1267         PR rtl-optimization/40710
1268         * resource.c (mark_target_live_regs): Reset DF problem to LR.
1269
1270 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
1271
1272         * config/mips/mips.md (*extenddi_truncate<mode>,
1273         *extendsi_truncate<mode>): Change type attribute to move_type
1274         with shift_shift.  Split out code handling exts from here ...
1275         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
1276         pattern.
1277         (*extendhi_truncateqi): Change type attribute to move_type with
1278         shift_shift.  Split out code handling exts from here ...
1279         (*extendhi_truncateqi_exts): ... to this new pattern.
1280
1281 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
1282
1283         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
1284         instead of "and" with inverted sign bit mask value.  Use
1285         "nonimmediate_operand" for operand 1 and operand 2 predicate.
1286         Allocate registers only for operand 4 and operand 5.
1287
1288 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
1289
1290         PR middle-end/40747
1291         * fold-const.c (fold_cond_expr_with_comparison): When folding
1292         < and <= to MIN, make sure the MIN uses the same type as the
1293         comparison's operands.
1294
1295 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
1296
1297         * arm.md (ior_xor): New code iterator.
1298         (split for ior/xor with shift and zero-extend): New split pattern.
1299         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
1300
1301 2009-07-15  Richard Guenther  <rguenther@suse.de>
1302
1303         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
1304         offset member.
1305
1306 2009-07-15  Richard Guenther  <rguenther@suse.de>
1307
1308         PR middle-end/40753
1309         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
1310
1311 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
1312
1313         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
1314         handle 2.6.30 kernel.
1315
1316 2009-07-15  DJ Delorie  <dj@redhat.com>
1317
1318         * config/mep/mep.md (sibcall_internal): Change register to allow
1319         for 24-bit addresses.
1320         (sibcall_value_internal): Likewise.
1321
1322 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
1323         
1324         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
1325         that are enabled/disabled by the flags introduced by a previous patch.
1326         
1327 2009-07-14  DJ Delorie  <dj@redhat.com>
1328
1329         * config/mep/mep.md (sibcall_internal): Include non-toggling
1330         non-jmp case.
1331         (sibcall_value_internal): Likewise.
1332
1333 2009-07-14  Taras Glek  <tglek@mozilla.com>
1334             Rafael Espindola  <espindola@google.com>
1335
1336         * doc/sourcebuild.texi: Document install-plugin target.
1337         * configure.ac: Added install-plugin target to language makefiles.
1338         * configure: Regenerate.
1339         * Makefile.in: (install-plugin): Install more headers,
1340         depend on lang.install-plugin.
1341
1342 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1343
1344         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
1345         translation.
1346         
1347 2009-07-14  DJ Delorie  <dj@redhat.com>
1348
1349         * config/mep/mep.c (mep_vliw_jmp_match): New function.
1350         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
1351         * config/mep/mep.md (sibcall_internal): Change test from
1352         mep_vliw_mode_match to mep_vliw_jmp_match.
1353         (sibcall_value_internal): Likewise.
1354
1355 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
1356
1357         * config/i386/sse.md (copysign<mode>3): New expander.
1358         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
1359         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
1360         Use ix86_build_const_vector.
1361         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
1362         IX86_BUILTIN_CPYSGNPD.
1363         (builtin_description): Add __builtin_ia32_copysignps and
1364         __builtin_ia32_copysignpd.
1365         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
1366         and BUILT_IN_COPYSIGNF.
1367
1368 2009-07-13  Jason Merrill  <jason@redhat.com>
1369
1370         * builtins.c (can_trust_pointer_alignment): New fn.
1371         (get_pointer_alignment): Factor it out from here.
1372         * tree.h: Declare it.
1373
1374 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
1375
1376         * config/rs6000/predicates.md (offsettable_mem_operand): Test
1377         RTX_AUTOINC class.
1378
1379 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
1380
1381         PR debug/40705
1382         PR c++/403057
1383         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
1384
1385 2009-07-14  Richard Guenther  <rguenther@suse.de>
1386             Andrey Belevantsev <abel@ispras.ru>
1387
1388         PR middle-end/40745
1389         * cfgexpand.c (partition_stack_vars): Do not bother to update
1390         alias information when not optimizing.
1391
1392 2009-07-14  Richard Guenther  <rguenther@suse.de>
1393             Andrey Belevantsev <abel@ispras.ru>
1394
1395         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
1396         (pt_solution_set): Likewise.
1397         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
1398         * tree-ssa-structalias.c (pt_solution_set): New function.
1399         * final.c (rest_of_clean_state): Free SSA data structures.
1400         * print-rtl.c (print_decl_name): Remove.
1401         (print_mem_expr): Implement in terms of print_generic_expr.
1402         * alias.c (ao_ref_from_mem): New function.
1403         (rtx_refs_may_alias_p): Likewise.
1404         (true_dependence): Query alias-export info.
1405         (canon_true_dependence): Likewise.
1406         (write_dependence_p): Likewise.
1407         * tree-dfa.c (get_ref_base_and_extent): For void types leave
1408         size unknown.
1409         * emit-rtl.c (component_ref_for_mem_expr): Remove.
1410         (mem_expr_equal_p): Use operand_equal_p.
1411         (set_mem_attributes_minus_bitpos): Do not use
1412         component_ref_for_mem_expr.
1413         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
1414         (update_alias_info_with_stack_vars): Likewise.
1415         (partition_stack_vars): Call update_alias_info_with_stack_vars.
1416         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
1417         explicitly nor clear stmt operands.
1418         Free the decl-to-pointer map.
1419         * tree-optimize.c (execute_free_datastructures): Do not free
1420         SSA data structures here.
1421         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
1422         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
1423         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
1424         dependencies.
1425         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
1426
1427 2009-07-13  DJ Delorie  <dj@redhat.com>
1428
1429         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
1430         unrolling at the right iteration count.
1431
1432         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
1433         calculations.
1434
1435 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
1436         
1437         * haifa-sched.c (rank_for_schedule): Introduced flags to
1438         enable/disable individual scheduling heuristics.
1439         * common.opt: Introduced flags to enable/disable individual
1440         heuristics in the scheduler.    
1441         * doc/invoke.texi: Introduced flags to enable/disable individual
1442         heuristics in the scheduler.
1443         
1444 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
1445
1446         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
1447         config/i386/mingw-tls.c.
1448         * config/i386/mingw-tls.c: Removed.
1449
1450 2009-07-13  Ira Rosen  <irar@il.ibm.com>
1451
1452         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the 
1453         checks access only relevant statements.
1454         (vectorizable_reduction): Likewise.
1455
1456 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
1457
1458         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
1459         just for 32-bit case.
1460
1461 2009-07-12  Jan Hubicka  <jh@suse.cz>
1462
1463         PR tree-optimization/40585
1464         * except.c (expand_resx_expr): When there already is resume
1465         instruction, produce linked list.
1466         (build_post_landing_pads): Assert that resume is empty.
1467         (connect_post_landing_pads): Handle resume lists.
1468         (dump_eh_tree): Dump resume list.
1469
1470 2009-07-12  Ira Rosen  <irar@il.ibm.com>
1471
1472         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
1473         with additional argument.
1474         * tree-vectorizer.h (enum vect_def_type): Add
1475         vect_double_reduction_def.
1476         (vect_is_simple_reduction): Add argument.
1477         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
1478         indentation.
1479         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
1480         vect_is_simple_reduction with additional argument.
1481         (vect_analyze_loop_operations): Handle exit phi nodes in case of
1482         double reduction.
1483         (reduction_code_for_scalar_code): Handle additional codes by
1484         returning ERROR_MARK for them. Fix comment and indentation.
1485         (vect_is_simple_reduction): Fix comment, add argument to specify
1486         double reduction. Detect double reduction.
1487         (get_initial_def_for_induction): Fix indentation.
1488         (get_initial_def_for_reduction): Fix comment and indentation.
1489         Handle double reduction. Create initial definitions that do not
1490         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
1491         (vect_create_epilog_for_reduction): Fix comment, add argument to
1492         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
1493         epilogue result extraction. Create double reduction phi node and
1494         replace relevant uses.
1495         (vectorizable_reduction): Call vect_is_simple_reduction with
1496         additional argument. Fix indentation. Update epilogue code treatment
1497         according to the changes in reduction_code_for_scalar_code. Check
1498         for double reduction. Call vect_create_epilog_for_reduction with
1499         additional argument.
1500         * tree-vect-stmts.c (process_use): Handle double reduction, update
1501         documentation.
1502         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
1503         (vect_get_vec_def_for_operand): Likewise.
1504
1505 2009-07-12  Danny Smith  <dansmister@gmail.com>
1506
1507         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
1508         dllexport if !TREE_PUBLIC.
1509         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
1510
1511 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
1512
1513         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
1514         (avr_extra_arch_macro) Remove declatation.
1515         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
1516         (avr_extra_arch_macro) Declare as static.
1517         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
1518
1519 2009-07-11  Jan Hubicka  <jh@suse.cz>
1520
1521         PR middle-end/48388
1522         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
1523
1524 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
1525
1526         PR debug/40713
1527         * dwarf2out.c (dw_fde_struct): Add in_std_section and
1528         cold_in_std_section bits.
1529         (dwarf2out_begin_prologue): Initialize them.
1530         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
1531         if already covered by text_section or cold_text_section range.
1532
1533         PR rtl-optimization/40667
1534         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
1535         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
1536         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
1537         * config/i386/i386.c (ix86_minimum_alignment): New function.
1538         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
1539         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
1540         * emit-rtl.c (gen_reg_rtx): Likewise.
1541         * function.c (assign_parms): Likewise.  If nominal_type needs
1542         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
1543         rather than passed_type's alignment.
1544
1545         PR target/40668
1546         * function.c (assign_parm_setup_stack): Adjust
1547         MEM_OFFSET (data->stack_parm) if promoted_mode is different
1548         from nominal_mode on big endian.
1549
1550 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
1551
1552         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
1553
1554 2009-07-10  DJ Delorie  <dj@redhat.com>
1555
1556         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
1557
1558 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
1559
1560         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
1561         attribute.
1562         (thumb2_cbnz): Likewise.
1563
1564 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
1565
1566         PR target/39079
1567         * config.gcc (supported_defaults): Add synci.
1568         (with_synci): Add validation.
1569         (all_defaults): Add synci.
1570         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
1571         ISA_HAS_SYNCI.
1572         (synci): Same.
1573         * config/mips/mips.opt (msynci): New option.
1574         * config/mips/mips.c (mips_override_options): Warn on use of
1575         -msynci for targets that do now support it.
1576         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
1577         msynci.
1578         * gcc/doc/invoke.texi (-msynci): Document the new option.
1579         * doc/install.texi (--with-synci): Document the new option.
1580
1581 2009-07-10  Richard Guenther  <rguenther@suse.de>
1582
1583         PR tree-optimization/40496
1584         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
1585         the PHI result with a compatible type.
1586
1587 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1588
1589         PR 25509
1590         PR 40614
1591         * c.opt (Wunused-result): New.
1592         * doc/invoke.texi: Document it.
1593         * c-common.c (c_warn_unused_result): Use it.
1594
1595 2009-07-09  DJ Delorie  <dj@redhat.com>
1596
1597         * targhooks.c (default_target_can_inline_p): Rename from
1598         default_target_option_can_inline_p.
1599         * targhooks.h (default_target_can_inline_p): Likewise.
1600         * target-def.h (TARGET_CAN_INLINE_P): Rename from
1601         TARGET_OPTION_CAN_INLINE_P.
1602         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
1603         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
1604         (mep_target_can_inline_p): Rename from
1605         mep_target_option_can_inline_p.
1606
1607         PR target/40626
1608         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
1609         registers used to pass vectors.
1610
1611         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
1612
1613 2009-07-09  Tom Tromey  <tromey@redhat.com>
1614
1615         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
1616         * config/mmix/mmix.c: Include dwarf2.h.
1617         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
1618         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
1619         * config/sh/sh.c: Include dwarf2.h.
1620         * config/i386/i386.c: Include dwarf2.h.
1621         * Makefile.in (DWARF2_H): Remove 'elf'.
1622         * except.c: Include dwarf2.h.
1623         * unwind-dw2.c: Include dwarf2.h.
1624         * dwarf2out.c: Include dwarf2.h.
1625         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
1626         * unwind-dw2-fde.c: Include dwarf2.h.
1627         * dwarf2asm.c: Include dwarf2.h.
1628
1629 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
1630
1631         * haifa-sched.c (insn_finishes_cycle_p): New static function.
1632         (max_issue): Use it.
1633         * sched-int.h (struct sched_info: insn_finishes_block_p): New
1634         scheduler hook.
1635         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
1636         (region_sched_info): Update.
1637         * sched-ebb.c (ebb_sched_info): Update.
1638         * modulo-sched.c (sms_sched_info): Update.
1639         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
1640
1641 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
1642
1643         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
1644
1645 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
1646
1647         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen. 
1648
1649 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
1650
1651         PR middle-end/40692
1652         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
1653         arg1 with arg01 if arg1 is already INTEGER_CST.
1654
1655 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
1656
1657         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
1658         Transform (and (truncate)) into (truncate (and)).
1659
1660 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
1661
1662         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
1663         creating LHS paradoxical subregs.  Fix surrounding returns to
1664         use NULL_RTX rather than 0.
1665
1666 2009-07-08  DJ Delorie  <dj@redhat.com>
1667
1668         * config/mep/mep.c: (mep_option_can_inline_p): New.
1669         (TARGET_OPTION_CAN_INLINE_P): Define.
1670
1671 2009-07-08  Mark Wielaard  <mjw@redhat.com>
1672
1673         PR debug/40659
1674         * dwarf2out.c (add_data_member_location_attribute): When we have
1675         only a constant offset don't emit a new location description using
1676         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
1677         dwarf_version > 2.
1678
1679 2009-07-08  Richard Henderson  <rth@redhat.com>
1680
1681         PR target/38900
1682         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
1683         (enum reg_class): Add CLOBBERED_REGS.
1684         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
1685         * config/i386/i386.c (ix86_conditional_register_usage): Moved
1686         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
1687         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
1688         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
1689         force 64-bit sibcalls into R11.
1690         * config/i386/constraints.md (U): New constraint.
1691         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
1692         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
1693         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
1694
1695 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
1696
1697         * basic-block.h (dump_regset, debug_regset): Remove duplicate
1698         prototypes.
1699         * c-objc-common.h (c_initialize_diagnostics): Ditto.
1700         * ebitmap.h (dump_ebitmap): Ditto.
1701         * optabs.h (optab_libfunc): Ditto.
1702         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
1703         * tree-flow.h (vect_can_force_dr_alignment_p,
1704         get_vectype_for_scalar_type): Ditto.
1705         (vectorize_loops): Move prototype to ...
1706         * tree-vectorizer.h: ... here. Also, adjust comment.
1707         (vect_set_verbosity_level): Remove duplicate prototype.
1708         * tree-ssa-loop.c: Include tree-vectorizer.h.
1709         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
1710
1711 2009-07-08  Nick Clifton  <nickc@redhat.com>
1712
1713         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
1714         forward slash.
1715
1716 2009-07-08  DJ Delorie  <dj@redhat.com>
1717
1718         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
1719         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
1720         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
1721         written to.
1722         * config/mep/intrinsics.md: Regenerated.
1723         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
1724         registers when asm() or calls are detected.
1725
1726 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1727
1728         PR c++/31246
1729         * gimplify.c (gimplify_expr): Propagate no_warning flag when
1730         gimplifying.
1731         * gimple (gimple_build_call_from_tree): Likewise.
1732         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
1733         no_warning flag before warning.
1734
1735 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1736
1737         * tree.c (set_expr_locus): Remove.
1738         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
1739         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
1740         EXPR_LOCATION.
1741         * gimplify.c (internal_get_tmp_var): Likewise.
1742         (gimplify_call_expr): Likewise.
1743         (gimplify_one_sizepos): Likewise.
1744
1745 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
1746
1747         PR debug/40666
1748         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
1749         to variables for debugging purposes.
1750
1751 2009-06-23  Mark Loeser  <mark@halcy0n.com>
1752
1753         PR build/40010
1754         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
1755
1756 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1757
1758         * pretty-print.c (pp_base_format): Remove %J.
1759         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
1760         gcc_cxxdiag_char_table): Likewise.
1761         (init_dynamic_diag_info): Likewise.
1762
1763 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1764
1765         * pretty-print.c (pp_base_format): Remove %H.
1766         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
1767         gcc_cxxdiag_char_table): Likewise.
1768         (init_dynamic_diag_info): Likewise.
1769         * config/mep/mep.c (mep_select_section): Likewise.
1770
1771 2009-07-07  Duncan Sands  <baldrick@free.fr>
1772
1773         * final.c (pass_clean_state): Give the pass a name.
1774         * passes.c (pass_rest_of_compilation): Likewise.
1775         * tree-optimize.c (pass_all_optimizations): Likewise.
1776
1777 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
1778
1779         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
1780         an extra 'decl' for error_at.
1781
1782 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
1783
1784         PR middle-end/40669
1785         * tree-tailcall.c (adjust_return_value_with_ops,
1786         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
1787         if it has complex or vector type.
1788
1789 2009-07-07  Olivier Hainque  <hainque@adacore.com>
1790
1791         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
1792         pthread symbols.
1793
1794 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
1795
1796         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
1797
1798 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1799
1800         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
1801         * c-decl.c: Likewise.
1802         * function.c: Likewise.
1803         * varasm.c: Likewise.
1804         * tree-ssa.c: Likewise.
1805         * c-common.c: Likewise.
1806         * tree-cfg.c: Likewise.
1807         * config/spu/spu.c: Likewise.
1808         * config/ia64/ia64.c: Likewise.
1809         * config/v850/v850.c: Likewise.
1810
1811 2009-07-06  DJ Delorie  <dj@redhat.com>
1812
1813         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
1814         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
1815         unspecified accesses to control registers.
1816         * config/mep/intrinsics.md: Regenerate.
1817         * config/mep/intrinsics.h: Regenerate.
1818         * config/mep/mep-intrin.h: Regenerate.
1819
1820 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1821
1822         * c-lex.c: Replace %H by an explicit location. Update all calls.
1823         * c-common.c: Likewise.
1824         * c-decl.c: Likewise.
1825         * c-typeck.c: Likewise.
1826         * fold-const.c: Likewise.
1827         * gimplify.c: Likewise.
1828         * stmt.c: Likewise.
1829         * tree-cfg.c: Likewise.
1830         * tree-ssa-loop-niter.c: Likewise.
1831         * tree-vrp.c: Likewise.
1832         * value-prof.c: Likewise.
1833
1834 2009-07-06  Diego Novillo  <dnovillo@google.com>
1835
1836         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
1837         if it has one.  Handle cases where VAR does not have an
1838         annotation or cfun is NULL.
1839
1840 2009-07-06  Diego Novillo  <dnovillo@google.com>
1841
1842         * tree.c: Include debug.h.
1843         (initialize_tree_contains_struct): New.
1844         (init_ttree): Call it.
1845         (tree_node_structure_for_code): Factor out of ...
1846         (tree_node_structure): ... here.
1847         * treestruct.def (TS_PHI_NODE): Remove.
1848         (TS_GIMPLE_STATEMENT): Remove.
1849
1850 2009-07-06  Diego Novillo  <dnovillo@google.com>
1851
1852         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
1853         (debug_tree_chain): Handle cycles.
1854
1855 2009-07-06  Nick Clifton  <nickc@redhat.com>
1856             DJ Delorie  <dj@redhat.com>
1857
1858         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
1859         __FMOVD_ENABLED__ is defined.
1860         * config/sh/sh.h
1861         (TARGET_FMOVD): Provide a default definition.
1862         (MASK_FMOVD): Likewise.
1863         (TARGET_CPU_CPP_BUILTINS): Define
1864         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
1865         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
1866         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
1867         (split for DF load from memory into register): Also handle
1868         MEMs which consist of REG+DISP addressing.
1869         (split for DF store from register to memory): Likewise.
1870         (movsf_ie): Always use single fp_mode.
1871         * config/sh/sh.c (sh_override_options): Do not automatically
1872         enable TARGET_MOVD for the SH2A when supporting doubles - leave
1873         that to the -mfmovd command line switch.
1874         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
1875         (fldi_ok): Always allow.
1876         * config/sh/sh.opt (mfmovd): Remove this switch.
1877         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
1878
1879 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
1880             Kaz Kojima  <kkojima@gcc.gnu.org>
1881
1882         PR rtl-optimization/30807
1883         * postreload.c (reload_combine): For every new use of REG_SUM,
1884         record the use of BASE.
1885
1886 2009-07-06  Jan Hubicka  <jh@suse.cz>
1887
1888         * params.def: Revert my accidental commit at 2009-06-30.
1889
1890 2009-07-04  Ian Lance Taylor  <iant@google.com>
1891
1892         PR target/40636
1893         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
1894         EXPORTED_CONST.
1895         (mingw_format_attribute_overrides): Likewise.
1896
1897 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
1898
1899         PR debug/40596
1900         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
1901         don't check cfa.reg.  Instead of cfa.indirect use
1902         fde && fde->drap_reg != INVALID_REGNUM test.
1903
1904 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
1905
1906         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
1907
1908 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
1909
1910         PR target/40587
1911         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
1912
1913 2009-07-03  Richard Guenther  <rguenther@suse.de>
1914
1915         PR tree-optimization/40640
1916         * tree-switch-conversion.c (build_arrays): Perform arithmetic
1917         in original type.
1918
1919 2009-07-03  Jan Hubicka  <jh@suse.cz>
1920
1921         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
1922         for size, reduce amount of inlining.
1923
1924 2009-07-03  Richard Guenther  <rguenther@suse.de>
1925
1926         PR middle-end/34163
1927         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
1928         if t +- x is known to not overflow and the conversion widens the
1929         operation.
1930         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
1931
1932 2009-07-03  Jan Hubicka  <jh@suse.cz>
1933
1934         * ipa-pure-const.c (analyze): Update loop optimizer init.
1935         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
1936         try_remove_empty_loop, remove_empty_loops): Remove.
1937         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
1938         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
1939         to mark regular loops as neccesary.
1940         (degenerate_phi_p): New function.
1941         (propagate_necessity, remove_dead_phis): Use it.
1942         (forward_edge_to_pdom): Likewise.
1943         (eliminate_unnecessary_stmts): Take care to remove uses of results of
1944         virtual PHI nodes that became unreachable.
1945         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
1946         * tree-flow.h (remove_empty_loops): Remove.
1947         * passes.c (init_optimization_passes): Remove.
1948
1949 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
1950
1951         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
1952         can_create_pseudo_p.
1953         (*fix_trunc<mode>_i387_1): Ditto.
1954         (*floathi<mode>2_1): Ditto.
1955         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
1956         (*fistdi2_1): Ditto.
1957         (*fist<mode>2_1): Ditto.
1958         (frndintxf2_floor): Ditto.
1959         (*fist<mode>2_floor_1): Ditto.
1960         (frndintxf2_ceil): Ditto.
1961         (*fist<mode>2_ceil_1): Ditto.
1962         (frndintxf2_trunc): Ditto.
1963         (frndintxf2_mask_pm): Ditto.
1964         (fxam<mode>2_i387_with_temp): Ditto.
1965         * config/i386/sse.md (mulv16qi3): Ditto.
1966         (*sse2_mulv4si3): Ditto.
1967         (mulv2di3): Ditto.
1968         (sse4_2_pcmpestr): Ditto.
1969         (sse4_2_pcmpistr): Ditto.
1970
1971 2009-07-03  Jan Hubicka  <jh@suse.cz>
1972
1973         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
1974         (mark_stmt_necessary): Set it.
1975         (mark_operand_necessary): Set it.
1976         (mark_control_dependent_edges_necessary): Set it.
1977         (mark_virtual_phi_result_for_renaming): New function.
1978         (get_live_post_dom): New function.
1979         (forward_edge_to_pdom): New function.
1980         (remove_dead_stmt): Fix handling of control dependences.
1981         (tree_dce_init): Init new bitmap.
1982         (tree_dce_done): Free it.
1983
1984 2009-07-02  Richard Guenther  <rguenther@suse.de>
1985
1986         PR bootstrap/40617
1987         * tree-ssa-structalias.c (new_var_info): Initialize
1988         is_restrict_var.
1989
1990 2009-07-02  Jan Hubicka  <jh@suse.cz>
1991
1992         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
1993         local.
1994
1995 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
1996
1997         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
1998         instead of recomputing it.  Adjust calls.
1999         (emit_store_flag): Adjust recursive calls.
2000
2001 2009-07-02  Richard Guenther  <rguenther@suse.de>
2002
2003         * tree-ssa-live.c (remove_unused_locals): Do not remove
2004         heap variables.
2005         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
2006         of DECL_EXTERNAL for HEAP variables.
2007         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
2008         HEAP variables.  Do not adjust RESTRICT vars.
2009         (find_what_var_points_to): Nobody cares if something
2010         points to READONLY.
2011
2012 2009-07-02  Ben Elliston  <bje@au.ibm.com>
2013
2014         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
2015         pc_low and pc_high declarations to the top of the function.
2016
2017 2009-07-01  DJ Delorie  <dj@redhat.com>
2018
2019         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
2020         registers as fixed.
2021         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
2022         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
2023         unspecified accesses to control registers.
2024         * config/mep/intrinsics.md: Regenerate.
2025         * config/mep/intrinsics.h: Regenerate.
2026         * config/mep/mep-intrin.h: Regenerate.
2027
2028 2009-07-01  Anthony Green  <green@moxielogic.com>
2029
2030         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
2031         instruction when possible.
2032         (moxie_expand_prologue): Ditto.  Also, save an instruction and
2033         some complexity by popping off of $r12 instead of $sp.
2034         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
2035         operands.
2036
2037 2009-07-01  Richard Henderson  <rth@redhat.com>
2038
2039         PR bootstrap/40347
2040         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
2041         contained no insns, reposition note before last insn.
2042
2043 2009-07-01  Richard Henderson  <rth@redhat.com>
2044
2045         PR debug/40431
2046         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
2047         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
2048
2049 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
2050
2051         PR bootstrap/40558
2052         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
2053         darwin9 for printing reg addresses with %y.
2054
2055 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
2056
2057         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
2058         truncation from operands in binary operations.
2059
2060 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
2061
2062         Revert:
2063         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
2064         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
2065         subreg of op0 to the original op0.
2066
2067         * expmed.c (store_bit_field_1): Use a temporary as the destination
2068         instead of a paradoxical subreg when we need to truncate the result.
2069
2070 2009-07-01  DJ Delorie  <dj@redhat.com>
2071
2072         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
2073         names to VLIW variants.
2074         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
2075         * config/mep/intrinsics.md: Regenerate.
2076         * config/mep/intrinsics.h: Regenerate.
2077         * config/mep/mep-intrin.h: Regenerate.
2078
2079 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
2080
2081         PR debug/40462
2082         * jump.c (returnjump_p): Revert last patch.
2083         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
2084
2085 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2086
2087         PR target/40575
2088         * pa.md (casesi32p): Use jump table label to determine the offset
2089         of the jump table.
2090         (casesi64p): Likewise.
2091
2092         * pa.c (forward_branch_p): Return bool type.  Use instruction
2093         addresses when available.  Assert that INSN has a jump label.
2094         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
2095         have a jump label.
2096
2097 2009-07-01  Richard Guenther  <rguenther@suse.de>
2098
2099         PR tree-optimization/19831
2100         * tree-ssa-dce.c (propagate_necessity): Calls to functions
2101         that only act as barriers do not make any previous stores necessary.
2102         * tree-ssa-structalias.c (handle_lhs_call): Delay making
2103         HEAP variables global, do not add a constraint from nonlocal.
2104         (find_func_aliases): Handle escapes through return statements.
2105         (compute_points_to_sets): Make escaped HEAP variables global.
2106
2107 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
2108
2109         PR bootstrap/40597
2110         * expmed.c (emit_store_flag): Perform a conversion if necessary,
2111         after reducing a DImode cstore to SImode.
2112
2113 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
2114
2115         * expr.c (expand_expr_real_1): Reinstate fallthrough to
2116         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
2117
2118 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
2119
2120         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
2121         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
2122         to 0.
2123         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
2124         and umod_optab if TARGET_BSD_DIVMOD.
2125         * config/vax/lib1funcs.asm: New file.
2126         * config/vax/t-linux: New file.
2127         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
2128
2129 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
2130
2131         PR c++/40566
2132         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
2133         to type arguments that have void type.
2134
2135         PR debug/40573
2136         * dwarf2out.c (gen_formal_parameter_die): Call
2137         equate_decl_number_to_die if node is different from origin.
2138
2139 2009-06-30  Anthony Green  <green@moxielogic.com>
2140
2141         Clean up moxie port for --enable-build-with-cxx.
2142         * config/moxie/moxie.c (moxie_function_value): First two
2143         parameters are const_tree, not tree.
2144         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
2145         (REG_CLASS_NAMES): Ditto.
2146         (REGNO_REG_CLASS): Ditto.
2147         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
2148         (moxie_function_value): Fix constyness of arguments.
2149
2150 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
2151
2152         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
2153         finalize_size_functions before further processing.
2154         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
2155         (variable_size): Call self_referential_size on size expressions
2156         that contain a PLACEHOLDER_EXPR.
2157         (size_functions): New static variable.
2158         (copy_self_referential_tree_r): New static function.
2159         (self_referential_size): Likewise.
2160         (finalize_size_functions): New global function.
2161         * tree.c: Include tree-inline.h.
2162         (push_without_duplicates): New static function.
2163         (find_placeholder_in_expr): New global function.
2164         (substitute_in_expr) <tcc_declaration>: Return the replacement object
2165         on equality.
2166         <tcc_expression>: Likewise.
2167         <tcc_vl_exp>: If the replacement object is a constant, try to inline
2168         the call in the expression.
2169         * tree.h (finalize_size_functions): Declare.
2170         (find_placeholder_in_expr): Likewise.
2171         (FIND_PLACEHOLDER_IN_EXPR): New macro.
2172         (substitute_placeholder_in_expr): Update comment.
2173         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
2174         is true.
2175         (copy_tree_body_r): Likewise.
2176         (copy_tree_body): New static function.
2177         (maybe_inline_call_in_expr): New global function.
2178         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
2179         (maybe_inline_call_in_expr): Declare.
2180         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
2181         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
2182         GIMPLE_H.
2183
2184 2009-06-30  Richard Guenther  <rguenther@suse.de>
2185
2186         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
2187         continue walking.
2188         (propagate_necessity): Do not mark reaching defs of stores
2189         as necessary.
2190
2191 2009-06-30  Jan Hubicka  <jh@suse.cz>
2192
2193         * cfgloopanal.c (check_irred): Move into ...
2194         (mark_irreducible_loops): ... here; return true if ireducible
2195         loops was found.
2196         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
2197         (analyze_function): Try to prove loop finiteness.
2198         * cfgloop.h (mark_irreducible_loops): Update prototype.
2199         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
2200
2201 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
2202
2203         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
2204
2205 2009-06-30  Ira Rosen  <irar@il.ibm.com>
2206
2207         PR tree-optimization/40542
2208         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile 
2209         types.
2210
2211 2009-06-30  Martin Jambor  <mjambor@suse.cz>
2212
2213         PR tree-optimization/40582
2214         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
2215         than useless_type_conversion_p.
2216         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
2217         proper place.
2218
2219 2009-06-30  Martin Jambor  <mjambor@suse.cz>
2220
2221         PR middle-end/40554
2222         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
2223
2224 2009-06-30  Richard Guenther  <rguenther@suse.de>
2225
2226         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
2227         use ao_ref references.
2228         (walk_aliased_vdefs): Likewise.
2229         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
2230         * tree-ssa-dce.c (struct ref_data): Remove.
2231         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
2232         (mark_aliased_reaching_defs_necessary): Adjust.
2233         (mark_all_reaching_defs_necessary_1): Likewise.
2234
2235 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
2236
2237         PR boostrap/40597
2238         * expmed.c (emit_cstore): New name of emit_store_flag_1.
2239         (emit_store_flag_1): Extract from emit_store_flag, adjust
2240         calls to (what now is) emit_cstore.
2241         (emit_store_flag): Call emit_store_flag_1 and also use it
2242         for what used to be recursive calls.
2243
2244 2009-06-30  Wei Guozhi  <carrot@google.com>
2245
2246         PR/40416
2247         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
2248         if the target bb post dominates from bb.
2249         * config/i386/i386.c (memory_address_length): Check existence of base
2250         register before using it.
2251
2252 2009-06-30  Nick Clifton  <nickc@redhat.com>
2253             DJ Delorie  <dj@redhat.com>
2254
2255         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
2256         __FMOVD_ENABLED__ is defined.
2257         * config/sh/sh.h
2258         (TARGET_FMOVD): Provide a default definition.
2259         (MASK_FMOVD): Likewise.
2260         (TARGET_CPU_CPP_BUILTINS): Define
2261         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
2262         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
2263         two fmov instructions depending upon whether TARGET_FMOVD is
2264         enabled.
2265         (split for DF load from memory into register): Also handle
2266         MEMs which consist of REG+DISP addressing.
2267         (split for DF store from register to memory): Likewise.
2268         * config/sh/sh.opt (mfmovd): Remove this switch.
2269         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
2270         * config/sh/sh.c (sh_override_options): Do not automatically
2271         enable TARGET_MOVD for the SH2A when supporting doubles - leave
2272         that to the -mfmovd command line switch.
2273
2274         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
2275         the SH4 and SH4A.
2276         (fldi_ok): Always allow.
2277         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
2278
2279 2009-06-29  DJ Delorie  <dj@redhat.com>
2280
2281         * doc/install.texi (mep-x-elf): Correct chip's full name.
2282
2283 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
2284
2285         * doc/extend.texi: Fix typo.
2286
2287 2009-06-29  Tom Tromey  <tromey@redhat.com>
2288
2289         * dwarf2.h: Remove.
2290         * Makefile.in (DWARF2_H): New variable.
2291         (except.o): Use it.
2292         (dwarf2out.o): Likewise.
2293         (dwarf2asm.o): Likewise.
2294         * config/i386/t-i386: Use DWARF2_H.
2295         * except.c: Include elf/dwarf2.h.
2296         * unwind-dw2.c: Include elf/dwarf2.h.
2297         * dwarf2out.c: Include elf/dwarf2.h.
2298         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
2299         <dtprel>: New field.
2300         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
2301         (size_of_loc_descr): Likewise.
2302         (output_loc_operands_raw): Likewise.
2303         (output_loc_operands): Handle new dtprel field.
2304         (loc_checksum): Update.
2305         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
2306         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
2307         * unwind-dw2-fde.c: Include elf/dwarf2.h.
2308         * dwarf2asm.c: Include elf/dwarf2.h.
2309         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
2310         * config/mmix/mmix.c: Include elf/dwarf2.h.
2311         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
2312         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
2313         * config/sh/sh.c: Include elf/dwarf2.h.
2314         * config/i386/i386.c: Include elf/dwarf2.h.
2315
2316 2009-06-29  DJ Delorie  <dj@redhat.com>
2317
2318         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
2319
2320         * doc/extend.texi: Add MeP attributes and pragmas.
2321         * doc/invoke.text: Add MeP Options.
2322         * doc/contrib.texi: Add MeP contribution.
2323         * doc/md.texi: Add MeP constraints.
2324         * doc/install.texi: Add MeP target.
2325
2326 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
2327
2328         * target.h (struct gcc_target): Add frame_pointer_required field.
2329         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
2330         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
2331         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
2332         hook.
2333         * reload1.c (update_eliminables): (Ditto.).
2334         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
2335         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
2336         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
2337
2338         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
2339
2340         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
2341         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2342         (arm_frame_pointer_required): New function.
2343
2344         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
2345         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2346         (avr_frame_pointer_required_p): Declare as static.
2347         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
2348
2349         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
2350         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2351         (bfin_frame_pointer_required): Make as static, change return type
2352         to bool.
2353         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
2354
2355         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
2356         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2357         (cris_frame_pointer_required): New function.
2358         
2359         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
2360
2361         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
2362         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2363         (fr30_frame_pointer_required): New function.
2364         
2365         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
2366         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2367         (frv_frame_pointer_required): Make as static, change return type
2368         to bool.
2369         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
2370
2371         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
2372         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2373         (ix86_frame_pointer_required): Make as static, change return type to
2374         bool.
2375         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
2376
2377         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
2378         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2379
2380         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
2381
2382         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
2383         
2384         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
2385
2386         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
2387         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2388         (mips_frame_pointer_required): Make as static.
2389         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
2390         
2391         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
2392         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2393         (mmix_frame_pointer_required): Mew function.
2394
2395         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
2396         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2397
2398         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
2399
2400         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
2401
2402         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
2403
2404         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
2405         (CAN_ELIMINATE): Redefine.
2406         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2407         (sparc_frame_pointer_required): New function.
2408         (sparc_can_eliminate): New function.
2409         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
2410
2411         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
2412         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2413
2414         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
2415         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2416         (xtensa_frame_pointer_required): Make as static, change return type
2417         to bool.
2418         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
2419         Remove.
2420
2421 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
2422
2423         * doc/plugins.texi: Document PLUGIN_START_UNIT.
2424         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
2425         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
2426         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
2427         (register_callback): Handle PLUGIN_START_UNIT.
2428         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
2429
2430 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
2431
2432         * tree.c (process_call_operands): Propagate TREE_READONLY from the
2433         operands.
2434         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
2435         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
2436
2437 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
2438
2439         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
2440         move cost.
2441
2442 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
2443
2444         * doc/extend.texi (Additional Floating Types): __float128 is also
2445         supported on i386 targets.
2446
2447 2009-06-29  Richard Guenther  <rguenther@suse.de>
2448
2449         PR middle-end/14187
2450         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
2451         flag.
2452         (pt_solutions_same_restrict_base): Declare.
2453         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
2454         flag.
2455         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
2456         (make_constraint_from, make_copy_constraint): Move earlier.
2457         (make_constraint_from_heapvar): New function.
2458         (make_constraint_from_restrict): Likewise.
2459         (handle_lhs_call): Use it.
2460         (find_func_aliases): Use it to track conversions to restrict
2461         qualified pointers.
2462         (struct fieldoff): Add only_restrict_pointers flag.
2463         (push_fields_onto_fieldstack): Initialize it.
2464         (create_variable_info_for): Track global restrict qualified pointers.
2465         (intra_create_variable_infos): Use make_constraint_from_heapvar.
2466         Track restrict qualified pointer arguments.
2467         (set_uids_in_ptset): Use varinfo is_global_var flag.
2468         (find_what_var_points_to): Set the vars_contains_restrict flag.
2469         Always create the points-to solution for sets including restrict tags.
2470         (pt_solutions_same_restrict_base): New function.
2471         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
2472         qualified pointers use pt_solutions_same_restrict_base as
2473         additional source for disambiguation.
2474
2475 2009-06-29  Richard Guenther  <rguenther@suse.de>
2476
2477         PR middle-end/38212
2478         * alias.c (find_base_decl): Remove.
2479         (get_deref_alias_set_1): Remove restrict handling.
2480         * c-common.c (c_apply_type_quals_to_decl): Do not set
2481         DECL_POINTER_ALIAS_SET.
2482         * gimplify.c (find_single_pointer_decl_1): Remove.
2483         (find_single_pointer_decl): Likewise.
2484         (internal_get_tmp_var): Remove restrict handling.
2485         (gimple_regimplify_operands): Likewise.
2486         * omp-low.c (expand_omp_atomic_pipeline): Do not set
2487         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
2488         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
2489         * tree.c (restrict_base_for_decl): Remove.
2490         (init_ttree): Do not allocate it.
2491         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
2492         LABEL_DECL_UID for label decls.
2493         (copy_node_stat): Do not copy restrict information.
2494         (decl_restrict_base_lookup): Remove.
2495         (decl_restrict_base_insert): Likewise.
2496         (print_restrict_base_statistics): Likewise.
2497         (dump_tree_statistics): Do not call print_restrict_base_statistics.
2498         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
2499         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
2500         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
2501         (LABEL_DECL_UID): Adjust.
2502         (DECL_BASED_ON_RESTRICT_P): Remove.
2503         (DECL_GET_RESTRICT_BASE): Likewise.
2504         (SET_DECL_RESTRICT_BASE): Likewise.
2505         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
2506
2507         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
2508         instead of DECL_POINTER_ALIAS_SET.
2509         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
2510         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
2511         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
2512
2513 2009-06-29  Richard Guenther  <rguenther@suse.de>
2514
2515         PR tree-optimization/40579
2516         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
2517         the IL to simplify has constants that overflowed.
2518
2519 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
2520
2521         PR tree-optimization/40550
2522         * tree-vect-generic.c (expand_vector_operations_1): Compute in
2523         vector_compute_type only when the size of vector_compute_type is
2524         less than the size of type.
2525
2526 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
2527
2528         * fold-const.c (contains_label_1): Fix comments.
2529         (contains_label_p): Do not walk trees multiple time.
2530
2531 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2532
2533         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
2534         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
2535         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
2536         ix86_fp_comparison_operator.
2537         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
2538         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
2539         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
2540         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
2541         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
2542         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
2543         (related splits): Change predicate to ix86_fp_comparison_operator.
2544         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
2545         instead of ix86_fp_comparison_codes.
2546         (ix86_trivial_fp_comparison_operator,
2547         ix86_fp_comparison_operator): New.
2548         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
2549         (ix86_expand_compare): Eliminate last two parameters.
2550         (ix86_fp_jump_nontrivial_p): Kill.
2551         * config/i386/i386.c (put_condition_code): Eliminate call to
2552         ix86_fp_comparison_codes and subsequent assertion.
2553         (ix86_fp_comparison_codes): Eliminate.
2554         (ix86_fp_swap_condition): New.
2555         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
2556         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
2557         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
2558         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
2559         and ix86_fp_swap_condition.
2560         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
2561         Use ix86_fp_comparison_strategy.
2562         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
2563         (ix86_fp_jump_nontrivial_p): Eliminate.
2564         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
2565         call to ix86_expand_compare.
2566         (ix86_split_fp_branch, ix86_expand_setcc,
2567         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
2568         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
2569
2570 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2571
2572         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
2573         related to jump_clobbers.
2574         * config/arm/arm.md (conds): Remove jump_clob case.
2575         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
2576         splits): Change comparison_operator to arm_comparison_operator.
2577         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
2578         Eliminate.
2579
2580 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2581
2582         * dojump.c (do_compare_rtx_and_jump): Try swapping the
2583         condition for floating point modes.
2584         * expmed.c (emit_store_flag_1): Move here a bigger part
2585         of emit_store_flag.
2586         (emit_store_flag): Try swapping the condition for floating point
2587         modes.
2588         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
2589
2590 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2591
2592         * expr.c (expand_expr_real_1): Just use do_store_flag.
2593         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
2594         emit_store_flag_force.
2595         * expmed.c (emit_store_flag_force): Copy here trick
2596         previously in expand_expr_real_1.  Try reversing the comparison.
2597         (emit_store_flag_1): Work if target is NULL.
2598         (emit_store_flag): Work if target is NULL, using the result mode
2599         from the comparison.  Use split_comparison, restructure final part
2600         to simplify conditionals.
2601
2602 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2603
2604         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
2605         * dojump.c (do_jump): Change handling of floating-point
2606         ops to use just do_compare_and_jump.
2607         (split_comparison): New.
2608         (do_compare_rtx_and_jump): Add here logic coming previously
2609         in do_jump, using split_comparison.
2610
2611 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
2612
2613         PR target/40489
2614         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
2615
2616 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2617
2618         * tree-ssa-alias.c: Fix unintentional commit.
2619
2620 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2621
2622         * passes.c (execute_one_pass): Fix unintentional commit.
2623
2624 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2625
2626         * df-problems.c (df_set_seen, df_unset_seen): Delete.
2627         (df_rd_local_compute, df_md_local_compute): Inline them.
2628
2629         (df_md_scratch): New.
2630         (df_md_alloc, df_md_free): Allocate/free it.
2631         (df_md_local_compute): Only include live registers in init.
2632         (df_md_transfer_function): Prune the in-set computed by
2633         the confluence function, and the gen-set too.
2634
2635 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2636
2637         PR rtl-optimization/26854
2638         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
2639         * df-problems.c (df_rd_add_problem): Fix comment.
2640         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
2641         df_md_simulate_artificial_defs_at_top,
2642         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
2643         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
2644         df_md_transfer_function, df_md_init, df_md_confluence_0,
2645         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
2646         problem_MD, df_md_add_problem): New.
2647         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
2648         df_md_get_bb_info): New.
2649         (DF_LAST_PROBLEM_PLUS1): Adjust.
2650
2651         * Makefile.in (fwprop.o): Include domwalk.h.
2652         * fwprop.c: Include domwalk.h.
2653         (reg_defs, reg_defs_stack): New.
2654         (bitmap_only_bit_between): Remove.
2655         (process_defs): New.
2656         (process_uses): Use reg_defs and local_md instead of
2657         bitmap_only_bit_between and local_rd.
2658         (single_def_use_enter_block): New, from build_single_def_use_links.
2659         (single_def_use_leave_block): New.
2660         (build_single_def_use_links): Remove code moved to
2661         single_def_use_enter_block, invoke domwalk.
2662         (use_killed_between): Adjust comment.
2663
2664 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2665
2666         * bitmap.h (bitmap_ior_and_into): New.
2667         * bitmap.c (bitmap_ior_and_into): New.
2668
2669 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2670
2671         * domwalk.h (struct dom_walk_data): Remove all callbacks except
2672         before_dom_children_before_stmts and after_dom_children_after_stmts.
2673         Rename the two remaining callbacks to just before_dom_children and 
2674         after_dom_children. Remove other GIMPLE statement walking bits.
2675         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
2676         * graphite.c: Do not include domwalk.h.
2677         * tree-into-ssa.c (interesting_blocks): New global.
2678         (struct mark_def_sites_global_data): Remove it and names_to_rename.
2679         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
2680         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
2681         now that they're not domwalk callbacks.
2682         (rewrite_initialize_block): Rename to...
2683         (rewrite_enter_block): ... this, place after called functions.  Test
2684         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
2685         (rewrite_finalize_block): Rename to...
2686         (rewrite_leave_block): ... this, place after called functions.
2687         (rewrite_update_init_block): Rename to...
2688         (rewrite_update_enter_block): ... this, place after called functions.
2689         Test interesting_blocks, call rewrite_update_stmt and 
2690         rewrite_update_phi_arguments.
2691         (rewrite_update_fini_block): Rename to...
2692         (rewrite_leave_block): ... this, place after called functions.
2693         (rewrite_blocks): Remove last argument, simplify initialization of
2694         walk_data.
2695         (mark_def_sites_initialize_block): Rename to...
2696         (mark_def_sites_block): ... this, call mark_def_sites.
2697         (mark_def_sites_blocks): Remove argument, simplify initialization of
2698         walk_data.
2699         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
2700         (update_ssa): Likewise.
2701         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
2702         callback.
2703         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
2704         (dom_opt_initialize_block): Rename to...
2705         (dom_opt_enter_block): ... this, place after called functions.  Walk
2706         statements here, inline propagate_to_outgoing_edges.
2707         (dom_opt_finalize_block): Rename to...
2708         (dom_opt_leave_block): ... this, place after called functions.
2709         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
2710         domwalk callback.
2711         (dse_enter_block, dse_record_phi): New.
2712         (dse_record_phis): Delete.
2713         (dse_finalize_block): Rename to...
2714         (dse_leave_block): ... this.
2715         (tree_ssa_dse): Simplify initialization of walk_data.
2716         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
2717         Adjust initialization of walk_data.
2718         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
2719         * tree-ssa-loop-phiopt.c (get_non_trapping):
2720         Adjust initialization of walk_data.
2721         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
2722         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
2723         it's not a domwalk callback.
2724         (uncprop_initialize_block): Rename to...
2725         (dse_enter_block): ... this, call uncprop_into_successor_phis.
2726         (dse_finalize_block): Rename to...
2727         (dse_leave_block): ... this.
2728         (tree_ssa_uncprop): Simplify initialization of walk_data.
2729         * Makefile.in: Adjust dependencies.
2730
2731 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
2732
2733         * arm.md (casesi): Fix test for Thumb1.
2734         (thumb1_casesi_internal_pic): Likewise.
2735         (thumb1_casesi_dispatch): Likewise.
2736
2737 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
2738
2739         * config/arm/arm-cores.def: Added core cortex-m0.
2740         * config/arm/arm-tune.md: Regenerated.
2741         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
2742
2743 2009-06-26  DJ Delorie  <dj@redhat.com>
2744
2745         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
2746
2747         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
2748         the scheduler doesn't tag jump insns.
2749
2750 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
2751
2752         * c-decl.c (merge_decls): Re-indent.
2753
2754 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
2755
2756         PR c/39902
2757         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
2758         Special-case decimal float constants.
2759
2760 2009-06-26  Richard Henderson  <rth@redhat.com>
2761
2762         * function.h (struct function): Add cannot_be_copied_reason,
2763         and cannot_be_copied_set.
2764         * tree-inline.c (has_label_address_in_static_1): Rename from
2765         inline_forbidden_p_2; don't set inline_forbidden_reason here.
2766         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
2767         don't set inline_forbidden_reason.
2768         (copy_forbidden): New function, split out of inline_forbidden_p.
2769         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
2770         (inline_forbidden_p): Use copy_forbidden.
2771         (tree_versionable_function_p): Likewise.
2772         (inlinable_function_p): Merge into tree_inlinable_function_p.
2773         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
2774         * ipa-cp.c (ipcp_versionable_function_p): New function.
2775         (ipcp_cloning_candidate_p): Use it.
2776         (ipcp_node_modifiable_p): Likewise.
2777
2778 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
2779
2780         * builtins.c (expand_builtin_alloca): Handle builtin alloca
2781         that is marked not to be inlined. Remove flag_mudflap use.
2782         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
2783         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
2784
2785 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
2786
2787         PR bootstrap/40338
2788         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
2789         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
2790
2791 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
2792
2793         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
2794         shared libgcc.
2795         (__mingwthr_remove_key_dtor): Likewise.
2796
2797 2009-06-26  Richard Guenther  <rguenther@suse.de>
2798
2799         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
2800
2801 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
2802
2803         PR middle-end/40525
2804         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
2805         try the non-cond_exec path also.
2806
2807 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2808
2809         PR target/40468
2810         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
2811         (output_cbranch): Use new functions.
2812         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
2813         Likewise.
2814
2815 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
2816             Pat Haugen  <pthaugen@us.ibm.com>
2817             Revital Eres <ERES@il.ibm.com>
2818
2819         * config/rs6000/rs6000.c (print_operand): Correct lossage message
2820         for %c error.  Add %x support to print VSX registers as a unified
2821         register set, instead of separate float and altivec registers.
2822         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
2823         %y case, and add support for VSX pre-modify addresses.
2824         (output_toc): Add assert for CONST containing an integer constant
2825         in the PLUS case.
2826         (rs6000_adjust_cost): Add POWER7 support.
2827         (insn_must_be_first_in_group): Ditto.
2828         (insn_must_be_last_in_group): Ditto.
2829         (rs6000_emit_popcount): Ditto.
2830         (rs6000_vector_mode_supported_p): Ditto.
2831
2832         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
2833         Change some of the functions called by macros to being called
2834         through a pointer, so debug functions can be inserted if
2835         -mdebug=addr or -mdebug=cost. 
2836         (rs6000_preferred_reload_class_ptr): Ditto.
2837         (rs6000_secondary_reload_class_ptr): Ditto.
2838         (rs6000_secondary_memory_needed_ptr): Ditto.
2839         (rs6000_cannot_change_mode_class_ptr): Ditto.
2840         (rs6000_secondary_reload_inner): Ditto.
2841         (rs6000_legitimize_reload_address): Ditto.
2842         (rs6000_legitimize_reload_address_ptr): Ditto.
2843         (rs6000_mode_dependent_address): Ditto.
2844         (rs6000_mode_dependent_address_ptr): Ditto.
2845
2846         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
2847         function to return true if the mode allows reg + integer
2848         addresses.
2849         (virtual_stack_registers_memory_p): New function to return true if
2850         the address refers to a virtual stack register.
2851         (rs6000_legitimate_offset_address_p): Move code to say whether a
2852         mode supports reg+int addressing to reg_offset_addressing_ok_p and
2853         call it.
2854         (rs6000_legitimate_address_p): Add checks for modes that only can
2855         do reg+reg addressing.  Start adding VSX support.
2856         (rs6000_legitimize_reload_address): Ditto.
2857         (rs6000_legitimize_address): Ditto.
2858         (rs6000_debug_legitimate_address_p): New debug functions for
2859         -mdebug=addr and -mdebug=cost.
2860         (rs6000_debug_rtx_costs): Ditto.
2861         (rs6000_debug_address_costs): Ditto.
2862         (rs6000_debug_adjust_cost): Ditto.
2863         (rs6000_debug_legitimize_address): Ditto.
2864         (rs6000_legitimize_reload_address_ptr): Point to call normal
2865         function or debug function.  Make functions called via pointer
2866         static.
2867         (rs6000_mode_dependent_address_ptr): Ditto.
2868         (rs6000_secondary_reload_class_ptr): Ditto.
2869         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
2870         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
2871         into a friendlier error.
2872         (rs6000_init_builtins): Add initial VSX support.
2873         (rs6000_adjust_cost): Fix some spacing issues.
2874
2875         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
2876         (REG_CLASS_NAMES): Ditto.
2877         (REG_CLASS_CONTENTS): Ditto.
2878         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
2879         pointer, to add -mdebug=addr support.
2880         (CANNOT_CHANGE_MODE_CLASS): Ditto.
2881         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
2882         -mdebug=addr support.
2883         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
2884         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
2885         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
2886
2887         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
2888         16-bit values.
2889         (bswapsi*): Set attribute types for load/store.  Add combiner
2890         patterns to eliminate zero extend on 64-bit.
2891         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
2892         stdbrx if the hardware supports those instructions.
2893
2894 2009-06-25  Ian Lance Taylor  <iant@google.com>
2895
2896         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
2897         (Link Options): Document -static-libstdc++.
2898
2899 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2900
2901         PR target/38731
2902         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
2903         DATA_ALIGNMENT instead.
2904
2905 2009-06-25  Richard Guenther  <rguenther@suse.de>
2906
2907         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
2908         indirect references against the callused/escaped solutions.
2909         (call_may_clobber_ref_p_1): Likewise.
2910
2911 2009-06-25  Martin Jambor  <mjambor@suse.cz>
2912
2913         PR tree-optimization/40493
2914         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
2915         (enum unscalarized_data_handling): New type.
2916         (handle_unscalarized_data_in_subtree): Return what has been done.
2917         (load_assign_lhs_subreplacements): Handle left flushes differently.
2918         (sra_modify_assign): Use unscalarized_data_handling, simplified
2919         condition determining whether to remove the statement.
2920
2921 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
2922
2923         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
2924         excerpt - @ should be doubled for texinfo.
2925
2926 2009-06-24  Ian Lance Taylor  <iant@google.com>
2927
2928         * config/arc/arc.c: Include "df.h".
2929         (arc_attribute_table): Make static.  Move higher in file.
2930         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
2931         (output_shift): Initialize n later to avoid warning.
2932         * config/arm/arm.c (arm_attribute_table): Make static.  Move
2933         higher in file.
2934         * config/avr/avr.c (avr_attribute_table): Make static.  Move
2935         higher in file.
2936         (reg_class_tab): Change array type from int to enum reg_class.
2937         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
2938         LABEL_REF.
2939         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
2940         (lshrhi3_out): Likewise.
2941         (class_likely_spilled_p): Change return type to bool.
2942         (avr_rtx_costs): Use local code variable with enum type.
2943         * config/avr/avr.md (movmemhi): Use add_reg_note.
2944         (andhi3, andsi3): Don't use AS2 with "and".
2945         (iorhi3, iorsi3): Don't use AS2 with "or".
2946         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
2947         * config/crx/crx.c: Include "df.h".
2948         (crx_attribute_table): Make static.
2949         * config/m32r/m32r.c: Include "df.h".
2950         (m32r_attribute_table): Make static.  Move higher in file.
2951         (pop): Use add_reg_note.
2952         (block_move_call): Change 0 to LCT_NORMAL in function call.
2953         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
2954         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
2955         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
2956         declare, not just when TREE_CODE is defined.
2957         * config/m68hc11/m68hc11.c: Include "expr.h".
2958         (m68hc11_attribute_table): Make static.  Move higher in file.
2959         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
2960         function call.
2961         (m68hc11_register_indirect_p): Likewise.
2962         (m68hc11_function_arg_padding): Change return type to enum
2963         direction.
2964         (emit_move_after_reload): Use add_reg_note.
2965         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
2966         (m68hc11_split_logical): Likewise.
2967         (m68hc11_rtx_costs): Add local code_and outer_code variables with
2968         enum type.
2969         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
2970         to VOIDmode in function call.
2971         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
2972         tree is defined.
2973         (m68hc11_split_logical): Update declaration.
2974         (m68hc11_function_arg_padding): Update declaration.
2975         * config/mcore/mcore.c (regno_reg_class): Change form array of int
2976         to array of enum reg_class.
2977         (mcore_attribute_table): Make static.  Move higher in file.
2978         (mcore_rtx_costs): Add cast to enum type.
2979         * config/mcore/mcore.h (regno_reg_class): Update declaration.
2980         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
2981         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
2982         in file.
2983         * config/sh/predicates.md (trapping_target_operand): Rename and to
2984         and_expr.
2985         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
2986         higher in file.
2987         * config/spu/spu.c (spu_attribute_table): Make static.  Move
2988         higher in file.
2989         * config/v850/v850.c (v850_attribute_table): Make static.  Move
2990         higher in file.
2991         (v850_rtx_costs): Use local code with enum type.
2992         (expand_epilogue): Add cast.
2993         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
2994
2995 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
2996
2997         PR target/40515
2998         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
2999         -m2a-single-only and -m2a-nofpu.
3000         * config/sh/sh.opt: Document m2a generates FPU code.  
3001
3002 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
3003
3004         * defaults.h (CAN_ELIMINATE): Provide default.
3005         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
3006         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
3007         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
3008         * config/spu/spu.h (CAN_ELIMINATE): Delete.
3009         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
3010         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
3011         * config/cris/cris.h (CAN_ELIMINATE): Delete.
3012         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
3013         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
3014         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
3015
3016 2009-06-24  DJ Delorie  <dj@redhat.com>
3017
3018         * mep-ext-cop.cpu: Fix copyright notice.
3019         * mep-default: Fix copyright notice.
3020         * mep-core: Fix copyright notice.
3021         * mep: Fix copyright notice.
3022         * mep-ivc2: Fix copyright notice.
3023         * mep-c5: Fix copyright notice.
3024
3025 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
3026
3027         * doc/contrib.texi (Contributors): 
3028
3029 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3030         
3031         PR middle-end/40501
3032         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
3033         src and dst operands if necessary.
3034
3035 2009-06-23  DJ Delorie  <dj@redhat.com>
3036
3037         Add MeP port.
3038         * config.gcc: Add mep support.
3039         * recog.c: Resurrect validate_replace_rtx_subexp().
3040         * recog.h: Likewise.
3041         * config/mep/: Add new port:
3042         * config/mep/constraints.md: New file.
3043         * config/mep/default.h: New file.
3044         * config/mep/intrinsics.h: New file.
3045         * config/mep/intrinsics.md: New file.
3046         * config/mep/ivc2-template.h: New file.
3047         * config/mep/mep-c5.cpu: New file.
3048         * config/mep/mep-core.cpu: New file.
3049         * config/mep/mep-default.cpu: New file.
3050         * config/mep/mep-ext-cop.cpu: New file.
3051         * config/mep/mep-intrin.h: New file.
3052         * config/mep/mep-ivc2.cpu: New file.
3053         * config/mep/mep-lib1.asm: New file.
3054         * config/mep/mep-lib2.c: New file.
3055         * config/mep/mep-pragma.c: New file.
3056         * config/mep/mep-protos.h: New file.
3057         * config/mep/mep-tramp.c: New file.
3058         * config/mep/mep.c: New file.
3059         * config/mep/mep.cpu: New file.
3060         * config/mep/mep.h: New file.
3061         * config/mep/mep.md: New file.
3062         * config/mep/mep.opt: New file.
3063         * config/mep/predicates.md: New file.
3064         * config/mep/t-mep: New file.
3065
3066 2009-06-23  Ian Lance Taylor  <iant@google.com>
3067
3068         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
3069         from loose_warn into c_loose_warn and from strict_warn into
3070         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
3071         --enable-build-with-cxx.  Set and substitute
3072         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
3073         * Makefile.in (CXXFLAGS): New variable.
3074         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
3075         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
3076         the default is the same as $(STRICT_WARN).
3077         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
3078         (CXX): New variable.
3079         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
3080         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
3081         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
3082         (HOST_LIBS): New variable.
3083         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
3084         (ALL_CXXFLAGS): New variable.
3085         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
3086         * doc/install.texi (Configuration): Document
3087         --enable-build-with-cxx, --with-stage1-ldflags,
3088         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
3089         * configure: Rebuild.
3090
3091 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3092
3093         * config/arm/arm.c (arm_override_options): Fix braces and formatting
3094         from previous commit.
3095
3096 2009-06-23  Ian Lance Taylor  <iant@google.com>
3097
3098         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
3099
3100 2009-06-23  Ian Lance Taylor  <iant@google.com>
3101
3102         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
3103         with ATTRIBUTE_UNUSED.
3104
3105 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
3106             Pat Haugen  <pthaugen@us.ibm.com>
3107             Revital Eres  <eres@il.ibm.com>
3108
3109         * config.in (HAVE_AS_POPCNTD): Add default definition.
3110         (HAVE_AS_LWSYNC): Ditto.
3111
3112         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
3113         release number.
3114         (gcc_cv_as_powerpc_cmpb): Ditto.
3115         (gcc_cv_as_powerpc_dfp): Ditto.
3116         (gcc_cv_as_powerpc_vsx): Ditto.
3117         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
3118         supporting the popcntd/lwsync instructions.
3119         (gcc_cv_as_powerpc_lwsync): Ditto.
3120         * configure: Regenerate.
3121
3122         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
3123         -mcpu=native and -mcpu=power7.
3124         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
3125
3126         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
3127         a variable instead of a mask to reduce the number of mask bits.
3128         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
3129         (-mbit-word): Ditto.
3130         (-mregnames): Ditto.
3131         * config/rs6000/rs6000.opt (-mupdate): Ditto.
3132         (-mfused-madd): Ditto.
3133
3134         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
3135         2.06 instructions.
3136         (-mvsx): New switch for VSX instructions.
3137         (-misel): Move from a variable to a mask to allow it to be set by
3138         -mcpu=.
3139
3140         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
3141         function declaration to an array declaration.
3142         (rs6000_hard_regno_nregs): New external array declaration.
3143
3144         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
3145         files included by rs6000.md.
3146
3147         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
3148         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
3149
3150         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
3151         a target mask.
3152         (rs6000_debug_reg): New -mdebug= variables.
3153         (rs6000_debug_addr): Ditto.
3154         (rs6000_debug_cost): Ditto.
3155         (rs6000_pmode): New variable to hold Pmode.
3156         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
3157         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
3158         calculated at compiler start.
3159         (rs6000_hard_regno_nregs): Change function to an array which holds
3160         HARD_REGNO_NREGS calculated at compiler start.
3161         (rs6000_explicit_options): Delete isel field.
3162         (rs6000_vector_unit): New array to hold which vector unit
3163         supports arithmetic options for a given type.
3164         (rs6000_vector_mem): New array to hold which vector unit supports
3165         memory reference operations for a given type.
3166         (rs6000_vector_align): New array to given the alignment of each
3167         vector type.
3168         (power7_cost): New basic costs for power7.
3169         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
3170         (rs6000_hard_regno_nregs_internal): New function, moved from
3171         HARD_REGNO_NREGS, to calculate the number of registers each hard
3172         register takes for each type.
3173         (rs6000_debug_reg_print): New function for -mdebug=reg support.
3174         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
3175         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
3176         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
3177         unit information here so it is calculated once at compiler startup
3178         time.
3179         (rs6000_override_options): Make -misel a target mask.  Add more
3180         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
3181         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
3182         -mdebug=cost.
3183         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
3184         (rs6000_handle_option): Move -misel from variable to target mask.
3185         (rs6000_builtin_mask_for_load): Add VSX support.
3186         (rs6000_conditional_register_usage): Ditto.
3187         (USE_ALTIVEC_FOR_ARG_P): Ditto.
3188         (function_arg_boundary): Ditto.
3189         (rs6000_expand_builtin): Ditto.
3190         (def_builtin): Make abort message a little friendlier.
3191         (rs6000_emit_int_cmove): Add support for 64-bit isel.
3192
3193         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
3194         assembler support the popcntd instruction instead of a vsx
3195         instruction to enable power7 support.
3196         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
3197         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
3198         option to the assembler if -mcpu=native.
3199         (ASM_CPU_NATIVE_SPEC): Ditto.
3200         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
3201         ISA 2.06 features.
3202         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
3203         the lwsync instruction.
3204         (enum processor_type): Add PROCESSOR_POWER7.
3205         (rs6000_debug_reg): New -mdebug= options.
3206         (rs6000_debug_addr): Ditto.
3207         (rs6000_debug_cost): Ditto.
3208         (rs6000_isel): Delete.
3209         (enum rs6000_vector): New enum to say what vector unit we have.
3210         (VECTOR_UNIT_*): New macros to say which vector unit has
3211         arithmetic operations for a given type.
3212         (VECTOR_MEM_*): New macros to say which vector unit has memory
3213         operations for a given type.
3214         (TARGET_LDBRX): Whether the machine supports the ldbrx
3215         instruction.
3216         (TARGET_ISEL): Delete, -misel moved to be a mask.
3217         (TARGET_ISEL64): New macro for 64-bit isel support.
3218         (UNITS_PER_VSX_WORD): New macro.
3219         (POINTER_SIZE): Move to be an external variable, rather than
3220         calculating whether we are generating 32 ot 64-bit code.
3221         (Pmode): Ditto.
3222         (STACK_BOUNDARY): Add VSX support.
3223         (LOCAL_ALIGNMENT): Ditto.
3224         (SLOW_UNALIGNED_ACCESS): Ditto.
3225         (VSX_REGNO_P): New macro for VSX support.
3226         (VFLOAT_REGNO_P): Ditto.
3227         (VINT_REGNO_P): Ditto.
3228         (VLOGICAL_REGNO_P): Ditto.
3229         (VSX_VECTOR_MODE): Ditto.
3230         (VSX_SCALAR_MODE): Ditto.
3231         (VSX_MODE): Ditto.
3232         (VSX_MOVE_MODE): Ditto.
3233         (VSX_REG_CLASS_P): Ditto.
3234         (HARD_REGNO_NREGS): Instead of calling a function, use an array
3235         lookup.
3236         (UNITS_PER_SIMD_WORD): Add VSX support.
3237         (MODES_TIEABLE_P): Ditto.
3238         (STARTING_FRAME_OFFSET): Ditto.
3239         (STACK_DYNAMIC_OFFSET): Ditto.
3240         (EPILOGUE_USES): Ditto.
3241         (REGNO_REG_CLASS): Move to array lookup.
3242         (CLASS_MAX_NREGS): Ditto.
3243         (rs6000_vector_reg_class): Add declaration.
3244         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
3245         overlap with the floating point and Altivec registers.
3246
3247         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
3248
3249         * config/rs6000/driver-rs6000.c (asm_names): New static array to
3250         give the appropriate asm switches if -mcpu=native.
3251         (host_detect_local_cpu): Add support for "asm".
3252         (host_detect_local_cpu): Follow GNU code guidelines for name.
3253
3254         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
3255         -mbit-word to a variable instead of being a target mask.
3256
3257         * config/rs6000/sync.md (lwsync): If the assembler supports it,
3258         emit the lwsync instruction instead of emitting the instruction as
3259         an integer constant.
3260
3261         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
3262         fixuns_trundfsi2, move expander into rs6000.md.
3263
3264         * config/rs6000/rs6000.md (cpu): Add power7.
3265         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
3266         (logical predicate patterns): Change the single instruction
3267         primitives that set CR0 to be fast_compare instead of compare.
3268         (norsi*): Ditto.
3269         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
3270         (popcntddi2): Ditto.
3271         (popcount<mode>): Ditto.
3272         (floating multiply/add insns): Name the floating point
3273         multiply/add insns.
3274         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
3275         (isel_unsigned_<mode>): Ditto.
3276         (fixuns_trundfsi2): Move expander here from spe.md.
3277         (smindi3): Define if we have -misel on 64-bit systems.
3278         (smaxdi3): Ditto.
3279         (umindi3): Ditto.
3280         (umaxdi3): Ditto.
3281
3282 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
3283
3284         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
3285         extra_objs.
3286         * config/avr/avr.c (avr_current_device): New variable.
3287         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
3288         (avr_arch, mcu_type_s): Move to avr.h.
3289         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
3290         default_data_section_start fields.
3291         (avr_arch): Moved from avr.c.
3292         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
3293         library_name fields.
3294         (avr_current_device, avr_mcu_types, avr_arch_types,
3295         avr_device_to_arch, avr_device_to_data_start,
3296         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
3297         (EXTRA_SPEC_FUNCTIONS): Define.
3298         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
3299         options mapping. Use device_to_arch and device_to_data_start insted.
3300         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
3301         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
3302         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
3303         * config/avr/driver-avr.c: New file.
3304         * config/avr/avr-devices.c: New file.
3305
3306 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
3307
3308         * var-tracking.c (unshare_variable): Force initialized to
3309         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
3310         (set_variable_part): Likewise.
3311         (struct variable_union_info): Remove pos_src field.
3312         (vui_vec, vui_allocated): New variables.
3313         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
3314         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
3315         == 1 use a simpler sorting algorithm.  Compute pos field right
3316         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
3317         Avoid quadratic comparison if !flag_var_tracking_uninit.
3318         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
3319         unshare_variable unconditionally.   
3320         (dataflow_set_different_2): Removed.
3321         (dataflow_set_different): Don't traverse second hash table.
3322         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
3323         unconditionally to var_reg_set or var_mem_set.
3324         (emit_notes_in_bb): Likewise.
3325         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
3326         unshare_variable.
3327         (emit_note_insn_var_location): Don't set initialized to
3328         VAR_INIT_STATUS_INITIALIZED early.
3329         (vt_finalize): Free vui_vec if needed, clear vui_vec and
3330         vui_allocated.
3331         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
3332
3333         * tree-object-size.c (addr_object_size): Instead of checking
3334         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
3335         are no FIELD_DECLs following it.
3336
3337 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
3338
3339         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
3340         order to match bswaps with signed source operands.
3341
3342 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3343
3344         * sdbout.c (sdbout_one_type): Fix braces in switch.
3345
3346 2009-06-23  Richard Guenther  <rguenther@suse.de>
3347
3348         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
3349         member.
3350         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
3351         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
3352         var_callused, callused_tree, var_storedanything, storedanything_tree,
3353         var_integer, integer_tree): Remove global variables.
3354         (new_var_info): Do not pass new id, append the new var to the
3355         global variable vector.
3356         (do_ds_constraint): Use is_global_var member of the variable-info.
3357         (new_scalar_tmp_constraint_exp): Adjust.
3358         (create_function_info_for): Likewise.
3359         (create_variable_info_for): Likewise.
3360         (find_what_var_points_to): Remove dead code.
3361         (init_base_vars): Simplify.
3362         (compute_points_to_sets): Adjust.
3363
3364 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
3365
3366         * combine.c (try_combine): Dump information about the insns we're
3367         combining.
3368
3369 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
3370
3371         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
3372         check when calling force_to_mode on TRUNCATE's operand.
3373
3374 2009-06-22  Ian Lance Taylor  <iant@google.com>
3375
3376         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
3377
3378 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
3379
3380         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
3381
3382 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3383
3384         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
3385         override library linkage flags such as -static-libgcc or
3386         -shared-libgcc.
3387
3388 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
3389
3390         * config/m68k/m68k-devices.def: Add line for MCF5221x.
3391
3392 2009-06-22  Ian Lance Taylor  <iant@google.com>
3393
3394         * config/linux.opt: Put mglibc ahead of muclibc.
3395
3396         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
3397         for duplicate decls.
3398
3399 2009-06-22  Matthias Klose  <doko@ubuntu.com>
3400
3401         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
3402
3403 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
3404
3405         PR objc/28050
3406         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
3407         instead of NULL if a parser error occurs.
3408
3409 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3410
3411         * dwarf2out.c (dwarf2_debug_hooks): Initialize
3412         non-DWARF2_DEBUGGING_INFO version.
3413
3414 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
3415
3416         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
3417         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
3418
3419         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
3420         (LIBGCC2_TF_CEXT): Define.
3421         (TF_SIZE): Define.
3422
3423 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3424
3425         PR target/40463
3426         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
3427
3428 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3429
3430         * config/arm/arm.c (arm_override_options): Disable
3431         -mcaller-super-interworking and -mcallee-super-interworking.
3432         * doc/invoke.texi (ARM Options): Document this.
3433
3434 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
3435
3436         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
3437         * config/arm/constraints.md (j): New constraint for movw operands.
3438         (N): Remove thumb2 meaning.
3439         * config/arm/arm.md (*arm_movw): Delete.
3440         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
3441         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
3442         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
3443
3444 2009-06-22  Martin Jambor  <mjambor@suse.cz>
3445
3446         PR tree-optimization/40492
3447         * tree-sra.c (sra_modify_assign): Pass zero offsets to
3448         build_ref_for_offset.
3449
3450 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
3451
3452         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
3453         JUMP_TABLE_DATA_P predicates where applicable.
3454         * auto-inc-dec.c: Ditto.
3455         * builtins.c: Ditto.
3456         * caller-save.c: Ditto.
3457         * calls.c: Ditto.
3458         * cfgcleanup.c: Ditto.
3459         * cfglayout.c: Ditto.
3460         * cfgrtl.c: Ditto.
3461         * combine.c: Ditto.
3462         * combine-stack-adj.c: Ditto.
3463         * cse.c: Ditto.
3464         * cselib.c: Ditto.
3465         * dbxout.c: Ditto.
3466         * df-scan.c: Ditto.
3467         * dse.c: Ditto.
3468         * dwarf2asm.c: Ditto.
3469         * dwarf2out.c: Ditto.
3470         * emit-rtl.c: Ditto.
3471         * except.c: Ditto.
3472         * explow.c: Ditto.
3473         * expmed.c: Ditto.
3474         * expr.c: Ditto.
3475         * final.c: Ditto.
3476         * function.c: Ditto.
3477         * fwprop.c: Ditto.
3478         * gcse.c: Ditto.
3479         * genpreds.c: Ditto.
3480         * genrecog.c: Ditto.
3481         * ifcvt.c: Ditto.
3482         * ira-costs.c: Ditto.
3483         * ira-lives.c: Ditto.
3484         * jump.c: Ditto.
3485         * loop-iv.c: Ditto.
3486         * lower-subreg.c: Ditto.
3487         * modulo-sched.c: Ditto.
3488         * optabs.c: Ditto.
3489         * postreload.c: Ditto.
3490         * print-rtl.c: Ditto.
3491         * recog.c: Ditto.
3492         * reginfo.c: Ditto.
3493         * regmove.c: Ditto.
3494         * reload1.c: Ditto.
3495         * reload.c: Ditto.
3496         * reorg.c: Ditto.
3497         * rtlanal.c: Ditto.
3498         * rtl.c: Ditto.
3499         * sched-vis.c: Ditto.
3500         * sdbout.c: Ditto.
3501         * sel-sched-ir.c: Ditto.
3502         * simplify-rtx.c: Ditto.
3503         * targhooks.c: Ditto.
3504         * var-tracking.c: Ditto.
3505         * vmsdbgout.c: Ditto.
3506
3507 2009-06-22  Matthias Klose  <doko@ubuntu.com>
3508
3509         * Makefile.in (install-plugin): Always use DESTDIR.
3510
3511 2009-06-22  Olivier Hainque  <hainque@adacore.com>
3512         
3513         * config/pa/pa.c (output_call): Don't optimize post call jumps
3514         into return address adjustments if the call may throw.
3515
3516 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
3517
3518         * arm.c (thumb1_output_casesi): New function.
3519         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
3520         optimizing for size or PIC.
3521         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
3522         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
3523         (casesi): Handle Thumb-1 when optimizing for size or PIC.
3524         (thumb1_casesi_internal_pic): New expand rule.
3525         (thumb1_casesi_dispatch): New pattern.
3526         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
3527         thumb-1 mode.
3528         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
3529         in the text seciton when PIC or optimizing for size.
3530         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
3531         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
3532         preservation properties of code.
3533         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
3534         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
3535         (__gnu_thumb1_case_si): New function.
3536         * t-arm (LIB1ASMSRC): Define here.
3537         (LIB1ASMFUNCS): Add some common functions.
3538         * t-arm-elf (LIB1ASMSRC): Delete.
3539         (LIB1ASMFUNCS): Append to existing set.
3540         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3541         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3542         * t-symbian (LIB1ASMFUNCS): Likewise.
3543         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3544         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3545
3546 2009-06-21  Richard Guenther  <rguenther@suse.de>
3547
3548         PR tree-optimization/38729
3549         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
3550         to loops with a single exit if -fno-expensive-optimizations.
3551
3552 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
3553
3554         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
3555         (dataflow_set): Change vars type from htab_t to shared_hash.
3556         (shared_hash_pool, empty_shared_hash): New variables.
3557         (vars_clear): Removed.
3558         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
3559         shared_hash_find_slot_unshare, shared_hash_find_slot,
3560         shared_hash_find_slot_noinsert, shared_hash_find): New
3561         static inlines.
3562         (shared_hash_unshare, shared_hash_destroy): New functions.
3563         (unshare_variable): Unshare set->vars if shared, use
3564         shared_hash_htab.
3565         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
3566         (get_init_value, find_src_set_src, dump_dataflow_set,
3567         clobber_variable_part, emit_notes_for_differences): Use
3568         shared_hash_htab.
3569         (dataflow_set_init): Remove second argument, set vars to
3570         empty_shared_hash instead of creating a new htab.
3571         (dataflow_set_clear): Call shared_hash_destroy and set vars
3572         to empty_shared_hash instead of calling vars_clear.
3573         (dataflow_set_copy): Don't call vars_copy, instead just share
3574         the src htab with dst.
3575         (variable_union): Use shared_hash_*, use initially NO_INSERT
3576         lookup if set->vars is shared.  Don't keep slot cleared before
3577         calling unshare_variable.  Unshare set->vars if needed.
3578         Even ->refcount == 1 vars must be unshared if set->vars is shared
3579         and var needs to be modified.
3580         (variable_canonicalize): New function.
3581         (dataflow_set_union): If dst->vars is empty, just share src->vars
3582         with dst->vars and traverse with variable_canonicalize to canonicalize
3583         and unshare what is needed.
3584         (dataflow_set_different): If old_set and new_set use the same shared
3585         htab, they aren't different.  If number of htab elements is different,
3586         htabs are different.  Use shared_hash_*.
3587         (dataflow_set_destroy): Call shared_hash_destroy instead of
3588         htab_delete.
3589         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
3590         second argument to dataflow_set_init.
3591         (vt_initialize): Likewise.  Initialize shared_hash_pool and
3592         empty_shared_hash, move bb in/out initialization afterwards.
3593         Use variable_htab_free instead of NULL as changed_variables del hook.
3594         (variable_was_changed): Change type of second argument to pointer to
3595         dataflow_set.  When inserting var into changed_variables, bump
3596         refcount.  Unshare set->vars if set is shared htab and slot needs to
3597         be cleared.
3598         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
3599         lookup if set->vars is shared.  Unshare set->vars if needed.
3600         Even ->refcount == 1 vars must be unshared if set->vars is shared
3601         and var needs to be modified.  Adjust variable_was_changed caller.
3602         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
3603         vars must be unshared if set->vars is shared and var needs to be
3604         modified.  Adjust variable_was_changed caller.
3605         (emit_note_insn_var_location): Don't pool_free var.
3606         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
3607         instead of 1.
3608         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
3609         free_alloc_pool on shared_hash_pool.
3610
3611 2009-06-20  Anthony Green  <green@moxielogic.com>
3612
3613         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
3614         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
3615
3616 2009-06-20  Richard Guenther  <rguenther@suse.de>
3617
3618         * tree-ssa-structalias.c (find_func_aliases): For memset use
3619         a constraint from NULL if we memset to zero.
3620         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
3621         we explicitly handle that do not read from memory.
3622         (call_may_clobber_ref_p_1): Properly handle builtins that may
3623         set errno.
3624
3625 2009-06-20  Richard Guenther  <rguenther@suse.de>
3626
3627         PR tree-optimization/40495
3628         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
3629         (new_scalar_tmp_constraint_exp): New function.
3630         (process_constraint): Do not create temporary decls.
3631         (process_all_all_constraints): Likewise.
3632         (handle_const_call): Likewise.
3633         (create_function_info_for): Do not set decl.
3634
3635 2009-06-19  Ian Lance Taylor  <iant@google.com>
3636
3637         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
3638         (rs6000_attribute_table): Make static; move before use.
3639
3640 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
3641
3642         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
3643         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
3644         Propagate the TREE_READONLY flag without overwriting it.
3645         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
3646         Propagate the TREE_READONLY flag onto the result.
3647         (process_call_operands): Move around.  Use correct constant value.
3648
3649 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3650
3651         PR target/40482
3652         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
3653         * config/arm/arm.md: Likewise.
3654
3655 2009-06-19  Ian Lance Taylor  <iant@google.com>
3656
3657         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
3658         to GIMPLE_ERROR_MARK.
3659
3660         * c-typeck.c (build_conditional_expr): Add op1_original_type and
3661         op2_original_type parameters.  Warn about using different enum types.
3662         * c-parser.c (c_parser_conditional_expression): Pass original
3663         types to build_conditional_expr.
3664         * c-tree.h (build_conditional_expr): Update declaration.
3665
3666 2009-06-19  Ian Lance Taylor  <iant@google.com>
3667
3668         * config/i386/i386.c (ix86_function_specific_save): Test that
3669         fields match values, rather than testing the values are in a
3670         certain range.
3671
3672 2009-06-19  Richard Guenther  <rguenther@suse.de>
3673
3674         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
3675         ADDR_EXPR pointers.
3676         (ptr_derefs_may_alias_p): Likewise.
3677         (ptr_deref_may_alias_ref_p_1): New function.
3678         (ptr_deref_may_alias_ref_p): Likewise.
3679         (ref_maybe_used_by_call_p_1): Handle builtins that are not
3680         covered by looking at the ESCAPED solution.
3681         (call_may_clobber_ref_p_1): Likewise.
3682         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
3683         Handle NULL_TREE offset.  Do not produce redundant constraints.
3684         (process_all_all_constraints): New helper function.
3685         (do_structure_copy): Use it.
3686         (handle_lhs_call): Likewise.
3687         (find_func_aliases): Handle some builtins with pointer arguments
3688         and/or return values explicitly.
3689
3690 2009-06-19  Ian Lance Taylor  <iant@google.com>
3691
3692         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
3693
3694 2009-06-19  Ian Lance Taylor  <iant@google.com>
3695
3696         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
3697
3698 2009-06-19  Ian Lance Taylor  <iant@google.com>
3699
3700         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
3701         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
3702         version.
3703
3704         * c-decl.c (finish_decl): If -Wc++-compat, warn about
3705         uninitialized const.
3706
3707 2009-06-19  Ian Lance Taylor  <iant@google.com>
3708
3709         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
3710         all uses.
3711
3712         * c-decl.c (in_struct, struct_types): Remove.
3713         (struct c_binding): Add in_struct field.
3714         (c_binding_ptr): Define type, along with VEC.
3715         (struct c_struct_parse_info): Define.
3716         (struct_parse_info): New static variable.
3717         (bind): Initialize in_struct field.
3718         (start_struct): Remove enclosing_in_struct and
3719         enclosing_struct_types parameters.  Add
3720         enclosing_struct_parse_info parameter.  Change all callers.  Set
3721         struct_parse_info rather than in_struct and struct_types.
3722         (grokfield): If -Wc++-compat and there is a symbol binding for the
3723         field name, set the in_struct flag and push it on the
3724         struct_parse_info->fields vector.
3725         (warn_cxx_compat_finish_struct): New static function.
3726         (finish_struct): Remove enclosing_in_struct and
3727         enclosing_struct_types parameters.  Add
3728         enclosing_struct_parse_info parameter.  Change all callers.  Don't
3729         set C_TYPE_DEFINED_IN_STRUCT here.  Call
3730         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
3731         parameter.  Only push on struct_types if warn_cxx_compat.
3732         (finish_enum): Only push on struct_types if warn_cxx_compat.
3733         (declspecs_add_type): Add loc parameter.  Change all callers.
3734         Change all error calls to error_at.  Pass loc, not input_location,
3735         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
3736         defined in a struct.  If -Wc++-compat and parsing a struct, record
3737         that a typedef name was used.
3738         * c-parser.c (c_parser_declspecs): Get location to pass to
3739         declspecs_add_type.
3740         (c_parser_struct_or_union_specifier): Update calls to start_struct
3741         and finish_struct.
3742         * c-tree.h (struct c_struct_parse_info): Declare.
3743         (finish_struct, start_struct): Update declarations.
3744         (declspecs_add_type): Update declaration.
3745
3746 2009-06-19  Ian Lance Taylor  <iant@google.com>
3747
3748         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
3749         variable with an anonymous type.
3750
3751 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
3752
3753         * see.c: Remove for real.
3754
3755 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
3756
3757         * optabs.h (enum optab_index): Add new OTI_significand.
3758         (significand_optab): Define corresponding macro.
3759         * optabs.c (init_optabs): Initialize significand_optab.
3760         * genopinit.c (optabs): Implement significand_optab using
3761         significand?f2 patterns.
3762         * builtins.c (expand_builtin_mathfn): Handle
3763         BUILT_IN_SIGNIFICAND{,F,L}.
3764         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
3765         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
3766
3767         * config/i386/i386.md (significandxf2, significand<mode>2): New
3768         expanders to implement significandf, significand and significandl
3769         built-ins as inline x87 intrinsics.
3770
3771 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
3772
3773         * config/avr/avr.c (avr_override_options): Remove setting value of
3774         PARAM_INLINE_CALL_COST.
3775
3776 2009-06-18  Richard Henderson  <rth@redhat.com>
3777
3778         PR 40488
3779         * tree-pass.h (TDF_ASMNAME): New.
3780         * tree-dump.c (dump_options): Add asmname.
3781         * doc/invoke.texi: Document it.
3782
3783         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
3784         (dump_decl_name): ...here.
3785         (dump_function_name): New flags arg; mind TDF_ASMNAME.
3786         (dump_generic_node): Update dump_function_name calls.
3787         (print_call_name): New flags arg; update all dump calls.
3788         * diagnostic.h (print_call_name): Update.
3789         * gimple-pretty-print.c (dump_gimple_call): Update.
3790
3791 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
3792
3793         PR target/40470
3794         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
3795
3796 2009-06-18  Diego Novillo  <dnovillo@google.com>
3797
3798         * doc/plugins.texi: Document plugin_is_GPL_compatible.
3799         * plugin.c (str_license): Declare.
3800         (try_init_one_plugin): Assert that the symbol
3801         'plugin_is_GPL_compatible' exists.
3802
3803 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
3804
3805         * see.c: Remove.
3806         * Makefile.in (OBJS-common): Remove see.o.
3807         (see.o): Remove.
3808         * common.opt (fsee): Mark as preserved for backward compatibility.
3809         * opts.c (common_handle_option): Add OPT_fsee to the backward 
3810         compatibility section.
3811         * passes.c (init_optimization_passes, pass_see): Remove pass.
3812         * timevar.def (TV_SEE): Remove.
3813         * tree-pass.h (pass_see): Remove declaration.
3814         * doc/invoke.texi (-fsee): Remove documentation.
3815         
3816 2009-06-18  Martin Jambor  <mjambor@suse.cz>
3817
3818         * tree-sra.c: Include statistics.h
3819         (sra_stats): New variable.
3820         (sra_initialize): Clear sra_stats.
3821         (create_access_replacement): Increment sra_stats.replacements.
3822         (get_access_replacement): Do not return twice.
3823         (analyze_all_variable_accesses): Increment statistics counter by the
3824         number of scalarized aggregates.
3825         (generate_subtree_copies): Increment sra_stats.subtree_copies.
3826         (sra_modify_expr): Increment sra_stats.exprs.
3827         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
3828         (sra_modify_assign): Increment sra_stats.exprs,
3829         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
3830         (perform_intra_sra): Update statistics counters.
3831         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
3832
3833 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
3834
3835         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
3836         (arm_scalar_mode_supported_p): New function.
3837
3838 2009-06-18  Paul Brook  <paul@codesourcery.com>
3839             Sandra Loosemore  <sandra@codesourcery.com>
3840
3841         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
3842         (__extendhfsf2, __truncsfhf2): Define.
3843         * config/arm/fp16.c: New file.
3844         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
3845         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
3846
3847 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
3848
3849         * doc/extend.texi (Half-Precision): New section.
3850         * doc/invoke.texi (Option Summary): List -mfp16-format.
3851         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
3852         * config/arm/arm.opt (mfp16-format=): New.
3853         * config/arm/arm.c: Include intl.h.
3854         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
3855         (TARGET_INVALID_RETURN_TYPE): Redefine.
3856         (TARGET_PROMOTED_TYPE): Redefine.
3857         (TARGET_CONVERT_TO_TYPE): Redefine.
3858         (arm_fp16_format): Define.
3859         (all_fpus): Add entry for neon-fp16.
3860         (fp_model_for_fpu): Likewise.
3861         (struct fp16_format): Declare.
3862         (all_fp16_formats): Define.
3863         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
3864         functions.
3865         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
3866         and no ldrh.
3867         (arm_legitimate_index_p): Treat HFmode like HImode.
3868         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
3869         (coproc_secondary_reload_class): Special-case HFmode.
3870         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
3871         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
3872         (arm_init_fp16_builtins): New.
3873         (arm_init_builtins): Call it.
3874         (arm_invalid_parameter_type): New.
3875         (arm_invalid_return_type): New.
3876         (arm_promoted_type): New.
3877         (arm_convert_to_type).
3878         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
3879         format.
3880         (arm_emit_fp16_const): New function.
3881         (arm_mangle_type): Mangle __fp16 as "Dh".
3882         * config/arm/arm.h (TARGET_VFPD32): Make it know about
3883         FPUTYPE_NEON_FP16.
3884         (TARGET_NEON_FP16): New.
3885         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
3886         (enum fputype): Add FPUTYPE_NEON_FP16.
3887         (enum arm_fp16_format_type): Declare.
3888         (arm_fp16_format): Declare.
3889         (LARGEST_EXPONENT_IS_NORMAL): Define.
3890         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
3891         * config/arm/arm-modes.def (HFmode): Define.
3892         * config/arm/vfp.md: (*movhf_vfp): New.
3893         (extendhfsf2): New.
3894         (truncsfhf2): New.
3895         * config/arm/arm.md: (fpu): Add neon_fp16.
3896         (floatsihf2, floatdihf2): New.
3897         (fix_trunchfsi2, fix_trunchfdi2): New.
3898         (truncdfhf2): New.
3899         (extendhfdf2): New.
3900         (movhf): New.
3901         (*arm32_movhf): New.
3902         (*thumb1_movhf): New.
3903         (consttable_2): Add check for HFmode constants.
3904         (consttable_4): Handle HFmode constants.
3905
3906 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
3907
3908         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
3909
3910 2009-06-17  Olivier Hainque  <hainque@adacore.com>
3911
3912         * collect2.c (main): Use CONST_CAST2 to perform char ** to
3913         const char ** conversion in AIX specific section.
3914         
3915 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
3916
3917         * config/i386/i386.c (ix86_special_builtin_type): Remove
3918         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
3919         (bdesc_special_args): Updated.
3920         (ix86_init_mmx_sse_builtins): Likewise.
3921         (ix86_expand_special_args_builtin): Likewise.
3922
3923 2009-06-17  Richard Henderson  <rth@redhat.com>
3924
3925         * tree-pretty-print.c (maybe_dump_asm_name): New.
3926         (dump_decl_name): Use it.
3927         (PRINT_FUNCTION_NAME): Merge into...
3928         (dump_function_name): ... here.  Use maybe_dump_asm_name.
3929
3930 2009-06-17  Cary Coutant  <ccoutant@google.com>
3931
3932         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
3933         Change caller.
3934         * debug.c (struct gcc_debug_hooks): Change placeholder for
3935         source_line hook.
3936         (debug_nothing_int_charstar_int): Replaced by...
3937         (debug_nothing_int_charstar_int_bool): ...this.
3938         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
3939         source_line prototype.
3940         (debug_nothing_int_charstar_int): Replaced by...
3941         (debug_nothing_int_charstar_int_bool): ...this.
3942         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
3943         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
3944         Output is_stmt operand when necessary.
3945         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
3946         (notice_source_line): Add is_stmt parameter.
3947         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
3948         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
3949         Change callers.
3950         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
3951         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
3952
3953 2009-06-17  Ian Lance Taylor  <iant@google.com>
3954
3955         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
3956         Change all uses.
3957         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
3958         call uses.
3959
3960 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
3961
3962         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
3963         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
3964         tree_strip_sign_nop_conversions and
3965         tree_ssa_strip_useless_type_conversions rather than stripping
3966         the operations here.
3967         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
3968         Declare them.
3969         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
3970         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
3971         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
3972         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
3973         functions.
3974
3975 2009-06-17  Michael Eager  <eager@eagercon.com>
3976
3977         * config/rs6000/constraints.md (register_constraint "d"): New.
3978         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
3979         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
3980         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
3981         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
3982         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
3983         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
3984         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
3985         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
3986         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
3987         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
3988         __fctiwz): Same.
3989         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
3990         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
3991         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
3992         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
3993         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3994         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
3995         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
3996         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
3997         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
3998         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
3999         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
4000         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
4001         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
4002         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
4003
4004 2009-06-16  Ian Lance Taylor  <iant@google.com>
4005
4006         * profile.c (total_num_never_executed): Don't define.
4007         (compute_branch_probabilities): Don't count or print
4008         num_never_executed.
4009         (init_branch_prob): Don't set total_num_never_executed.
4010         (end_branch_prob): Don't print total_num_never_executed.
4011
4012 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
4013
4014         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
4015
4016 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
4017
4018         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
4019         (nabstd2_fpr): Same.
4020
4021 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
4022
4023         * expr.c (expand_assignment): Change complex type check.
4024
4025 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
4026
4027         * doc/plugins.texi (Building GCC plugins): Added new section. 
4028
4029 2009-06-17  Ian Lance Taylor  <iant@google.com>
4030
4031         * c-pch.c (get_ident): Don't set size of templ array.
4032         (pch_init): Don't set size of partial_pch array.
4033
4034         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
4035         string constant to intialize an array whose size is the length of
4036         the string.
4037
4038 2009-06-17  Richard Guenther  <rguenther@suse.de>
4039
4040         PR tree-optimization/40389
4041         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
4042         to addressable types.
4043         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
4044
4045 2009-06-17  Richard Guenther  <rguenther@suse.de>
4046
4047         PR middle-end/40460
4048         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
4049         if there is no evolution of left in the loop bail out.
4050         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
4051         chrec_fold_multiply.
4052
4053 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
4054             Janis Johnson  <janis187@us.ibm.com>
4055
4056         PR target/39254
4057         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
4058         for the symbol ref of a constant that is the source of a move
4059         - nor for any other not-obvious-label-ref constants.
4060
4061 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
4062
4063         * plugin.c (position_pass): Skip newly inserted pass during list
4064         traversal to avoid repeated insertion.
4065
4066 2009-06-16  Ian Lance Taylor  <iant@google.com>
4067
4068         * vec.h (VEC_stack_alloc): Define different version if
4069         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
4070         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
4071         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
4072         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
4073
4074 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
4075
4076         * config.gcc (extra_headers): Add ia32intrin.h for x86.
4077
4078         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
4079         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
4080         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
4081         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
4082         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
4083         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
4084         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
4085         (bdesc_special_args): Add __builtin_ia32_rdtsc and
4086         __builtin_ia32_rdtscp.
4087         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
4088         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
4089         and __builtin_ia32_rorhi.
4090         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
4091         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
4092         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
4093         (ix86_expand_args_builtin): Likewise.
4094         (ix86_expand_special_args_builtin): Likewise.
4095
4096         * config/i386/i386.md (UNSPECV_RDTSCP): New.
4097         (UNSPECV_RDTSC): Likewise.
4098         (UNSPECV_RDPMC): Likewise.
4099         (*bsr): Renamed to ...
4100         (bsr): This
4101         (*bsr_rex64): Renamed to ...
4102         (bsr_rex64): This.
4103         (rdpmc): New.
4104         (*rdpmc): Likewise.
4105         (*rdpmc_rex64): Likewise.
4106         (rdtsc): Likewise.
4107         (*rdtsc): Likewise.
4108         (*rdtsc_rex64): Likewise.
4109         (rdtscp): Likewise.
4110         (*rdtscp): Likewise.
4111         (*rdtscp_rex64): Likewise.
4112
4113         * config/i386/ia32intrin.h: New.
4114
4115         * config/i386/x86intrin.h: Include <ia32intrin.h>.
4116
4117 2009-06-16  Ian Lance Taylor  <iant@google.com>
4118
4119         * ira-build.c (copy_info_to_removed_store_destinations):
4120         Initialize parent_a.
4121
4122 2009-06-16  Ian Lance Taylor  <iant@google.com>
4123
4124         * c-decl.c (grokdeclarator): Change size_varies to bool.
4125
4126 2009-06-16  Ian Lance Taylor  <iant@google.com>
4127
4128         * sel-sched.c: Make forward declarations of move_op_hooks and
4129         fur_hooks explicitly extern.
4130
4131 2009-06-16  Ian Lance Taylor  <iant@google.com>
4132
4133         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
4134         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
4135
4136 2009-06-16  Ian Lance Taylor  <iant@google.com>
4137
4138         * resource.c (mark_referenced_resources): Change
4139         include_delayed_effects parameter to bool.  Change all callers.
4140         (mark_end_of_function_resources): Likewise.
4141         * reorg.c (insn_references_resource_p): Likewise.
4142         (insn_sets_resource_p): Likewise.
4143         * resource.h (mark_referenced_resources): Update declaration.
4144         (mark_end_of_function_resources): Update declaration.
4145
4146 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
4147
4148         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
4149
4150 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
4151
4152         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
4153         GCC can bootstrap on AIX with GNU Binutils 2.20.
4154
4155 2009-06-16  Ian Lance Taylor  <iant@google.com>
4156
4157         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
4158
4159 2009-06-16  Ian Lance Taylor  <iant@google.com>
4160
4161         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
4162         inline, not extern inline.
4163         (exact_log2): Likewise.
4164         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
4165         test CLZ_HWI.
4166         (exact_log2): Likewise, but don't test CTZ_HWI.
4167
4168 2009-06-16  Ian Lance Taylor  <iant@google.com>
4169
4170         * bitmap.c (bitmap_clear): Don't declare as inline.
4171         * gimple.c (gimplify_assign): Likewise.
4172         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
4173         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
4174         (sched_scan_info): Remove duplicate definition.
4175
4176 2009-06-16  Ian Lance Taylor  <iant@google.com>
4177
4178         * c-common.c (skip_evaluation): Don't define.
4179         (c_inhibit_evaluation_warnings): Define global variable.
4180         (overflow_warning): Check c_inhibit_evaluation_warnings rather
4181         than skip_evaluation.
4182         (convert_and_check, warn_for_div_by_zero): Likewise.
4183         * c-common.h (skip_evaluation): Don't declare.
4184         (c_inhibit_evaluation_warnings): Declare.
4185         * c-parser.c (c_parser_typeof_specifier): Set
4186         c_inhibit_evaluation_warnings rather than skip_evaluation.
4187         (c_parser_conditional_expression): Likewise.
4188         (c_parser_binary_expression): Likewise.
4189         (c_parser_sizeof_expression): Likewise.
4190         (c_parser_alignof_expression): Likewise.
4191         * c-typeck.c (build_indirect_ref): Check
4192         c_inhibit_evaluation_warnings rather than skip_evaluation.
4193         (build_conditional_expr, build_binary_op): Likewise.
4194
4195 2009-06-16  Richard Guenther  <rguenther@suse.de>
4196
4197         * tree-ssa-alias.c (is_escape_site): Remove.
4198         * tree-ssa-alias.h (enum escape_type): Remove.
4199         (is_escape_site): Likewise.
4200         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
4201         via casts and asms without deferring to is_escape_site.
4202
4203 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
4204
4205         PR middle-end/40446
4206         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
4207         use gen_lowpart if op0 has complex mode.
4208
4209 2009-06-16  Richard Guenther  <rguenther@suse.de>
4210
4211         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
4212         variables add them to ESCAPED.
4213         (find_func_aliases): Do not make all indirectly stored values escaped.
4214
4215 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
4216
4217         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
4218         make_decl_one_only.
4219
4220 2009-06-16  Martin Jambor  <mjambor@suse.cz>
4221
4222         PR tree-optimization/40432
4223         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
4224         check whether we need to force gimple register operand.
4225
4226 2009-06-16  Martin Jambor  <mjambor@suse.cz>
4227
4228         PR tree-optimization/40413
4229         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
4230         build_ref_for_offset.
4231         (propagate_subacesses_accross_link): Fix a typo in a comment.
4232
4233 2009-06-16  Ira Rosen  <irar@il.ibm.com>
4234
4235         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
4236         with additional parameter.
4237         * tree-vectorizer.h (enum vect_def_type): Add new value
4238         vect_nested_cycle.
4239         (enum vect_relevant): Add comments.
4240         (vect_is_simple_reduction): Add new argument.
4241         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
4242         Detect nested cycles.
4243         (vect_is_simple_reduction): Update documentation, add an argument to
4244         distinguish inner-loop reduction from nested cycle, detect nested
4245         cycles, fix printings and indentation, don't swap operands in case
4246         of nested cycle.
4247         (get_initial_def_for_reduction): Handle subtraction.
4248         (vect_create_epilog_for_reduction): Add new argument to specify
4249         reduction variable.
4250         (vect_finalize_reduction): Handle subtraction, fix comments.
4251         (vectorizable_reduction): Handle nested cycles. In case of nested
4252         cycle keep track of the reduction variable position. Call 
4253         vect_is_simple_reduction with additional parameter. Use original
4254         statement code in reduction epilogue for nested cycle. Call
4255         vect_create_epilog_for_reduction with additional parameter.
4256         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
4257         inner-loop vectorization.
4258         (vect_recog_widen_sum_pattern): Likewise.
4259         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
4260         and reductions.
4261         (vect_mark_stmts_to_be_vectorized): Likewise.
4262         (vect_get_vec_def_for_operand): Handle nested cycles.
4263
4264 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4265
4266         * doc/invoke.texi (Debugging Options): Fix option index entries
4267         for -fdump-statistics, -frandom-seed add entries for
4268         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
4269         (FRV Options): Fix entries for -mTLS, -mtls.
4270         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
4271         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
4272         (M68hc1x Options): Fix @itemx for -mnominmax.
4273         (MCore Options): Fix entry for -mno-lsim.
4274         (MMIX Options): Fix entry for -mabi=mmixware.
4275         (PDP-11 Options): Fix entry for -mbcopy-builtin.
4276
4277 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
4278
4279         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
4280         Mention the plugin mode of gengtype.
4281         * doc/gty.texi (Source Files Containing Type Information): Likewise.
4282         * gengtype.c: Updated copyright.
4283         (plugin_files, nb_plugin_files) Added new static variables.
4284         (measure_input_list) Care about plugin_files.
4285         (write_rtx_next): Added early return in plugin mode.
4286         (create_file): Updated copyright year in generated file. Added
4287         asserts.
4288         (oprintf): Added early return if NULL outf.
4289         (get_output_file_with_visibility): Care of plugin_files.
4290         (get_output_file_name): May return null.
4291         (write_local): Added early return.
4292         (put_mangled_filename): Ditto.
4293         (finish_root_table): Added check for base_files.
4294         (write_roots): Care about null when plugins.
4295         (main): Added plugin mode.
4296
4297 2009-06-15  Ian Lance Taylor  <iant@google.com>
4298
4299         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
4300         * gcov.c (read_count_file): Add braces around variables declared
4301         before label.
4302
4303         * c.opt (Wjump-misses-init): New warning.
4304         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
4305         -Wall and -Wc++-compat if not already set.
4306         (c_common_post_options): Clear warn_jump_misses_init if it was not
4307         set.
4308         * c-decl.c (struct c_binding): Change type field to a union with
4309         new label field.  Make it the first field in the struct.  Update
4310         references to type to use u.type instead.
4311         (struct c_spot_bindings): Define.
4312         (struct c_goto_bindings): Define.
4313         (c_goto_bindings_p): Define, along with VECs.
4314         (struct c_label_vars): Define.
4315         (struct c_scope): Add has_label_bindings field.
4316         (bind_label, set_spot_bindings): New static functions.
4317         (decl_jump_unsafe, update_spot_bindings): New static functions.
4318         (update_label_decls): New static function.
4319         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
4320         Update binding u.label field to shadowed field.
4321         (c_binding_start_stmt_expr): New function.
4322         (c_binding_end_stmt_expr): New function.
4323         (pushdecl): Don't call c_begin_vm_scope.
4324         (make_label): Add defining and p_label_vars parameters.  Change
4325         all callers.
4326         (lookup_label): Correct test for whether a label has not yet been
4327         defined.  Call bind_label rather than bind.
4328         (warn_about_goto): New static function.
4329         (lookup_label_for_goto): New function.
4330         (declare_label): Call bind_label rather than bind.
4331         (check_earlier_gotos): New static function.
4332         (define_label): Don't give errors about jumping into statement
4333         expressions or scopes of variably modified types.  Call
4334         set_spot_bindings and check_earlier_gotos.  Call bind_label
4335         instead of bind.  Don't set label_context_stack_se or
4336         label_context_stack_vm.
4337         (c_get_switch_bindings): New function.
4338         (c_release_switch_bindings): New function.
4339         (c_check_switch_jump_warnings): New function.
4340         (start_function): Don't set label_context_stack_se or
4341         label_context_stack_vm.
4342         (finish_function): Likewise.
4343         * c-typeck.c (label_context_stack_se): Don't define.
4344         (label_context_stack_vm): Don't define.
4345         (c_finish_goto_label): Call lookup_label_for_goto rather than
4346         lookup_label.  Don't give errors about jumping into a statement
4347         expression or the scope of a variably modified type.  Don't set
4348         label_context_stack_se or label_context_stack_vm.
4349         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
4350         fields.  Add bindings field.
4351         (c_start_case): Don't set deleted fields.  Set bindings field.
4352         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
4353         or blocked_vm.  Call c_check_switch_jump_warnings.
4354         (c_finish_case): Don't test blocked_stmt_expr field.  Call
4355         c_release_switch_bindings.
4356         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
4357         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
4358         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
4359         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
4360         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
4361         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
4362         (c_begin_vm_scope, c_end_vm_scope): Don't define.
4363         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
4364         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
4365         (C_DECL_UNJUMPABLE_VM): Don't define.
4366         (C_DECL_UNDEFINABLE_VM): Don't define.
4367         (struct c_label_list): Don't define.
4368         (struct c_label_context_se): Don't define.
4369         (struct c_label_context_vm): Don't define.
4370         (struct c_spot_bindings): Declare.
4371         (c_bindings_start_stmt_expr): Declare.
4372         (c_bindings_end_stmt_expr): Declare.
4373         (lookup_label_for_goto): Declare.
4374         (c_get_switch_bindings, c_release_switch_bindings): Declare.
4375         (c_check_switch_jump_warnings): Declare.
4376         (label_context_stack_se, label_context_stack_vm): Don't declare.
4377         (c_finish_goto_label): Update declaration.
4378         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
4379         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
4380         (Warning Options): Document -Wjump-misses-init.
4381
4382 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
4383
4384         * tree-object-size.c (addr_object_size): Fix a pasto in the last
4385         change.
4386
4387 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
4388
4389         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
4390
4391 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
4392
4393         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
4394
4395 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
4396
4397         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
4398
4399 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
4400
4401         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
4402         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
4403         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
4404         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
4405         * dwarf2asm.c (dw2_force_const_mem): Update call to
4406         make_decl_one_only.
4407         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
4408         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
4409         * langhooks.c (lhd_comdat_group): Remove.
4410         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
4411         * tree.h (DECL_COMDAT_GROUP): New.
4412         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
4413         (tree_decl_with_vis): Add comdat_group. Remove one_only.
4414         (make_decl_one_only): Change signature.
4415         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
4416         make_decl_one_only.
4417         (make_decl_one_only): Change signature.
4418         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
4419
4420 2009-06-15  Richard Guenther  <rguenther@suse.de>
4421
4422         PR middle-end/40439
4423         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
4424
4425 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4426
4427         * tree-ssa-math-opts.c: Remove extra divide.
4428
4429 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4430
4431         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
4432
4433 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4434
4435         * passes.c: Add bswap pass.
4436         * tree-pass.h: Add pass_optimize_bswap declaration.
4437         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
4438         Include rtl.h, expr.h and optabs.h for optab_handler check.
4439         (struct symbolic_number, pass_optimize_bswap): New definition.
4440         (do_shift_rotate, verify_symbolic_number_p): New functions.
4441         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
4442         (gate_optimize_bswap): New function.
4443         * tree.c (widest_int_cst_value): New function.
4444         * tree.h (widest_int_cst_value): Prototype added.
4445
4446 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
4447
4448         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
4449         REG_EQUAL/REG_EQUIV notes.
4450
4451 2009-06-14  Richard Guenther  <rguenther@suse.de>
4452
4453         PR middle-end/40389
4454         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
4455         has its address taken if NRV was applied and it is addressable.
4456         * tree-ssa-structalias.c (get_constraint_for_address_of): New
4457         function split out from ...
4458         (get_constraint_for_1): ... here.
4459         (handle_rhs_call): Use it to mark the return slot escaped if
4460         it is addressable and NRV was applied.
4461
4462 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
4463
4464         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
4465         Change first argument type to location_t.
4466         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
4467         Do not set input_location.
4468         Use loc instead of input_location throughout.
4469
4470 2009-06-13  Richard Guenther  <rguenther@suse.de>
4471
4472         PR tree-optimization/40421
4473         * tree-predcom.c (should_unroll_loop_p): Remove.
4474         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
4475
4476 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
4477
4478         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4479         Add location argument.
4480
4481 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
4482
4483         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
4484         build_decl.
4485         * config/s390/s390.c (s390_build_builtin_va_list): Same.
4486         (s390_gimplify_va_arg): Pass location to create_artificial_label.
4487         * config/spu/spu-protos.h: Add location to
4488         spu_resolve_overloaded_builtin.
4489         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
4490         spu_build_builtin_va_list.
4491         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
4492         argument.  Pass location to build_function_call_vec.
4493         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
4494         build_decl.
4495         (emit_fpu_switch): Same.
4496         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
4497         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
4498         to build_decl and create_artificial_label.
4499         (xtensa_gimplify_va_arg_expr): Same.
4500         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
4501         (xstormy16_gimplify_va_arg_expr): Same.
4502         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
4503         * config/arm/arm.c (arm_build_builtin_va_list): Same.
4504         * config/mips/mips.c (mips_build_builtin_va_list): Same.
4505         (mips16_build_function_stub): Same.
4506         (mips16_build_call_stub): Same.
4507
4508 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
4509
4510         PR target/40327
4511         * arm/constraints.md (Pa, Pb): New constraints.
4512         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
4513         split pattern to deal with them.
4514
4515 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
4516
4517         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
4518         fix index entry for -Xpreprocessor.
4519
4520 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
4521
4522         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4523         Add location argument to build_decl call.
4524         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
4525         (rs6000_init_builtins): Same.
4526         (spe_init_builtins): Same.
4527         (rs6000_gimplify_va_arg): Add location argument to
4528         create_artificial_label call.
4529
4530 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
4531
4532         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
4533         * combine-stack-adj.c (pass_stack_adjustments): Use it.
4534         * Makefile.in: Fix GGC dependency for gcse.o.
4535
4536 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
4537
4538         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
4539         * gimple-pretty-print.c (dump_gimple_stmt): Same.
4540         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
4541         created.
4542         * c-parser.c (c_parser_binary_expression): Use current column while
4543         building binary operations.
4544         * common.opt (fshow-column): Enable by default.
4545         * tree-vrp.c (check_array_ref): Use warning_at.
4546         (check_array_bounds): Use location from call back if expr has no
4547         location.
4548         * tree.h: Add location argument to maybe_fold_*.
4549         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
4550         (maybe_fold_offset_to_array_ref): Add location argument and use it.
4551         (maybe_fold_offset_to_component_ref): Same.
4552         (maybe_fold_offset_to_reference): Same.
4553         (maybe_fold_offset_to_address): Same.
4554         (maybe_fold_stmt_indirect): Same.
4555         (maybe_fold_stmt_addition): Same.
4556         (fold_stmt_r): Pass location to maybe_fold_*.
4557         (fold_gimple_assign): Same.
4558         * c-tree.h: Add location argument to finish_decl,
4559         default_function_array_conversion, store_init_value.
4560         * c-decl.c (define_label): Use error_at.
4561         (c_make_fname_decl): Pass location to finish_decl.
4562         (finish_decl): New location argument.
4563         (build_compound_literal): Pass location to store_init_value.
4564         (grokdeclarator): Pass location to finish_decl.
4565         (grokfield): Same.
4566         * c-typeck.c (array_to_pointer_conversion): New location argument.
4567         (function_to_pointer_conversion): Same.
4568         (default_function_array_conversion): Same.
4569         (parser_build_unary_op): Pass location to overflow_warning.
4570         (parser_build_binary_op): Same.  Use warning_at.
4571         (build_unary_op): Pass location to array_to_pointer_conversion.
4572         (build_c_cast): Pass location to digest_init.
4573         (build_modify_expr): New location argument.
4574         (convert_for_assignment): Same.
4575         (store_init_value): Same.
4576         (digest_init): Same.
4577         (output_init_element): Pass location to digest_init and
4578         array_to_pointer_conversion.
4579         (c_finish_return): Pass location to convert_for_assignment.
4580         * gimplify.c (gimplify_conversion): Pass location to
4581         maybe_fold_offset_to_address.
4582         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
4583         to maybe_fold_stmt_addition.
4584         * c-omp.c (c_finish_omp_atomic): Pass new location to
4585         build_modify_expr.
4586         (c_finish_omp_for): Same.
4587         * c-common.c (overflow_warning): New argument.
4588         * c-common.h: New argument to build_modify_expr, overflow_warning.
4589         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
4590         finish_decl.
4591         (c_parser_initializer): Pass location to
4592         default_function_array_conversion.
4593         (c_parser_initelt): Same.
4594         (c_parser_initval): Same.
4595         (c_parser_asm_operands): Same.
4596         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
4597         (c_parser_conditional_expression): Same.
4598         (c_parser_binary_expression): Add location info to stack.  Use it.
4599         (c_parser_unary_expression): Pass location to
4600         default_function_array_conversion, parser_build_unary_op,
4601         build_indirect_ref, c_parser_postfix_expression_after_primary.
4602         (c_parser_postfix_expression_after_primary): New location argument.
4603         Use it.
4604         (c_parser_expression_conv): Pass location to
4605         default_function_array_conversion.
4606         (c_parser_expr_list): Same.
4607         (c_parser_omp_atomic): Same.
4608         (c_parser_omp_for_loop): Same.
4609         * c-tree.h: (struct c_declarator): Add comment to id_loc.
4610         (build_array_declarator): New argument.
4611         * c-decl.c (build_array_declarator): Add location argument.
4612         (grokdeclarator): Set id_loc for cdk_array.
4613         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
4614         build_array_declarator.
4615         * tree.c (build_omp_clause): Add location argument.
4616         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
4617         (OMP_CLAUSE_LOCATION): New macro.
4618         (struct tree_omp_clause): Add location field.
4619         (build_omp_clause): Add argument.
4620         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
4621         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
4622         build_omp_clause.
4623         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
4624         (cp_parser_omp_clause_collapse): Same.
4625         (cp_parser_omp_clause_default): Same.
4626         (cp_parser_omp_clause_if): Same.
4627         (cp_parser_omp_clause_nowait): Same.
4628         (cp_parser_omp_clause_num_threads): Same.
4629         (cp_parser_omp_clause_ordered): Same.
4630         (cp_parser_omp_clause_schedule): Same.
4631         (cp_parser_omp_clause_untied): Same.
4632         (cp_parser_omp_for_loop): Same.
4633         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
4634         * c-tree.h (c_start_case): Add location argument.
4635         (c_process_expr_stmt): Same.
4636         (c_finish_goto_*): Same.
4637         * tree-parloops.c (initialize_reductions): Pass location to
4638         build_omp_clause.
4639         (create_parallel_loop): Same.
4640         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
4641         (gfc_trans_omp_reduction_list): Same.
4642         (gfc_trans_omp_clauses): Same.
4643         (gfc_trans_omp_do): Same.
4644         * c-typeck.c (c_finish_goto_label): Same.
4645         (c_finish_goto_ptr): New location argument.
4646         (c_start_case): Same.
4647         (emit_side_effect_warnings): Same.
4648         (c_process_expr_stmt): Same.
4649         (c_finish_stmt_expr): Same.
4650         (c_finish_omp_clauses): Use error_at instead of error.
4651         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
4652         build_omp_clause.
4653         * c-omp.c (c_split_parallel_clauses): New location argument.
4654         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
4655         to build_omp_clause.
4656         (convert_local_reference_stmt): Same.
4657         (convert_gimple_call): Same.
4658         * c-common.h (c_split_parallel_clauses): New argument.
4659         * c-parser.c (c_parser_statement_after_labels): Pass location to
4660         c_finish_goto_label.
4661         (c_parser_switch_statement): Pass location to c_start_case.
4662         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
4663         and c_process_expr_stmt.
4664         (c_parser_omp_variable_list): Add location argument.
4665         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
4666         (c_parser_omp_clause_default): Same.
4667         (c_parser_omp_clause_if): Same.
4668         (c_parser_omp_clause_num_threads): Same.
4669         (-c_parser_omp_clause_ordered): Same.
4670         (c_parser_omp_clause_reduction): Pass location to
4671         c_parser_omp_variable_list.
4672         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
4673         (c_parser_omp_clause_untied): Same.
4674         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
4675         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
4676
4677         * c-tree.h (check_for_loop_decls, undeclared_variable,
4678         build_component_ref, build_array_ref, build_external_ref,
4679         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
4680         build_conditional_expr, build_compound_expr, c_cast_expr,
4681         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
4682         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
4683         argument.
4684         * c-semantics.c (build_stmt): Same.
4685         (build_case_label): Same.
4686         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
4687         (undeclared_variable): New argument.
4688         (make_label): Same.
4689         (lookup_label): Pass location on down.
4690         (define_label): Same.
4691         (finish_decl): Same.
4692         (build_compound_literal): Same.
4693         (finish_struct): Same.
4694         (finish_function): Do not set location here.
4695         (check_for_loop_decls): New argument.
4696         * tree.c (save_expr): Set location.
4697         (build_empty_stmt): New argument.
4698         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
4699         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
4700         * builtins.c (gimplify_va_arg_expr): Use locations.
4701         (expand_builtin_sync_operation): Same.
4702         * c-typeck.c (build_component_ref): New argument.
4703         (build_array_ref): Same.
4704         (build_external_ref): Same.
4705         (c_expr_sizeof_expr): Same.
4706         (c_expr_sizeof_type): Same.
4707         (parser_build_unary_op): Same.
4708         (build_conditional_expr): Same.
4709         (build_compound_expr): Pass location on down.
4710         (build_compound_expr): New argument.
4711         (build_c_cast): Same.
4712         (c_cast_expr): Same.
4713         (build_asm_expr): Same.
4714         (c_finish_return): Same.
4715         (c_process_expr_stmt): Pass location on down.
4716         (c_finish_stmt_expr): New argument.
4717         (push_clenaup): Same.
4718         (c_finish_omp_parallel): Same.
4719         (c_finish_omp_task): Same.
4720         * gimplify.c (gimplify_call_expr): Pass location on down.
4721         * c-omp.c (c_finish_omp_master): New argument.
4722         (c_finish_omp_critical): Same.
4723         (c_finish_omp_ordered): Same.
4724         (c_finish_omp_barrier): Same.
4725         (-c_finish_omp_taskwait): Same.
4726         (c_finish_omp_atomic): Same.
4727         (c_finish_omp_flush): Same.
4728         * tree-inline.c (copy_tree_body_r): Pass location on down.
4729         (inline_forbidden_p): Remove use of input_location.
4730         * c-gimplify.c (c_build_bind_expr): New argument.
4731         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
4732         (c_sizeof_or_alignof_type): New argument.
4733         (c_alignof_expr): Same.
4734         (build_va_arg): Same.
4735         (c_add_case_label): Same.
4736         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
4737         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
4738         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
4739         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
4740         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
4741         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
4742         New argument.
4743         * stub-objc.c (objc_build_selector_expr): Same.
4744         (objc_build_throw_stmt): Same.
4745         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
4746         (c_parser_initelt): Same.
4747         (c_parser_compound_statement): Same.
4748         (c_parser_compound_statement_nostart): Same.
4749         (c_parser_label): Same.
4750         (c_parser_statement_after_labels): Same.
4751         (c_parser_if_body): Same.
4752         (c_parser_else_body): Same.
4753         (c_parser_if_statement): Same.
4754         (c_parser_switch_statement): Same.
4755         (c_parser_while_statement): Same.
4756         (c_parser_do_statement): Same.
4757         (c_parser_for_statement): Same.
4758         (c_parser_asm_statement): Same.
4759         (c_parser_conditional_expression): Same.
4760         (c_parser_binary_expression): Same.
4761         (c_parser_cast_expression): Same.
4762         (c_parser_unary_expression): Same.
4763         (c_parser_sizeof_expression): Same.
4764         (c_parser_alignof_expression): Same.
4765         (c_parser_postfix_expression): Same.
4766         (c_parser_expression): Same.
4767         (c_parser_objc_receiver): Same.
4768         (c_parser_omp_variable_list): Same.
4769         (c_parser_omp_structured_block): Same.
4770         (c_parser_omp_atomic): New argument.
4771         (c_parser_omp_barrier): Same.
4772         (c_parser_omp_critical): Same.
4773         (c_parser_omp_flush): Pass location on down.
4774         (c_parser_omp_for_loop): New argument.
4775         (c_parser_omp_for): Same.
4776         (c_parser_omp_master): Same.
4777         (c_parser_omp_ordered): Same.
4778         (c_parser_omp_sections_scope): Same.
4779         (c_parser_omp_sections): Same.
4780         (c_parser_omp_parallel): Same.
4781         (c_parser_omp_single): Same.
4782         (c_parser_omp_task): Same.
4783         (c_parser_omp_taskwait): Pass location on down.
4784         (c_parser_omp_construct): Same.
4785         (c_parser_omp_threadprivate): Same.
4786         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
4787         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
4788         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
4789         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
4790         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
4791         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
4792         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
4793         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
4794         config/i386/i386.c, stmt.c:
4795         Add location argument to the following function definitions and/or
4796         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
4797         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
4798         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
4799         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
4800         do_case, c_finish_bc_stmt, build_compound_literal,
4801         build_function_call.
4802         * c-decl.c (build_compound_literal): Add location argument.
4803         Make all diagnostic calls use location.
4804         (start_struct): Same.
4805         (finish_struct): Same.
4806         (start_enum): Same.
4807         (build_enumerator): Same.
4808         (start_function): Same.
4809         (grokdeclarator): Make all diagnostic calls use location.
4810         (store_parm_decls_oldstyle): Same.
4811         * c-typeck.c (build_function_call): Add location argument.
4812         Make all diagnostic calls use location.
4813         (do_case): Same.
4814         (c_finish_bc_stmt): Same.
4815         * tree-nested.c (get_trampoline_type): Add argument.
4816         Pass location to build_decl.
4817         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
4818         * rtl.h (RTL_LOCATION): New.
4819         * c-common.c (c_add_case_label): Add location argument.
4820         Make all diagnostic calls use location.
4821         * c-common.h: Add location argument to make_fname_decl, do_case,
4822         c_add_case_label, build_function_call, resolve_overloaded_builtin.
4823         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
4824         Set it appropriately for every case.  Pass enum_loc to start_enum
4825         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
4826         parser_xref_tag.
4827         (c_parser_struct_or_union_specifier): Save location.  Use it for
4828         start_struct, finish_struct, and parser_xref_tag.
4829
4830 2009-06-12  Ian Lance Taylor  <iant@google.com>
4831
4832         * fold-const.c (fold_unary): Rename local variable and to and_expr.
4833
4834         * c-opts.c (c_common_handle_option): For -Wc++-compat set
4835         cpp_opts->warn_cxx_operator_names.
4836
4837 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4838
4839         PR tree-opt/38865
4840         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
4841         is returns NULL and OP is a VCE, look through the VCE.
4842
4843 2009-06-12  Ian Lance Taylor  <iant@google.com>
4844
4845         PR bootstrap/40430
4846         * collect2.c (main): Use CONST_CAST2 in code inside #if
4847         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
4848
4849 2009-06-12  Joey Ye  <joey.ye@intel.com>
4850
4851         PR middle-end/39146
4852         * cfgexpand.c (get_decl_align_unit): Update
4853         max_used_stack_slot_alignment with align instead of
4854         stack_alignment_needed.
4855
4856         * function.c (assign_stack_local_1): Update
4857         max_used_stack_slot_alignment with alignment_in_bits instead
4858         of stack_alignment_needed.
4859         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
4860         here.
4861
4862 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
4863
4864         * dwarf2out.c (last_var_location_insn): New variable.
4865         (dwarf2out_end_epilogue): Clear last_var_location_insn.
4866         (dwarf2out_var_location): Don't record anything after last real
4867         insn.  Only change labels if there were any real instructions
4868         in between last note and this one, or if changed sections.
4869
4870 2009-06-11  Richard Henderson  <rth@redhat.com>
4871
4872         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
4873         note when storing the frame pointer in a register.
4874         (FRP): Don't redefine to nothing for epilogue.
4875         (alpha_expand_epilogue): Mark register and sp restores.
4876         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
4877
4878         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
4879         when gen_lowpart is needed.
4880
4881 2009-06-11  Richard Henderson  <rth@redhat.com>
4882
4883         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
4884
4885         * dwarf2out.c (need_data_align_sf_opcode): New.
4886         (div_data_align): Move earlier.
4887         (def_cfa_1, reg_save): Use it.
4888
4889 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
4890
4891         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
4892         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
4893         (ix86_handle_option): Handle OPT_mcrc32.
4894         (ix86_target_string): Add -mcrc32.
4895         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
4896
4897         * config/i386/i386.h (TARGET_CRC32): New.
4898
4899         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
4900         (sse4_2_crc32di): Likewise.
4901
4902         * config/i386/i386.opt (mcrc32): New.
4903
4904         * doc/invoke.texi: Document -mcrc32.
4905
4906 2009-06-11  Richard Henderson  <rth@redhat.com>
4907
4908         * common.opt (gdwarf-): Accept a version number.
4909         * doc/invoke.texi (gdwarf-): Update docs.
4910         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
4911         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
4912         version level, and record it.
4913
4914         * dwarf2.h (DW_CIE_VERSION): Remove.
4915         * dwarf2out.c (DWARF_VERSION): Remove.
4916         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
4917         (output_call_frame_info): Use CIE version 3 for dwarf3,
4918         or if the return register column is out of range for version 1.
4919         (dwarf_stack_op_name): Add all dwarf3 values.
4920         (DEBUG_PUBTYPES_SECTION): New.
4921         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
4922         encoding change for dwarf3.
4923         (output_die) [dw_val_class_die_ref]: Likewise.
4924         (output_compilation_unit_header): Emit correct version for dwarf3.
4925         (output_line_info): Likewise.
4926         (output_pubnames): Update for DWARF_VERSION removal.
4927         (output_aranges): Likewise.
4928         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
4929         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
4930         (dwarf2out_finish): Likewise.
4931
4932 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
4933
4934         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
4935         in r148403.
4936
4937 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
4938
4939         PR c/39252
4940         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
4941         * builtins.c (expand_builtin_unreachable): New function.
4942         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
4943         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
4944         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
4945         successors.
4946         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
4947         searching for missing barriers.
4948
4949 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4950
4951         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
4952         when -fprofile-generate* was passed.
4953         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
4954
4955 2009-06-11  Anthony Green  <green@moxielogic.com>
4956
4957         * config/moxie/moxie.md: Define length attribute for all instructions.
4958         (rCC): Define.
4959         (*b<cond:code>): Support limited branch ranges for new PC-relative
4960         branch instructions.
4961         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
4962
4963 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
4964
4965         * config/i386/i386.c (min_insn_size): Use get_attr_length
4966         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
4967         For __asm return 0.
4968
4969         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
4970         instead of emit_insn_before.
4971
4972 2009-06-10  Ian Lance Taylor  <iant@google.com>
4973
4974         PR bootstrap/40408
4975         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
4976         GIMPLE_SWITCH.
4977
4978 2009-06-10  Revital Eres  <eres@il.ibm.com>
4979
4980         * passes.c (init_optimization_passes): Reschedule
4981         predictive-commoning pass before complete unroll pass.
4982
4983 2009-06-10  Martin Jambor  <mjambor@suse.cz>
4984
4985         * cgraph.c (cgraph_node_can_be_local_p): New function.
4986         (cgraph_make_node_local): New function.
4987         * cgraph.h (cgraph_node_can_be_local_p): Declare.
4988         (cgraph_make_node_local): Declare.
4989
4990 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
4991
4992         * tree.h (tree_base): Add packed_flag and user_align fields.
4993         Decrease size of spare field.
4994         (TYPE_USER_ALIGN): Use user_align from tree_base.
4995         (DECL_USER_ALIGN): Likewise.
4996         (TYPE_PACKED): Use packed_flag from tree_base.
4997         (DECL_PACKED): Likewise.
4998         (tree_type): Delete packed_flag and user_align fields.  Widen
4999         precision field.  Widen mode field and shuffle fields to align
5000         mode on an 8-bit boundary.
5001         (tree_decl_common): Delete decl_flag_1 and user_align fields.
5002         Renumber decl_flag_* fields.  Fix comments.  Widen
5003         decl_common_unused field.
5004         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
5005         (DECL_EXTERNAL): Likewise.
5006         (DECL_BIT_FIELD): Likewise.
5007         (DECL_NONADDRESSABLE_P): Likewise.
5008         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
5009         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
5010
5011 2009-06-10  Ian Lance Taylor  <iant@google.com>
5012
5013         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
5014         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
5015         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
5016         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
5017         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
5018         DEF_VEC_ALLOC_FUNC_P.
5019         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
5020         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
5021         DEF_VEC_ALLOC_FUNC_O.
5022         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
5023         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
5024         DEF_VEC_ALLOC_FUNC_I.
5025         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
5026         (vec_stack_p_reserve_exact_1): Declare.
5027         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
5028         (vec_stack_free): Declare.
5029         (VEC_stack_alloc): Define.
5030         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
5031         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
5032         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
5033         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
5034         for void_p.
5035         (stack_vecs): New static variable.
5036         (vec_stack_p_reserve_exact_1): New function.
5037         (vec_stack_o_reserve_1): New static function.
5038         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
5039         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
5040         (vec_stack_free): New function.
5041         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
5042         (VEC_df_ref_stack_alloc): Define.
5043         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
5044         DEF_VEC_ALLOC_P_STACK.
5045         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
5046         (struct df_collection_rec): Change _vec fields to VEC.  Remove
5047         _use fields.
5048         (df_free_collection_rec): Adjust for new fields.
5049         (df_insn_rescan): Use new df_collection_rec fields.
5050         (df_notes_rescan, df_canonize_collection_rec): Likewise.
5051         (df_ref_create_structure, df_ref_record): Likewise.
5052         (df_get_conditional_uses, df_get_call_refs): Likewise.
5053         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
5054         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
5055         (df_record_exit_block_uses, df_bb_verify): Likewise.
5056         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
5057         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
5058         Remove count parameter.  Change return type to void.  Change all
5059         callers.
5060         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
5061         Remove count parameter.  Change return type to void.  Change all
5062         callers.
5063         (df_install_refs): Change old_vec parameter to VEC.  Remove count
5064         parameter.  Change all callers.
5065         (df_install_mws): Change old_vec parameter to VEC.  Remove count
5066         parameter.  Change all callers.
5067         (df_refs_verify): Change new_rec parameter to VEC.  Change call
5068         callers.
5069         (df_mws_verify): Likewise.
5070
5071 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
5072
5073         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
5074
5075 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
5076
5077         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
5078
5079 2009-06-10  Anthony Green  <green@moxielogic.com>
5080
5081         * config/moxie/crti.asm: New file.
5082         * config/moxie/crtn.asm: New file.
5083         * config/moxie/moxie.c: New file.
5084         * config/moxie/moxie.h: New file.
5085         * config/moxie/sfp-machine.h: New file.
5086         * config/moxie/moxie-protos.h: New file.
5087         * config/moxie/t-moxie: Created.
5088         * config/moxie/t-moxie-softfp: Created.
5089         * config/moxie/moxie.md: Created.
5090         * config/moxie/constraints.md: Created.
5091         * config.gcc: Add moxie support.
5092         * doc/md.texi (Machine Constraints): Add moxie constraints.
5093         * doc/contrib.texi (Contributors): Mention moxie port.
5094         * doc/install.texi (Specific): Mention the moxie port.
5095
5096 2009-06-09  Ian Lance Taylor  <iant@google.com>
5097
5098         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
5099         compiling with C++.
5100         * optabs.c (optab_table): Only use designated initializers if
5101         HAVE_DESIGNATED_INITIALIZERS is defined.
5102         (convert_optab_table): Likewise.
5103         (init_optabs): Always call init_insn_codes if
5104         HAVE_DESIGNATED_INITIALIZERS is not defined.
5105
5106 2009-06-09  Ian Lance Taylor  <iant@google.com>
5107
5108         * targhooks.c (default_builtin_vectorized_function): Change fn
5109         parameter to unsigned int.
5110         (default_builtin_vectorized_conversion): Change code parameter to
5111         unsigned int.
5112         (default_builtin_reciprocal): Change fn parameter to unsigned int.
5113         * targhooks.h: Update declarations.
5114         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
5115         parameter to unsigned int.
5116
5117         * c-typeck.c (comptypes_check_enum_int): New static function.
5118         (comptypes_internal): Add enum_and_int_p parameter.  Change all
5119         callers.
5120         (comp_target_types): Add location parameter.  Change all callers.
5121         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
5122         Change all callers.
5123         (function_types_compatible_p, type_lists_compatible_p): Likewise.
5124         (build_conditional_expr): Add colon_loc parameter.  Change all
5125         callers.
5126         (convert_for_assignment): Add location parameter.  Change all callers.
5127         * c-parser.c (c_parser_conditional_expression): Pass location of
5128         colon to build_conditional_expr.
5129         * c-tree.h (build_conditional_expr): Update declaration.
5130
5131 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
5132
5133         * graphite.c: Revert previous patch.
5134
5135 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
5136
5137         PR bootstrap/40103
5138         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
5139
5140 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
5141
5142         * tree-ssa-loop-prefetch.c
5143         (loop_prefetch_arrays): Fixed a portability problem in printf format
5144         string.
5145
5146 2009-06-09  Martin Jambor  <mjambor@suse.cz>
5147
5148         PR tree-optimization/40351
5149         * tree-sra.c (propagate_subacesses_accross_link): Check that a
5150         refrence to a potential artifical subaccess can be constructed.
5151
5152 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
5153
5154         * config/sh/sh-protos.h (sh_optimization_options): Declare.
5155         (sh_override_options): Likewise.
5156         * config/sh/sh.c: Include params.h.
5157         (sh_optimization_options): New.
5158         (sh_override_options): Likewise.
5159         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
5160         (OVERRIDE_OPTIONS): Use sh_override_options.
5161
5162 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
5163
5164         * dwarf2out.c (emit_cfa_remember): New variable.
5165         (add_fde_cfi): If emit_cfa_remember, recurse to add
5166         DW_CFA_remember_state first.
5167         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
5168         instead just set emit_cfa_remember.
5169
5170 2009-06-08  Jan Hubicka  <jh@suse.cz>
5171
5172         PR debug/40126
5173         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
5174
5175 2009-06-08  Jan Hubicka  <jh@suse.cz>
5176
5177         PR middle-end/39834
5178         * cgraphunit.c (save_inline_function_body): Do not copy transform
5179         hooks for saved inline bodies.
5180         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
5181         for given function.
5182
5183 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
5184
5185         * jump.c (returnjump_p): Handle delayed branches.  Add missing
5186         function comment.
5187
5188 2009-06-08  Jan Hubicka  <jh@suse.cz>
5189
5190         PR middle-end/40102
5191         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
5192         original node might've been modified.
5193         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
5194
5195 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
5196
5197         * tree-object-size.c (addr_object_size): Add OSI argument.
5198         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
5199         (compute_builtin_object_size, expr_object_size): Adjust callers.
5200         (plus_stmt_object_size): Call addr_object_size instead of
5201         compute_builtin_object_size.
5202
5203 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
5204             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5205         
5206         * tree-ssa-loop-prefetch.c 
5207         (gather_memory_references): Introduced a counter for the number of 
5208         memory references.
5209         (anything_to_prefetch_p): Introduced a counter for the number of 
5210         prefetches.
5211         (is_loop_prefetching_profitable): New function with a cost model 
5212         for prefetching.
5213         (loop_prefetch_arrays): Use the new cost model to determine if 
5214         prefetching is profitable.
5215         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
5216         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
5217         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
5218         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
5219         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
5220         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
5221         
5222 2009-06-08  Michael Matz  <matz@suse.de>
5223
5224         PR debug/40012
5225         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
5226         partitions use the same.
5227         (expand_one_var): Deal with DECL_RTL sometimes begin set also
5228         for basevars of SSA_NAMEs.
5229         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
5230         to not expand them twice.
5231         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
5232         multiple places.
5233
5234 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
5235
5236         * common.opt (fcompare-debug=, fcompare-debug-second): New.
5237         (fdump-final-insns=, gtoggle): New.
5238         * doc/invoke.texi: Document them.
5239         * final.c (rest_of_clean_state): Dump final insn stream.
5240         * gcc.c (invoke_as): Hook in -fcompare-debug.
5241         (static_spec_functions): Add compare-debug-dump-opt,
5242         compare-debug-self-opt and compare-debug-auxbase-opt.
5243         (compare_debug, compare_debug_second, compare_debug_opt): New.
5244         (switches_debug_check, n_switches_debug_check): New.
5245         (debug_auxbase_opt, debug_check_temp_file): New.
5246         (process_command): Handle -fno-compare-debug, -fcompare-debug and
5247         -fcompare-debug=*.
5248         (do_self_spec): Handle arguments after switches.
5249         (do_spec_1): Add .gk extension to temp file basenames for compare.
5250         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
5251         (cc1_options): Use it instead of normal auxbase computation for
5252         the second compare-debug compilation.
5253         (compare_files): New.
5254         (main): Set up and implement compare debug mode.
5255         (compare_debug_dump_opt_spec_function): New.
5256         (compare_debug_self_opt_spec_function): New.
5257         (compare_debug_auxbase_opt_spec_function): New.
5258         * toplev.c (process_options): Handle flag_gtoggle,
5259         flag_dump_final_insns.
5260         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
5261         during -fcompare-debug-second compilation.
5262
5263 2009-06-07  Ian Lance Taylor  <iant@google.com>
5264
5265         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
5266         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
5267
5268         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
5269         with no default node.  Change warning with %H to warning_at.
5270         Don't clear warn_switch around case checking.
5271         * doc/invoke.texi (Warning Options): Clarify distinction between
5272         -Wswitch and -Wswitch-enum.
5273
5274 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5275
5276         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
5277
5278 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5279
5280         * gbl-ctors.h: Add header guard.
5281
5282 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5283
5284         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
5285         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
5286         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
5287         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
5288         prototypes for removed functions.
5289         (expressions_equal_p): Move to ...
5290         * tree-ssa-sccvn.h: ... here and ...
5291         * matrix-reorg.c: ... adjust includes.
5292
5293 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5294
5295         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
5296
5297 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5298
5299         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
5300         (finish_function): Remove erroneous whitespace.
5301
5302 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5303
5304         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
5305         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
5306
5307 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5308
5309         * errors.c (internal_error): Commentary typo fix.
5310         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
5311         * tree-ssa-pre.c: Ditto.
5312
5313 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5314
5315         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
5316         them is supposed to hold actual statements.
5317
5318 2009-06-06  Ian Lance Taylor  <iant@google.com>
5319
5320         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
5321         empty statements can now have attributes.
5322
5323 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
5324
5325         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
5326         * config/mips/mips.md: Ditto.
5327
5328 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
5329
5330         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
5331         _RELOCATABLE.
5332         (__eabi_uconvert): Likewise.
5333
5334 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
5335
5336         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
5337         CFI_* definitions with IN_GCC.
5338
5339 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
5340
5341         * xcoffout.h (xcoffout_source_line): Update prototype.
5342
5343 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5344
5345         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
5346         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
5347
5348 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
5349
5350         PR middle-end/40340
5351         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
5352         inlined_function_outer_scope_p blocks for artificial inlines
5353         even at -g0/-g1.
5354         * tree.c (tree_nonartificial_location): Rewrite using
5355         block_nonartificial_location.
5356
5357 2009-06-05  Revital Eres  <eres@il.ibm.com>
5358             Leehod Baruch  <leehod@il.ibm.com>
5359
5360         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
5361         (expand_expr_real_1): Remove comment.
5362         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
5363         Vectorize misaligned access when the target supports it.
5364         (vect_supportable_dr_alignment): Check for unaligned access support.
5365         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
5366         and remove asset.
5367
5368 2009-06-05  Julian Brown  <julian@codesourcery.com>
5369
5370         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
5371         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
5372
5373 2009-06-05  Richard Guenther  <rguenther@suse.de>
5374
5375         PR bootstrap/40350
5376         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
5377         as possibly unused.
5378
5379 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
5380
5381         * config/s390/s390.c (global_not_special_regno_p): New static inline.
5382         (save_gprs): Don't tell unwinder when a global register is saved.
5383         (s390_emit_epilogue): Emit needed epilogue unwind info.
5384
5385 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
5386
5387         * dwarf2out.c (deferred_asm_name): New.
5388         (add_name_and_src_coords_attributes): Defer creation of
5389         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
5390         computed yet.
5391         (move_linkage_attr): New.
5392         (dwarf2out_finish): Revisit deferrals and emit attributes at the
5393         right place.
5394
5395 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
5396
5397         * tree-nested.c (finalize_nesting_tree_1): Declare the
5398         frame_decl in the binding tree.
5399
5400 2009-06-04  Cary Coutant  <ccoutant@google.com>
5401
5402         * basic-block.h (struct basic_block_def): Add discriminator field.
5403         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
5404         callers.
5405         * debug.c (do_nothing_debug_hooks): Add additional entry.
5406         (debug_nothing_int_charstar_int): New function.
5407         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
5408         (debug_nothing_int_charstar_int): New declaration.
5409         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
5410         discriminator value in .loc directive.
5411         * final.c (last_discriminator): New variable.
5412         (discriminator): New variable.
5413         (final_start_function): Initialize above variables, pass current
5414         discriminator to debug hook.
5415         (notice_source_line): Check for discriminator change.
5416         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
5417         * sdbout.c (sdbout_source_line): New parameter.
5418         * tree-cfg.c (struct locus_discrim_map): New structure type.
5419         (discriminator_per_locus): New hash table.
5420         (build_gimple_cfg): Allocate and free discriminator hash table.
5421         (make_edges): Call assign_discriminator.
5422         (locus_map_hash): New function.
5423         (locus_map_eq): New function.
5424         (next_discriminator_for_locus): New function.
5425         (same_line_p): New function.
5426         (assign_discriminator): New function.
5427         (make_cond_expr_edges): Call assign_discriminator.
5428         (make_gimple_switch_edges): Likewise.
5429         (first_non_label_stmt): New function.
5430         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
5431         all callers.
5432         * xcoffout.c (xcoffout_source_line): Add new parameter.
5433
5434         * configure.ac (gcc_cv_as_discriminator): New configury check for
5435         gas support for discriminator.
5436         * configure: Regenerate.
5437         * config.in: Regenerate.
5438
5439 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5440
5441         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
5442         val after checking for integers.
5443
5444 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
5445
5446         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
5447         X64_REGPARM_MAX.
5448         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
5449         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
5450         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
5451         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
5452         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
5453         X64_SSE_REGPARM_MAX.
5454         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
5455         X64_SSE_REGPARM_MAX.
5456
5457 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
5458
5459         * gcc.c (report_times_to_file): New.
5460         (execute): Implement it.
5461         (process_command): Support -time=.
5462         * doc/invoke.texi: Document it.
5463
5464 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
5465
5466         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
5467         that have value exprs.
5468
5469 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
5470
5471         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
5472         declarations for constants until...
5473         (dw2_output_indirect_constant_1): ... this point.
5474
5475 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
5476
5477         PR target/10242
5478         * arm.md (arm_addsi3): Don't try to split an add with an
5479         eliminable register until after reload has completed.
5480
5481 2009-06-03  Ian Lance Taylor  <iant@google.com>
5482
5483         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
5484         * genattrtab.c (write_length_unit_log): Likewise.
5485         * genchecksum.c (dosum): Likewise.
5486         * gengtype.c (write_rtx_next): Likewise.
5487         (finish_root_table, write_roots): Likewise.
5488         * gimple.c (gimple_ops_offset_): Likewise.
5489         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
5490         * config/arc/arc.c (arc_attribute_table): Likewise.
5491         * config/arm/arm.c (arm_attribute_table): Likewise.
5492         * config/avr/avr.c (avr_attribute_table): Likewise.
5493         * config/crx/crx.c (crx_attribute_table): Likewise.
5494         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
5495         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
5496         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
5497         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
5498         * config/sh/sh.c (sh_attribute_table): Likewise.
5499         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
5500         * config/spu/spu.c (spu_attribute_table): Likewise.
5501         * config/v850/v850.c (v850_attribute_table): Likewise.
5502
5503         * config/alpha/alpha.c (vms_attribute_table): Make static.
5504         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
5505         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
5506         * config/mips/mips.c (mips_attribute_table): Likewise.
5507
5508         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
5509         $(SYSTEM_H).
5510         (cc1-checksum.o): Likewise.
5511
5512 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
5513
5514         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
5515
5516 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
5517
5518         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
5519         insn if it is changing sp.  Use gen_add3_insn instead of
5520         conditionally gen_addsi3 and gen_adddi3.
5521         (offset_below_red_zone_p): New static inline function.
5522         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
5523         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
5524         * config/rs6000/ppc-asm.h: Include auto-host.h.
5525         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
5526         CFI_RESTORE): Define.
5527         * config/rs6000/crtresxgpr.asm: Add unwind info.
5528         * config/rs6000/crtresxfpr.asm: Likewise.
5529         * config/rs6000/crtresgpr.asm: Likewise.
5530         * config/rs6000/crtresfpr.asm: Likewise.
5531         * config/rs6000/crtsavgpr.asm: Likewise.
5532         * config/rs6000/crtsavfpr.asm: Likewise.
5533
5534         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
5535         argument of DWARF2_FRAME_REG_OUT macros.
5536
5537 2009-06-03  Julian Brown  <julian@codesourcery.com>
5538
5539         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
5540         words or less (including TImode) in core registers.
5541
5542 2009-06-03  Richard Guenther  <rguenther@suse.de>
5543
5544         PR middle-end/40328
5545         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
5546
5547 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
5548
5549         * statistics.c (statistics_counter_event): Do not record event 
5550         in pass dump if its number == -1.
5551         (curr_statistics_hash): Add assert that we never get passes 
5552         with static number == -1.
5553
5554 2009-06-03  Richard Guenther  <rguenther@suse.de>
5555             Andrey Belevantsev  <abel@ispras.ru>
5556
5557         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
5558         non-BLKmode arrays addressable.
5559
5560 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
5561
5562         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
5563         * config/m68k/m68k.h: ... here.
5564         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
5565         m68k and fido.
5566
5567 2009-06-03  Martin Jambor  <mjambor@suse.cz>
5568
5569         PR tree-optimization/40323
5570         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
5571         assignment.
5572
5573 2009-06-03  Richard Guenther  <rguenther@suse.de>
5574
5575         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
5576         consistently.
5577
5578 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
5579
5580         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
5581         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
5582         JUMP_TABLE_DATA_P where applicable.
5583         * config/sh/sh.c: Ditto.
5584         * config/sh/sh.h: Ditto.
5585         * config/sh/sh.md: Ditto.
5586         * config/sh/symbian.c: Ditto.
5587
5588 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
5589
5590         * config/i386/driver-i386.c (describe_cache): Optimize
5591         concatenation of strings.  Use snprintf instead of sprintf.
5592         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
5593         target when not compiling with GCC.
5594
5595 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
5596
5597         * config/sh/sh.c: Revert last change.
5598         (sh_expand_epilogue): Emit a blockage insn before the frame
5599         pointer adjustment unconditionally.
5600
5601 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5602
5603         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
5604         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
5605         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
5606         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
5607         to COLLECT_GCC_OPTIONS.
5608
5609 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5610
5611         * collect2.c (target_system_root): New variable.
5612         (main): Handle --sysroot=.
5613         (ignore_library): Strip the sysroot from the library path.
5614
5615 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5616
5617         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
5618         (collect2.o): Depend on collect2-aix.h.
5619         (collect2-aix.o): New rule.
5620         * collect2-aix.h: New file.
5621         * collect2-aix.c: Likewise.
5622         * collect2.c: Include collect2-aix.h.  Don't undefine
5623         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
5624         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
5625         Use TARGET_AIX_VERSION instead of _AIX51.
5626         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
5627         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
5628         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
5629         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
5630         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
5631
5632 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5633
5634         * collect2.c (ignore_library): Avoid premature post-increment
5635         and null deference.
5636
5637 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5638
5639         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
5640         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
5641         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
5642         CROSS_DIRECTORY_STRUCTURE too.
5643         (LINK_LIBG_SPEC): Likewise.
5644         (LIB_SPEC): Add %R to sysroot paths.
5645         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
5646         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
5647         * config/rs6000/aix51.h: As for aix43.h.
5648         * config/rs6000/aix52.h: Likewise.
5649         * config/rs6000/aix53.h: Likewise.
5650         * config/rs6000/aix61.h: Likewise.
5651         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
5652         to the beginning of sysroot paths.
5653
5654 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5655
5656         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
5657         INSN_LISTs that are out of the REG_NOTE range.
5658
5659 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5660
5661         * loop-unroll.c (struct iv_to_split): Add pointer to next.
5662         (struct var_to_expand): Likewise.
5663         (struct opt_info): Add head and tail for linked lists of the above.
5664         (analyze_insn_to_expand_var): Initialize next.
5665         (analyze_iv_to_split_insn): Likewise.
5666         (analyze_insns_in_loop): Create linked lists.
5667         (allocate_basic_variable): Simplify for use without hash table.
5668         (insert_var_expansion_initialization): Likewise, make it type-safer.
5669         (combine_var_copies_in_loop_exit): Likewise.
5670         (apply_opt_in_copies): Walk lists rather than hash tables.
5671         (release_var_copies): Simplified and inlined by hand into...
5672         (free_opt_info): ... this function.
5673
5674 2009-06-02  Richard Guenther  <rguenther@suse.de>
5675
5676         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
5677         for field decls.
5678
5679 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5680
5681         * cfgexpand.c (gimple_expand_cfg): Discard the source location
5682         only for builtins that are not overridden.
5683
5684 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5685
5686         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
5687         label string.
5688
5689 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5690
5691         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
5692
5693 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5694
5695         * combine.c (move_deaths): Compare LUIDs within the same BB only.
5696
5697 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5698
5699         * common.opt (fdump-unnumbered-links): New.
5700         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
5701         * print-rtl.c (flag_dump_unnumbered_links): New.
5702         (print_rtx): Test it.
5703
5704 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
5705
5706         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
5707         push/pop multiple to 8-byte alignment.
5708
5709 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
5710
5711         * config/i386/i386.c (queued_cfa_restores): New static variable.
5712         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
5713         functions.
5714         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
5715         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
5716         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
5717         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
5718         note unconditionally.
5719         (ix86_emit_restore_regs_using_mov): Likewise.
5720         (ix86_emit_restore_sse_regs_using_mov): Likewise.
5721         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
5722         it through to ix86_emit_restore_reg_using_pop.
5723         (ix86_emit_leave): Add RED_OFFSET argument.  Call
5724         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
5725         instead of adding REG_CFA_OFFSET note unconditionally.
5726         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
5727         the above functions.  Call ix86_add_queued_cfa_restore_notes when
5728         needed.
5729
5730         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
5731         force output of the label even for dwarf2out_do_cfi_asm.
5732         (add_fde_cfi): If -g2 and above and cfi might change CFA,
5733         force creation of CFI label and chain DW_CFA_set_loc jumping to it
5734         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
5735         caller.
5736         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
5737         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
5738         dwarf2out_cfi_label callers.
5739         * tree.h (dwarf2out_cfi_label): Adjust prototype.
5740         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
5741         Adjust dwarf2out_cfi_label callers.
5742         * config/vax/vax.c (vax_output_function_prologue): Likewise.
5743
5744         * config/i386/i386.h (struct machine_cfa_state,
5745         struct machine_function): Guard with ifndef USED_FOR_TARGET
5746         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
5747
5748         PR other/40024
5749         * emutls.c (__emutls_get_address): Change arr->size to mean number
5750         of allocated arr->data entries instead of # of slots + 1.
5751
5752         PR middle-end/40316
5753         * recog.c (peep2_reinit_state): New function.
5754         (peephole2_init_state): Use it at the end of a basic block and also
5755         when seeing a RTX_FRAME_RELATED_P insn.
5756
5757 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
5758
5759         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
5760         fixuns_truncrfdi2): New.
5761         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
5762         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
5763         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
5764         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
5765         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
5766         *recip_approx): Remove.
5767         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
5768         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
5769         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
5770         move to div.md.
5771         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
5772         setf_exp_rf): New.
5773
5774 2009-06-01  Ian Lance Taylor  <iant@google.com>
5775
5776         * attribs.c (register_attribute): Use CONST_CAST.
5777         * collect2.c (main): Use CONST_CAST2.
5778         (scan_prog_file): Likewise.
5779         * gcc.c (process_command, main): Likewise.
5780         * toplev.c (toplev_main): Likewise.
5781
5782         * c-typeck.c (handle_warn_cast_qual): New static function,
5783         partially broken out of build_c_cast.
5784         (build_c_cast): Call handle_warn_cast_qual.
5785         * doc/invoke.texi (Warning Options): Document new effect of
5786         -Wcast-qual.
5787
5788 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
5789
5790         * diagnostic.c (diagnostic_build_prefix): Always print columns.
5791         (diagnostic_report_current_module): Print columns.
5792         * common.opt (flag_show_column): Enable by default.
5793
5794 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
5795
5796         * alias.c (find_base_term): Check for NULL term before returning.
5797
5798 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
5799
5800         Revert due to PR40320:
5801         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
5802         * calls.c (emit_library_call_value_1): Don't force_operand for move
5803         and push insns.
5804
5805 2009-06-01  Olivier Hainque  <hainque@adacore.com>
5806             Eric Botcazou  <ebotcazou@adacore.com>
5807
5808         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
5809         to be processed as a bitfield for constructor output purposes.
5810         * output.h (initializer_constant_valid_for_bitfield_p): Declare
5811         new function.
5812         * varasm.c (oc_local_state): New type, output_constructor
5813         local state to support communication with helpers.
5814         (oc_outer_state): New type, output_constructor outer state of
5815         relevance in recursive calls.
5816         (output_constructor_array_range): New output_constructor helper,
5817         extracted code for an array range element.
5818         (output_constructor_regular_field): New output_constructor helper,
5819         extracted code for an element that is not a bitfield.
5820         (output_constructor_bitfield): New output_constructor helper,
5821         extracted code for a bitfield element.  Accept an OUTER state
5822         argument for recursive processing.  Recurse on record or array
5823         CONSTRUCTOR values, possibly past noop conversions.
5824         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
5825         VALUE is a valid constant-valued expression for use in a static
5826         bit-field initializer.
5827         (output_constructor): Rework to use helpers.  Accept and honor an
5828         OUTER state argument for recursive calls.  Return total size.  Be
5829         prepared for nested constructors initializing bitfields.
5830         (output_constant): Feed OUTER in calls to output_constructor.
5831
5832 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
5833
5834         * calls.c (emit_library_call_value_1): Don't force_operand for move
5835         and push insns.
5836
5837 2009-06-01  Nick Clifton  <nickc@redhat.com>
5838
5839         * doc/invoke.texi (IA-64 Options): Fix typo.
5840
5841 2009-06-01  Ira Rosen  <irar@il.ibm.com>
5842
5843         PR tree-optimization/39129
5844         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
5845         printed message.
5846         (vect_do_peeling_for_loop_bound): Use
5847         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
5848         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
5849         (vect_loop_versioning): Likewise.
5850         (vect_create_cond_for_alias_checks): Fix indentation.
5851         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
5852         macros.
5853         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
5854         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
5855         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
5856         "control flow in loop".
5857         (vect_estimate_min_profitable_iters): Use
5858         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
5859         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
5860         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
5861         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
5862         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
5863         statement belongs to a group of strided accesses with the exact code
5864         check.
5865         (vectorizable_load): Likewise.
5866         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
5867         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
5868
5869 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
5870
5871         * config/freebsd-stdint.h: New file.
5872         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
5873         Add freebsd-stdint.h to tm_file.
5874
5875 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
5876
5877         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
5878         (thumb2_extendhidi2): Likewise.
5879
5880 2009-05-31  Ian Lance Taylor  <iant@google.com>
5881
5882         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
5883
5884 2009-05-31  Ian Lance Taylor  <iant@google.com>
5885
5886         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
5887         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
5888         (ipa-reference.o): Depend upon gt-ipa-reference.h.
5889
5890 2009-05-31  Jason Merrill  <jason@redhat.com>
5891
5892         * tree-pretty-print.c (print_call_name): Take the callee, not the
5893         call itself.  Make non-static.  Use dump_function_name for functions.
5894         (dump_generic_node): Adjust.
5895         * diagnostic.h: Declare print_call_name.
5896         * gimple-pretty-print.c (dump_gimple_call): Use it.
5897
5898 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
5899
5900         * config/sh/sh.md (ashldi3_std): New define_expand.
5901         (ashldi3): Use it.
5902
5903 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
5904
5905         PR target/40313
5906         * config/sh/sh.c: Include debug.h.
5907         (sh_expand_epilogue): Emit a blockage insn before the frame
5908         pointer adjustment also when dwarf2out_do_frame returns true.
5909
5910 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
5911
5912         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
5913         (thumb2_extendqidi2): New pattern.
5914
5915 2009-05-31  Ira Rosen  <irar@il.ibm.com>
5916
5917         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
5918         mark phis for renaming.
5919         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
5920         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
5921         Call mark_sym_for_renaming.
5922         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
5923         * tree-vect-loop.c (vect_transform_loop): Remove
5924         vect_memsyms_to_rename initialization and a call to
5925         mark_set_for_renaming.
5926
5927 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
5928
5929         PR middle-end/40304
5930         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
5931         frame related even if !set_cfa && style < 0.
5932
5933 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
5934
5935         * config/i386/mingw-tls.c: New file.
5936         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
5937         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
5938         defining _WIN32 but not __CYGWIN__.
5939
5940 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5941
5942         * configure.ac: Add MPC support.
5943         
5944         * config.in, configure: Regenerate.     
5945
5946 2009-05-29  Richard Henderson  <rth@redhat.com>
5947
5948         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
5949         NOTE_INSN_BASIC_BLOCK.
5950         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
5951         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
5952         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
5953         to be deleted.
5954         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
5955         add in_use field.
5956         (add_cfi): Disable check redefining cfa away from drap.
5957         (lookup_cfa_1): Add remember argument; handle remember/restore.
5958         (lookup_cfa): Pass remember argument.
5959         (cfa_remember): New.
5960         (compute_barrier_args_size_1): Remove sibcall check.
5961         (dwarf2out_frame_debug_def_cfa): New.
5962         (dwarf2out_frame_debug_adjust_cfa): New.
5963         (dwarf2out_frame_debug_cfa_offset): New.
5964         (dwarf2out_frame_debug_cfa_register): New.
5965         (dwarf2out_frame_debug_cfa_restore): New.
5966         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
5967         (dwarf2out_begin_epilogue): New.
5968         (dwarf2out_frame_debug_restore_state): New.
5969         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
5970         DW_CFA_restore_state.
5971         (output_cfi_directive): Likewise.
5972         (convert_cfa_to_fb_loc_list): Likewise.
5973         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
5974         * dwarf2out.h: Update.
5975         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
5976         (copy_insn_1): Early out for null.
5977         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
5978         and dwarf2out_frame_debug_restore_state.
5979         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
5980         (prologue_insn_hash, epilogue_insn_hash): New.
5981         (free_after_compilation): Adjust freeing accordingly.
5982         (record_insns): Create hash table if needed; push insns into
5983         hash instead of array.
5984         (maybe_copy_epilogue_insn): New.
5985         (contains): Search hash table instead of array.
5986         (sibcall_epilogue_contains): Remove.
5987         (thread_prologue_and_epilogue_insns): Split eh_return insns
5988         and mark them as epilogues.
5989         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
5990         scanning in terms of basic blocks.
5991         * insn-notes.def (CFA_RESTORE_STATE): New.
5992         * jump.c (returnjump_p_1): Accept EH_RETURN.
5993         (eh_returnjump_p_1, eh_returnjump_p): New.
5994         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
5995         CFA_REGISTER, CFA_RESTORE): New.
5996         * rtl.def (EH_RETURN): New.
5997         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
5998
5999         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
6000         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
6001
6002         * config/i386/i386.c (gen_push): Update cfa state.
6003         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
6004         add a CFA_ADJUST_CFA note.
6005         (ix86_dwarf_handle_frame_unspec): Remove.
6006         (ix86_expand_prologue): Update cfa state.
6007         (ix86_emit_restore_reg_using_pop): New.
6008         (ix86_emit_restore_regs_using_pop): New.
6009         (ix86_emit_leave): New.
6010         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
6011         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
6012         * config/i386/i386.h (struct machine_cfa_state): New.
6013         (ix86_cfa_state): New.
6014         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
6015         (eh_return_internal): Merge from eh_return_<mode>,
6016         use eh_return rtx, split w/ epilogue.
6017
6018 2009-05-29  Ian Lance Taylor  <iant@google.com>
6019
6020         * builtins.c (validate_gimple_arglist): Don't use va_arg with
6021         enum type.
6022         * calls.c (emit_library_call_value_1): Likewise.
6023
6024         * c-typeck.c (c_build_va_arg): New function.
6025         * c-tree.h (c_build_va_arg): Declare.
6026         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
6027         instead of build_va_arg.
6028
6029 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
6030
6031         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
6032         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
6033         (ptr_difference_cost): Use affine combinations to compute it.
6034         (difference_cost): Likewise.
6035         (get_computation_cost_at): Compute more accurate cost for addresses
6036         if the ratio is a multiplier allowed in addresses.
6037         For non-addresses, consider that an additional offset or symbol is
6038         added only once.
6039
6040 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
6041
6042         * config/i386/i386.c (ix86_decompose_address): Avoid useless
6043         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
6044
6045         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
6046         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
6047         (prefix_rex): For UNIT_MMX don't imply the prefix by default
6048         if MODE_DI.
6049         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
6050         to 1 for TYPE_SSE{IADD1,CVT1}.
6051         (prefix_vex_imm8): Removed.
6052         (length_vex): Only pass 1 as second argument to
6053         ix86_attr_length_vex_default if prefix_extra is 0.
6054         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
6055         (length): For prefix vex computation use length_immediate
6056         attribute instead of prefix_vex_imm8.
6057         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
6058         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
6059         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
6060         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
6061         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
6062         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
6063         a space in between the operands.
6064         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
6065         if one operand is 0xff and the other one si, di, bp or sp.
6066         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
6067         other one si, di, bp or sp.
6068         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
6069         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
6070         type and mode attributes.
6071         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
6072         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
6073         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
6074         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
6075         prefix_data16 attribute iff MODE_DF.
6076         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
6077         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
6078         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
6079         constm128_operand in length_immediate computation.
6080         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
6081         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
6082         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
6083         length_immediate attribute to 1.
6084         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
6085         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
6086         for certain alternatives.
6087         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
6088         prefix_data16 attribute if MODE_V1DF.
6089         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
6090         length_immediate to 1.
6091         (set_got_rex64, set_rip_rex64): Remove length attribute, set
6092         length_address to 4, set mode attribute to MODE_DI.
6093         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
6094         (fxam<mode>2_i387): Set length attribute to 4.
6095         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
6096         *prefetch_3dnow_rex): Override length_address attribute.
6097         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
6098         attributes.
6099         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
6100         (constm128_operand): Removed.
6101         * config/i386/i386.c (memory_address_length): For
6102         disp && !index && !base in 64-bit mode account for SIB byte if
6103         print_operand_address can't optimize disp32 into disp32(%rip)
6104         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
6105         for fs: or gs: segment.
6106         (ix86_attr_length_immediate_default): When checking if shortform
6107         is possible, truncate immediate to the length of the non-shortened
6108         immediate.
6109         (ix86_attr_length_address_default): Ignore MEM_P operands
6110         with X constraint.
6111         (ix86_attr_length_vex_default): Only check for DImode on
6112         GENERAL_REG_P operands.
6113         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
6114         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
6115         (sse_cvttps2pi): Clear prefix_rep attribute.
6116         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
6117         attribute.
6118         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
6119         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
6120         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
6121         iff operand 2 is const_int_operand.
6122         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
6123         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
6124         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
6125         instead of vex.
6126         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
6127         prefix_data16.
6128         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
6129         prefix_data16 attribute for movlpd and movhpd instructions.
6130         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
6131         length_immediate for shufpd instruction.
6132         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
6133         (avx_cmpp<avxmodesuffixf2c><mode>3,
6134         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
6135         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
6136         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
6137         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
6138         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
6139         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
6140         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
6141         prefix_data16 attribute for the first alternative to 1.
6142         (*avx_loadlps): Override length_immediate for the first alternative.
6143         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
6144         attributes for second alternative.
6145         (*vec_concatv2sf_sse4_1): Override length_immediate and
6146         prefix_data16 attributes for second alternative.
6147         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
6148         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
6149         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
6150         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
6151         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
6152         prefix_data16 and length_immediate to 1.
6153         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
6154         to 1.
6155         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
6156         prefix_extra attribute for variants that don't have 0f prefix alone.
6157         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
6158         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
6159         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
6160         *sse4_1_pextrd): Set length_immediate to 1.
6161         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
6162         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
6163         to 1.
6164         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
6165         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
6166         length_immediate to 1 for second alternative.
6167         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
6168         prefix_extra and length_immediate attributes for the first
6169         alternative.
6170         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
6171         first alternative.
6172         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
6173         to 1 for the first and third alternative.
6174         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
6175         alternative.
6176         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
6177         attribute.
6178         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
6179         attribute to 0.
6180         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
6181         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
6182         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
6183         *avx_psign<mode>3): Set prefix_extra attribute to 1.
6184         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
6185         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
6186         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
6187         ssse3_psign<mode>3): Override prefix_rex attribute.
6188         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
6189         (ssse3_palignrti): Override length_immediate to 1.
6190         (ssse3_palignrdi): Override length_immediate to 1, override
6191         prefix_rex attribute.
6192         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
6193         (sse4a_extrqi): Override length_immediate to 2.
6194         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
6195         (sse4a_insertq): Override prefix_data16 to 0.
6196         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
6197         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
6198         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
6199         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
6200         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
6201         and length_immediate to 1.
6202         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
6203         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
6204         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
6205         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
6206         and length_immediate to 1.
6207         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
6208         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
6209         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
6210         avx_ptest256): Override prefix_extra to 1.
6211         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
6212         Override prefix_data16 and length_immediate to 1.
6213         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
6214         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
6215         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
6216         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
6217         prefix_data16 to 0 and prefix_extra to 2.
6218         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
6219         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
6220         attribute.
6221         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
6222         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
6223         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
6224         and prefix_extra to 2.
6225         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
6226         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
6227         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
6228         avx_vpermilvar<mode>3,
6229         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
6230         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
6231         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
6232         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
6233         Override prefix_extra to 1.
6234         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
6235         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
6236         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
6237         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
6238         prefix_extra and length_immediate to 1.
6239         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
6240         modrm to 0.
6241         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
6242         to 1 for the first alternative.
6243         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
6244         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
6245         cases.
6246         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
6247         *movv2sf_internal_avx, *movv2sf_internal): Override
6248         prefix_rep attribute for certain alternatives.
6249         (*mov<mode>_internal): Override prefix_rep or prefix_data16
6250         attributes for certain alternatives.
6251         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
6252         attributes for certain alternatives.
6253         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
6254         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
6255         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
6256         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
6257         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
6258         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
6259         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
6260         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
6261         length_immediate to 1 if operand 2 is const_int_operand.
6262         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
6263         *vec_extractv2si_1): Set length_immediate attribute to 1.
6264         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
6265         using old 3DNOW insn rather than SSE/3DNOW_A.
6266         (mmx_emms, mmx_femms): Clear modrm attribute.
6267
6268 2009-05-29  Martin Jambor  <mjambor@suse.cz>
6269
6270         * tree-sra.c:  New implementation of SRA.
6271
6272         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
6273         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
6274         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
6275         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
6276         (SRA_MAX_STRUCTURE_COUNT): Removed.
6277         (SRA_FIELD_STRUCTURE_RATIO): Removed.
6278         * doc/invoke.texi (sra-max-structure-size): Removed.
6279         (sra-field-structure-ratio): Removed.
6280
6281 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
6282
6283         PR middle-end/40291
6284         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
6285         before expansion.
6286
6287 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
6288
6289         PR rtl-optimization/40101
6290         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
6291         seqno.  Adjust comment.
6292         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
6293         inserting bookkeeping before a jump, the jump is not scheduled.
6294         When no positive seqno found, provide a value.  Add comment.
6295
6296 2009-05-29  Richard Guenther  <rguenther@suse.de>
6297
6298         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
6299         short-cutting on the first component.
6300
6301 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
6302
6303         PR middle-end/39958
6304         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
6305         for trees other than decls/types.
6306
6307 2009-05-29  Richard Guenther  <rguenther@suse.de>
6308
6309         * tree-ssa-operands.c (get_expr_operands): Do not handle
6310         INDIRECT_REFs in the handled-component case.  Remove
6311         unused get_ref_base_and_extent case.
6312         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
6313         tree_low_cst and host_integerp where possible.
6314         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
6315         codes for equivalence.
6316         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
6317
6318 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
6319
6320         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
6321         to tmake_file for i[34567]86-*-cygwin*. 
6322
6323 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
6324
6325         PR target/40017
6326         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
6327         (altivec_categorize_keyword, init_vector_keywords,
6328         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
6329         similar to bool.
6330
6331 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
6332
6333         * tree.c (handle_dll_attribute): Check if node is
6334         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
6335
6336 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
6337
6338         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
6339         component.
6340         (thumb2_zero_extendqidi2): Likewise.
6341
6342 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
6343
6344         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
6345         instead of gen_movrt.
6346         * config/sh/sh.md (movrt): Remove.
6347
6348 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
6349
6350         * doc/invoke.texi (IA-64 Options):
6351         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
6352         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
6353         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
6354         -msched-prefer-non-control-spec-insns,
6355         -msched-stop-bits-after-every-cycle,
6356         -msched-count-spec-in-critical-path,
6357         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
6358         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
6359         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
6360         and -msched-spec-verbose.
6361
6362 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
6363
6364         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
6365         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
6366         error if used.
6367         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
6368
6369 2009-05-28  Richard Guenther  <rguenther@suse.de>
6370
6371         * tree-ssa-alias.c (ao_ref_init): New function.
6372         (ao_ref_base): Likewise.
6373         (ao_ref_base_alias_set): Likewise.
6374         (ao_ref_alias_set): Likewise.
6375         (refs_may_alias_p_1): Change signature.
6376         (refs_may_alias_p): Adjust.
6377         (refs_anti_dependent_p): Likewise.
6378         (refs_output_dependent_p): Likewise.
6379         (call_may_clobber_ref_p_1): Change signature.
6380         (call_may_clobber_ref_p): Adjust.
6381         (stmt_may_clobber_ref_p_1): New function split out from ...
6382         (stmt_may_clobber_ref_p): ... here.
6383         (maybe_skip_until): Adjust signature.
6384         (get_continuation_for_phi): Likewise.
6385         (walk_non_aliased_vuses): Likewise.
6386         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
6387         (ao_ref_init): Declare.
6388         (ao_ref_base): Likewise.
6389         (ao_ref_alias_set): Likewise.
6390         (stmt_may_clobber_ref_p_1): Likewise.
6391         (walk_non_aliased_vuses): Adjust.
6392         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
6393         (get_ref_from_reference_ops): remove.
6394         (vn_reference_lookup_2): Adjust signature.
6395         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
6396         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
6397         (vn_reference_lookup): Adjust.
6398         (vn_reference_insert): Likewise.
6399         (vn_reference_insert_pieces): Adjust signature.
6400         (visit_reference_op_call): Adjust.
6401         * tree-ssa-pre.c (get_expr_type): Simplify.
6402         (phi_translate_1): Adjust.
6403         (compute_avail): Likewise.
6404         (translate_vuse_through_block): Do not re-build trees.
6405         (value_dies_in_block_x): Likewise.
6406         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
6407         fields.
6408         (vn_reference_lookup_pieces): Adjust declaration.
6409         (vn_reference_insert_pieces): Likewise.
6410
6411 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
6412
6413         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
6414         with checking disabled.
6415
6416 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
6417
6418         PR target/37216
6419
6420         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
6421         macro definition for support of three-operand format aligned
6422         .comm directive in assembler on cygwin/pe/mingw target OS.
6423         * configure:  Regenerate.
6424         * config.h:  Regenerate.
6425
6426         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
6427         aligned form of .comm directive if -mpe-aligned-commons is in effect.
6428         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
6429
6430         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
6431         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
6432
6433 2009-05-28  Ira Rosen  <irar@il.ibm.com>
6434
6435         PR tree-optimization/40254
6436         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
6437         in analysis of basic blocks.
6438
6439 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
6440
6441         PR middle-end/33699
6442         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
6443         * target-def.h (TARGET_CONST_ANCHOR): New macro.
6444         (TARGET_INITIALIZER): Use it.
6445         * cse.c (CHEAPER): Move it up to the other macros.
6446         (insert): Rename this ...
6447         (insert_with_costs): ... to this.  Add cost parameters.  Update
6448         function comment.
6449         (insert): New function.  Call insert_with_costs.
6450         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
6451         find_reg_offset_for_const, try_const_anchors): New functions.
6452         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
6453         when using a const-anchor.  Call insert_const_anchors.
6454         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
6455         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
6456
6457 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
6458
6459         * tree-inline.c (remap_decls): Enable nonlocalized variables
6460         when not optimizing.
6461
6462 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
6463
6464         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
6465         Simplify other tests involving optimize.
6466
6467 2009-05-27  Tom Tromey  <tromey@redhat.com>
6468
6469         * unwind-dw2.c (_Unwind_DebugHook): New function.
6470         (uw_install_context): Call _Unwind_DebugHook.
6471
6472 2009-05-27  Tom Tromey  <tromey@redhat.com>
6473
6474         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
6475
6476 2009-05-27  Ian Lance Taylor  <iant@google.com>
6477
6478         * Makefile.in (LINKER, LINKER_FLAGS): Define.
6479         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
6480         (ALL_LINKERFLAGS): Define.
6481         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
6482         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
6483         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
6484         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
6485         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
6486         $(LINKER_FOR_BUILD).
6487         (build/gcov-iov$(build_exeext)): Likewise.
6488
6489 2009-05-27  Julian Brown  <julian@codesourcery.com>
6490
6491         * gcse.c (target.h): Include.
6492         (can_assign_to_reg_without_clobbers_p): Check that the target allows
6493         copy of argument to a pseudo register.
6494
6495 2009-05-27  Diego Novillo  <dnovillo@google.com>
6496
6497         * tree-ssa-live.c (dump_scope_block): Document arguments.
6498         (dump_scope_blocks): Document.
6499         (debug_scope_blocks): New.
6500         * tree-flow.h (debug_scope_blocks): Declare.
6501
6502 2009-05-21  Denis Chertykov  <denisc@overta.ru>
6503
6504         * doc/contrib.texi (Contributors): Add myself to the list.
6505
6506 2009-05-27  Olivier Hainque  <hainque@adacore.com>
6507
6508         * expr.c (target_align): New function.  Alignment the TARGET of an
6509         assignment may be assume to have.
6510         (highest_pow2_factor_for_target): Use it instead of relying on
6511         immediate tree attributes of TARGET, not necessarily honored when
6512         intermediate bitfields are involved.
6513         
6514 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
6515
6516         PR target/40266
6517         * config/i386/driver-i386.c (host_detect_local_cpu): Support
6518         AVX, SSE4, AES, PCLMUL and POPCNT.
6519
6520 2009-05-27  Diego Novillo  <dnovillo@google.com>
6521
6522         * tree-pretty-print.c (dump_location): New.
6523         (dump_generic_node): Call it.
6524         Factor code to handle BLOCK nodes ...
6525         (dump_block_node): ... here.
6526
6527 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
6528
6529         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
6530         with it.
6531         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
6532         included.
6533         * gcc-plugin.h: Include config.h and system.h.
6534         (IN_GCC): Define if not defined.
6535
6536 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
6537
6538         PR middle-end/40249
6539         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
6540         with -fno-inline.
6541
6542 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
6543
6544         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
6545         applicable.
6546         * config/m32r/m32r.h: Ditto.
6547         * config/m32r/m32r.md: Ditto.
6548         * config/m32r/predicates.md: Ditto.
6549
6550 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
6551
6552         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
6553
6554 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
6555
6556         * doc/plugins.texi
6557         (Loading plugins): typo.
6558         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
6559         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
6560         (Interacting with the GCC Garbage Collector): Added new section.
6561         (Giving information about a plugin): Added new section for
6562         PLUGIN_INFO.
6563         * ggc.h (ggc_register_root_tab): Added declaration.
6564         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
6565         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
6566         (register_callback): Improved comment in declaration.
6567         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
6568         (extra_root_vec) Added static variable for dynamic roots registration.
6569         (ggc_register_root_tab) Added new routine.
6570         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
6571         PLUGIN_GGC_MARKING event.
6572         * ggc-zone.c: Include plugin.h.
6573         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
6574         * ggc-page.c: Include plugin.h.
6575         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
6576         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
6577         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
6578         (register_callback): check lack of callbacks for
6579         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
6580         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
6581         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
6582         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
6583         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
6584         dependency on plugin.h.
6585         (plugin.o): Added dependency on ggc.h...
6586
6587 2009-05-26  Richard Guenther  <rguenther@suse.de>
6588
6589         PR middle-end/40248
6590         Revert
6591         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
6592         with mismatched comparison modes.
6593
6594         * expr.c (expand_expr_real_1): Expand the operand of a
6595         VIEW_CONVERT_EXPR in its natural mode.
6596
6597 2009-05-26  Ian Lance Taylor  <iant@google.com>
6598
6599         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
6600         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
6601         (ALL_COMPILERFLAGS): Define.
6602         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
6603         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
6604         (collect2$(exeext), collect2.o): Likewise.
6605         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
6606         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
6607         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
6608         (libbackend.o, intl.o, cppdefault.o): Likewise.
6609         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
6610         (build/%.o): Use $(COMPILER_FOR_BUILD).
6611         (build/gen%$(build_exeext)): Likewise.
6612         (build/gcov-iov$(build_exeext)): LIkewise.
6613         * config/t-darwin (darwin.o): Use $(COMPILER).
6614         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
6615         * config/t-sol2 (sol2-c.o): Likewise.
6616         (sol2.o): Likewise.
6617         * config/t-vxworks (vxworks.o): Likewise.
6618         * config/x-darwin (host-darwin.o): Likewise.
6619         * config/x-hpux (host-hpux.o): Likewise.
6620         * config/x-linux (host-linux.o): Likewise.
6621         * config/x-solaris (host-solaris.o): Likewise.
6622         * config/alpha/x-alpha (driver-alpha.o): Likewise.
6623         * config/arm/t-arm (arm-c.o): Likewise.
6624         * config/arm/t-pe (pe.o): Likewise.
6625         * config/arm/t-wince-pe (pe.o): Likewise.
6626         * config/i386/t-cygming (winnt.o): Likewise.
6627         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
6628         * config/i386/t-cygwin (cygwin1.o): Likewise.
6629         (cygwin2.o): Likewise.
6630         * config/i386/t-i386 (i386-c.o): Likewise.
6631         * config/i386/t-interix (winnt.o): Likewise.
6632         * config/i386/t-netware (netware.o): Likewise.
6633         * config/i386/t-nwld (nwld.o): Likewise.
6634         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
6635         * config/i386/x-i386 (driver-i386.o): Likewise.
6636         * config/i386/x-cygwin (host-cygwin.o): Likewise.
6637         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
6638         * config/ia64/t-ia64 (ia64-c.o): Likewise.
6639         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
6640         * config/mips/x-native (driver-native.o): Likewise.
6641         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
6642         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
6643         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
6644         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
6645         * config/score/t-score-elf (score7.o): Likewise.
6646         (score3.o): Likewise.
6647         * config/sh/t-sh (sh-c.o): Likewise.
6648         * config/sh/t-symbian (sh-c.o): Likewise.
6649         (symbian.o): Likewise.
6650         * config/spu/t-spu-elf (spu-c.o): Likewise.
6651         * config/v850/t-v850 (v850-c.o): Likewise.
6652         * config/v850/t-v850e (v850-c.o): Likewise.
6653
6654 2009-05-26  Richard Guenther  <rguenther@suse.de>
6655
6656         PR tree-optimization/40122
6657         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
6658         VECTOR_CSTs if possible.
6659         (fold_gimple_assign): Likewise.
6660
6661 2009-05-26  Richard Guenther  <rguenther@suse.de>
6662
6663         PR middle-end/40252
6664         * fold-const.c (fold_binary): Use the correct types for building
6665         rotates.
6666
6667 2009-05-26  Richard Guenther  <rguenther@suse.de>
6668
6669         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
6670         redundant calls to merge_alias_info.
6671         (bump_vector_ptr): Likewise.
6672         * tree-ssa-copy.c (merge_alias_info): Remove.
6673         (replace_exp_1): Remove call to merge_alias_info.
6674         (propagate_tree_value): Likewise.
6675         (fini_copy_prop): Propagate points-to info.
6676         * tree-flow.h (merge_alias_info): Remove.
6677
6678 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
6679
6680         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
6681
6682 2009-05-25  Jan Hubicka  <jh@suse.cz>
6683
6684         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
6685         * cgraph.h (struct inline_summary): New filed self_wize,
6686         size_inlining_benefit, self_time and time_inlining_benefit.
6687         (struct cgraph_global_info): Replace insns by time ans size fields.
6688         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
6689         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
6690         (ipcp_update_callgraph): Do not touch function bodies.
6691         * ipa-inline.c: Include except.h
6692         (MAX_TIME): New constant.
6693         (overall_insns): Remove.
6694         (leaf_node_p): New.
6695         (overall_size, max_benefit): New static variables.
6696         (cgraph_estimate_time_after_inlining): New function.
6697         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
6698         (cgraph_clone_inlined_nodes): Update size.
6699         (cgraph_mark_inline_edge): Update size.
6700         (cgraph_estimate_growth): Use size info.
6701         (cgraph_check_inline_limits): Check size.
6702         (cgraph_default_inline_p): Likewise.
6703         (cgraph_edge_badness): Compute badness based on benefit and size cost.
6704         (cgraph_decide_recursive_inlining): Check size.
6705         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
6706         and times.
6707         (cgraph_decide_inlining): Likewise.
6708         (cgraph_decide_inlining_incrementally): Likewise; honor
6709         PARAM_EARLY_INLINING_INSNS.
6710         (likely_eliminated_by_inlining_p): New predicate.
6711         (estimate_function_body_sizes): New function.
6712         (compute_inline_parameters): Use it.
6713         * except.c (must_not_throw_labels): New function.
6714         * except.h (must_not_throw_labels): Declare.
6715         * tree-inline.c (init_inline_once): Kill inlining_weigths
6716         * tree-ssa-structalias.c: Avoid uninitialized warning.
6717         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
6718         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
6719         (PARAM_INLINE_CALL_COST): Remove.
6720         (PARAM_EARLY_INLINING_INSNS): New.
6721
6722 2009-05-25  Richard Guenther  <rguenther@suse.de>
6723
6724         PR tree-optimization/36327
6725         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
6726         callback for reference translation or lookup at the point of may-defs.
6727         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
6728         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
6729         for union COMPONENT_REFs.
6730         (vn_reference_lookup_3): New callback.  Lookup from memset
6731         and CONSTRUCTOR assignment, translate through struct copies.
6732         (vn_reference_lookup_pieces): Make sure to not free the
6733         passed operands array.  Adjust walk_non_aliased_vuses call.
6734         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
6735         make sure we do not leak memory.
6736
6737 2009-05-25  Richard Guenther  <rguenther@suse.de>
6738
6739         * tree-ssa-alias.h (dump_points_to_solution): Declare.
6740         * tree-inline.c (expand_call_inline): Reset the escaped and
6741         callused solutions.
6742         * tree-ssa-structalias.c (pass_build_ealias): New.
6743         * tree-pass.h (pass_build_ealias): Declare.
6744         * passes.c (init_optimization_passes): Add PTA during 
6745         early optimizations.
6746         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
6747         and CALLUSED solutions.
6748         (dump_points_to_solution): New function, split out from ...
6749         (dump_points_to_info_for): ... here.
6750         * tree-parloops.c (parallelize_loops): Reset the escaped and
6751         callused solutions.
6752
6753 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6754
6755         PR bootstrap/40027
6756         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
6757         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
6758
6759 2009-05-25  Ira Rosen  <irar@il.ibm.com>
6760
6761         PR tree-optimization/40238
6762         * tree-vect-stmts.c (vect_init_vector): Insert initialization
6763         statements after basic block's labels.
6764         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
6765         to free the allocated memory.
6766
6767 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
6768
6769         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
6770         return address with a USE.
6771
6772 2009-05-24  Richard Guenther  <rguenther@suse.de>
6773
6774         PR middle-end/40233
6775         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
6776         array type from the main variant of the inner type.
6777
6778 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
6779
6780         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
6781         definition to bool (from int) to un-break build.
6782         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
6783
6784 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
6785
6786         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
6787         discard_stmt_changes): Delete.
6788         * tree-ssa-operands.c (scb_stack): Delete.
6789         (init_ssa_operands): Do not initialize it.
6790         (fini_ssa_operands): Do not free it.
6791         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
6792
6793         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
6794         update_stmt, remove the others.  Fix comments.
6795         * tree-dfa.c (optimize_stack_restore): Likewise.
6796         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
6797         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
6798         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
6799         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
6800         Likewise.
6801         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
6802         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
6803         (dom_opt_finalize_block): Likewise, adjusting access to
6804         stmts_to_rescan.
6805         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
6806         (stmts_to_rescan): Change item type to gimple.
6807         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
6808
6809 2009-05-24  Ira Rosen  <irar@il.ibm.com>
6810
6811         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
6812         * tree-pass.h (pass_slp_vectorize): New pass.
6813         * params.h (SLP_MAX_INSNS_IN_BB): Define.
6814         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
6815         * tree-vectorizer.c (timevar.h): Include.
6816         (user_vect_verbosity_level): Declare.
6817         (vect_location): Fix comment.
6818         (vect_set_verbosity_level): Update user_vect_verbosity_level
6819         instead of vect_verbosity_level.
6820         (vect_set_dump_settings): Add an argument. Ignore user defined
6821         verbosity if dump flags require higher level of verbosity. Print to
6822         stderr only for loop vectorization.
6823         (vectorize_loops): Update call to vect_set_dump_settings.
6824         (execute_vect_slp): New function.
6825         (gate_vect_slp): Likewise.
6826         (struct gimple_opt_pass pass_slp_vectorize): New.
6827         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
6828         access its members.
6829         (vec_info_for_bb): New function.
6830         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
6831         (VECTORIZATION_ENABLED): New macro.
6832         (SLP_ENABLED, SLP_DISABLED): Likewise.
6833         (vect_is_simple_use): Add bb_vec_info argument.
6834         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
6835         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
6836         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
6837         vect_schedule_slp, vect_analyze_slp): Likewise.
6838         (vect_analyze_stmt): Add slp_tree argument.
6839         (find_bb_location): Declare.
6840         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
6841         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
6842         (vect_analyze_loop_operations, vect_analyze_loop,
6843         get_initial_def_for_induction, vect_create_epilog_for_reduction,
6844         vect_finalize_reduction, vectorizable_reduction,
6845         vectorizable_live_operation, vect_transform_loop): Likewise.
6846         * tree-data-ref.c (dr_analyze_innermost): Update comment,
6847         skip evolution analysis if analyzing a basic block.
6848         (dr_analyze_indices): Likewise.
6849         (initialize_data_dependence_relation): Skip the test whether the
6850         object is invariant for basic blocks.
6851         (compute_all_dependences): Skip dependence analysis for data
6852         references in basic blocks.
6853         (find_data_references_in_stmt): Don't fail in case of invariant
6854         access in basic block.
6855         (find_data_references_in_bb): New function.
6856         (find_data_references_in_loop): Move code to
6857         find_data_references_in_bb and add a call to it.
6858         (compute_data_dependences_for_bb): New function.
6859         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
6860         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
6861         that STEP is 0.
6862         (vect_analyze_data_ref_dependence): Check for interleaving in case of
6863         unknown dependence in basic block and fail in case of dependence in
6864         basic block.
6865         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
6866         dependence instances from either loop or basic block vectorization
6867         info.
6868         (vect_compute_data_ref_alignment): Check if it is loop vectorization
6869         before calling nested_in_vect_loop_p.
6870         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
6871         dependence instances from either loop or basic block vectorization
6872         info.
6873         (vect_verify_datarefs_alignment): Likewise.
6874         (vect_enhance_data_refs_alignment): Adjust function calls.
6875         (vect_analyze_data_refs_alignment): Likewise.
6876         (vect_analyze_group_access): Fix printing. Skip different checks if
6877         DR_STEP is 0. Keep strided stores either in loop or basic block
6878         vectorization data structure. Fix indentation.
6879         (vect_analyze_data_ref_access): Fix comments, allow zero step in
6880         basic blocks.
6881         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
6882         dependence instances from either loop or basic block vectorization
6883         info.
6884         (vect_analyze_data_refs): Update comment. Call
6885         compute_data_dependences_for_bb to analyze basic blocks.
6886         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
6887         case of loop vectorization. In case of basic block vectorization use
6888         data-ref itself as a base.
6889         (vect_create_data_ref_ptr): In case of basic block vectorization:
6890         don't advance the pointer, add new statements before the current
6891         statement.  Adjust function calls.
6892         (vect_supportable_dr_alignment): Support only aligned accesses in
6893         basic block vectorization.
6894         * common.opt (ftree-slp-vectorize): New flag.
6895         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
6896         (vect_pattern_recog_1): Likewise.
6897         * tree-vect-stmts.c (process_use): Likewise.
6898         (vect_init_vector): Add new statements in the beginning of the basic
6899         block in case of basic block SLP.
6900         (vect_get_vec_def_for_operand): Adjust function calls.
6901         (vect_finish_stmt_generation): Likewise.
6902         (vectorizable_call): Add assert that it is loop vectorization, adjust
6903         function calls.
6904         (vectorizable_conversion, vectorizable_assignment): Likewise.
6905         (vectorizable_operation): In case of basic block SLP, take
6906         vectorization factor from statement's type and skip the relevance
6907         check. Adjust function calls.
6908         (vectorizable_type_demotion): Add assert that it is loop
6909         vectorization, adjust function calls.
6910         (vectorizable_type_promotion): Likewise.
6911         (vectorizable_store): Check for outer loop only in case of loop
6912         vectorization. Adjust function calls. For basic blocks, skip the
6913         relevance check and don't advance pointers.
6914         (vectorizable_load): Likewise.
6915         (vectorizable_condition): Add assert that it is loop vectorization,
6916         adjust function calls.
6917         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
6918         that it is not reduction, get vector type, call only supported
6919         functions, skip loop specific parts.
6920         (vect_transform_stmt): Check for outer loop only in case of loop
6921         vectorization.
6922         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
6923         (vect_is_simple_use): Fix comment, add new argument, fix conditions
6924         for external definition.
6925         * passes.c (pass_slp_vectorize): New pass.
6926         * tree-vect-slp.c (find_bb_location): New function.
6927         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
6928         check for patterns only in loops.
6929         (vect_build_slp_tree): Add argument, adjust function calls, fail in
6930         case of multiple types in basic block SLP.
6931         (vect_mark_slp_stmts_relevant): New function.
6932         (vect_supported_load_permutation_p): Fix comment.
6933         (vect_analyze_slp_instance): Add argument. In case of basic block
6934         SLP, take vectorization factor from statement's type, check that
6935         unrolling factor is 1. Adjust function call. Save SLP instance in
6936         either loop or basic block vectorization structure. Return FALSE,
6937         if SLP failed.
6938         (vect_analyze_slp): Add argument. Get strided stores groups from
6939         either loop or basic block vectorization structure. Return FALSE
6940         if basic block SLP failed.
6941         (new_bb_vec_info): New function.
6942         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
6943         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
6944         (vect_schedule_slp): Add argument. Get SLP instances from either
6945         loop or basic block vectorization structure. Set vectorization factor
6946         to be 1 for basic block SLP.
6947         (vect_slp_transform_bb): New function.
6948         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
6949
6950 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
6951
6952         * final.c (shorten_branches): Do not align labels for jump tables.
6953         (final_scan_insn): Use JUMP_TABLE_DATA_P.
6954
6955 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
6956
6957         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
6958         Remove outdated reference to flow.c and fix nits.
6959         * doc/gccint.texi: Tweak RTL description.
6960         * doc/rtl.texi: Likewise.
6961
6962 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
6963
6964         * config/avr/avr.c: Change my email address.
6965         * config/avr/avr.h: Likewise.
6966         * config/avr/avr.md: Likewise.
6967         * config/avr/avr-protos.h: Likewise.
6968         * config/avr/libgcc.S: Likewise.
6969
6970 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
6971
6972         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
6973         (spu_split_load, spu_split_store): Change return type to int.
6974         (spu_split_convert): Declare.
6975         * config/spu/predicates.md (spu_mem_operand): Remove.
6976         (spu_mov_operand): Update.
6977         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
6978         * config/spu/spu.c (regno_aligned_for_load): Remove.
6979         (reg_aligned_for_addr, spu_expand_load): Define.
6980         (spu_expand_extv): Reimplement and handle MEM.
6981         (spu_expand_insv): Handle MEM.
6982         (spu_sched_reorder): Handle insn's with length 0.
6983         (spu_legitimate_address_p): Reimplement.
6984         (store_with_one_insn_p): Return TRUE for any mode with size
6985         larger than 16 bytes.
6986         (address_needs_split): Define.
6987         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
6988         operands.
6989         (spu_convert_move): Define.
6990         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
6991         (spu_split_store): Change all MEM's to TImode.
6992         (spu_init_expanders): Preallocate registers that correspond to
6993         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
6994         mark_reg_pointer.
6995         (spu_split_convert): Define.
6996         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
6997         (_move<mode>, _movdi, _movti): Update predicate and condition.
6998         (load, store): Change to define_split.
6999         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
7000         extend<mode>ti2.
7001         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
7002         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
7003         define_insn_and_split of lshr<mode>3.
7004         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
7005         (<v>ashr<mode>3_imm): Define.
7006         (extv, extzv, insv): Allow MEM operands.
7007         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
7008         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
7009         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
7010         (_spu_convert2): Change to define_insn_and_split and remove the
7011         corresponding define_peephole2.
7012         (stack_protect_set, stack_protect_test, stack_protect_test_si):
7013         Change predicates to memory_operand.
7014
7015 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
7016
7017         * config/arm/thumb2.md: Add 16-bit multiply instructions.
7018
7019 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
7020
7021         PR tree-optimization/40219
7022         * tree.c (iterative_hash_expr): Make sure the builtin function is
7023         a normal builtin function and not a front end or back end builtin
7024         before indexing into the built_in_decls array.
7025
7026 2009-05-22  Richard Guenther  <rguenther@suse.de>
7027
7028         PR middle-end/38964
7029         * alias.c (write_dependence_p): Do not use TBAA for answering
7030         anti-dependence or output-dependence.
7031         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
7032         (emit_pointer_definition): Remove.
7033         (emit_alias_warning): Likewise.
7034         (find_what_var_points_to): Remove TBAA pruning code.
7035         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
7036         violations.
7037         (compute_points_to_sets): Remove code computing the set of
7038         dereferenced pointers.
7039         * tree-data-ref.c (dr_may_alias_p): Properly use the split
7040         oracle for querying anti and output dependencies.
7041         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
7042         if TBAA may be applied.
7043         (refs_anti_dependent_p): New function.
7044         (refs_output_dependent_p): Likewise.
7045         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
7046         (refs_output_dependent_p): Likewise.
7047         * doc/tree-ssa.texi (Memory model): New section.
7048         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
7049         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
7050         * cfgexpand.c (expand_gimple_basic_block): Do not handle
7051         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
7052         * expr.c (expand_expr_real_1): Likewise.
7053         * gimple-low.c (lower_stmt): Likewise.
7054         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
7055         (dump_gimple_cdt): Remove.
7056         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
7057         (gimple_size): Likewise.
7058         (walk_gimple_op): Likewise.
7059         (is_gimple_stmt): Likewise.
7060         (walk_stmt_load_store_addr_ops): Likewise.
7061         (gimple_build_cdt): Remove.
7062         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
7063         * gimple.h (gimple_cdt_new_type): Remove.
7064         (gimple_cdt_new_type_ptr): Likewise.
7065         (gimple_cdt_set_new_type): Likewise.
7066         (gimple_cdt_location): Likewise.
7067         (gimple_cdt_location_ptr): Likewise.
7068         (gimple_cdt_set_location): Likewise.
7069         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
7070         * tree-cfg.c (remove_useless_stmts_1): Do not handle
7071         GIMPLE_CHANGE_DYNAMIC_TYPE.
7072         (verify_types_in_gimple_stmt): Likewise.
7073         * tree-inline.c (estimate_num_insns): Likewise.
7074         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
7075         (copy_decl_to_var): Likewise.
7076         (copy_result_decl_to_var): Likewise.
7077         * tree-pretty-print.c (dump_generic_node): Do not handle
7078         CHANGE_DYNAMIC_TYPE_EXPR.
7079         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
7080         * tree-ssa-operands.c (get_expr_operands): Likewise.
7081         * tree-ssa-structalias.c (struct variable_info): Remove
7082         no_tbaa_pruning member.
7083         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
7084         (unify_nodes): Do not copy it.
7085         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
7086         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
7087         (set_uids_in_ptset): Do not check it.
7088         (find_what_var_points_to): Likewise.
7089         (compute_tbaa_pruning): Remove.
7090         (compute_points_to_sets): Do not call it.
7091         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
7092         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
7093         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
7094         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
7095         (DECL_NO_TBAA_P): Likewise.
7096         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
7097         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
7098         (expand_omp_atomic_pipeline): Do not set it.
7099         * print-tree.c (print_node): Do not dump it.
7100         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
7101         redundant check.
7102
7103 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
7104
7105         PR target/39856
7106         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
7107         for clobber.
7108
7109 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
7110
7111         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
7112         non-external.
7113
7114 2009-05-22  Ben Elliston  <bje@au.ibm.com>
7115
7116         * Makefile.in (bversion.h, s-bversion): New targets.
7117         (TOPLEV_H): Add bversion.h.
7118         * toplev.h: Include "bversion.h".
7119         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
7120         the __format__ attribute only if compiling with the same version
7121         of GCC as the sources (the "build version").
7122
7123 2009-05-22  Ben Elliston  <bje@au.ibm.com>
7124
7125         * c-format.c (handle_format_attribute): Fix comment typo.
7126
7127 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
7128
7129         PR target/37846
7130         * config/ia64/ia64.opt (mfused-madd): New.
7131         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
7132         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
7133         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
7134         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
7135         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
7136         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
7137         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
7138         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
7139         instruction if !TARGET_FUSED_MADD.
7140         (fpma, fpms): Remove colon from name.
7141
7142 2009-05-22  Richard Guenther  <rguenther@suse.de>
7143
7144         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
7145         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
7146         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
7147         TARGET_MEM_REF.
7148         (create_expression_by_pieces): Only convert if necessary.
7149         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
7150         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
7151
7152 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
7153
7154         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
7155         regular pattern from a template and rename it ...
7156         (*extzv_truncsi_exts): ... to this.
7157
7158 2009-05-21  Richard Guenther  <rguenther@suse.de>
7159
7160         * cgraph.h (struct cgraph_node): Remove inline_decl member.
7161         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
7162         (cgraph_default_inline_p): Likewise.
7163         (cgraph_decide_inlining_incrementally): Likewise.
7164
7165 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
7166             Uros Bizjak  <ubizjak@gmail.com>
7167
7168         * config/i386/cpuid.h (bit_MOVBE): New.
7169
7170         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
7171
7172         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
7173         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
7174         (ix86_handle_option): Handle OPT_mmovbe.
7175         (ix86_target_string): Add -mmovbe.
7176         (pta_flags): Add PTA_MOVBE.
7177         (processor_alias_table): Add PTA_MOVBE to "atom".
7178         (override_options): Handle PTA_MOVBE.
7179
7180         * config/i386/i386.h (TARGET_MOVBE): New.
7181
7182         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
7183         (*bswapsi_movbe): New.
7184         (*bswapdi_movbe): Likewise.
7185         (bswapdi2): Renamed to ...
7186         (*bswapdi_1): This.
7187         (bswapdi2): New expander.
7188
7189         * config/i386/i386.opt (mmovbe): New.
7190
7191         * doc/invoke.texi: Document -mmovbe.
7192
7193 2009-05-21  Taras Glek  <tglek@mozilla.com>
7194
7195         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
7196         * gcc-plugin.h (plugin_init): Updated signature.
7197         * gcc-plugin.h (plugin_name_args): Moved to this header.
7198         * doc/plugins.texi (plugin_init): Updated documention to reflect
7199         API change.
7200         * doc/plugins.texi (plugin_name_args): Added to documention.
7201
7202 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
7203
7204         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
7205         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
7206
7207 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
7208
7209         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
7210         JUMP_TABLE_DATA_P predicates where applicable.
7211         * config/i386/predicates.md: Ditto.
7212         * config/i386/sse.md: Ditto.
7213
7214 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
7215
7216         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
7217         operand2 -128 override length_immediate attribute to 1.
7218         * config/i386/predicates.md (constm128_operand): New predicate.
7219
7220         * config/i386/i386.c (memory_address_length): Handle %r12
7221         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
7222         also check REGNO.
7223         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
7224         mode look through optional ZERO_EXTEND and SUBREG.
7225         * config/i386/i386.md (R12_REG): New define_constant.
7226         (prefix_data16): For sse unit set also for MODE_TI insns.
7227         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
7228         insns set if operand 1 is ext_QIreg_operand.
7229         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
7230         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
7231         immediate.
7232         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
7233         mode from MODE_DI to MODE_SI.
7234         (movdi_1_rex64): Override modrm and length_immediate attributes
7235         only for movabs (TYPE_IMOV, alternative 2).
7236         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
7237         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
7238         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
7239         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
7240         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
7241         prefix_rex attribute if DImode.
7242         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
7243         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
7244         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
7245         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
7246         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
7247         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
7248         Likewise.  For TYPE_IMOV clear length_immediate attribute.
7249         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
7250         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
7251         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
7252         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
7253         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
7254         or one operand TYPE_ISHIFT.
7255         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
7256         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
7257         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
7258         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
7259         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
7260         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
7261         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
7262         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
7263         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
7264         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
7265         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
7266         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
7267         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
7268         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
7269         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
7270         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
7271         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
7272         set mode attribute, don't override length attribute.
7273         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
7274         to 1.
7275         (return_internal_long): Set length attribute to 2 instead of 1.
7276         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
7277         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
7278         prefix_rex attribute.
7279         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
7280         New predicates.
7281         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
7282
7283 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7284
7285         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
7286
7287 2009-05-20  Ian Lance Taylor  <iant@google.com>
7288
7289         * tree.c (build_tree_list_vec_stat): New function.
7290         (ctor_to_vec): New function.
7291         (build_nt_call_vec): New function.
7292         (build_call_array): Change args to be a const pointer.
7293         (build_call_vec): New function.
7294         * tree.h (build_nt_call_vec): Declare.
7295         (build_tree_list_vec_stat): Declare.
7296         (build_tree_list_vec): Define.
7297         (build_call_array): Update declaration.
7298         (build_call_vec): Declare.
7299         (ctor_to_vec): Declare.
7300         * c-common.c (tree_vector_cache): New static variable.
7301         (make_tree_vector): New function.
7302         (release_tree_vector): New function.
7303         (make_tree_vector_single): New function.
7304         (make_tree_vector_copy): New function.
7305         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
7306         (make_tree_vector_single, make_tree_vector_copy): Declare.
7307         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
7308         (c_parser_expr_list): Don't manage cache here, instead call
7309         make_tree_vector.
7310         (c_parser_release_expr_list): Remove static function.
7311         (c_parser_vec_to_tree_list): Remove static function.
7312         (c_parser_attributes): Call build_tree_list_vec instead of
7313         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
7314         c_parser_release_expr_list.
7315         (c_parser_postfix_expression_after_primary): Likewise.
7316         (c_parser_objc_keywordexpr): Likewise.
7317
7318 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
7319
7320         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
7321         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
7322         TARGET_CONVERT_TO_TYPE.
7323         * hooks.c (hook_tree_const_tree_null): Define.
7324         * hooks.h (hook_tree_const_tree_null): Declare.
7325         * target.h (struct gcc_target):  Add invalid_parameter_type,
7326         invalid_return_type, promoted_type, and convert_to_type fields.
7327         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
7328         (TARGET_INVALID_RETURN_TYPE): Define.
7329         (TARGET_PROMOTED_TYPE): Define.
7330         (TARGET_CONVERT_TO_TYPE): Define.
7331         (TARGET_INITIALIZER): Update for new fields.
7332         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
7333         (grokparms): Check targetm.invalid_parameter_type.
7334         * c-typeck.c (default_conversion): Check targetm.promoted_type.
7335         * c-convert.c (convert): Check targetm.convert_to_type.
7336
7337 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
7338
7339         * config/mips/mips.md (*extenddi_truncate<mode>,
7340         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
7341         defintions.
7342         (*extendhi_truncateqi): New define_insn_and_sptit.
7343
7344 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
7345
7346         PR middle-end/40204
7347         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
7348         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
7349
7350 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
7351
7352         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
7353         the operand of VIEW_CONVERT_EXPR.
7354
7355 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
7356
7357         * config/i386/driver-i386.c (host_detect_local_cpu): Check
7358         extended family and model for Intel processors.  Support Intel Atom.
7359
7360 2009-05-20  Olivier Hainque  <hainque@adacore.com>
7361
7362         * gstab.h (stab_code_type): Define, to be used instead of the
7363         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
7364         notice.
7365         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
7366         occurrences by stab_code_type.
7367         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
7368
7369 2009-05-20  Martin Jambor  <mjambor@suse.cz>
7370
7371         * tree-flow.h (insert_edge_copies_seq): Undeclare.
7372         (sra_insert_before): Likewise.
7373         (sra_insert_after): Likewise.
7374         (sra_init_cache): Likewise.
7375         (sra_type_can_be_decomposed_p): Likewise.
7376         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
7377         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
7378         (sra_insert_before): Likewise.
7379         (sra_insert_after): Likewise.
7380         (sra_init_cache): Likewise.
7381         (insert_edge_copies_seq): Made static and moved upwards.
7382
7383         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
7384         case.
7385
7386         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
7387
7388         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
7389         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
7390         simple copies.
7391
7392 2009-05-20  Richard Guenther  <rguenther@suse.de>
7393
7394         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
7395         with mismatched comparison modes.
7396
7397 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7398
7399         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
7400         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
7401         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
7402         with shifts for Thumb2.
7403         (orsi_notsi): New for orn.
7404         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
7405         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
7406         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
7407         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
7408         Don't invert remainder for IOR.
7409         
7410 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
7411
7412         PR tree-optimization/40087
7413         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
7414         number_of_iterations_ne): Rename never_infinite argument.
7415         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
7416         number_of_iterations_le): Handle pointer-type ivs when
7417         exit_must_be_taken is false.
7418         (number_of_iterations_cond):  Do not always assume that
7419         exit_must_be_taken if the control variable is a pointer.
7420
7421 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7422
7423         * c-typeck.c (build_binary_op): Allow % on integal vectors.
7424         * doc/extend.texi (Vector Extension): Document that % is allowed too.
7425
7426 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
7427
7428         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
7429         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
7430
7431 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7432
7433         PR c/40172
7434         * c.opt (Wlogical-op): Disabled by default.
7435         * c-opt (c_common_post_options): Do not enable Wlogical-op with
7436         Wextra.
7437         * doc/invoke.texi (Wlogical-op): Likewise.
7438         
7439 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
7440
7441         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
7442         into CASE_CONVERT.
7443         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
7444         Propagate the type of the first operand.
7445         <ASSERT_EXPR>: Simplify.
7446         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
7447         Rewrite using the RHS code as discriminant.
7448         <NOP_EXPR>: Turn into CASE_CONVERT.
7449         <PLUS_EXPR>: Propagate the type of the first operand.
7450
7451 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
7452
7453         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
7454         (ia64_dconst_0_375): New.
7455         * config/ia64/ia64.c (ia64_override_options): Remove
7456         -minline-sqrt-min-latency warning.
7457         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
7458         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
7459         * config/ia64/ia64.md (*sqrt_approx): Remove.
7460         (sqrtsf2): Remove #if 0.
7461         (sqrtsf2_internal_thr): Rewrite and move to div.md.
7462         (sqrtdf): Remove assert.
7463         (sqrtdf2_internal_thr): Rewrite and move to div.md.
7464         (sqrtxf2): Remove #if 0.
7465         (sqrtxf2_internal_thr): Rewrite and move to div.md.
7466         * div.md (sqrt_approx_rf): New.
7467         (sqrtsf2_internal_thr): New implementation.
7468         (sqrtsf2_internal_lat): New.
7469         (sqrtdf2_internal_thr: New implementation.
7470         (sqrtxf2_internal): New implementation.
7471
7472 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
7473             Hans-Peter Nilsson  <hp@axis.com>
7474
7475         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
7476         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
7477         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
7478         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
7479         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
7480         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
7481         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
7482         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
7483         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
7484         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
7485         * c-common.c: ...from here.
7486
7487 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7488
7489         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
7490
7491 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7492
7493         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
7494
7495 2009-05-19  Ben Elliston  <bje@au.ibm.com>
7496
7497         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
7498         assignments with memcpy calls.
7499         (add_fdes): Likewise.
7500         (binary_search_unencoded_fdes): Likewise.
7501         (linear_search_fdes): Eliminate type puns.
7502         
7503 2009-05-19  Richard Guenther  <rguenther@suse.de>
7504
7505         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
7506         not falsely claim to have propagated into all uses.
7507
7508 2009-05-19  Ben Elliston  <bje@au.ibm.com>
7509
7510         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
7511         version to v3.0.
7512
7513 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
7514
7515         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
7516         * config/sh/sh.c (sh_legitimate_address_p): Make static.
7517         (TARGET_LEGITIMATE_ADDRESS_P): New.
7518         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
7519         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
7520         
7521 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
7522
7523         PR debug/40109
7524         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
7525         child of the containing namespace's DIE.
7526
7527 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
7528
7529         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
7530         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
7531         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
7532         extend patterns.
7533
7534 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
7535
7536         PR target/39942
7537         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
7538         gen_align with gen_pad.
7539         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
7540         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
7541
7542         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
7543         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
7544
7545         * config/i386/i386.md (align): Renamed to ...
7546         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
7547         ASM_OUTPUT_MAX_SKIP_PAD.
7548
7549 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
7550
7551         * config.gcc: Fix variable syntax.
7552
7553         PR target/39531
7554         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
7555         before calling exact_log2.
7556         (output_iorsi3): Likewise.
7557         (output_xorsi3): Likewise.
7558
7559 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
7560
7561         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
7562         for the none zero constant operand except for EQ and NE
7563         comprisons even when the first operand is R0.
7564
7565 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
7566
7567         * config/s390/2064.md: Remove trailing whitespaces.
7568         * config/s390/2084.md: Likewise.
7569         * config/s390/constraints.md: Likewise.
7570         * config/s390/fixdfdi.h: Likewise.
7571         * config/s390/libgcc-glibc.ver: Likewise.
7572         * config/s390/s390-modes.def: Likewise.
7573         * config/s390/s390-protos.h: Likewise.
7574         * config/s390/s390.c: Likewise.
7575         * config/s390/s390.h: Likewise.
7576         * config/s390/s390.md: Likewise.
7577         * config/s390/tpf-unwind.h: Likewise.
7578
7579 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
7580
7581         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
7582
7583 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
7584
7585         M68K TLS support.
7586         * configure.ac (m68k-*-*): Check if binutils support TLS.
7587         * configure: Regenerate.
7588         * config/m68k/predicates.md (symbolic_operand): Extend comment.
7589         * config/m68k/constraints.md (Cu): New constraint.
7590         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
7591         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
7592         (movsi): Handle TLS symbols.
7593         (addsi3_5200): Handle XTLS symbols, indent.
7594         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
7595         (m68k_tls_reference_p): Declare.
7596         (m68k_legitimize_address): Declare.
7597         (m68k_unwrap_symbol): Declare.
7598         * config/m68k/m68k.opt (mxtls): New option.
7599         * config/m68k/m68k.c (ggc.h): Include.
7600         (m68k_output_dwarf_dtprel): Implement hook.
7601         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
7602         (m68k_expand_prologue): Load GOT pointer when function needs it.
7603         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
7604         (m68k_legitimate_constant_address_p): Same.
7605         (m68k_decompose_address): Handle TLS references.
7606         (m68k_get_gp): New static function.
7607         (enum m68k_reloc): New contants.
7608         (TLS_RELOC_P): New macro.
7609         (m68k_wrap_symbol): New static function.
7610         (m68k_unwrap_symbol): New function.
7611         (m68k_final_prescan_insn_1): New static function.
7612         (m68k_final_prescan_insn): New function.
7613         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
7614         functions.
7615         (legitimize_pic_address): Handle TLS references..
7616         (m68k_tls_get_addr, m68k_get_tls_get_addr)
7617         (m68k_libcall_value_in_a0_p)
7618         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
7619         (m68k_call_m68k_read_tp): Helper variables and functions for ...
7620         (m68k_legitimize_tls_address): Handle TLS references.
7621         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
7622         New functions.
7623         (m68k_legitimize_address): Handle TLS symbols.
7624         (m68k_get_reloc_decoration): New static function.
7625         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
7626         UNSPEC_RELOC32.
7627         (m68k_output_dwarf_dtprel): Implement hook.
7628         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
7629         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
7630         m68k_call_* routines.
7631         (sched_attr_op_type): Handle TLS symbols.
7632         (gt-m68k.h): Include.
7633         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
7634         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
7635
7636 2009-05-18  Martin Jambor  <mjambor@suse.cz>
7637
7638         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
7639         (visit_store_addr_for_mod_analysis): New function.
7640         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
7641         (determine_cst_member_ptr): Use gimple_assign_single_p.
7642         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
7643         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
7644         operands.  Don't check number of operands of a NOP_EXPR.
7645
7646 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
7647
7648         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
7649
7650 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7651
7652         PR c/40172
7653         * c-common.c (warn_logical_operator): Don't warn if one of
7654         expression isn't always true or false.
7655
7656 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
7657
7658         * config/i386/biarch32.h: New file.
7659         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
7660
7661 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
7662
7663         * config/mips/mips.md (*zero_extend<mode>_trunchi,
7664         *zero_extend<mode>_truncqi): Merge these into ...
7665         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
7666         Name the pattern following this as *zero_extendhi_truncqi.
7667
7668 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
7669
7670         PR middle-end/39301
7671         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
7672         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
7673         (output_info): Make field HOST_WIDEST_INT.
7674         (print_statistics): Use HOST_WIDEST_INT_PRINT.
7675         (dump_bitmat_statistics): Same.
7676
7677 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
7678
7679         * config.gcc (use_gcc_stdint):  Set to wrap.
7680         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
7681         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
7682         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
7683         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
7684         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
7685         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
7686         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
7687         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
7688
7689 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
7690
7691         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
7692         tune_64.
7693         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
7694         Move definitions earlier.
7695         (OPT_ARCH64, OPT_ARCH32): Define.
7696         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
7697         and tune_64.
7698
7699 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
7700
7701         PR target/40153
7702         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
7703         implies.
7704
7705 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
7706
7707         * arm.md (movdi2): Copy non-reg values to DImode registers.
7708
7709 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
7710
7711         PR target/39942
7712         * final.c (label_to_max_skip): New function.
7713         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
7714         CODE_LABEL_NUMBER <= max_labelno.
7715         * output.h (label_to_max_skip): New prototype.
7716         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
7717         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
7718         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
7719         Handle CODE_LABELs with >= 16 byte alignment or with
7720         max_skip == (1 << align) - 1.
7721         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
7722         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
7723
7724         PR target/39942
7725         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
7726         .p2align 3 if MAX_SKIP is smaller than 7.
7727         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7728
7729 2009-05-15  Ian Lance Taylor  <iant@google.com>
7730
7731         * alias.c (struct alias_set_entry_d): Rename from struct
7732         alias_set_entry.  Change all uses.
7733         * except.c (struct call_site_record_d): Rename from struct
7734         call_site_record.  Change all uses.
7735         * except.h (struct eh_region_d): Rename from struct eh_region.
7736         Change all uses.
7737         * gcse.c (struct hash_table_d): Rename from struct hash_table.
7738         Change all uses.
7739         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
7740         ivtype_map_elt.  Change all uses.
7741         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
7742         Change all uses.
7743         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
7744         * graphite.h (struct name_tree_d): Rename from struct name_tree.
7745         Change all uses.
7746         (struct sese_d): Rename from struct sese.  Change all uses.
7747         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
7748         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
7749         * optabs.h (struct optab_d): Rename from struct optab.  Change all
7750         uses.
7751         (struct convert_optab_d): Rename from struct convert_optab.
7752         Change all uses.
7753         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
7754         ipa_opt_pass.  Change all uses.
7755         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
7756         all uses.
7757
7758         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
7759         defined as a typedef.
7760         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
7761         defined as a tag.
7762
7763 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7764
7765         PR 16302
7766         * fold-const.c (make_range,build_range_check,merge_ranges): Move
7767         declaration to...
7768         (merge_ranges): Returns bool. 
7769         * tree.h (make_range): .. to here.
7770         (build_range_check): Likewise.
7771         (merge_ranges): Likewise. Renamed from merge_ranges.
7772         * c-typeck.c (parser_build_binary_op): Update calls to
7773         warn_logical_operator.
7774         * c-common.c (warn_logical_operator): Add new warning.
7775         * c-common.h (warn_logical_operator): Update declaration.
7776         
7777 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7778
7779         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
7780         
7781 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7782
7783         * doc/install.texi: Document MPC requirements, flags etc.
7784
7785         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
7786         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
7787         Evaluate constant arguments.
7788         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
7789         (fold_builtin_1): Likewise, also evaluate constant arguments.
7790         Remove superfluous break.
7791         (do_mpc_ckconv): New.
7792         * real.h: Include mpc.h.
7793         * toplev.c (print_version): Output MPC version info if available.
7794
7795 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
7796
7797         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
7798
7799 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
7800
7801         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
7802         only once.
7803
7804 2009-05-15  Jan Hubicka  <jh@suse.cz>
7805
7806         * doc/invoke.texi (max-early-inliner-iterations): New flag.
7807         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
7808         (try_inline): Fix return value.
7809         (cgraph_decide_inlining_incrementally): Honor new value.
7810         (cgraph_early_inlining): Handle indirect inlining.
7811         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
7812
7813 2009-05-15  Jan Hubicka  <jh@suse.cz>
7814
7815         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
7816         * cgraphunit.c (cgraph_finalize_function): Set it.
7817         (cgraph_expand_function): Use it.
7818
7819 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
7820
7821         * real.c (encode_ieee_half): Define.
7822         (decode_ieee_half): Define.
7823         (ieee_half_format): Define.
7824         (arm_half_format): Define.
7825         * real.h (ieee_half_format): Declare.
7826         (arm_half_format): Declare.
7827
7828 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
7829
7830         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
7831         swapped, and reversed optabs exist before trying to use them.
7832
7833 2009-05-15  Paul Brook  <paul@codesourcery.com>
7834             Sandra Loosemore  <sandra@codesourcery.com>
7835
7836         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
7837         loads.  Allow PRE_DEC.
7838         (output_move_neon): Handle PRE_DEC.
7839         (arm_print_operand): Add 'A' for neon structure loads.
7840         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
7841         * config/arm/neon.md (neon_mov): Update comment.
7842         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
7843         calls.
7844         (Um): New constraint.
7845
7846 2009-05-15  Jan Hubicka  <jh@suse.cz>
7847
7848         Revert the following patch until testsuite fallout is fixed:
7849         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
7850         * cgraph.h (struct inline_summary): New filed self_wize,
7851         size_inlining_benefit, self_time and time_inlining_benefit.
7852         (struct cgraph_global_info): Replace insns by time ans size fields.
7853         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
7854         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
7855         (ipcp_update_callgraph): Do not touch function bodies.
7856         * ipa-inline.c: Include except.h
7857         (MAX_TIME): New constant.
7858         (overall_insns): Remove
7859         (overall_size, max_benefit): New static variables.
7860         (cgraph_estimate_time_after_inlining): New function.
7861         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
7862         (cgraph_clone_inlined_nodes): Update size.
7863         (cgraph_mark_inline_edge): Update size.
7864         (cgraph_estimate_growth): Use size info.
7865         (cgraph_check_inline_limits): Check size.
7866         (cgraph_default_inline_p): Likewise.
7867         (cgraph_edge_badness): Compute badness based on benefit and size cost.
7868         (cgraph_decide_recursive_inlining): Check size.
7869         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
7870         and times.
7871         (cgraph_decide_inlining): Likewise.
7872         (cgraph_decide_inlining_incrementally): Likewise; honor
7873         PARAM_EARLY_INLINING_INSNS.
7874         (likely_eliminated_by_inlining_p): New predicate.
7875         (estimate_function_body_sizes): New function.
7876         (compute_inline_parameters): Use it.
7877         * except.c (must_not_throw_labels): New function.
7878         * except.h (must_not_throw_labels): Declare.
7879         * tree-inline.c (init_inline_once): Kill inlining_weigths
7880         * tree-ssa-structalias.c: Avoid uninitialized warning.
7881         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
7882         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
7883         (PARAM_INLINE_CALL_COST): Remove.
7884         (PARAM_EARLY_INLINING_INSNS): New.
7885
7886 2009-05-15  Richard Guenther  <rguenther@suse.de>
7887
7888         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
7889         not TODO_update_ssa.
7890
7891 2009-05-15  Richard Guenther  <rguenther@suse.de>
7892
7893         PR tree-optimization/39999
7894         * gimple.h (gimple_expr_type): Use the expression type looking
7895         through useless conversions.
7896         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
7897         (vn_nary_op_insert_stmt): Likewise.
7898         (simplify_binary_expression): Likewise.
7899
7900 2009-05-15  Richard Guenther  <rguenther@suse.de>
7901
7902         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
7903         New options, enabled by default.
7904         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
7905         Document.
7906         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
7907         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
7908         * tree-ssa-structalias.c (gate_tree_pta): New function.
7909         (pass_build_alias): Use it.
7910
7911 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
7912
7913         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
7914         recurse on an invariant address if a conversion from a pointer
7915         type to a wider integer type is involved.
7916
7917 2009-05-15  Jan Hubicka  <jh@suse.cz>
7918
7919         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
7920         * cgraph.h (struct inline_summary): New filed self_wize,
7921         size_inlining_benefit, self_time and time_inlining_benefit.
7922         (struct cgraph_global_info): Replace insns by time ans size fields.
7923         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
7924         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
7925         (ipcp_update_callgraph): Do not touch function bodies.
7926         * ipa-inline.c: Include except.h
7927         (MAX_TIME): New constant.
7928         (overall_insns): Remove
7929         (overall_size, max_benefit): New static variables.
7930         (cgraph_estimate_time_after_inlining): New function.
7931         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
7932         (cgraph_clone_inlined_nodes): Update size.
7933         (cgraph_mark_inline_edge): Update size.
7934         (cgraph_estimate_growth): Use size info.
7935         (cgraph_check_inline_limits): Check size.
7936         (cgraph_default_inline_p): Likewise.
7937         (cgraph_edge_badness): Compute badness based on benefit and size cost.
7938         (cgraph_decide_recursive_inlining): Check size.
7939         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
7940         and times.
7941         (cgraph_decide_inlining): Likewise.
7942         (cgraph_decide_inlining_incrementally): Likewise; honor
7943         PARAM_EARLY_INLINING_INSNS.
7944         (likely_eliminated_by_inlining_p): New predicate.
7945         (estimate_function_body_sizes): New function.
7946         (compute_inline_parameters): Use it.
7947         * except.c (must_not_throw_labels): New function.
7948         * except.h (must_not_throw_labels): Declare.
7949         * tree-inline.c (init_inline_once): Kill inlining_weigths
7950         * tree-ssa-structalias.c: Avoid uninitialized warning.
7951         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
7952         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
7953         (PARAM_INLINE_CALL_COST): Remove.
7954         (PARAM_EARLY_INLINING_INSNS): New.
7955         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
7956         (inline-call-cost): Remove.
7957         (early-inlining-insns): New.
7958
7959 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
7960
7961         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
7962         for bounds.
7963         (print_int_cst_bounds_in_octal_p): Likewise.
7964         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
7965         with subtypes.
7966         * dwarf2out.c (base_type_die): Likewise.
7967         (is_subrange_type): Delete.
7968         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
7969         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
7970         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
7971         if the destination type is boolean.
7972         (build_range_check): Do not special-case subtypes.
7973         (fold_sign_changed_comparison): Likewise.
7974         (fold_unary): Likewise.
7975         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
7976         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
7977         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
7978         * tree.c (subrange_type_for_debug_p): New predicate based on the
7979         former is_subrange_type.
7980         * tree.h (subrange_type_for_debug_p): Declare.
7981         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
7982         (convert_affine_scev): Remove call to above function.
7983         (chrec_convert_aggressive): Likewise.
7984         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
7985         false for conversions involving subtypes.
7986         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
7987         (vrp_val_min): Likewise.
7988         (needs_overflow_infinity): Likewise.
7989         (extract_range_from_unary_expr): Likewise.
7990
7991 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
7992
7993         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
7994         * config/frv/frv.c: Likewise.
7995         * config/s390/s390.c: Likewise.
7996         * config/sparc/sparc.h: Likewise.
7997         * config/i386/i386.h: Likewise.
7998         * config/i386/i386.c: Likewise.
7999         * config/crx/crx.c: Likewise.
8000         * config/m68hc11/m68hc11.h: Likewise.
8001         * config/iq2000/iq2000.c: Likewise.
8002         * config/mn10300/mn10300.h: Likewise.
8003         * config/mn10300/mn10300.c: Likewise.
8004         * config/m68k/m68k.c: Likewise.
8005         * config/rs6000/rs6000.c: Likewise.
8006         * config/rs6000/xcoff.h: Likewise.
8007         * config/rs6000/linux64.h: Likewise.
8008         * config/rs6000/sysv4.h: Likewise.
8009         * config/score/score3.c: Likewise.
8010         * config/score/score7.c: Likewise.
8011         * config/score/score.c: Likewise.
8012         * config/arm/arm.md: Likewise.
8013         * config/mips/mips.c: Likewise.
8014         * config/mips/mips.md: Likewise.
8015         * config/bfin/bfin.h: Likewise.
8016         * config/pa/pa.c: Likewise.
8017         * config/pa/constraints.md: Likewise.
8018
8019         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
8020         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
8021         * config/pdp11/pdp11.h: Use memory_address_p instead.
8022
8023 2009-05-14  Ian Lance Taylor  <iant@google.com>
8024
8025         * passes.c (finish_optimization_passes): Change i to int.
8026         * plugin.c (plugins_active_p): Change event to int.
8027         (dump_active_plugins): Likewise.
8028         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
8029         Add cast.
8030         * tree.c (tree_range_check_failed): Change c to unsigned int.
8031         (omp_clause_range_check_failed): Likewise.
8032         (build_common_builtin_nodes): Change mode to int.  Add cast.
8033         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
8034         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
8035
8036         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
8037         ++ or -- with a variable of enum type.
8038
8039 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
8040
8041         PR driver/40144
8042         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
8043
8044 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
8045
8046         * store-motion.c: Do not include params.h
8047         * Makefile.in: Fix dependencies for various files.
8048
8049 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
8050
8051         * auto-inc-dec.c: Fix pass description, remove apparent
8052         accidental duplication.
8053
8054 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
8055
8056         PR middle-end/40147
8057         * ipa-utils.h (memory_identifier_string): Moved to ...
8058         * tree.h (memory_identifier_string): Here.  Add GTY(()).
8059
8060 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
8061
8062         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
8063         in the former documentation of...
8064         (GO_IF_LEGITIMATE_ADDRESS): ... this.
8065         * ira-conflicts.c (get_dup_num): Use address_operand.
8066         * targhooks.c (default_legitimate_address_p): New.
8067         * targhooks.h (default_legitimate_address_p): New.
8068         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
8069         Call hook.
8070         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
8071         * target.h (struct target): Add legitimate_address_p.
8072         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
8073         (TARGET_INITIALIZER): Include it.
8074
8075         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8076         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
8077         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
8078         (TARGET_LEGITIMATE_ADDRESS_P): New.
8079
8080         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8081         (REG_OK_STRICT_P): Delete.
8082         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
8083         (frv_legitimate_address_p_1): ... this.
8084         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
8085         (frv_legitimate_address_p_1): ... the renamed old
8086         frv_legitimate_address_p.
8087         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
8088         (TARGET_LEGITIMATE_ADDRESS_P): New.
8089
8090         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8091         * config/s390/s390-protos.h (legitimate_address_p): Remove.
8092         * config/s390/s390.c (legitimate_address_p): Rename to...
8093         (s390_legitimate_address_p): ... this, make static.
8094         (legitimize_address): Adjust call.
8095         (TARGET_LEGITIMATE_ADDRESS_P): New.
8096         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
8097
8098         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8099         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
8100         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
8101         (TARGET_LEGITIMATE_ADDRESS_P): New.
8102
8103         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8104         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
8105         * config/spu/spu.c (spu_legitimate_address): Rename to...
8106         (spu_legitimate_address_p): ... this, make static.
8107         (TARGET_LEGITIMATE_ADDRESS_P): New.
8108
8109         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8110         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
8111         * config/sparc/sparc.c (legitimate_address_p): Rename to...
8112         (sparc_legitimate_address_p): ... this, make static and return bool.
8113         (legitimize_address): Adjust call.
8114         (TARGET_LEGITIMATE_ADDRESS_P): New.
8115
8116         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8117         * config/i386/i386-protos.h (legitimate_address_p): Remove.
8118         * config/i386/i386.c (legitimate_address_p): Rename to...
8119         (ix86_legitimate_address_p): ... this, make static.
8120         (constant_address_p): Move after it, adjust call.
8121         (TARGET_LEGITIMATE_ADDRESS_P): New.
8122
8123         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8124         * config/avr/avr-protos.h (legitimate_address_p): Remove.
8125         * config/avr/avr.c (legitimate_address_p): Rename to...
8126         (avr_legitimate_address_p): ... this, make static.
8127         (legitimize_address): Adjust call.
8128         (TARGET_LEGITIMATE_ADDRESS_P): New.
8129
8130         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8131         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
8132         * config/crx/crx.c (crx_legitimate_address_p): Make static.
8133         (TARGET_LEGITIMATE_ADDRESS_P): New.
8134
8135         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8136         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
8137         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
8138         (TARGET_LEGITIMATE_ADDRESS_P): New.
8139
8140         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8141         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
8142         Remove.
8143         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
8144         Make static.
8145         (TARGET_LEGITIMATE_ADDRESS_P): New.
8146
8147         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8148         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
8149         Remove.
8150         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
8151         Rename to...
8152         (m68hc11_legitimate_address_p): ... this, make static.
8153         (go_if_legitimate_address_internal): Rename to...
8154         (m68hc11_legitimate_address_p_1): ... this.
8155         (legitimize_address): Adjust call.
8156         (TARGET_LEGITIMATE_ADDRESS_P): New.
8157
8158         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8159         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
8160         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
8161         (TARGET_LEGITIMATE_ADDRESS_P): New.
8162
8163         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8164         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
8165         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
8166         (mn10300_legitimate_address_p): ... this, make static.
8167         (TARGET_LEGITIMATE_ADDRESS_P): New.
8168
8169         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8170         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
8171         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
8172         (TARGET_LEGITIMATE_ADDRESS_P): New.
8173
8174         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8175         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
8176         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
8177         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8178         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
8179         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
8180         (rs6000_legitimate_address_p): ... this, make static.
8181         (TARGET_LEGITIMATE_ADDRESS_P): New.
8182         (REG_MODE_OK_FOR_BASE_P): Delete.
8183         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
8184
8185         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8186         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
8187         Delete.
8188         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
8189         static, adjust types.
8190         (TARGET_LEGITIMATE_ADDRESS_P): New.
8191
8192         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8193         * config/score/score.c (score_address_p): Rename to...
8194         (score_legitimate_address_p): ... this.
8195         (TARGET_LEGITIMATE_ADDRESS_P): New.
8196         * config/score/score3.c (score3_address_p): Rename to...
8197         (score3_legitimate_address_p): ... this.
8198         * config/score/score7.c (score7_address_p): Rename to...
8199         (score7_legitimate_address_p): ... this.
8200
8201         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
8202         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
8203         GO_IF_LEGITIMATE_ADDRESS): Delete.
8204         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
8205         thumb2_legitimate_address_p): Delete.
8206         (arm_legitimate_address_p): Rename to...
8207         (arm_legitimate_address_outer_p): ... this.
8208         * config/arm/constraints.md ("Uq"): Adjust call.
8209         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
8210         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
8211         to...
8212         (arm_legitimate_address_outer_p): ... this.
8213         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
8214         static.
8215         (TARGET_LEGITIMATE_ADDRESS_P): New.
8216
8217         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8218         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
8219         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
8220         (TARGET_LEGITIMATE_ADDRESS_P): New.
8221
8222         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8223         * config/vax/vax-protos.h (legitimate_address_p): Remove.
8224         * config/vax/vax.c (legitimate_address_p): Rename to...
8225         (vax_legitimate_address_p): ... this, make static.
8226         (TARGET_LEGITIMATE_ADDRESS_P): New.
8227
8228         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8229         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
8230         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
8231         (TARGET_LEGITIMATE_ADDRESS_P): New.
8232
8233         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8234         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
8235         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
8236         (mmix_legitimate_address_p): ... this, make static.
8237         (TARGET_LEGITIMATE_ADDRESS_P): New.
8238
8239         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8240         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
8241         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
8242         (TARGET_LEGITIMATE_ADDRESS_P): New.
8243
8244 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
8245
8246         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
8247         of MODE_COMPLEX_INT.
8248
8249 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
8250
8251         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
8252         LCT_NORMAL in function call.
8253         * mips-tdump.c (print_file_desc): Add cast to enum type.
8254         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
8255         (mark_stabs): Add casts to enum types.
8256         (parse_stabs_common): Add casts to enum types.
8257
8258 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
8259
8260         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
8261         Check for invalid values of LETTER.
8262
8263 2009-05-13  Taras Glek  <tglek@mozilla.com>
8264
8265         * attribs.c (register_attribute): moved out attribute registration
8266         into register_attribute.
8267         * doc/plugins.texi: Documented register_attribute and
8268         PLUGIN_ATTRIBUTES.
8269         * gcc-plugin.h: Added forward decl for register_attribute.
8270         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
8271         * plugin.c (register_callback, invoke_plugin_callbacks): Added
8272         PLUGIN_ATTRIBUTES boilerplate.
8273
8274 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
8275
8276         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
8277         values even in sentinel and empty entries.
8278         (ms_printf_flag_specs):  Likewise.
8279         (ms_scanf_flag_specs):  Likewise.
8280         (ms_strftime_flag_specs):  Likewise.
8281         (ms_print_char_table):  Likewise.
8282         (ms_scan_char_table):  Likewise.
8283         (ms_time_char_table):  Likewise.
8284
8285 2009-05-13  Doug Kwan  <dougkwan@google.com>
8286
8287         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
8288
8289 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
8290
8291         * config/mips/mips.md (store): Add attributes for QI and HI.
8292         Update comment.
8293         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
8294         (truncdi<mode>2): ... this new pattern.
8295
8296 2009-05-13  Brad Hards  <bradh@kde.org>
8297
8298         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
8299
8300 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
8301             Ben Elliston <bje@au.ibm.com>
8302
8303         PR middle-end/40035
8304         * dse.c (check_mem_read_rtx): Guard against width == -1.
8305
8306 2009-05-13  Michael Matz  <matz@suse.de>
8307
8308         PR middle-end/39976
8309         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
8310         (trivially_conflicts_p): New function.
8311         (insert_backedge_copies): Use it.
8312
8313 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
8314
8315         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
8316         (handle_stdc_pragma): Use new enum constant names.
8317         (handle_pragma_float_const_decimal64): Ditto.
8318
8319 2009-05-13  Ian Lance Taylor  <iant@google.com>
8320
8321         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
8322         tree.def.
8323
8324 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
8325
8326         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
8327         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
8328         multilibs.
8329         * config/m68k/m68k.h (FL_UCLINUX): Define.
8330
8331 2009-05-13  Jan Hubicka  <jh@suse.cz>
8332
8333         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
8334
8335 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8336
8337         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
8338         unless -fschedule-insns is specified.
8339
8340 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8341
8342         PR target/39561
8343         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
8344         TARGET_EXPAND_CBRANCHDI4.
8345         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
8346         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
8347         (cmpeqdi): Fix comment.
8348
8349 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8350
8351         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
8352         (sh_legitimate_address_p): Likewise.
8353         * config/sh/sh.c (sh_legitimate_index_p): New.
8354         (sh_legitimate_address_p): Likewise.
8355         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
8356         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
8357         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
8358         (MAYBE_BASE_REGISTER_RTX_P): New macro.
8359         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
8360         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
8361         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
8362         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
8363         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
8364
8365 2009-05-12  Jan Hubicka  <jh@suse.cz>
8366
8367         * tree-inline.c (estimate_operator_cost): Add operands;
8368         when division happens by constant, it is cheap.
8369         (estimate_num_insns): Loads and stores are not having cost of 0;
8370         EH magic stuff is cheap; when computing runtime cost of switch,
8371         use log2 base of amount of its cases; builtin_expect has cost of 0;
8372         compute cost for moving return value of call.
8373         (init_inline_once): Initialize time_based flags.
8374         * tree-inline.h (eni_weights_d): Add time_based flag.
8375
8376 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8377
8378         * df-core.c: Update head documentation.
8379
8380 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
8381
8382         PR bootstrap/40118
8383         * rs6000.c (rs6000_generate_compare): Use op1b instead of
8384         shadowing exisiting variable op1.
8385
8386 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
8387
8388         PR target/37179
8389         * config/i386/driver-i386.c (processor_signatures): New enum.
8390         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
8391         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
8392         processor signature to detect geode processor.
8393
8394 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8395
8396         Revert:
8397
8398         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8399
8400         * optabs.c (prepare_cmp_insn): Temporarily disable test that
8401         causes spurious differences between trunk and cond-optab branch.
8402
8403 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8404
8405         * dojump.c (compare_from_rtx): Delete.
8406         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
8407         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
8408         if the comparison does not satisfy the predicate; test predicates for
8409         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
8410         further if one existing pattern fails.
8411         * expr.h (compare_from_rtx): Delete.
8412         (prepare_operand): Declare it.
8413         * optabs.c: Change "lib call" to "libcall" throughout.
8414         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
8415         HAVE_conditional_trap, emit_cmp_insn): Delete.
8416         (can_compare_p): Delete cmp_optab case.
8417         (prepare_float_lib_cmp): Return an rtx and a machine mode.
8418         Accept other parameters by value.
8419         (prepare_operand): Make non-static.
8420         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
8421         other parameters by value.  Try to widen operands here based on
8422         an optab_methods argument and looking at cbranch_optab.
8423         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
8424         loop.  Use cbranch_optab directly.
8425         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
8426         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
8427         assertion.
8428         (emit_conditional_move, emit_conditional_add): Inline what's needed
8429         of compare_from_rtx, using new prepare_cmp_insn for the rest.
8430         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
8431         with COMPARE.  Move cmov_optab and cstore_optab above
8432         with cbranch_optab, move cmp_optab down with ucmp_optab,
8433         remove tst_otpab.  Do not initialize trap_rtx.
8434         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
8435         for trap code.  Do not check HAVE_conditional_trap.  Use
8436         prepare_cmp_insn.  Accept no predicate for operand 3.
8437         * optabs.h (OTI_cmp): Mark as used only for libcalls.
8438         (OTI_ctrap, ctrap_optab): New.
8439         (tst_optab): Delete.
8440         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
8441         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
8442         with lookup of ctrap_optab.
8443         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
8444         Delete.
8445         (ctrap_optab): New.
8446
8447         * combine.c (combine_simplify_rtx, simplify_set): Do not
8448         special case comparing against zero for cc0 machines.
8449         * simplify-rtx.c (simplify_binary_operation_1): Never remove
8450         COMPARE on cc0 machines.
8451         (simplify_relational_operation): Return a new expression when
8452         a COMPARE could be removed.
8453         * final.c (final_scan_insn): Compare cc_status values
8454         against LHS of a (compare FOO (const_int 0)) cc0 source.
8455         Also check if cc_status.value is the full compare.
8456
8457         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
8458         (cstoreMM4): Document.
8459         (conditional_trap): Document ctrapMM4 instead.
8460         (sync_compare_and_swapMM): Refer to cbranchcc4.
8461         (Dependent Patterns): Eliminate obsolete information referring to
8462         the old jump optimization phase.
8463         (Canonicalization): Include cbranchcc4 case, omit canonicalization
8464         of compares with 0 on cc0 machines.
8465         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
8466         avoiding references to cc0.  Remove text about storing operands
8467         in cmpMM.
8468         * doc/tm.texi (Condition Codes): Include blurb on different
8469         condition code representations, separate into subsections for
8470         CC0, MODE_CC and conditional execution.
8471
8472         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
8473         alpha_emit_setcc): Accept operands and a machine mode.
8474         * config/alpha/alpha.c (alpha_emit_conditional_branch):
8475         Get code/op0/op1 from operands, use machine mode argument
8476         instead of alpha_compare.fp_p.  Emit the branch here.
8477         (alpha_emit_setcc): Likewise, and return boolean.
8478         (alpha_emit_conditional_move): Likewise.  Assert that
8479         cmp_op_mode == cmp_mode, and simplify accordingly.
8480         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
8481         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
8482         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
8483         Delete.
8484         (stack probe test): Use cbranchdi4.
8485         * config/alpha/predicates.md (alpha_cbranch_operator): New.
8486
8487         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
8488         * config/arc/arc.h (movsicc, movsfcc): Use it.
8489         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
8490         (cbranchsi4, cstoresi4): New.
8491         (cmpsi, bCC and sCC expanders): Remove. 
8492
8493         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
8494         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
8495         * config/arm/predicates.md (arm_comparison_operator): Only include
8496         floating-point operators if there is a hardware floating-point unit.
8497         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
8498         deferring to cbranch_cc and cstore_cc respectively.
8499         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
8500         cbranch_cc, cstore_cc): New.
8501         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
8502         arm_compare_op1.
8503         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
8504
8505         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
8506         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
8507         as an argument.
8508         (adjust_insn_length): Adjust calls.
8509         (avr_reorg): Handle (compare (foo) (const_int 0)).
8510         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
8511         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
8512         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
8513         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
8514         (bCC): Remove.
8515         (cbranchqi4, cbranchhi4, cbranchsi4): New.
8516         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
8517
8518         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
8519         (cbranchsi4, cstorebi4, cstoresi4): New.
8520         (movbisi): This insn is duplicate, split it to zero_extend.
8521         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
8522         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
8523         (bfin_optimize_loop): Use cbranch expander.
8524         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
8525         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
8526         (bfin_bimode_comparison_operator): ... this.
8527         (bfin_direct_comparison_operator): New.
8528  
8529         * config/cris/cris.c (cris_normal_notice_update_cc): Look
8530         inside (compare FOO (const_int 0)).
8531         (cris_rtx_costs): Handle ZERO_EXTRACT.
8532         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
8533         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
8534         (*tstdi_v32): Delete.
8535         (*cmpdi_non_v32): Add M alternative for operand 1.
8536         (cmpsi, cmp<mode>): Make private.
8537         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
8538         with COMPARE.
8539         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
8540
8541         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
8542         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
8543         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
8544         (cc_reg_operand): New.
8545         (any_cond): Delete.
8546         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
8547         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
8548         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
8549         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
8550         crx_expand_scond): Delete.
8551
8552         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
8553         (cbranchsi4): New.
8554         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
8555         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
8556
8557         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
8558         cstoresi4, cstoresf4, cstoredf4): New.
8559         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
8560         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
8561         Receive the entire operands array.
8562         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
8563         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
8564         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
8565         Get test/op0/op1 from the operands array.
8566         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
8567
8568         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
8569         (h8300_expand_store): New.
8570         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
8571         (const_int 0)).
8572         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
8573         (h8300_expand_store): New.
8574         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
8575         or do not try to produce (set (cc0) REG).
8576         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
8577         change a compare into a move to a scratch register.  Disable some
8578         peepholes when comparing with zero.
8579         (tstsi, tsthi, tstsi, cmpqi): Make private.
8580         (cmphi): Delete.
8581         (bCC, sCC): Delete.
8582         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
8583         cstoresi4): New.
8584
8585         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
8586         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
8587         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
8588         (ix86_emit_i387_log1p): Use cbranchxf2.
8589         (ix86_expand_setcc): Return void.
8590         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
8591         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
8592         cmp<MODEF>, cmpcc): Remove.
8593         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
8594         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
8595         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
8596         (sCC and bCC expanders): Remove.
8597         (stack_protect_test): Use cbranchcc4.
8598
8599         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
8600         Delete.
8601         (ia64_expand_compare): Accept three rtx by reference and return void.
8602         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
8603         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
8604         from *expr.  Update *expr with the BImode comparison to do.
8605         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
8606         cmptf, bCC, sCC, conditional_trap): Delete.
8607         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
8608         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
8609         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
8610         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
8611         * config/ia64/predicates.md (ia64_cbranch_operator): New.
8612
8613         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
8614         type of last argument.
8615         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
8616         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
8617         use machine mode argument instead of branch_type.  Remove dead
8618         code for floating-point comparisons.
8619         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
8620         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
8621         Remove.
8622         (cbranchsi4, cstoresi4): New.
8623         * config/iq2000/predicates.md (reg_or_const_operand): New.
8624
8625         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
8626         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
8627         (b<code>_op): Rewrite to...
8628         (bcc_op): ... this, using match_operator.
8629         (s<code>_op): Rewrite to...
8630         (scc_op): ... this, using match_operator.
8631         (s<code>_24_op): Rewrite to...
8632         (scc_op_24): ... this, using match_operator.
8633         (s<code>_<mode>): Rewrite to...
8634         (cstore<mode>4): ... this, using match_operator.
8635         (s<code>_<mode>_24): Rewrite to...
8636         (cstore<mode>4_24): ... this, using match_operator.
8637         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
8638         m32c_unpend_compare, m32c_expand_scc): Delete.
8639         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
8640         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
8641         (m32c_expand_movcc): Change NE to EQ if necessary.
8642         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
8643
8644         * config/m32r/m32r-protos.h (gen_cond_store): New.
8645         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
8646         (gen_cond_store): New, from sCC patterns.
8647         (m32r_expand_block_move): Use cbranchsi4.
8648         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
8649         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
8650         (cbranchsi4, cstoresi4): New.
8651         
8652         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
8653         Delete.
8654         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
8655         (m68hc11_notice_update_cc): Look into a compare with 0.
8656         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
8657         Delete.
8658         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
8659         cmphi, cmpqi, bCC): Delete.
8660         (cbranchsi4, cbranchhi4, cbranchqi4): New.
8661         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
8662         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
8663         sets with COMPARE.
8664
8665         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
8666         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
8667         * config/m68k/constraints.md (H): New.
8668         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
8669         the define_insn below.
8670         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
8671         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
8672         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
8673         patterns): Wrap RHS with COMPARE.
8674         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
8675         (*cmpdi_internal): Name this pattern.
8676         (cmpdi): Change to define_insn.
8677         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
8678         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
8679         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
8680         predicate.
8681         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
8682         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
8683         (conditional_trap): Change to...
8684         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
8685         (*conditional_trap): Use the ordered_comparison_operator and
8686         const1_operand predicates.
8687         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
8688         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
8689         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
8690         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
8691
8692         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
8693         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
8694         (mcore_gen_compare): New. 
8695         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
8696         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
8697         (mcore_gen_compare): ... this.
8698         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
8699         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
8700         (stack probe pattern): Use cbranchsi4.
8701
8702         * config/mips/predicates.md (mips_cstore_operator): New.
8703         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
8704         * config/mips/mips.md (any_cond): Delete.
8705         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
8706         always succeed.
8707         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
8708         fixuns_truncsfdi2): Use cbranch patterns.
8709         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
8710         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
8711         Adjust call to mips_expand_conditional_branch.
8712         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
8713         cstore<GPR:mode>4.
8714         * config/mips/mips-protos.h (mips_expand_conditional_branch,
8715         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
8716         * config/mips/mips.c (cmp_operands): Delete.
8717         (mips_emit_compare): Get comparison operands from *op0/*op1.
8718         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
8719         that it succeeds.  Use op0/op1 instead of cmp_operands.
8720         (mips_expand_conditional_branch, mips_expand_conditional_move,
8721         mips_expand_conditional_trap): Likewise.
8722         (mips_block_move_loop): Use cbranch patterns. 
8723         * config/mips/mips.h (cmp_operands): Delete.
8724
8725         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
8726         (mmix_gen_compare_reg): Just return a register in the right CC mode.
8727         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
8728         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
8729         (*cmpcc_folded): Rename to...
8730         (*cmpdi_folded): this.
8731         (*cmpcc): Rename to...
8732         (*cmps): ... this.
8733         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
8734         (bCC): Remove.
8735         (cbranchdi4): New.
8736         (cbranchdf4): New.  Handle invalid comparisons here.
8737         * config/mmix/predicates.md (float_comparison_operator): New.
8738
8739         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
8740         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
8741         * config/mn10300/mn10300.md (tst): Delete.
8742         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
8743         Name these patterns and wrap RHS in a compare.
8744         (*cmpsi): Make this pattern private.  Include tst.
8745         (*cmpsf): Make this pattern private.
8746         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
8747         (compare with zero peepholes): Likewise.
8748         (bCC): Remove.
8749         (cbranchsi4, cbranchsf4): New.
8750         (casesi): Use cbranchsi4.
8751
8752         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
8753         hppa_branch_type): Delete.
8754         (return_addr_rtx): Use cbranchsi4.
8755         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
8756         Emit CCFPmode comparison here.
8757         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
8758         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
8759         hppa_branch_type): Delete.
8760         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
8761         (movsicc, movdicc): Remove references to hppa_compare_op0,
8762         hppa_compare_op1 and compare_from_rtx.
8763         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
8764         (casesi): Use cbranchsi4.
8765
8766         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
8767         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
8768         * config/pdp11/pdp11.md (register_or_const0_operand): New.
8769         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
8770         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
8771         (bCC): Delete.
8772         (cbranchdf4, cbranchhi4, cbranchqi4): New.
8773         (*branch, *branch_inverted): New.
8774
8775         * config/picochip/picochip.md (cbranchhi4): Use
8776         ordered_comparison_operator.
8777         (cmphi, bCC): Remove.
8778
8779         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
8780         (trap_comparison_operator): Delete.
8781         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
8782         rs6000_emit_cbranch): Accept mode and operands.
8783         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
8784         rs6000_compare_fp_p): Delete.   
8785         (rs6000_generate_compare): Accept mode and comparison.  Extract code
8786         and op0/op1 from there.  Replace references to rs6000_compare_op0
8787         and rs6000_compare_op1.
8788         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
8789         extract result from passed operands.
8790         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
8791         extract loc from passed operands.
8792         (rs6000_emit_cmove): Likewise.
8793         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
8794         rs6000_compare_fp_p): Delete.
8795         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
8796         (cbranch<GPR>4, cbranch<FP>4): New.
8797         (cstore<mode>4): New.  Consolidate here all choices about when to use
8798         portable or specialized sCC sequences.
8799         (stack_protect_test): Use cbranchsi4.
8800         (conditional_trap): Replace with ctrap<GPR>4.
8801         (conditional trap insn): Replace trap_comparison_operator with
8802         ordered_comparison_operator. 
8803
8804         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
8805         (s390_emit_prologue): Use ctrap.
8806         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
8807         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
8808         New predicates replacing...
8809         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
8810         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
8811         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
8812         (add<mode>cc): Do not use s390_compare_op0/op1.
8813         (s<code>): Change to...
8814         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
8815         (seq): Change to...
8816         (cstorecc4): ... this.  Handle EQ or NE equally.
8817         (*sne): Un-privatize for use in cstorecc4.
8818         (b<code>): Change to...
8819         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
8820         (conditional_trap): Replace with...
8821         (ctrap<GPR>4, ctrap<FP>4): ... these.
8822         (stack_protect): Use cbranchcc4.
8823
8824         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
8825         * config/score/score-protos.h (score_gen_cmp): Delete.
8826         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
8827         (score_block_move-loop): Use cbranchsi4.
8828         * config/score/score.md (cbranchsi4): New.
8829         (cmpsi, bCC): Delete.
8830         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
8831         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
8832         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
8833         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
8834         * config/score/score3.h (score3_gen_cmp): Delete.
8835         * config/score/score7.h (score7_gen_cmp): Delete.
8836
8837         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
8838         (sh_emit_scc_to_t): ... this.  Return void.
8839         (from_compare): Rename to...
8840         (sh_emit_compare_and_branch): ... this.
8841         (sh_emit_compare_and_set): New.
8842         (sh_expand_t_scc): Accept operands.
8843         * config/sh/predicates.md (sh_float_comparison_operator): New.
8844         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
8845         (prepare_scc_operands): Rename to...
8846         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
8847         arguments.
8848         (sh_emit_cheap_store_flag): New.
8849         (sh_emit_set_t_insn): New.
8850         (from_compare): Rename to...
8851         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
8852         handling of TARGET_SH2E floating point to avoid recursive call.
8853         Generate branch here.
8854         (sh_emit_compare_and_set): New.
8855         (sh_expand_t_scc): Get op0/op1 from arguments.
8856         (sh_emit_cheap_store_flag): New.
8857         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
8858         cases.
8859         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
8860         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
8861         (movsicc, movdicc): Do nothing when it recreated operands from
8862         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
8863         prepare_scc_operands (now sh_emit_scc_to_t).
8864         (udivdi3): Use cstoresi4.
8865         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
8866         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
8867         (cbranchint4_media, cbranchfp4_media): New.
8868         (casesi): Use cbranchdi4.
8869         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
8870         Delete.
8871         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
8872         (movnegt): Remove second operand.
8873         (cbranchsf4, cbranchdf4): New.
8874         (stack_protect): Use cbranchdi4/cbranchsi4.
8875
8876         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
8877         (gen_compare_reg): Accept comparison, extract part of it to...
8878         (gen_compare_reg_1): ... this. 
8879         (gen_compare_operator): Delete.
8880         (gen_v9_scc): Accept separate destination, comparison code and arms.
8881         Do not use sparc_compare_op0/sparc_compare_op1.
8882         (emit_scc_insn, emit_conditional_branch_insn): New.
8883         (emit_v9_brxx): Make static.  Remove useless assertion.
8884         (sparc_emit_float_lib_cmp): Return RTL instead of calling
8885         emit_cmp_insn.
8886         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
8887         * config/sparc/sparc-protos.h (gen_compare_reg,
8888         sparc_emit_float_lib_cmp): Adjust prototype.
8889         (emit_scc_insn, emit_conditional_branch_insn): New.
8890         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
8891         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
8892         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
8893         iterators to the top.
8894         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
8895         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
8896         snedi_special_trunc): Delete.
8897         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
8898         and snedi_special_trunc.
8899         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
8900         cbranchdi4, cbranch<F:mode>4): New.
8901         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
8902         here.  Use gen_compare_reg instead of gen_compare_operator.
8903         (conditional_trap): Replace with...
8904         (ctrapsi4, ctrapdi4): ... this.
8905         (stack_protect_test): Use cbranchcc4.
8906
8907         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
8908         argument to rtx.
8909         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
8910         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
8911         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
8912         from operands[0] or operands[3] depending on is_set.
8913         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
8914         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
8915         cmpdf, bCC), sCC: Remove.
8916         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
8917         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
8918         cstoredf4): New.
8919         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
8920         spu_emit_branch_or_set.
8921
8922         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
8923         Add two arguments.
8924         * config/stormy16/stormy16.h (xstormy16_compare_op0,
8925         xstormy16_compare_op1): Delete.
8926         * config/stormy16/stormy16.c (xstormy16_compare_op0,
8927         xstormy16_compare_op1): Delete. 
8928         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
8929         Adjust calls.
8930         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
8931         (cmphi, cmpsi, bCC): Remove.
8932
8933         * config/v850/v850.md (tstsi, cmpsi): Fold into...
8934         (*cmpsi): ... this one.
8935         (cbranchsi4, cstoresi4): New.
8936         (bCC expanders): Delete.
8937         (sCC insns): Fold into...
8938         (*setcc): ... this one.
8939         (casesi): Do not use gen_cmpsi and gen_bgtu. 
8940         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
8941         (movsicc): Simplify.
8942         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
8943
8944         * config/vax/vax-protos.h (cond_name): New.
8945         (vax_output_conditional_branch): Remove.
8946         * config/vax/vax.c (cond_name): New.
8947         (vax_output_conditional_branch): Remove.
8948         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
8949         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
8950         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
8951         (bit<VAXint>): Wrap source with (compare).
8952         (b<code> and following unnamed pattern): Rename to *branch and
8953         *branch_reversed.  Change macroization to match_operator.
8954         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
8955
8956         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
8957         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
8958         Change last argument to machine_mode.
8959         (xtensa_expand_scc): Add machine_mode argument.
8960         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
8961         (gen_conditional_move, xtensa_expand_conditional_branch,
8962         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
8963         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
8964         Adjust operand numbers.
8965         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
8966         Delete.
8967         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
8968         (cmpsi, cmpsf, b<code>, s<code>): Delete.
8969         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
8970
8971 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8972
8973         * optabs.c (prepare_cmp_insn): Temporarily disable test that
8974         causes spurious differences between trunk and cond-optab branch.
8975
8976 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
8977
8978         PR target/37137
8979         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
8980
8981 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
8982
8983         * tree.c (iterative_hash_pointer): Delete.
8984         (iterative_hash_expr): Short-circuit handling of NULL pointer.
8985         Hash UIDs and versions of SSA names.  Don't special-case built-in
8986         function declarations.
8987
8988 2009-05-11  Ian Lance Taylor  <iant@google.com>
8989
8990         PR bootstrap/40103
8991         * graphite.c: Force -Wc++-compat to only be a warning before
8992         #including "cloog/cloog.h".
8993
8994 2009-05-11  Martin Jambor  <mjambor@suse.cz>
8995
8996         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
8997         
8998 2009-05-11  Jan Hubicka  <jh@suse.cz>
8999
9000         * tree-ssa-loop-ivcanon.c: Include target.h
9001         (struct loop_size): new structure.
9002         (constant_after_peeling): New predicate.
9003         (tree_estimate_loop_size): New function.
9004         (estimated_unrolled_size): Rewrite for new estimates.
9005         (try_unroll_loop_completely): Use new estimates.
9006         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
9007
9008 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9009
9010         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
9011         libcpp interface change.
9012         (spu_macro_to_expand): Likewise.
9013
9014 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
9015
9016         PR tree-optimization/40026
9017         * gimplify.c (gimplify_init_constructor): Change initial conditional
9018         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
9019         optimize_compound_literals_in_ctor.
9020
9021 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
9022
9023         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
9024         New devices.
9025         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
9026
9027 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
9028
9029         * tree-vect-data-refs.c (vect_analyze_group_access): Use
9030         HOST_WIDE_INT for gap.
9031
9032 2009-05-11  Ira Rosen  <irar@il.ibm.com>
9033
9034         PR tree-optimization/40074
9035         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
9036         account in group size and step comparison.
9037
9038 2009-05-11  Richard Guenther  <rguenther@suse.de>
9039
9040         * passes.c (init_optimization_passes): Strip now incorrect comment.
9041         (execute_function_todo): Do not set PROP_alias.
9042         * tree-pass.h (PROP_alias): Remove.
9043         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
9044         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
9045         * tree-nrv.c (pass_return_slot): Likewise.
9046         * tree-object-size.c (pass_object_sizes): Likewise.
9047         * tree-ssa-dom.c (pass_dominator): Likewise.
9048         (pass_phi_only_cprop): Likewise.
9049         * tree-ssa-dse.c (pass_dse): Likewise.
9050         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
9051         (pass_cselim): Likewise.
9052         * tree-ssa-pre.c (pass_pre): Likewise.
9053         (pass_fre): Likewise.
9054         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
9055         * tree-ssa-sink.c (pass_sink_code): Likewise.
9056         * tree-stdarg.c (pass_stdarg): Likewise.
9057         * tree-tailcall.c (pass_tail_calls): Likewise.
9058         * tree-vrp.c (pass_vrp): Likewise.
9059
9060 2009-05-10  Ian Lance Taylor  <iant@google.com>
9061
9062         * basic-block.h (enum profile_status): Break out of struct
9063         control_flow_graph.
9064         * cgraph.h (struct inline_summary): Break out of struct
9065         cgraph_local_info.
9066         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
9067         of struct cgraph_order_sort.
9068         * combine.c (enum undo_kind): New enum, broken out of struct undo.
9069         * cse.c (struct branch_path): Break out of struct
9070         cse_basic_block_data.
9071         * except.h (enum eh_region_type): Break out of struct eh_region.
9072         * gcc.c (enum add_del): Break out of struct modify_target.
9073         * genrecog.c (enum decision_type): Break out of struct decision_test.
9074         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
9075         ggc_pch_data.
9076         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
9077         * regmove.c (enum match_use): New enum, broken out of struct match.
9078         * sched-int.h (enum post_call_group): New enum, broken out of
9079         struct deps.
9080         (struct deps_reg): Break out of struct deps.
9081         * target.h (struct asm_int_op): Break out of struct gcc_target.
9082         * tree-eh.c (struct goto_queue_node): Break out of struct
9083         leh_tf_state.
9084         * tree-inline.h (enum copy_body_cge_which): Break out of
9085         copy_body_data.
9086         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
9087
9088         * c-decl.c (in_struct, struct_types): New static variables.
9089         (pushtag): Add loc parameter.  Change all callers.
9090         (lookup_tag): Add ploc parameter.  Change all callers.
9091         (check_compound_literal_type): New function.
9092         (parser_xref_tag): Add loc parameter.  Change all callers.  If
9093         -Wc++-compat, warn about struct/union/enum types defined within a
9094         struct or union.
9095         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
9096         and loc parameters.  Change all callers.  Change error calls to
9097         error_at, using loc.  For a redefinition, if the location of the
9098         original definition is known, report it.  Set in_struct and
9099         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
9100         (finish_struct): Add new parameters enclosing_in_struct and
9101         enclosing_struct_types.  Change all callers.  Set
9102         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
9103         in the struct.  If in a struct, add this struct to struct_types.
9104         (start_enum): Add loc parameter.  Change all callers.  Use
9105         error_at for errors, using loc.  For a redefinition, if the
9106         location of the original definition is known, report it.  If in a
9107         struct, add this enum type to struct_types.  If -Wc++-compat warn
9108         if in sizeof, typeof, or alignof.
9109         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
9110         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
9111         (c_parser_enum_specifier): Get enum location for start_enum.
9112         (c_parser_struct_or_union_specifier): Get struct location for
9113         start_struct.  Save in_struct and struct_types status between
9114         start_struct and finish_struct.
9115         (c_parser_cast_expression): Get location of cast.
9116         (c_parser_alignof_expression): Get location of type.
9117         (c_parser_postfix_expression): Likewise.
9118         (c_parser_postfix_expression_after_paren_type): Add type_loc
9119         parameter.  Change all callers.  Call check_compound_literal_type.
9120         Use type_loc for error about variable size type.
9121         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
9122         of an enum constant from an enum type defined in a struct or union.
9123         (c_cast_expr): Add loc parameter.  Change all callers.  If
9124         -Wc++-compat, warn about defining a type in a cast.
9125         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
9126         (start_enum, start_struct, finish_struct): Update declarations.
9127         (parser_xref_tag, c_cast_expr): Update declarations.
9128         (check_compound_literal_type): Declare.
9129
9130 2009-05-11  Ben Elliston  <bje@au.ibm.com>
9131
9132         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
9133         for recent libcpp interface change.
9134         (rs6000_macro_to_expand): Likewise.
9135
9136 2009-05-10  Michael Matz  <matz@suse.de>
9137
9138         PR target/40031
9139         * config/arm/arm.c (require_pic_register): Emit on entry edge,
9140         not at entry of function.
9141
9142 2009-05-10  Richard Guenther  <rguenther@suse.de>
9143
9144         PR tree-optimization/40081
9145         Revert
9146         * tree-sra.c (instantiate_element): Instantiate scalar replacements
9147         using the main variant of the element type.  Do not fiddle with
9148         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
9149
9150         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
9151         structs with volatile fields.
9152
9153 2009-05-10  Jan Hubicka  <jh@suse.cz>
9154
9155         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
9156         (estimate_move_cost): Assert that it does not get called for
9157         VOID_TYPE_P.
9158         (estimate_num_insns): Skip VOID types in argument handling.
9159         (optimize_inline_calls): Delete unreachable blocks and verify that
9160         callgraph is valid.
9161
9162 2009-05-10  Jan Hubicka  <jh@suse.cz>
9163
9164         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
9165         * cgraph.c (cgraph_mark_address_taken_node): New function.
9166         (dump_cgraph_node): Dump new flag.
9167         * cgraph.h (struct cgraph_node): Add address_taken.
9168         (cgraph_mark_address_taken_node): New function.
9169         * ipa.c (cgraph_postorder): Prioritize functions with address taken
9170         since new direct calls can be born.
9171
9172 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
9173
9174         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
9175         tok->val.node.node.
9176
9177 2009-05-10  Jan Hubicka  <jh@suse.cz>
9178
9179         PR middle-end/40084
9180         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
9181         argument; rewrite.
9182         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
9183         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
9184         * tree-inline.c (copy_bb): Set frequency correctly.
9185         (fold_marked_statements): Update call to
9186         cgraph_update_edges_for_call_stmt.
9187
9188 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
9189
9190         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
9191         identifiers in diagnostics.
9192         * config/arm/arm.c (arm_handle_fndecl_attribute,
9193         arm_handle_isr_attribute): Likewise.
9194         * config/avr/avr.c (avr_handle_progmem_attribute,
9195         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
9196         * config/bfin/bfin.c (handle_int_attribute,
9197         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
9198         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
9199         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
9200         Likewise.
9201         * config/darwin.c (darwin_handle_kext_attribute,
9202         darwin_handle_weak_import_attribute): Likewise.
9203         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
9204         h8300_handle_eightbit_data_attribute,
9205         h8300_handle_tiny_data_attribute): Likewise.
9206         * config/i386/i386.c (ix86_handle_cconv_attribute,
9207         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
9208         * config/i386/winnt.c (ix86_handle_shared_attribute,
9209         ix86_handle_selectany_attribute): Likewise.
9210         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
9211         * config/m32c/m32c.c (function_vector_handler): Likewise.
9212         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
9213         m68hc11_handle_fntype_attribute): Likewise.
9214         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
9215         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
9216         * config/mips/mips.c (mips_insert_attributes,
9217         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
9218         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
9219         rs6000_handle_struct_attribute): Likewise.
9220         * config/sh/sh.c (sh_insert_attributes,
9221         sh_handle_resbank_handler_attribute,
9222         sh_handle_interrupt_handler_attribute,
9223         sh2a_handle_function_vector_handler_attribute,
9224         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
9225         Likewise.
9226         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
9227         * config/spu/spu.c (spu_handle_fndecl_attribute,
9228         spu_handle_vector_attribute): Likewise.
9229         * config/stormy16/stormy16.c
9230         (xstormy16_handle_interrupt_attribute): Likewise.
9231         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
9232         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
9233
9234 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
9235
9236         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
9237         (pp_translate_identifiers): New.
9238         (pp_identifier): Only conditionally translate identifier to locale
9239         character set.
9240         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
9241         (pp_base_tree_identifier): Only conditionally translate identifier
9242         to locale character set.
9243         * c-pretty-print.c (M_): Define.
9244         (pp_c_type_specifier, pp_c_primary_expression): Mark English
9245         fragments for conditional translation with M_.
9246         * tree-pretty-print.c (maybe_init_pretty_print): Disable
9247         identifier translation.
9248
9249 2009-05-10  Richard Guenther  <rguenther@suse.de>
9250
9251         PR tree-optimization/40081
9252         * tree-sra.c (instantiate_element): Instantiate scalar replacements
9253         using the main variant of the element type.  Do not fiddle with
9254         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
9255
9256 2009-05-09  Jan Hubicka  <jh@suse.cz>
9257
9258         PR middle-end/40080
9259         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
9260         indirect calls; verify cgraph afterwards.
9261
9262 2009-05-09  Jan Hubicka  <jh@suse.cz>
9263
9264         PR bootstrap/40082
9265         * ipa.c (update_inlined_to_pointer): New function.
9266         (cgraph_remove_unreachable_nodes): Use it.
9267
9268 2009-05-09  Jan Hubicka  <jh@suse.cz>
9269
9270         * tree-eh.c (struct leh_state): Remove prev_try.
9271         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
9272         not track prev_try.
9273         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
9274         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
9275         remove_eh_handler_and_replace, foreach_reachable_handler,
9276         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
9277         * except.h (struct eh_region): Remove eh_region_u_cleanup.
9278         (gen_eh_region_cleanup): Update prototype.
9279
9280 2009-05-09  Jan Hubicka  <jh@suse.cz>
9281
9282         PR middle-end/40043
9283         * except.c (copy_eh_region): Always set prev_try.
9284         (redirect_eh_edge_to_label): Find outer try.
9285         (foreach_reachable_handler): When looking for prev try
9286         handle case where previous try is not going to be taken.
9287
9288 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
9289
9290         PR tree-optimization/40049
9291         * tree-vect-stmts.c (vectorizable_operation): If the machine has
9292         only vector/vector shifts, convert the type of the constant to the
9293         appropriate type to avoid building incorrect trees, which
9294         eventually have problems with garbage collection.
9295
9296 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
9297
9298         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
9299         -1 for complex floating-point types if honoring signed zeros.
9300
9301 2009-05-08  Jan Hubicka  <jh@suse.cz>
9302
9303         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
9304         argument; handle correctly when profile is absent.
9305         (build_cgraph_edges): Update.
9306         (rebuild_cgraph_edges): Update.
9307         * cgraph.c: Do not include varray.h.
9308         (cgraph_set_call_stmt_including_clones): New function.
9309         (cgraph_create_edge_including_clones): Likewise
9310         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
9311         (cgraph_update_edges_for_call_stmt): Handle clones.
9312         (cgraph_remove_node): Handle clone tree.
9313         (cgraph_remove_node_and_inline_clones): New function.
9314         (dump_cgraph_node): Dump clone tree.
9315         (cgraph_clone_node): Handle clone tree.
9316         (clone_function_name): Bring here from tree-inline.c.
9317         (cgraph_create_virtual_clone): New function.
9318         * cgraph.h (ipa_replace_map): Move here from ipa.h.
9319         (cgraph_clone_info): New function.
9320         (strut cgraph_node): Add clone_info and new clone tree pointers.
9321         (cgraph_remove_node_and_inline_clones,
9322         cgraph_set_call_stmt_including_clones,
9323         cgraph_create_edge_including_clones,
9324         cgraph_create_virtual_clone): Declare.
9325         (cgraph_function_versioning): Use VEC argument.
9326         (compute_call_stmt_bb_frequency): Update prototype.
9327         (cgraph_materialize_all_clones): New function.
9328         * ipa-cp.c (ipcp_update_cloned_node): Remove.
9329         (ipcp_create_replace_map): Update to VECtors.
9330         (ipcp_update_callgraph): Use virtual clones.
9331         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
9332         (ipcp_update_profiling): Do not update local profiling.
9333         (ipcp_insert_stage): Use VECtors and virtual clones.
9334         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
9335         (clone_of_p): New function.
9336         (cgraph_preserve_function_body_p): Use clone tree.
9337         (cgraph_optimize): Materialize clones.
9338         (cgraph_function_versioning): Update for VECtors.
9339         (save_inline_function_body): Use clone tree.
9340         (cgraph_materialize_clone): New function.
9341         (cgraph_materialize_all_clones): Likewise.
9342         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
9343         * ipa.c: Include gimple.h.
9344         (cgraph_remove_unreachable_nodes): Use clone tree.
9345         * ipa-prop.c (ipa_note_param_call): Update call to
9346         compute_call_stmt_bb_frequencycall.
9347         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
9348         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
9349         (copy_bb): Handle updating of clone tree; add new edge when new call
9350         appears.
9351         (expand_call_inline): Be strict about every call having edge.
9352         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
9353         (delete_unreachable_blocks_update_callgraph): New function.
9354         (tree_function_versioning): Use VECtors; always remove unreachable
9355         blocks and fold conditionals.
9356         * tree-inline.h: Do not include varray.h.
9357         (tree_function_versioning): Remove.
9358         * Makefile.in (GTFILES): Remove tree-inline.c
9359         * passes.c (do_per_function): Do only functions having body.
9360         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
9361         tree.
9362
9363 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
9364             Andrew Morrow  <acm@google.com>
9365
9366         PR c/36892
9367         * c-common.c (c_common_attribute_table): Permit deprecated
9368         attribute to take an optional argument.
9369         (handle_deprecated_attribute): If the optional argument to
9370         __attribute__((deprecated)) is not a string ignore the attribute
9371         and emit a warning.
9372
9373         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
9374         * c-typeck.c (build_component_ref): Likewise.
9375         (build_external_ref): Likewise.
9376
9377         * toplev.c (warn_deprecated_use): Add an attribute argument.
9378         Emit the message associated with __attribute__((deprecated)).
9379
9380         * toplev.h (warn_deprecated_use): Updated.
9381
9382         * doc/extend.texi: Document new optional parameter to
9383         __attribute__((deprecated))
9384
9385 2009-05-08  Michael Eager <eager@eagercon.com>
9386
9387         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
9388         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
9389
9390 2009-05-08  Richard Guenther  <rguenther@suse.de>
9391
9392         PR tree-optimization/40062
9393         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
9394         Avoid exponential behavior.
9395
9396 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
9397
9398         PR rtl-optimization/33928
9399         PR 26854
9400         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
9401         process_uses, build_single_def_use_links): New.
9402         (update_df): Update use_def_ref.
9403         (forward_propagate_into): Use get_def_for_use instead of use-def
9404         chains.
9405         (fwprop_init): Call build_single_def_use_links and let it initialize
9406         dataflow.
9407         (fwprop_done): Free use_def_ref.
9408         (fwprop_addr): Eliminate duplicate call to df_set_flags.
9409         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
9410         df_rd_simulate_one_insn): New.
9411         (df_rd_bb_local_compute_process_def): Update head comment.
9412         (df_chain_create_bb): Use the new RD simulation functions.
9413         * df.h (df_rd_simulate_artificial_defs_at_top, 
9414         df_rd_simulate_one_insn): New.
9415         * opts.c (decode_options): Enable fwprop at -O1.
9416         * doc/invoke.texi (-fforward-propagate): Document this.
9417
9418 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
9419
9420         PR c/24581
9421         * c-typeck.c (build_binary_op): Handle arithmetic between one real
9422         and one complex operand specially.
9423         * tree-complex.c (some_nonzerop): Do not identify a real value as
9424         zero if flag_signed_zeros.
9425
9426 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
9427
9428         PR rtl-optimization/33928
9429         * loop-invariant.c (record_use): Fix && vs. || mishap.
9430
9431 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
9432
9433         PR rtl-optimization/33928
9434         * loop-invariant.c (struct use): Add addr_use_p.
9435         (struct def): Add n_addr_uses.
9436         (struct invariant): Add cheap_address.
9437         (create_new_invariant): Set cheap_address.
9438         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
9439         (record_uses): Pass df_ref to record_use.
9440         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
9441         used only as such.
9442
9443 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
9444
9445         * config/sh/sh.c: Do not include c-pragma.h.
9446
9447 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9448
9449         * config/spu/spu.c: Remove include of c-common.h.
9450
9451 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
9452
9453         PR c/39037
9454         * c-common.h (mark_valid_location_for_stdc_pragma,
9455         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
9456         clear_float_const_decimal64, float_const_decimal64_p): New.
9457         * c.opt (Wunsuffixed-float-constants): New.
9458         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
9459         unsuffixed float constant, handle new warning.
9460         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
9461         * c-decl.c (c_scope): New flag float_const_decimal64.
9462         (set_float_const_decimal64, clear_float_const_decimal64,
9463         float_const_decimal64_p): New.
9464         (push_scope): Set new flag.
9465         * c-parser.c (c_parser_translation_unit): Mark when it's valid
9466         to use STDC pragmas.
9467         (c_parser_external_declaration): Ditto.
9468         (c_parser_compound_statement_nostart): Ditto.
9469         * c-pragma.c (valid_location_for_stdc_pragma,
9470         mark_valid_location_for_stdc_pragma,
9471         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
9472         handle_pragma_float_const_decimal64): New.
9473         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
9474         * cp/semantics.c (valid_location_for_stdc_pragma_p,
9475         set_float_const_decimal64, clear_float_const_decimal64,
9476         float_const_decimal64_p): New dummy functions.
9477         * doc/extend.texi (Decimal Float): Remove statement that the
9478         pragma, and suffix for double constants, are not supported.
9479         * doc/invoke.texi (Warning Options): List new option.
9480         (-Wunsuffixed-float-constants): New.
9481
9482 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
9483
9484         * config/i386/i386.c: Do not include c-common.h.
9485
9486 2009-05-07  Mark Heffernan  <meheff@google.com>
9487
9488         * doc/invoke.texi (Debugging Options): Document change of debugging
9489         dump location.
9490         * opts.c (decode_options): Make dump_base_name relative to
9491         aux_base_name directory.
9492
9493 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
9494
9495         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
9496         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
9497
9498 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
9499
9500         * Makefile.in (install-plugin): Simplify a bit.
9501
9502 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
9503
9504         * Makefile.in (OBJS-common): Add regcprop.o.
9505         (regcprop.o): New.
9506         * timevar.def (TV_CPROP_REGISTERS): New.
9507         * regrename.c (regrename_optimize): Return 0.
9508         (rest_of_handle_regrename): Delete.
9509         (pass_rename_registers): Point to regrename_optimize.
9510         (struct value_data_entry, struct value_data, 
9511         kill_value_one_regno, kill_value_regno, kill_value,
9512         set_value_regno, init_value_data, kill_clobbered_value,
9513         kill_set_value, kill_autoinc_value, copy_value,
9514         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
9515         replace_oldest_value_reg, replace_oldest_value_addr,
9516         replace_oldest_value_mem, copyprop_hardreg_forward_1,
9517         debug_value_data, validate_value_data): Move...
9518         * regcprop.c: ... here.
9519         (rest_of_handle_cprop): Delete.
9520         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
9521
9522 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
9523
9524         PR middle-end/40057
9525         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
9526         GEN_INT for 1 << bitnum.
9527         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
9528         build_int_cst_type.
9529
9530 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
9531
9532         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
9533         Remove wrong description of "nand" operation.
9534
9535 2009-05-06  Richard Guenther  <rguenther@suse.de>
9536             Adam Nemet  <anemet@caviumnetworks.com>
9537
9538         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
9539         comment.  Add that if LHS is not a gimple register, then RHS1 has
9540         to be a single object (GIMPLE_SINGLE_RHS).
9541
9542 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
9543
9544         * expr.c (get_def_for_expr): Move it up in the file.
9545         (store_field): When expanding a bit-field store, look at the
9546         defining gimple stmt for the masking conversion.
9547
9548 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
9549
9550         PR middle-end/39986
9551         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
9552         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
9553         32-bit memcpy into long.
9554
9555 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
9556
9557         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
9558         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
9559         new_reg_loc_descr.
9560         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
9561         instead of appending DW_OP_deref*.
9562
9563 2009-05-06  Michael Matz  <matz@suse.de>
9564
9565         PR middle-end/40021
9566         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
9567         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
9568
9569 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
9570
9571         * Makefile.in (install-plugin): Fix srcdir handling.
9572
9573 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
9574
9575         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
9576         when processing for not_regs_needed bitmap.
9577         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
9578         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
9579         handling it for rhs. 
9580
9581 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
9582
9583         * config/i386/i386.md (unnamed inc/dec peephole): Use
9584         optimize_insn_for_size_p instead of optimize_size.
9585         * config/i386/predicates.md (incdec_operand): Likewise.
9586         (aligned_operand): Likewise.
9587         * config/i386/sse.md (divv8sf3): Likewise.
9588         (sqrtv8sf2): Likewise.
9589
9590 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
9591
9592         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
9593
9594         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
9595
9596 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
9597
9598         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
9599         ssemodesuffixf2c with avxmodesuffixf2c.
9600
9601 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
9602
9603         PR c/40032
9604         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
9605
9606 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
9607
9608         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
9609         (struct tree_base): Adjust spacing for 8 bit boundaries.
9610         (struct tree_decl_common): Add decl_by_reference_flag bit.
9611         (DECL_BY_REFERENCE): Adjust.
9612         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
9613         print DECL_BY_REFERENCE bit.
9614         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
9615         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
9616         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
9617         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
9618         unconditionally.
9619
9620         PR middle-end/39666
9621         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
9622         range of the type, but default label is missing, add it with one
9623         of the existing labels instead of adding a new label for it.
9624
9625 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
9626
9627         * dwarf.h: Remove.
9628
9629 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
9630
9631         * Makefile.in (enable_plugin, plugin_includedir): New.
9632         (install): Depend on install-plugin.
9633         (PLUGIN_HEADERS): New.
9634         (install-plugin): New.
9635         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
9636
9637 2009-05-05  Richard Guenther  <rguenther@suse.de>
9638
9639         PR tree-optimization/40022
9640         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
9641         the only vuse.
9642         (phivn_valid_p): Fix tuplification error, simplify.
9643         (phiprop_insert_phi): Add dumps.
9644         (propagate_with_phi): Simplify.
9645
9646 2009-05-05  Richard Guenther  <rguenther@suse.de>
9647
9648         PR middle-end/40023
9649         * builtins.c (gimplify_va_arg_expr): Properly build the address.
9650
9651 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
9652
9653         * tree.h (strip_float_extensions): Remove duplicate declaration.
9654         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
9655         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
9656         block_ultimate_origin): Rearrange the declarations line to match the
9657         comment that indicates the .c file which the functions are defined.
9658         (dwarf2out_*, set_decl_rtl): Add comment.
9659         (get_base_address): Adjust comment.
9660         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
9661         declarations line and add comment.
9662         (is_builtin_name): Add blank after function name, for clarity.
9663
9664 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
9665
9666         * attribs.c (decl_attributes): Use %qE for identifiers in
9667         diagnostics.
9668         * cgraphunit.c (verify_cgraph_node): Translate function names to
9669         locale character set in diagnostics.
9670         * coverage.c (get_coverage_counts): Use %qE for identifiers in
9671         diagnostics.
9672         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
9673         Document that functions are named in UTF-8.
9674         * expr.c (expand_expr_real_1): Translate function names to locale
9675         character set in diagnostics.
9676         * gimplify.c (omp_notice_variable, omp_is_private,
9677         gimplify_scan_omp_clauses): Use %qE for identifiers in
9678         diagnostics.
9679         * langhooks.c (lhd_print_error_function): Translate function names
9680         to locale character set.
9681         * langhooks.h (decl_printable_name): Document that return value is
9682         in internal character set.
9683         * stmt.c: Include pretty-print.h
9684         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
9685         diagnostics.
9686         (resolve_operand_name_1): Translate named operand name to locale
9687         character set.
9688         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
9689         diagnostics.
9690         * toplev.c (announce_function): Translate function names to locale
9691         character set.
9692         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
9693         (default_tree_printer): Use pp_identifier or translate identifiers
9694         to locale character set.  Mark "<anonymous>" for translation.
9695         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
9696         for identifiers in diagnostics.
9697         * tree.c (handle_dll_attribute): Use %qE for identifiers in
9698         diagnostics.
9699         * varasm.c (output_constructor): Use %qE for identifiers in
9700         diagnostics.
9701
9702 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
9703
9704         * configure.ac: use ` ` instead of $()
9705         * configure: Regenerate.
9706
9707 2009-05-05  Ben Elliston  <bje@au.ibm.com>
9708
9709         * config/pa/linux-atomic.c: Eliminate conditional include of
9710         errno.h on non-LP64 systems to simplify build requirements.
9711
9712 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
9713
9714         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
9715         diagnostics.
9716         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
9717         and pass value to identifier_to_locale.
9718         (warn_variable_length_array): Make name a tree.
9719         (grokdeclarator): Separate diagnostic texts for named and unnamed
9720         declarators.  Use %qE for named declarators.
9721         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
9722         diagnostics.
9723         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
9724         identifiers in diagnostics.
9725         * c-typeck.c (push_member_name, start_init): Pass identifiers to
9726         identifier_to_locale.  Mark "anonymous" strings for translation.
9727
9728 2009-05-04  Michael Eager <eager@eagercon.com>
9729
9730         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
9731         address for DImode/DFmode only if double-precision FP regs.
9732
9733 2009-05-04  Michael Eager <eager@eagercon.com>
9734
9735         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
9736         TARGET_SINGLE_FLOAT check.
9737
9738 2009-05-04  Michael Eager <eager@eagercon.com>
9739
9740         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
9741
9742 2009-05-04  Michael Eager <eager@eagercon.com>
9743
9744         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
9745         * config/rs6000/t-xilinx: New
9746
9747 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
9748
9749         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
9750         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
9751         * gcc/explow.c (memory_address): Use target hook.
9752         * gcc/targhooks.c (default_legitimize_address): New.
9753         * gcc/targhooks.h (default_legitimize_address): New.
9754         * gcc/target.h (legitimize_address): New.
9755         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
9756         (TARGET_INITIALIZER): Include it.
9757         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
9758
9759         * config/bfin/bfin-protos.h (legitimize_address): Remove.
9760         * config/bfin/bfin.c (legitimize_address): Remove.
9761         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
9762         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
9763         Remove.
9764         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
9765         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
9766
9767         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
9768         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
9769         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
9770         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
9771         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
9772         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
9773         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
9774         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
9775         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
9776         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
9777         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
9778         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
9779         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
9780         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
9781         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
9782         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
9783         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
9784         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
9785         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
9786         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
9787         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
9788         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
9789         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
9790
9791         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
9792         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
9793         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
9794         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
9795         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
9796         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
9797         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
9798         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
9799         (thumb_legitimize_address): Delete.
9800         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
9801         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
9802         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
9803         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
9804         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
9805         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
9806         Delete.
9807         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
9808         Delete.
9809
9810         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
9811         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
9812         * config/m32r/m32r.c (m32r_legitimize_address): New.
9813         * config/m68k/m68k.c (m68k_legitimize_address): New.
9814         * config/score/score.c (score_legitimize_address): Standardize.
9815         * config/score/score3.c (score3_legitimize_address): Standardize.
9816         * config/score/score3.h (score3_legitimize_address): Adjust.
9817         * config/score/score7.c (score7_legitimize_address): Standardize.
9818         * config/score/score7.h (score7_legitimize_address): Adjust.
9819         * config/sh/sh.c (sh_legitimize_address): New.
9820         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
9821
9822         * gcc/config/s390/s390.c (legitimize_address): Rename to...
9823         (s390_legitimize_address): ... this.
9824         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
9825         (sparc_legitimize_address): ... this.
9826         * gcc/config/i386/i386.c (legitimize_address): Rename to...
9827         (ix86_legitimize_address): ... this.
9828         * gcc/config/avr/avr.c (legitimize_address): Rename to...
9829         (avr_legitimize_address): ... this.
9830         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
9831         (mn10300_legitimize_address): ... this.
9832         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
9833         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
9834         (alpha_expand_mov): Adjust call.
9835
9836         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
9837         * config/spu/spu.c (spu_legitimize_address): Likewise.
9838         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
9839         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
9840
9841 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
9842
9843         * intl.c (locale_encoding, locale_utf8): New.
9844         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
9845         * intl.h (locale_encoding, locale_utf8): Declare.
9846         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
9847         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
9848         New.
9849         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
9850         argument.
9851         (pp_tree_identifier): Define to call pp_base_tree_identifier.
9852         (pp_base_tree_identifier): Declare as function.
9853         (identifier_to_locale): Declare.
9854         * Makefile.in (pretty-print.o): Update dependencies.
9855         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
9856
9857 2009-05-04  Richard Guenther  <rguenther@suse.de>
9858
9859         PR middle-end/40015
9860         * builtins.c (fold_builtin_memory_op): Do not decay to element
9861         type if the size matches the whole array.
9862
9863 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
9864
9865         * expmed.c (synth_mult): When trying out a shift, pass the result
9866         of a signed shift.
9867
9868 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
9869
9870         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
9871         (shiftsub1_cost): New.
9872         (init_expmed): Compute shiftsub1_cost.
9873         (synth_mult): Optimize multiplications by constants of the form
9874         -(2^^m-1) for some constant positive integer m.
9875
9876 2009-05-03  Richard Guenther  <rguenther@suse.de>
9877
9878         PR c/39983
9879         * c-typeck.c (array_to_pointer_conversion): Do not built
9880         ADDR_EXPRs of arrays of pointer-to-element type.
9881         * c-gimplify.c (c_gimplify_expr): Revert change fixing
9882         up wrong ADDR_EXPRs after-the-fact.
9883         * c-common.c (strict_aliasing_warning): Strip pointer
9884         conversions for obtaining the original type.
9885         * builtins.c (fold_builtin_memset): Handle array types.
9886         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
9887         and array types
9888
9889 2009-05-03  Richard Guenther  <rguenther@suse.de>
9890
9891         PR middle-end/23329
9892         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
9893         Do not lose casts from array types with unknown extent to array
9894         types with known extent.
9895         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
9896         alias set compatibility.
9897
9898 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9899
9900         * flags.h (extra_warnings): Delete.
9901         * toplev.c (process_options): Handle Wuninitialized here.
9902         * opts.c (extra_warnings): Delete.
9903         (set_Wextra): Delete.
9904         (common_handle_option): -Wextra can be handled automatically.
9905         * c-opts.c (c_common_handle_option): Delete obsolete code.
9906         (c_common_post_options): Simplify comment.
9907         * common.opt (W): Add Var.
9908         (Wextra): Add Var.
9909         (Wuninitialized): Initialize to -1.
9910
9911 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
9912             Richard Guenther  <rguenther@suse.de>
9913
9914         * expr.c (get_def_for_expr): New function.
9915         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
9916         SSA rather than trees.
9917         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
9918         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
9919         
9920 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
9921
9922         * c-common.c (reswords): Add _Imaginary.
9923         * c-common.c (enum rid): Add RID_IMAGINARY.
9924
9925 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
9926
9927         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
9928         Patch by Richard Guenther.
9929
9930 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
9931
9932         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
9933         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
9934         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
9935         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
9936         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
9937         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
9938         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
9939         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
9940         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
9941         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
9942         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
9943         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
9944         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
9945         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
9946         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
9947         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
9948         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
9949         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
9950
9951 2009-05-02  Richard Guenther  <rguenther@suse.de>
9952
9953         PR tree-optimization/39940
9954         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
9955         doing so.
9956
9957 2009-05-02  Richard Guenther  <rguenther@suse.de>
9958
9959         PR middle-end/40001
9960         * tree-ssa.c (execute_update_addresses_taken): Properly check
9961         if we can mark a variable DECL_GIMPLE_REG_P.
9962         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
9963         back to the end of the function.
9964         (is_gimple_reg_type): Remove complex type special casing.
9965         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
9966         if not optimizing.
9967
9968 2009-05-02  Ben Elliston  <bje@au.ibm.com>
9969
9970         * doc/collect2.texi (Collect2): Document search path behaviour
9971         when configured with --with-ld.
9972
9973 2009-05-02  Jan Hubicka  <jh@suse.cz>
9974
9975         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
9976         parameter; update callers.
9977         (coalesce_cost_edge): EH edges are costier because they needs
9978         splitting even if not critical and even more costier when there are
9979         multiple EH predecestors.
9980
9981 2009-05-02  Jan Hubicka  <jh@suse.cz>
9982
9983         * except.c (remove_eh_handler_and_replace): Handle updating after
9984         removing TRY blocks.
9985
9986 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
9987
9988         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
9989
9990 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
9991
9992         * varasm.c: Do not include c-pragma.h.
9993         * attribs.c: Do not incude c-common.h.
9994
9995 2009-05-01  Michael Matz  <matz@suse.de>
9996
9997         * calls.c (initialize_argument_information): Handle SSA names like
9998         decls with a non MEM_P DECL_RTL.
9999
10000 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
10001
10002         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
10003         * ipa-utils.c: Likewise.
10004         * ipa-type-escape.c: Likewise.
10005         * cgraphunit.c Do not include c-common.h.
10006         * ipa-pure-const.c: Likewise.
10007         * tree-if-conv.c: Likewise.
10008         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
10009         * ipa-struct-reorg.c: Likewise.
10010         * tree-nomudflap.c: Likewise.
10011         * tree-ssa-structalias.c: Likewise.
10012
10013 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
10014
10015         * store-motion.c: Many cleanups to make this pass a first-class
10016         citizen instead of an appendix to gcse load motion.  Add TODO list
10017         to make this pass faster/cleaner/better.
10018
10019         (struct ls_expr): Post gcse.c-split cleanups.
10020         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
10021         "stores" field to "avail_stores".
10022         (pre_ldst_mems): Rename to store_motion_mems.
10023         (pre_ldst_table): Rename to store_motion_mems_table.
10024         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
10025         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
10026         (ldst_entry): Rename to st_expr_entry, update users.
10027         (free_ldst_entry): Rename to free_st_expr_entry, update users.
10028         (free_ldst_mems): Rename to free_store_motion_mems, update users.
10029         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
10030         update caller.
10031         (first_ls_expr): Rename to first_st_expr, update users.
10032         (next_ls_expr): Rename to next_st_expr, update users.
10033         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
10034         fields properly for store motion instead of names inherited from load
10035         motion in gcse.c.
10036         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
10037         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
10038         are done with it.
10039
10040         (ae_kill): Rename to st_kill, update users.
10041         (ae_gen): Rename to st_avloc, update users.
10042         (transp): Rename to st_transp, update users.
10043         (pre_insert_map): Rename to st_insert_map, update users.
10044         (pre_delete_map): Rename to st_delete_map, update users.
10045         (insert_store, build_store_vectors, free_store_memory,
10046         one_store_motion_pass): Update for abovementioned changes.
10047
10048         (gcse_subst_count, gcse_create_count): Remove.
10049         (one_store_motion_pass): New statistics counters "n_stores_deleted"
10050         and "n_stores_created", local variables.
10051
10052         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
10053         use for_each_rtx.
10054
10055         (regvec, compute_store_table_current_insn): Remove.
10056         (reg_set_info, reg_clear_last_set): Remove.
10057         (compute_store_table): Use DF caches instead of local dataflow
10058         solvers.
10059
10060 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
10061
10062         * c-objc-common.c (c_tree_printer): Print identifiers with
10063         pp_identifier, not pp_string.  Mark "({anonymous})" for
10064         translation.
10065         * c-pretty-print.c (pp_c_ws_string): New.
10066         (pp_c_cv_qualifier, pp_c_type_specifier,
10067         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
10068         pp_c_storage_class_specifier, pp_c_function_specifier,
10069         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
10070         pp_c_primary_expression, pp_c_postfix_expression,
10071         pp_c_unary_expression, pp_c_shift_expression,
10072         pp_c_relational_expression, pp_c_equality_expression,
10073         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
10074         use pp_string and pp_c_ws_string in place of pp_identifier and
10075         pp_c_identifier for non-identifiers.  Mark English strings for
10076         translation.
10077         * c-pretty-print.h (pp_c_ws_string): Declare.
10078
10079 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
10080             Roland McGrath <roland@redhat.com>
10081
10082         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
10083         (ENABLE_LD_BUILDID): New configuration option.
10084         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
10085         (LINK_BUILDID_SPEC): New macro.
10086         (init_spec): If defined, prepend it between LINK_EH_SPEC and
10087         link_spec.
10088         * doc/install.texi: Document --enable-linker-build-id option.
10089         * configure: Rebuild.
10090         * config.in: Rebuild.
10091
10092 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
10093
10094         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
10095         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
10096         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
10097         MIPS_GP_SAVE_AREA_SIZE.
10098         * config/mips/mips.c (struct mips_frame_info): Update comment
10099         before arg_pointer_offset and hard_frame_pointer_offset.
10100         (mips_compute_frame_info): Update diagram before function: to
10101         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
10102         indicate the position of frame_pointer_rtx with -fstack-protector and
10103         to show args_size.  Don't allocate cprestore area for leaf functions
10104         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
10105         cprestore_size.
10106         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
10107
10108 2009-04-30  Michael Matz  <matz@suse.de>
10109
10110         PR tree-optimization/39955
10111         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
10112
10113 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
10114
10115         * ira.c (setup_cover_and_important_classes):  Use safe macro
10116         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
10117         directly.
10118         * genpreds.c (write_tm_preds_h):  Output suitable definition of
10119         REG_CLASS_FOR_CONSTRAINT.
10120
10121 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
10122
10123         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
10124         instead of an int.
10125         * bitmap.c (bitmap_descriptor): Likewise.
10126         * ggc-common.c (loc_descriptor): Likewise.
10127         * varray.c (varray_descriptor): Likewise.
10128         * vec.c (vec_descriptor): Likewise.
10129
10130 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
10131
10132         * Makefile.in (dce.o): Add $(EXCEPT_H).
10133         * dce.c: Include except.h and delete redundant vector definitions.
10134         (deletable_insn_p): Return false for non-call insns that can throw
10135         if DF is running.
10136
10137 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
10138
10139         * gcse.c (ae_gen): Remove.
10140         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
10141         and make non-static function to make it available in store-motion.c.
10142         Update call sites with search-and-replace.
10143         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
10144         extract_mentioned_regs, extract_mentioned_regs_helper,
10145         find_moveable_store, compute_store_table, load_kills_store, find_loads,
10146         store_killed_in_insn, store_killed_after, store_killed_before,
10147         build_store_vectors, insert_insn_start_basic_block, insert-store,
10148         remove_reachable_equiv_notes, replace_store_insn, delete_store,
10149         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
10150         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
10151         * store-motion.c: ...new file.  Also copy data structures from gcse.c
10152         and clean up to remove parts not used by store motion.
10153         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
10154         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
10155
10156 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10157
10158         PR target/38571
10159         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
10160         when optimizing for size.
10161
10162 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
10163
10164         * gcse.c (gcse_constant_p): Fix typo in last change.
10165
10166 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
10167
10168         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
10169
10170 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
10171
10172         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
10173
10174 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
10175
10176         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
10177         CONST_HIGH_PART result.
10178
10179 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
10180
10181         * config/avr/avr.c (initial_elimination_offset): Rename to
10182         avr_initial_elimination_offset.
10183         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
10184         change return type to bool.
10185         (avr_can_eliminate): New function.
10186         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
10187         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
10188         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
10189         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
10190         avr_initial_elimination_offset.
10191         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
10192         (avr_initial_elimination_offset): Define.
10193
10194 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
10195             Steven Bosscher  <steven@gcc.gnu.org>
10196
10197         PR rtl-optimization/39938
10198         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
10199         * cfgrtl.c: Include insn-attr.h.
10200         (rest_of_pass_free_cfg): New function.
10201         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
10202         * resource.c (init_resource_info): Remove call to df_analyze.
10203
10204 2009-04-29  Richard Guenther  <rguenther@suse.de>
10205
10206         PR target/39943
10207         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
10208         allow conversion to signed integers.
10209
10210 2009-04-29  Richard Guenther  <rguenther@suse.de>
10211
10212         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
10213         shifts of floating point vectors if the shift amount is
10214         a constant multiple of the element size.
10215
10216 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
10217             Michael Matz  <matz@suse.de>
10218
10219         PR middle-end/39927
10220         PR bootstrap/39929
10221         * tree-outof-ssa.c (emit_partition_copy): New function.
10222         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
10223         insert_part_to_rtx_on_edge): Perform the partition base var
10224         copy using emit_partition_copy.
10225         (insert_value_copy_on_edge): Convert constants to the right mode.
10226         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
10227         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
10228
10229 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10230
10231         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
10232         scan backwards to try to find a constant to initialize it.
10233
10234         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
10235         insn before the loop_end instruction, don't look past labels.
10236
10237 2009-04-29  Richard Guenther  <rguenther@suse.de>
10238
10239         PR middle-end/39937
10240         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
10241         loose type conversions.
10242         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
10243         stmts only if there are no uses of its definition.
10244
10245 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10246
10247         * config/bfin/bfin.h (splitting_loops): Declare.
10248         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
10249         Reorder bit definitions to be ascending.
10250         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
10251         * config/bfin/bfin.c (splitting_loops): New variable.
10252         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
10253         (struct loop_info): Remove members INIT and LOOP_INIT.
10254         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
10255         the LSETUP sequence.  Allow LC to be loaded from any register, but
10256         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
10257         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
10258         set to 1.
10259         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
10260         of reload_completed.
10261
10262         From Jie Zhang:
10263         * config/bfin/bfin.md (movsi_insn): Refine constraints.
10264
10265 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
10266
10267         * Makefile.in (PLUGIN_VERSION_H): New.
10268         (OBJS-common): Remove plugin-version.o.
10269         (plugin.o): Depend on (PLUGIN_VERSION_H).
10270         (plugin-version.o): Remove.
10271         * configure: Regenerate
10272         * configure.ac: Create plugin-version.h.
10273         * gcc-plugin.h (plugin_gcc_version): Remove.
10274         (plugin_default_version_check): Change signature.
10275         * plugin-version.c: Remove.
10276         * plugin.c: Include plugin-version.h.
10277         (str_plugin_gcc_version_name): Remove.
10278         (try_init_one_plugin): Pass gcc version to plugin_init.
10279         (plugin_default_version_check): Both gcc and plugin versions are now
10280         arguments.
10281
10282 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10283         
10284         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
10285         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
10286         Remove special case testing for last insn of inner loops. Don't fail
10287         if the loop ends with a jump, emit an extra nop instead.
10288
10289         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
10290         DREGS rather than comparing directly.  Remove code that tries to
10291         account for latencies.
10292
10293 2009-04-29  Richard Guenther  <rguenther@suse.de>
10294
10295         PR tree-optimization/39941
10296         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
10297         eliminating an indirect call.
10298
10299 2009-04-29  Richard Guenther  <rguenther@suse.de>
10300
10301         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
10302         parameter.  Allow invariants as base if !require_lvalue.
10303         (verify_gimple_assign_single): Adjust.
10304
10305 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10306
10307         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
10308         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
10309         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
10310         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
10311         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
10312         a VEC_SELECT.
10313         * config/bfin/bfin.c (bfin_expand_builtin,
10314         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
10315
10316 2009-04-28  Richard Guenther  <rguenther@suse.de>
10317
10318         * tree-vect-loop.c (get_initial_def_for_induction): Use
10319         correct types for pointer increment.
10320
10321 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10322
10323         * toplev.c (print_version): Update GMP version string calculation.
10324
10325 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
10326
10327         PR rtl-optimization/39938
10328         * resource.c (init_resource_info): Add call to df_analyze.
10329
10330 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
10331
10332         * config/alpha/alpha.md (usegp): Cast the result of
10333         alpha_find_lo_sum_using_gp to enum attr_usegp.
10334         * config/alpha/alpha.c (override_options): Remove end-of-structure
10335         marker element from cpu_table.  Use array size of cpu_table to handle
10336         -mcpu and -mtune options.
10337         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
10338
10339 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
10340
10341         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
10342         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
10343         tune_32 and tune_64.
10344         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
10345         support on PowerPC.
10346         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
10347         * config/rs6000/option-defaults.h: ... here.  New file.
10348         (OPT_64, OPT_32): Define.
10349         (MASK_64BIT): Define to 0 if not already defined.
10350         (OPT_ARCH64, OPT_ARCH32): Define.
10351         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
10352         and tune_64.
10353
10354 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10355
10356         * config/arm/arm.c (arm_override_options): Emit error on using
10357         fpa with AAPCS.
10358
10359 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
10360
10361         PR rtl-optimization/39914
10362         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
10363         registers for allocnos created from user-defined variables only
10364         when not optimizing.
10365
10366 2009-04-28  Richard Guenther  <rguenther@suse.de>
10367
10368         PR middle-end/39937
10369         * fold-const.c (fold_binary): Use distribute_real_division only
10370         on float types.
10371
10372 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
10373
10374         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
10375         add hpux-stdint.h to tm_file.
10376         (hppa[12]*-*-hpux11*): Ditto.
10377         (ia64*-*-hpux*): Ditto.
10378         * config/hpux-stdint.h: New.
10379         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
10380         __STDC_EXT__ for all compiles.
10381         * config/pa/pa-hpux.h: Ditto.
10382         * config/pa/pa-hpux10.h: Ditto.
10383         * config/pa/pa-hpux11.h: Ditto.
10384
10385 2009-04-28  Catherine Moore  <clm@codesourcery.com>
10386
10387         * debug.h (set_name): Add comment.
10388
10389 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
10390
10391         PR target/39929
10392         * config/darwin.c (machopic_gen_offset): Check
10393         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
10394         * config/arm/arm.c (require_pic_register): Likewise.
10395
10396 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
10397
10398         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
10399         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
10400         m32c_promote_prototypes): Delete.
10401
10402 2009-04-28  Michael Matz  <matz@suse.de>
10403
10404         PR middle-end/39922
10405         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
10406         constants.
10407
10408 2009-04-28  Richard Guenther  <rguenther@suse.de>
10409
10410         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
10411
10412 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10413
10414         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
10415         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
10416         * config/arm/arm-tune.md: Regenerate.
10417
10418 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
10419
10420         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
10421         block if there are complex incoming edges.
10422         (sel_merge_blocks): Remove useless assert.
10423         (sel_redirect_edge_and_branch): Check that edge was redirected.
10424         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
10425         (sel_find_rgns): Delete declaration.
10426         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
10427         the region when it is not a preheader.
10428
10429 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
10430
10431         PR c/39323
10432         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
10433
10434 2009-04-28  Richard Guenther  <rguenther@suse.de>
10435
10436         * tree.h (SSA_NAME_VALUE): Remove.
10437         (struct tree_ssa_name): Remove value_handle member.
10438         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
10439         array for jump threading.
10440         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
10441         SSA_NAME_VALUEs.
10442         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
10443         * tree-flow.h (threadedge_initialize_values): Declare.
10444         (threadedge_finalize_values): Likewise.
10445         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
10446         (SSA_NAME_VALUE): Define.
10447         (threadedge_initialize_values): New function.
10448         (threadedge_finalize_values): Likewise.
10449         * tree-ssa-dom.c (ssa_name_values): New global variable.
10450         (SSA_NAME_VALUE): Define.
10451         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
10452
10453 2009-04-28  Ira Rosen  <irar@il.ibm.com>
10454
10455         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
10456         Use REPORT_VECTORIZED_LOCATIONS instead 
10457         REPORT_VECTORIZED_LOOPS.
10458         * tree-vectorizer.c (vect_verbosity_level): Make static.
10459         (vect_loop_location): Rename to vect_location.
10460         (vect_set_verbosity_level): Update comment.
10461         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
10462         and vect_location.
10463         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
10464         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
10465         instead REPORT_UNVECTORIZED_LOOPS.
10466         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
10467         and vect_loop_def to vect_external_def and vect_internal_def.
10468         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
10469         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
10470         REPORT_UNVECTORIZED_LOCATIONS.
10471         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
10472         and vect_used_in_loop and to vect_unused_in_scope and 
10473         vect_used_in_scope.
10474         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
10475         (vect_verbosity_level): Remove declaration.
10476         (vect_analyze_operations): Likewise.
10477         (vect_analyze_stmt): Declare.
10478         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
10479         REPORT_UNVECTORIZED_LOCATIONS.
10480         (vect_get_loop_niters): Fix indentation.
10481         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
10482         (vect_analyze_loop_operations): New function.
10483         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
10484         vect_analyze_operations.
10485         (vect_is_simple_reduction): Use new names.
10486         (vectorizable_live_operation, vect_transform_loop): Likewise.
10487         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
10488         to specify whether the data references can be a part of interleaving
10489         chain.
10490         (vect_analyze_data_ref_dependence): Use new names.
10491         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
10492         (vect_create_addr_base_for_vector_ref): Remove redundant code.
10493         * tree-vect-patterns.c (widened_name_p): Use new names.
10494         (vect_recog_dot_prod_pattern): Likewise.
10495         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
10496         (process_use, vect_mark_stmts_to_be_vectorized, 
10497         vect_model_simple_cost, vect_model_store_cost,
10498         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
10499         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
10500         vectorizable_operation, vectorizable_type_demotion,
10501         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
10502         vectorizable_condition): Likewise.
10503         (vect_analyze_operations): Split into vect_analyze_loop_operations
10504         and ...
10505         (vect_analyze_stmt): ... new function.
10506         (new_stmt_vec_info): Use new names.
10507         (vect_is_simple_use): Use new names and fix comment.
10508         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
10509         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
10510
10511 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
10512
10513         PR target/39911
10514         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
10515         and integer modes for x87 operands.  Do not ICE for unsupported size,
10516         generate error instead.  Generate error for unsupported operand types.
10517         ['z']: Do not handle HImode memory operands specially.  Warning
10518         for floating-point operands.  Fallthru to 'Z' for unsupported operand
10519         types.  Do not ICE for unsupported size, generate error instead.
10520         (output_387_binary_op): Use %Z to output operands.
10521         (output_fp_compare): Ditto.
10522         (output_387_reg_move): Ditto.
10523
10524 2009-04-28  Ben Elliston  <bje@au.ibm.com>
10525
10526         PR c++/35652
10527         Revert:
10528
10529         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10530
10531         * builtins.c (c_strlen): Do not warn here.
10532         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
10533         * c-common.c (pointer_int_sum): Take an explicit location.
10534         Warn about offsets out of bounds.
10535         * c-common.h (pointer_int_sum): Adjust declaration.
10536
10537 2009-04-27  Ian Lance Taylor  <iant@google.com>
10538
10539         * collect2.c (is_ctor_dtor): Change type of ret field in struct
10540         names to symkind.
10541         * dce.c (run_fast_df_dce): Change type of old_flags to int.
10542         * df-core.c (df_set_flags): Change return type to int.  Change
10543         type of old_flags to int.
10544         (df_clear_flags): Likewise.
10545         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
10546         (df_get_conditional_uses): Likewise.
10547         * df.h (df_set_flags, df_clear_flags): Update declarations.
10548         * dwarf2out.c (struct indirect_string_node): Change type of form
10549         field to enum dwarf_form.
10550         (AT_string_form): Change return type to enum dwarf_form.
10551         * fixed-value.c (fixed_compare): Add cast to enum type.
10552         * fwprop.c (update_df): Change 0 to VOIDmode.
10553         * gensupport.c: Change 0 to UNKNOWN.
10554         * gimple.h (gimple_cond_code): Add cast to enum type.
10555         * haifa-sched.c (reemit_notes): Add cast to enum type.
10556         * hooks.c (hook_int_void_no_regs): Remove function.
10557         * hooks.h (hook_int_void_no_regs): Remove declaration.
10558         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
10559         * predict.c (combine_predictions_for_insn): Add casts to enum type.
10560         * real.c (real_arithmetic): Add cast to enum type.
10561         (real_compare): Likewise.
10562         * target.h (struct gcc_target): Change return type of
10563         branch_target_register_class to enum reg_class.
10564         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
10565         default_branch_target_register_class.
10566         * targhooks.c (default_branch_target_register_class): New function.
10567         * targhooks.h (default_branch_target_register_class): Declare.
10568         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
10569         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
10570         cast to int.
10571         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
10572         ERROR_MARK.
10573         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
10574         vect_uninitialized_def.  Change 0 to ERROR_MARK.
10575         * tree-vect-stmts.c (supportable_widening_operation): Don't
10576         initialize icode1 and icode2.
10577         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
10578         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
10579         and to STD_C89.
10580         (cmn_err_flag_specs): Change 0 to STD_C89.
10581         (cmn_err_char_table): Likewise.
10582         * config/arm/arm.c (get_arm_condition_code): Change type of code
10583         to enum arm_cond_code.
10584         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
10585         (IWMMXT_BUILTIN2): Likewise.
10586         (neon_builtin_type_bits): Don't define typedef.
10587         (neon_builtin_datum): Change type of bits field to int.
10588         (arm_expand_neon_args): Add cast to enum type.
10589         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
10590         TLS_MODEL_NONE.
10591         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
10592         casts to enum type.
10593         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
10594         MIPS_FP_COND_f.
10595         * config/mips/mips.md (jal_macro): Return enum constant.
10596         (single_insn): Likewise.
10597         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
10598         CODE_FOR_nothing.
10599         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
10600         casts to enum type.
10601         * config/s390/s390.c (s390_tune_flags): Change type to int.
10602         (s390_arch_flags): Likewise.
10603         (s390_handle_arch_option): Change flags field of struct pta to int.
10604         * config/s390/s390.h (s390_tune_flags): Update declaration.
10605         (s390_arch_flags): Likewise.
10606         * config/sh/sh.c (prepare_move_operands): Compare
10607         tls_symbolic_operand result with enum constant.
10608         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
10609         (sh_expand_prologue): Add cast to enum type.
10610         (sh_expand_epilogue): Likewise.
10611         (tls_symbolic_operand): Change return type to enum tls_model.
10612         (fpscr_set_from_mem): Add cast to enum type.
10613         (legitimize_pic_address): Compare tls_symbolic_operand result with
10614         enum constant.
10615         (sh_target_reg_class): Change return type to enum reg_class.
10616         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
10617         PROCESSOR_xxx.
10618         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
10619         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
10620         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
10621         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
10622         (delayed_branch, tls_call_delay): Likewise.
10623         (eligible_for_sibcall_delay): Likewise.
10624         (eligible_for_return_delay): Likewise. 
10625         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
10626         (spu_expand_builtin_1): Likewise.
10627
10628         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
10629         for all types of conversions.
10630         (output_init_element): Issue -Wc++-compat warning if needed when
10631         initializing a bitfield with enum type.
10632         * c-parser.c (c_parser_expression): Set original_type to
10633         original_type of right hand operand of comman operator.
10634
10635 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10636
10637         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
10638         grammar nits.
10639         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
10640         * doc/cpp.texi (Standard Predefined Macros)
10641         (Implementation-defined behavior): Likewise.
10642         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
10643         * doc/gimple.texi (GIMPLE Exception Handling)
10644         (@code{GIMPLE_ASSIGN}): Likewise.
10645         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
10646         * doc/invoke.texi (Warning Options, Optimize Options)
10647         (AVR Options, Darwin Options): Likewise.
10648         (Optimize Options): Reformulate -fwhole-program description.
10649         * doc/loop.texi (Lambda): Likewise.
10650         * doc/md.texi (Output Template, Define Constraints)
10651         (Standard Names, Insn Splitting): Likewise.
10652         * doc/options.texi (Option properties): Likewise.
10653         * doc/passes.texi (Tree-SSA passes): Likewise.
10654         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
10655         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
10656         (File Names and DBX): Likewise.
10657         * doc/trouble.texi (Incompatibilities): Likewise.
10658
10659 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10660
10661         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
10662         instruction is correct.
10663
10664 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10665
10666         Allow non-constant arguments to conversion intrinsics.
10667         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
10668         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
10669         * spu.c (print_operand): Handle 'v' and 'w'.
10670         (exp2_immediate_p, spu_gen_exp2): Define.
10671         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
10672         spu_convtf_1): Update parameter descriptions.
10673         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
10674         * constraints.md ('v', 'w'): New.
10675         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
10676         Remove.
10677         (i2f, I2F): New define_mode_attr.
10678         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
10679         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
10680         fixuns_truncv4sfv4si2):  Update to use mode attribute.
10681         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
10682         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
10683         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
10684         patterns for combine.
10685
10686 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
10687
10688         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
10689         (cprop, hoist, pre, store_motion): New debug counters.
10690         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
10691         is not an RTL pass anymore.
10692         (pass_profiling): Remove extern decl for pass removed in 2005.
10693         (pass_gcse, pass_jump_bypass): Remove.
10694         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
10695         to 0 for clean state.
10696         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
10697         * cse.c (gate_handle_cse_after_global_opts,
10698         rest_of_handle_cse_after_global_opts): New functions.
10699         (pass_cse_after_global_opts): New pass, does local CSE.
10700         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
10701         (TV_CPROP): New timevar.
10702         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
10703         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
10704         (gcse_main, recompute_all_luids): Remove.
10705         (compute_hash_table_work): Call max_reg_num instead of reading
10706         max_gcse_regno.
10707         (cprop_jump): Don't set run_jump_opt_after_gcse.
10708         (constprop_register): Always allow to alter jumps.
10709         (cprop_insn): Likewise.
10710         (do_local_cprop): Likewise.
10711         (local_cprop_pass): Likewise.  Return non-zero if something changed.
10712         (cprop): Remove function, fold interesting bits into one_cprop_pass.
10713         (find_implicit_sets): Add note about missed optimization opportunity.
10714         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
10715         pass_rtl_cprop execute function.
10716         Don't bother tracking the pass number, each pass gets its own dumpfile
10717         now anyway.
10718         Always allow to alter jumpsand bypass jumps.
10719         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
10720         will just find no suitable set.
10721         (pre_edge_insert): Fix dumping, this function is for PRE only.
10722         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
10723         pass_rtl_pre execute function.
10724         (hoist_code): Return non-zero if something changed.  Keep track of
10725         substitutions and insertions for statistics gathering similar to PRE.
10726         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
10727         called from the pass_rtl_hoist execute function.  Show pass statistics.
10728         (compute_store_table): Use max_reg_num directly instead of using the
10729         formerly global max_gcse_regno.
10730         (build_store_vectors): Likewise.
10731         (replace_store_insn): Fix dumping.
10732         (store_motion): Rename to ...
10733         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
10734         pass, called from the pass_rtl_store_motion execute function.  Keep
10735         track of substitutions and insertions for statistics gathering similar
10736         to PRE.
10737         (bypass_jumps): Remove, fold interesting bits into ...
10738         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
10739         from the pass_rtl_cprop execute function.
10740         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
10741         pass_jump_bypass): Remove.
10742         (gate_handle_gcse, rest_of_handle_gcse): Remove.
10743         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
10744         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
10745         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
10746         (gate_rtl_store_motion, execute_rtl_store_motion,
10747         pass_rtl_store_motion): New.
10748         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
10749         make it clear that -fcse-skip-blocks is a no-op for backward compat.
10750         * passes.c (init_optimization_passes): Remove pass_gcse and
10751         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
10752         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
10753         instead of pass_jump_bypass.
10754
10755 2009-04-27  Richard Guenther  <rguenther@suse.de>
10756
10757         PR middle-end/39928
10758         * gimplify.c (gimplify_expr): If we are required to create
10759         a temporary make sure it ends up as register.
10760
10761 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
10762
10763         PR target/39903
10764         * config/i386/i386.c (construct_container): Don't call
10765         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
10766         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
10767
10768 2009-04-27  Michael Matz  <matz@suse.de>
10769
10770         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
10771         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
10772         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
10773         (dump_replaceable_exprs): Take a bitmap.
10774         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
10775         array.
10776         (expand_gimple_basic_block): Likewise.
10777         * tree-ssa-ter.c (struct temp_expr_table_d): Make
10778         replaceable_expressions member a bitmap.
10779         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
10780         (mark_replaceable): Likewise.
10781         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
10782         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
10783
10784 2009-04-27  Richard Guenther  <rguenther@suse.de>
10785
10786         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
10787         (verify_stmts): Dispatch to gimple/type verification code.
10788         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
10789         issue with call argument types.
10790
10791 2009-04-27  Michael Matz  <matz@suse.de>
10792
10793         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
10794         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
10795         to above.
10796
10797 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
10798             Eric Botcazou  <ebotcazou@adacore.com>
10799
10800         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
10801         a label's basic block.
10802         (mark_target_live_regs): Tidy and rework obsolete comments.
10803         Change back DF problem to LIVE.  If a label starts a basic block,
10804         assume that all registers that used to be live then still are.
10805         (init_resource_info): If a label starts a basic block, set its
10806         BLOCK_FOR_INSN accordingly.
10807         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
10808
10809 2009-04-27  Richard Guenther  <rguenther@suse.de>
10810
10811         * tree-flow-inline.h (function_ann): Remove.
10812         (get_function_ann): Likewise.
10813         * tree-dfa.c (create_function_ann): Remove.
10814         * tree-flow.h (struct static_var_ann_d): Remove.
10815         (struct function_ann_d): Likewise.
10816         (union tree_ann_d): Remove fdecl member.
10817         (function_ann_t): Remove.
10818         (function_ann, get_function_ann, create_function_ann): Remove
10819         declarations.
10820
10821 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
10822
10823         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
10824
10825 2009-04-27  Jan Hubicka  <jh@suse.cz>
10826
10827         * ipa-pure-const.c (struct funct_state_d): New fields
10828         state_previously_known, looping_previously_known; remove
10829         state_set_in_source.
10830         (analyze_function): Use new fields.
10831         (propagate): Avoid assumption that state_set_in_source imply
10832         nonlooping.
10833
10834         * tree-ssa-loop-niter.c (finite_loop_p): New function.
10835         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
10836         * cfgloop.h (finite_loop_p): Declare.
10837
10838 2009-04-26  Michael Matz  <matz@suse.de>
10839
10840         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
10841
10842 2009-04-26  Michael Matz  <matz@suse.de>
10843
10844         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
10845         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
10846         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
10847         pass_mark_used_blocks): Remove.
10848         * tree-optimize.c (pass_free_datastructures,
10849         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
10850         * passes.c (init_optimization_passes): Don't call
10851         pass_mark_used_blocks, remove dead code.
10852
10853 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
10854
10855         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
10856         * tree-ssa-live.h (register_ssa_partition): Likewise.
10857
10858 2009-04-26  Michael Matz  <matz@suse.de>
10859
10860         Expand from SSA.
10861         * builtins.c (fold_builtin_next_arg): Handle SSA names.
10862         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
10863         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
10864         SSA names. 
10865         (compare_pairs): Swap cost comparison.
10866         (coalesce_ssa_name): Don't use change_partition_var.
10867         * tree-nrv.c (struct nrv_data): Add modified member.
10868         (finalize_nrv_r): Set it.
10869         (tree_nrv): Use it to update statements.
10870         (pass_nrv): Require PROP_ssa.
10871         * tree-mudflap.c (mf_decl_cache_locals,
10872         mf_build_check_statement_for): Use make_rename_temp.
10873         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
10874         * alias.c (find_base_decl): Handle SSA names.
10875         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
10876         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
10877         * rtl.h (set_reg_attrs_for_parm): Declare.
10878         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
10879         to "optimized", remove unused locals at finish.
10880         (execute_free_datastructures): Make global, call
10881         delete_tree_cfg_annotations.
10882         (execute_free_cfg_annotations): Don't call
10883         delete_tree_cfg_annotations.
10884
10885         * ssaexpand.h: New file.
10886         * expr.c (toplevel): Include ssaexpand.h.
10887         (expand_assignment): Handle SSA names the same as register variables.
10888         (expand_expr_real_1): Expand SSA names.
10889         * cfgexpand.c (toplevel): Include ssaexpand.h.
10890         (SA): New global variable.
10891         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
10892         (SSAVAR): New macro.
10893         (set_rtl): New helper function.
10894         (add_stack_var): Deal with SSA names, use set_rtl.
10895         (expand_one_stack_var_at): Likewise.
10896         (expand_one_stack_var): Deal with SSA names.
10897         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
10898         before unique numbers.
10899         (expand_stack_vars): Use set_rtl.
10900         (expand_one_var): Accept SSA names, add asserts for them, feed them
10901         to above subroutines.
10902         (expand_used_vars): Expand all partitions (without default defs),
10903         then only the local decls (ignoring those expanded already).
10904         (expand_gimple_cond): Remove edges when jumpif() expands an
10905         unconditional jump.
10906         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
10907         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
10908         SSA name.
10909         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
10910         members of SA; deal with PARM_DECL partitions here; expand
10911         all PHI nodes, free tree datastructures and SA.  Commit instructions
10912         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
10913         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
10914         info and statements at start, collect garbage at finish.
10915         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
10916         (VAR_ANN_PARTITION) Remove.
10917         (change_partition_var): Don't declare.
10918         (partition_to_var): Always return SSA names.
10919         (var_to_partition): Only accept SSA names.
10920         (register_ssa_partition): Only check argument.
10921         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
10922         member.
10923         (delete_var_map): Don't free it.
10924         (var_union): Only accept SSA names, simplify.
10925         (partition_view_init): Mark only useful SSA names as used.
10926         (partition_view_fini): Only deal with SSA names.
10927         (change_partition_var): Remove.
10928         (dump_var_map): Use ssa_name instead of partition_to_var member.
10929         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
10930         basic blocks.
10931         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
10932         (struct _elim_graph): New member const_dests; nodes member vector of
10933         ints.
10934         (set_location_for_edge): New static helper.
10935         (create_temp): Remove.
10936         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
10937         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
10938         (new_elim_graph): Allocate const_dests member.
10939         (clean_elim_graph): Truncate const_dests member.
10940         (delete_elim_graph): Free const_dests member.
10941         (elim_graph_size): Adapt to new type of nodes member.
10942         (elim_graph_add_node): Likewise.
10943         (eliminate_name): Likewise.
10944         (eliminate_build): Don't take basic block argument, deal only with
10945         partition numbers, not variables.
10946         (get_temp_reg): New static helper.
10947         (elim_create): Use it, deal with RTL temporaries instead of trees.
10948         (eliminate_phi): Adjust all calls to new signature.
10949         (assign_vars, replace_use_variable, replace_def_variable): Remove.
10950         (rewrite_trees): Only do checking.
10951         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
10952         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
10953         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
10954         contains_tree_r, MAX_STMTS_IN_LATCH,
10955         process_single_block_loop_latch, analyze_edges_for_bb,
10956         perform_edge_inserts): Remove.
10957         (expand_phi_nodes): New global function.
10958         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
10959         functions, initialize new parameter, remember partitions having a
10960         default def.
10961         (finish_out_of_ssa): New global function.
10962         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
10963         don't reset in_ssa_p here, don't disable TER when mudflap.
10964         (pass_del_ssa): Remove.
10965         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
10966         partition members.
10967         (execute_free_datastructures): Declare.
10968         * Makefile.in (SSAEXPAND_H): New variable.
10969         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
10970         * basic-block.h (commit_one_edge_insertion): Declare.
10971         * passes.c (init_optimization_passes): Move pass_nrv and
10972         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
10973         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
10974         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
10975         (redirect_branch_edge): Deal with super block when expanding, split
10976         out jump patching itself into ...
10977         (patch_jump_insn): ... here, new static helper.
10978
10979 2009-04-26  Michael Matz  <matz@suse.de>
10980
10981         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
10982         beyond num_ssa_names.
10983         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
10984         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
10985
10986 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
10987
10988         PR inline-asm/39543
10989         * fwprop.c (forward_propagate_asm): New function.
10990         (forward_propagate_and_simplify): Propagate also into __asm, if it
10991         doesn't increase the number of referenced registers.
10992
10993         PR c/39889
10994         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
10995
10996 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
10997
10998         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
10999         note_nonlocal_vla_type for nonlocal VLAs.
11000         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
11001         contains_remapped_vars, remap_vla_decls): New functions.
11002         (convert_nonlocal_reference_stmt): If not optimizing, call
11003         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
11004         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
11005         if it wasn't found in var_map.
11006         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
11007         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
11008         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
11009         declare_vars.
11010         * gimplify.c (nonlocal_vlas): New variable.
11011         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
11012         referenced VLAs.
11013         (gimplify_body): Create and destroy nonlocal_vlas.
11014
11015         * dwarf2out.c (loc_descr_plus_const): New function.
11016         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
11017         mem_loc_descriptor, loc_descriptor_from_tree_1,
11018         descr_info_loc, gen_variable_die): Use it.
11019
11020         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
11021         !TREE_STATIC VAR_DECLs.
11022         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
11023         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
11024         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
11025         DECL_BY_REFERENCE is valid.
11026         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
11027         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
11028         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
11029         Copy DECL_BY_REFERENCE.
11030         (struct nesting_copy_body_data): New type.
11031         (nesting_copy_decl): New function.
11032         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
11033         if they have variable length.
11034
11035 2009-04-26  Michael Matz  <matz@suse.de>
11036
11037         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
11038         mark new temporaries for renaming.
11039
11040 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
11041
11042         PR c/39581
11043         * c-decl.c (global_bindings_p): Return negative value.
11044         (c_variable_size): New.  Based on variable_size from
11045         stor-layout.c.
11046         (grokdeclarator): Call c_variable_size not variable_size.
11047
11048 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
11049
11050         * config/i386/i386.c (print_operand) ['z']: Fix typo.
11051
11052 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
11053
11054         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
11055         Redefine it to just use mingw/include.
11056         (ASM_SPEC): Rules for -m32 and -m64.
11057         (LINK_SPEC): Use Likewise.
11058         (SPEC_32): New define.
11059         (SPEC_64): Likewise.
11060         (SUB_LINK_SPEC): Likewise.
11061         (MULTILIB_DEFAULTS): New define.
11062         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
11063         Add multilib options.
11064         (MULTILIB_DIRNAMES): Likewise.
11065         (MULTILIB_OSDIRNAMES): Likewise.
11066         (LIBGCC): Likewise.
11067         (INSTALL_LIBGCC): Likewise.
11068
11069 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
11070
11071         PR c/39556
11072         * c-tree.h (enum c_inline_static_type): New.
11073         (record_inline_static): Declare.
11074         * c-decl.c (struct c_inline_static, c_inline_statics,
11075         record_inline_static, check_inline_statics): New.
11076         (pop_file_scope): Call check_inline_statics.
11077         (start_decl): Call record_inline_static instead of pedwarning
11078         directly for static in inline function.
11079         * c-typeck.c (build_external_ref): Call record_inline_static
11080         instead of pedwarning directly for static referenced in inline
11081         function.
11082
11083 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
11084
11085         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
11086         not new but only being rescanned.
11087         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
11088         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
11089         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
11090         record_set_info, compute_set, grealloc): Remove.
11091         (recompute_all_luids): New function.
11092         (gcse_main): Don't compute sets, and don't do related memory
11093         allocations/free-ing.  If something changed before the end of the
11094         pass, update LUIDs using recompute_all_luids.
11095         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
11096         (free_gcse_mem): Don't free it either.
11097         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
11098         Use the df insn LUIDs.
11099         (load_killed_in_block): Likewise.
11100         (compute_hash_table_work): Don't compute reg_set_in_block.
11101         (compute_transp): Use DF_REG_DEF_CHAINs.
11102         (local_cprop_pass): Don't use compute_sets and related functions.
11103         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
11104         Use get_max_uid() instead of max_cuid.
11105         (insert_insn_end_basic_block, pre_insert_copy_insn,
11106         update_ld_motion_stores): Don't try to
11107         keep reg_set tables up to date.
11108         (pre_insert_copies): Use df insn LUIDs.
11109         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
11110         (reg_set_info): Don't use extra bitmap argument.
11111         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
11112         information to compute regs_set_in_block.
11113         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
11114         (bypass_jumps): Don't use compute_sets and friends.
11115
11116 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11117
11118         PR testsuite/39710
11119         * opts.c (undocumented_msg): Do not leave blank even with
11120         ENABLE_CHECKING.
11121
11122 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
11123
11124         * c-decl.c (build_enumerator): Allow values folding to integer
11125         constants but not integer constant expressions with a pedwarn if
11126         pedantic.
11127
11128 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
11129
11130         PR c/39582
11131         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
11132         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
11133         type is an integer constant.
11134
11135 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
11136
11137         PR target/39897
11138         * config/i386/i386.c (print_operand) ['z']: Revert handling of
11139         HImode operands.
11140
11141 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
11142
11143         PR c/39564
11144         * c-decl.c (grokdeclarator): Diagnose declarations of functions
11145         with variably modified return type and no storage class
11146         specifiers, except for the case of nested functions.  Distinguish
11147         extern declarations of functions with variably modified return
11148         types from those of objects with variably modified types.
11149
11150 2009-04-25  Jan Hubicka  <jh@suse.cz>
11151
11152         * tree.c (list_equal_p): New function.
11153         * tree.h (list_equal_p): Declare.
11154         * coretypes.h (edge_def, edge, const_edge, basic_block_def
11155         basic_block_def, basic_block, const_basic_block): New.
11156         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
11157         (redirect_eh_edge): New function.
11158         (make_eh_edge_update_phi): EH edges are not abnormal.
11159         * except.c: Include tree-flow.h.
11160         (list_match): New function.
11161         (eh_region_replaceable_by_p): New function.
11162         (replace_region): New function.
11163         (hash_type_list): New function.
11164         (hash_eh_region): New function.
11165         (eh_regions_equal_p): New function.
11166         (merge_peers): New function.
11167         (remove_unreachable_regions): Verify EH tree when checking;
11168         merge peers.
11169         (copy_eh_region_1): New function.
11170         (copy_eh_region): New function.
11171         (push_reachable_handler): New function.
11172         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
11173         regions without label but with live RESX.
11174         * except.h (redirect_eh_edge_to_label): New.
11175         * tree-flow.h (redirect_eh_edge): New.
11176         * coretypes.h (edge_def, edge, const_edge, basic_block_def
11177         basic_block_def, basic_block, const_basic_block): Remove.
11178         * Makefile.in (except.o): Add dependency on tree-flow.h
11179         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
11180         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
11181         Remove.
11182
11183 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
11184
11185         PR bootstrap/39645
11186         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
11187         on the destination of memcpy.
11188
11189 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
11190
11191         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
11192         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
11193         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
11194
11195 2009-04-25  Jan Hubicka  <jh@suse.cz>
11196
11197         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
11198         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
11199         to be reached by different label than left.
11200         (update_eh_edges): Update comment; remove edge_to_remove if possible
11201         and return true if suceeded.
11202         (cleanup_empty_eh): Accept sharing map; handle shared regions.
11203         (cleanup_eh): Compute sharing map.
11204         * except.c (remove_eh_handler_and_replace): Add argument if we should
11205         update regions.
11206         (remove_unreachable_regions): Update for label sharing.
11207         (label_to_region_map): Likewise.
11208         (get_next_region_sharing_label): New function.
11209         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
11210         prev_try pointers.
11211         (remove_eh_handler): Update.
11212         (remove_eh_region_and_replace_by_outer_of): New function.
11213         * except.h (struct eh_region): Add next_region_sharing_label.
11214         (remove_eh_region_and_replace_by_outer_of,
11215         get_next_region_sharing_label): Declare.
11216         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
11217
11218 2009-04-25  Jan Hubicka  <jh@suse.cz>
11219
11220         * tree-cfg.c (split_critical_edges): Split also edges where we can't
11221         insert code even if they are not critical.
11222
11223 2009-04-25  Jan Hubicka  <jh@suse.cz>
11224
11225         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
11226         (gimple_can_remove_branch_p): EH edges won't remove branch by
11227         redirection.
11228         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
11229         updating of non-abnormal EH edges.
11230         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
11231         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
11232         (split_critical_edges): Split also edges where emitting code on them
11233         will lead to splitting later.
11234
11235 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
11236             H.J. Lu  <hongjiu.lu@intel.com>
11237
11238         PR target/39590
11239         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
11240         the configured assembler supports fildq and fistpq mnemonics.
11241         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
11242         * configure: Regenerated.
11243         * config.in: Ditto.
11244
11245         * config/i386/i386.c (print_operand): Handle 'Z'.
11246         ['z']: Remove handling of special fild/fist suffixes.
11247         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
11248         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
11249         suffix of fild insn.
11250         (*floatsi<mode>2_vector_mixed): Ditto.
11251         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
11252         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
11253         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
11254         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
11255         * config/i386/gas.h (GAS_MNEMONICS): Remove.
11256
11257 2009-04-25  Ben Elliston  <bje@au.ibm.com>
11258  
11259         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
11260         the source of a set operation.
11261
11262 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
11263
11264         * target.h (struct gcc_target): Add case_values_threshold field.
11265         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
11266         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
11267         * targhooks.c (default_case_values_threshold): New function.
11268         * targhooks.h (default_case_values_threshold): Declare function.
11269         * stmt.c (expand_case): Use case_values_threshold target hook.
11270         * expr.h (case_values_threshold): Remove declartation.
11271         * expr.c (case_values_threshold): Remove function.
11272         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
11273
11274         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
11275         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
11276         (avr_case_values_threshold): Declare as static.
11277         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
11278
11279         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
11280         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
11281         (mn10300_case_values_threshold): New function.
11282
11283 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
11284
11285         * ira.c (setup_cover_and_important_classes): Add enum cast.
11286
11287 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
11288
11289         * genpreds.c (write_enum_constraint_num): Output definition of
11290         CONSTRAINT_NUM_DEFINED_P macro.
11291         * ira.c (setup_cover_and_important_classes): Use
11292         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
11293         
11294 2009-04-24  DJ Delorie  <dj@redhat.com>
11295
11296         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
11297         __SH2A_SINGLE_ONLY__ also.
11298
11299 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
11300
11301         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
11302         (movdf_internal): Ditto.
11303         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
11304         SFmode and DFmode constants.
11305         (ia64_print_operand): Add 'G' format for printing
11306         floating point constants.
11307
11308 2009-04-24  Richard Guenther  <rguenther@suse.de>
11309
11310         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
11311         from unsigned additions.
11312
11313 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
11314
11315         * c-typeck.c (set_init_index): Allow array designators that are
11316         not integer constant expressions with a pedwarn if pedantic.
11317
11318 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
11319
11320         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
11321         zero if no overlap in nonzero bits between the operands.
11322
11323 2009-04-24  Ian Lance Taylor  <iant@google.com>
11324
11325         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
11326         (record_dead_and_set_regs): Likewise.
11327         * df.h (struct df_mw_hardreg): Change flags field to int.
11328         (struct df_base_ref): Likewise.
11329         (struct df): Change changeable_flags field to int.
11330         * df-scan.c (df_defs_record): Change clobber_flags to int.
11331         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
11332         constants rather than #define macros.
11333         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
11334         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
11335         (enum dwarf_calling_convention): Likewise.
11336         (enum dwarf_line_number_x_ops): Likewise.
11337         (enum dwarf_call_frame_info): Likewise.
11338         (enum dwarf_source_language): Likewise.
11339         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
11340         (add_calling_convention_attribute): Likewise.
11341         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
11342         (combine_comparisons): Change compcode to int.  Add cast to enum type.
11343         * genrecog.c (maybe_both_true_2): Change c to int.
11344         (write_switch): Likewise.  Add cast to enum type.
11345         * gimplify.c (gimplify_omp_for): Handle return values from
11346         gimplify_expr using MIN rather than bitwise or.
11347         (gimplify_expr): Add cast to enum type.
11348         * ipa-prop.c (update_jump_functions_after_inlining): Change
11349         IPA_BOTTOM to IPA_JF_UNKNOWN.
11350         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
11351         Add casts to enum type.
11352         (setup_cover_and_important_classes): Change cl to int.  Add casts
11353         to enum type.
11354         (setup_class_translate): Change cl and mode to int.
11355         (ira_init_once): Change mode to int.
11356         (free_register_move_costs): Likewise.
11357         (setup_prohibited_mode_move_regs): Add casts to enum type.
11358         * langhooks.c (add_builtin_function_common): Rework assertion that
11359         value fits bitfield.
11360         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
11361         * omega.c (omega_do_elimination): Avoid math on enum types.
11362         * optabs.c (expand_vec_shift_expr): Remove casts to int.
11363         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
11364         int local to handle integral_argment value.
11365         * regmove.c (try_auto_increment): Change PUT_MODE to
11366         PUT_REG_NOTE_KIND.
11367         * reload.c (push_secondary_reload): Add casts to enum type.
11368         (secondary_reload_class, find_valid_class): Likewise.
11369         * reload1.c (emit_input_reload_insns): Likewise.
11370         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
11371         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
11372         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
11373         constant.
11374         * tree.c (build_common_builtin_nodes): Add casts to enum type.
11375         * tree-complex.c (complex_lattice_t): Typedef to int rather than
11376         enum type.
11377         (expand_complex_libcall): Add casts to enum type.
11378         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
11379         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
11380         with ERROR_MARK, not NUM_TREE_CODES.
11381         (vect_create_epilog_for_reduction): Likewise.
11382         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
11383         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
11384         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
11385         enum machine_mode.
11386         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
11387         vect_unused_in_loop.  Change 0 to loop_vect.
11388         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
11389         * var-tracking.c (get_init_value): Change return type to enum
11390         var_init_status.
11391         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
11392         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
11393         arm_fp_model.
11394         (arm_override_options): Add casts to enum type.
11395         (arm_emit_tls_decoration): Likewise.
11396         * config/i386/i386.c (ix86_function_specific_restore): Add casts
11397         to enum type.
11398         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
11399         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
11400         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
11401         enum type.
11402         * config/s390/s390.c (code_for_builtin_64): Change to array of
11403         enum insn_code.
11404         (code_for_builtin_31): Likewise.
11405         (s390_expand_builtin): Change code_for_builtin to enum insn_code
11406         const *.
11407         * config/sparc/sparc.c (sparc_override_options): Change value
11408         field in struct code_model to enum cmodel.  In initializer change
11409         0 to NULL and add cast to enum type.
11410
11411         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
11412         Change all callers.  Issue a -Wc++-compat warning using
11413         lhs_origtype if necessary.
11414         (convert_for_assignment): Issue -Wc++-compat warnings about
11415         invalid conversions to enum type on assignment.
11416         * c-common.h (build_modify_expr): Update declaration.
11417
11418 2009-04-24  Nick Clifton  <nickc@redhat.com>
11419
11420         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
11421         (function_arg_advance): Likewise.
11422         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
11423         5th alternative.
11424
11425 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11426
11427         * config/s390/constraints.md ('I', 'J'): Fix condition.
11428
11429 2009-04-24  Diego Novillo  <dnovillo@google.com>
11430
11431         * gengtype-parse.c (parse_error): Add newline after message.
11432
11433 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
11434
11435         * config/i386/sse.md (avxmodesuffixs): Removed.
11436         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
11437         (*avx_pinsr<ssevecsize>): This.
11438
11439 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
11440
11441         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
11442         follow chains of regs with a single definition, and allow expressions
11443         that are function_invariant_p.
11444         (simple_rhs_p): Allow expressions that are function_invariant_p.
11445
11446 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
11447
11448         PR middle-end/39867
11449         * fold-const.c (fold_cond_expr_with_comparison): When folding
11450         > and >= to MAX, make sure the MAX uses the same type as the
11451         comparison's operands.
11452
11453 2009-04-24  Nick Clifton  <nickc@redhat.com>
11454
11455         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
11456         addressing for DImode accesses.
11457         (frv_print_operand_address): Handle PLUS case.
11458         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
11459
11460 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
11461
11462         PR rtl-optimization/39794
11463         * alias.c (canon_true_dependence): Add x_addr argument.
11464         * rtl.h (canon_true_dependence): Adjust prototype.
11465         * cse.c (check_dependence): Adjust canon_true_dependence callers.
11466         * cselib.c (cselib_invalidate_mem): Likewise.
11467         * gcse.c (compute_transp): Likewise.
11468         * dse.c (scan_reads_nospill): Likewise.
11469         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
11470         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
11471         canon_base_addr of the group, plus optional offset.
11472         (struct group_info): Rename canon_base_mem to
11473         canon_base_addr.
11474         (get_group_info): Set canon_base_addr to canon_rtx of base, not
11475         canon_rtx of base_mem.
11476
11477 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
11478
11479         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
11480         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
11481
11482 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11483
11484         * config/spu/spu-builtins.h: Delete file.
11485
11486         * config/spu/spu.h (enum spu_builtin_type): Move here from
11487         spu-builtins.h.
11488         (struct spu_builtin_description): Likewise.  Add GTY marker.
11489         Do not use enum spu_function_code or enum insn_code.
11490         (spu_builtins): Add extern declaration.
11491
11492         * config/spu/spu.c: Do not include "spu-builtins.h".
11493         (enum spu_function_code, enum spu_builtin_type_index,
11494         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
11495         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
11496         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
11497         unsigned_V2DI_type_node): Move here from spu-builtins.h.
11498         (spu_builtin_types): Make static.  Add GTY marker.
11499         (spu_builtins): Add extern declaration with GTY marker.
11500         Include "gt-spu.h".
11501
11502         * config/spu/spu-c.c: Do not include "spu-builtins.h".
11503         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
11504         Check programmatically whether all parameters are scalar.
11505
11506         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
11507
11508 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
11509
11510         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
11511         assignment from the constructor either if the target is volatile.
11512
11513 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
11514
11515         * config/arm/arm.md (insv): Do not share operands[0].
11516
11517 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
11518
11519         * config/vxlib-tls.c (active_tls_threads): Delete.
11520         (delete_hook_installed): New.
11521         (tls_delete_hook): Don't delete the delete hook.
11522         (tls_destructor): Delete it here.
11523         (__gthread_set_specific): Adjust installing the delete hook.
11524         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
11525         __gthread_leave_tsd_dtor_context.
11526
11527 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
11528
11529         * c-format.c (gcc_tdiag_char_table): Add support for %E.
11530
11531 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
11532
11533         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
11534         enum type.
11535         (alpha_rtx_costs): Ditto.
11536         (emit_unlikely_jump): Use add_reg_note.
11537         (emit_frame_store_1): Ditto.
11538         (alpha_expand_prologue): Ditto.
11539         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
11540         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
11541
11542 2009-04-23  Nick Clifton  <nickc@redhat.com>
11543
11544         * config/v850/v850.md (epilogue): Remove suppressed code.
11545         (return): Rename to return_simple and remove test of frame size.
11546         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
11547         to gen_return_simple.
11548
11549 2009-04-22  Jing Yu  <jingyu@google.com>
11550
11551         PR testsuite/39781
11552         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
11553
11554 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11555
11556         PR C/31499
11557         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
11558         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
11559         value is a VECTOR_CST, the element type is the element type of the
11560         vector.
11561
11562 2009-04-22  DJ Delorie  <dj@redhat.com>
11563
11564         * config/m32c/m32c.h: Update GTY annotations to new syntax.
11565
11566 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
11567
11568         * alias.c (find_base_term): Move around LO_SUM case, so that
11569         CONST falls through into PLUS/MINUS handling.
11570
11571         PR c/39855
11572         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
11573         into 0, use omit_one_operand.
11574
11575 2009-04-23  Ben Elliston  <bje@au.ibm.com>
11576
11577         * config/rs6000/linux-unwind.h (get_regs): Remove type
11578         puns. Change the type of `pc' to an array of unsigned ints and
11579         update all users.  Constify frame24.
11580
11581 2009-04-22  DJ Delorie  <dj@redhat.com>
11582
11583         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
11584         declarations before code.
11585         (current_function_special_page_vector): Likewise.
11586         (m32c_expand_insv): Silence a warning.
11587
11588 2009-04-21  Taras Glek  <tglek@mozilla.com>
11589
11590         * alias.c: Update GTY annotations to new syntax.
11591         * basic-block.h: Likewise.
11592         * bitmap.h: Likewise.
11593         * c-common.h: Likewise.
11594         * c-decl.c: Likewise.
11595         * c-parser.c: Likewise.
11596         * c-pragma.c: Likewise.
11597         * c-tree.h: Likewise.
11598         * cfgloop.h: Likewise.
11599         * cgraph.h: Likewise.
11600         * config/alpha/alpha.c: Likewise.
11601         * config/arm/arm.h: Likewise.
11602         * config/avr/avr.h: Likewise.
11603         * config/bfin/bfin.c: Likewise.
11604         * config/cris/cris.c: Likewise.
11605         * config/darwin.c: Likewise.
11606         * config/frv/frv.c: Likewise.
11607         * config/i386/i386.c: Likewise.
11608         * config/i386/i386.h: Likewise.
11609         * config/i386/winnt.c: Likewise.
11610         * config/ia64/ia64.h: Likewise.
11611         * config/iq2000/iq2000.c: Likewise.
11612         * config/mips/mips.c: Likewise.
11613         * config/mmix/mmix.h: Likewise.
11614         * config/pa/pa.c: Likewise.
11615         * config/pa/pa.h: Likewise.
11616         * config/rs6000/rs6000.c: Likewise.
11617         * config/s390/s390.c: Likewise.
11618         * config/sparc/sparc.c: Likewise.
11619         * config/xtensa/xtensa.c: Likewise.
11620         * cselib.h: Likewise.
11621         * dbxout.c: Likewise.
11622         * dwarf2out.c: Likewise.
11623         * except.c: Likewise.
11624         * except.h: Likewise.
11625         * fixed-value.h: Likewise.
11626         * function.c: Likewise.
11627         * function.h: Likewise.
11628         * gimple.h: Likewise.
11629         * integrate.c: Likewise.
11630         * optabs.c: Likewise.
11631         * output.h: Likewise.
11632         * real.h: Likewise.
11633         * rtl.h: Likewise.
11634         * stringpool.c: Likewise.
11635         * tree-data-ref.c: Likewise.
11636         * tree-flow.h: Likewise.
11637         * tree-scalar-evolution.c: Likewise.
11638         * tree-ssa-address.c: Likewise.
11639         * tree-ssa-alias.h: Likewise.
11640         * tree-ssa-operands.h: Likewise.
11641         * tree.c: Likewise.
11642         * tree.h: Likewise.
11643         * varasm.c: Likewise.
11644         * varray.h: Likewise.
11645         * vec.h: Likewise.
11646         * coretypes.h: Do not define GTY macro if it is already defined.
11647         * doc/gty.texi: Update GTY documentation to new syntax.
11648         * gengtype-lex.l: Enforce attribute-like syntax for GTY
11649         annotations on structs.
11650         * gengtype-parse.c: Likewise.
11651
11652 2009-04-22  Mark Heffernan  <meheff@google.com>
11653
11654         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
11655
11656 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
11657
11658         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
11659         where appropriate.
11660
11661 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
11662
11663         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
11664         the same as a PLUS without a shift.  Increase the cost of a
11665         CONST_INT in MULT.
11666
11667 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11668
11669         * Makefile.in: Update dependencies.
11670         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
11671         * errors.h: Remove bogus comment about compatibility.
11672         (warning): Update declaration.
11673         * genautomata.c: Update all calls to warning.
11674         * gimple.c: Do not include errors.h. Include toplev.h.
11675         * tree-ssa-structalias.c: Do not include errors.h.
11676         * omega.c: Likewise.
11677         * tree-ssa-reassoc.c: Likewise.
11678         * config/spu/spu-c.c: Likewise.
11679         * config/spu/t-spu-elf: Update dependencies.
11680
11681 2009-04-22  Richard Guenther  <rguenther@suse.de>
11682
11683         PR tree-optimization/39824
11684         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
11685         make sure the types are compatible.
11686
11687 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11688
11689         PR c++/14875
11690         * c-common.c (c_parse_error): Take a token_flags parameter.
11691         Use token_type for the token type instead.
11692         Pass token_flags to cpp_type2name.
11693         * c-common.h (c_parse_error): Update declaration.
11694         * c-parser.c (c_parser_error): Pass 0 as token flags.
11695
11696 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
11697
11698         PR rtl-optimization/39580
11699         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
11700         
11701 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11702
11703         * function.c (expand_function_end): Do not emit a jump to the "naked"
11704         return label for fall-through returns.
11705         * except.c (sjlj_emit_function_exit): Always place the call to the
11706         unregister function at the location installed by expand_function_end.
11707
11708 2009-04-22  Richard Guenther  <rguenther@suse.de>
11709
11710         PR tree-optimization/39845
11711         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
11712         (gen_inbound_check): Likewise.
11713
11714 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
11715
11716         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
11717         padding for PPC.
11718         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
11719         * config/vxlib.c (__gthread_once): Add race guard for PPC.
11720
11721 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
11722
11723         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
11724         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
11725         shift counts to avoid out-of-bounds array accesses.
11726
11727 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
11728
11729         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
11730         (Pmode): Move above.
11731
11732 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
11733
11734         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
11735         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
11736         GET_CODE macro.  Use IN_RANGE macro where appropriate.
11737         * config/alpha/alpha.h: Ditto.
11738         * config/alpha/alpha.md: Ditto.
11739         * config/alpha/constraints.md: Ditto.
11740         * config/alpha/predicates.md: Ditto.
11741         
11742 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
11743
11744         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
11745         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11746         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11747         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11748         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11749         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11750         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11751         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11752         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11753         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11754         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11755         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11756         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11757         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11758         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11759         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11760         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11761         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11762         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11763         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11764         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11765         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11766         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11767         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11768         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11769         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11770         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11771
11772 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
11773
11774         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
11775         references from comments.
11776         * cfgbuild.c: (count_basic_blocks): Delete.
11777         (find_basic_blocks_1): Delete.
11778         (find_basic_blocks): Delete.
11779         * except.c (finish_eh_generation): Make static.  Move comment from
11780         except.h here.  Remove find_basic_blocks references from comments.
11781         * except.h (finish_eh_generation): Delete.
11782         * basic-block.h (find_basic_blocks): Delete.
11783         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
11784
11785 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
11786
11787         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
11788         (sdbout_parms):  Likewise.
11789
11790 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
11791
11792         * config/sh/sh.c (prepare_cbranch_operands): Use
11793         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
11794         (expand_cbranchdi4): Likewise.
11795         (from_compare): Add cast to enum type.
11796         (expand_cbranchsi4): Use add_reg_note.
11797         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
11798         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
11799         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
11800         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
11801         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
11802         instead of CODE_FOR_nothing.
11803         (cbranchdi4): Likewise.  Fix the order of arguments for
11804         gen_rtx_fmt_ee.
11805         (push_fpscr): Use add_reg_note.
11806         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
11807         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
11808         
11809 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
11810
11811         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
11812         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
11813         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
11814         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
11815         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
11816         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
11817         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
11818         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
11819         config/alpha/x-vms, config/arc/t-arc,
11820         config/arm/README-interworking, config/arm/arm-c.c,
11821         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
11822         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
11823         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
11824         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
11825         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
11826         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
11827         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
11828         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
11829         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
11830         config/cris/t-elfmulti, config/crx/t-crx,
11831         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
11832         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
11833         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
11834         config/h8300/t-h8300, config/i386/athlon.md,
11835         config/i386/darwin-libgcc.10.4.ver,
11836         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
11837         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
11838         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
11839         config/i386/t-linux64, config/i386/t-nwld,
11840         config/i386/t-rtems-i386, config/i386/t-sol2-10,
11841         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
11842         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
11843         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
11844         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
11845         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
11846         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
11847         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
11848         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
11849         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
11850         config/m68k/t-uclinux, config/mcore/t-mcore,
11851         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
11852         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
11853         config/mips/crtn.asm, config/mips/irix-crti.asm,
11854         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
11855         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
11856         config/mips/mips-fixed.md, config/mips/sb1.md,
11857         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
11858         config/mips/t-iris6, config/mips/t-isa3264,
11859         config/mips/t-libgcc-mips16, config/mips/t-linux64,
11860         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
11861         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
11862         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
11863         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
11864         config/mn10300/t-linux, config/mn10300/t-mn10300,
11865         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
11866         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
11867         config/picochip/libgccExtras/clzsi2.asm,
11868         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
11869         config/rs6000/darwin-libgcc.10.4.ver,
11870         config/rs6000/darwin-libgcc.10.5.ver,
11871         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
11872         config/rs6000/t-aix43, config/rs6000/t-aix52,
11873         config/rs6000/t-darwin, config/rs6000/t-fprules,
11874         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
11875         config/rs6000/t-lynx, config/rs6000/t-netbsd,
11876         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
11877         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
11878         config/rs6000/t-rtems, config/rs6000/t-spe,
11879         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
11880         config/score/t-score-elf, config/sh/divcost-analysis,
11881         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
11882         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
11883         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
11884         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
11885         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
11886         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
11887         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
11888         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
11889         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
11890         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
11891         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
11892         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
11893         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
11894         limitx.h, version.c, xcoff.h: Add copyright and license notices.
11895         * config/h8300/genmova.sh: Include copyright and license notices
11896         in generated output.
11897         * config/h8300/mova.md: Regenerate.
11898         * doc/install.texi2html: Include word "Copyright" in copyright
11899         notice and use name "Free Software Foundation, Inc.".
11900         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
11901         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
11902         ChangeLog-2007, ChangeLog-2008: Correct dates.
11903
11904 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
11905
11906         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
11907         NE_EXPR operations as well.
11908         * c-parser.c (c_parser_condition): Do not set location information on
11909         the condition.
11910         (c_parser_conditional_expression): Likewise.
11911         (c_parser_binary_expression): Set location information on operators.
11912         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
11913         TRUTH_NOT_EXPR has been folded.
11914         * fold-const.c (fold_truth_not_expr): Copy location information from
11915         the incoming expression to the outgoing one.
11916         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
11917         recursive calls on the LHS of the operator but pass that of the
11918         operator to recursive calls on the RHS of the operator.  Set it
11919         on the COND_EXPR.
11920         (shortcut_cond_expr): Set the locus of the operator on the second
11921         COND_EXPR and that of the expression on the first in degenerate cases.
11922         Pass the locus of the expression to calls to shortcut_cond_r.
11923         Set the locus of the 'then' block on the associated jump, if any.
11924         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
11925         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
11926         expression to call to gimplify_boolean_expr.
11927
11928 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
11929
11930         * config.gcc: Add additional configuration for
11931         i686-w64-mingw* and x86_64-w64-mingw* triplet.
11932         * config/i386/mingw-w64.h: New mingw-w64 specific header.
11933         (CPP_SPEC): Redefine for allowing -municode option.
11934         (STARTFILE_SPEC): Likewise.
11935         * config/i386/t-mingw-w64: New.
11936         * config/i386/mingw-w64.opt: New.
11937         (municode): Add new target option.
11938         * doc/invoke.texi (municode): Add documentation for new option.
11939
11940 2009-04-21  Ian Lance Taylor  <iant@google.com>
11941
11942         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11943         Correct test for number of arguments.
11944         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
11945
11946 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
11947
11948         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
11949         argument of emit_library_call.
11950
11951 2009-04-21  Richard Guenther  <rguenther@suse.de>
11952
11953         PR middle-end/39829
11954         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
11955         inside VIEW_CONVERT_EXPRs.
11956
11957 2009-04-21  Martin Jambor  <mjambor@suse.cz>
11958
11959         * tree-switch-conversion.c (build_constructors): Split a long line.
11960         (constructor_contains_same_values_p): New function.
11961         (build_one_array): Create assigns of constants if possible, do not
11962         call mark_sym_for_renaming, call update_stmt.
11963         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
11964         make_rename_temp.  Do not call mark_symbols_for_renaming, call
11965         update_stmt.
11966         (gen_def_assigns): Do not call mark_symbols_for_renaming or
11967         find_new_referenced_vars, call update_stmt.
11968         (gen_inbound_check): Use create_tmp_var and create ssa names manually
11969         instead of calling make_rename_temp.  Do not call
11970         find_new_referenced_vars or mark_symbols_for_renaming, call
11971         update_stmt.
11972
11973 2009-04-21  Richard Guenther  <rguenther@suse.de>
11974
11975         PR tree-optimization/39827
11976         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
11977         (tree_ssa_phiprop): Pass the correct array size.
11978
11979 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
11980
11981         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
11982
11983 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11984
11985         PR 16202
11986         * c-typeck.c (lvalue_p): Move declaration ...
11987         * c-common.h (lvalue_p): ... to here.
11988         * c-common.c (candidate_equal_p): New.
11989         (add_tlist): Use it.
11990         (merge_tlist): Use it.
11991         (warn_for_collisions_1): Likewise.
11992         (warning_candidate_p): Accept more candidates.
11993         (verify_tree): A warning candidate can be an expression. Use
11994         candidate_equal_p.
11995
11996 2009-04-21  Ben Elliston  <bje@au.ibm.com>
11997
11998         PR target/5267
11999         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
12000         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
12001         options.  Remove -mcall-solaris documentation.
12002
12003 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12004
12005         PR c++/13358
12006         * doc/invoke.texi (-Wlong-long): Update description.
12007         * c-lex (interpret_integer): Only warn if there was no previous
12008         overflow and -Wlong-long is enabled.
12009         * c-decl.c (declspecs_add_type): Drop redundant flags.
12010         * c.opt (Wlong-long): Init to -1.
12011         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
12012         and front-end warn_long_long. Wlong-long only depends on other
12013         flags if it is uninitialized.
12014         * c-parser.c (disable_extension_diagnostics): warn_long_long is
12015         the same for CPP and FE.
12016         (restore_extension_diagnostics): Likewise.
12017
12018 2009-04-20  Ian Lance Taylor  <iant@google.com>
12019
12020         Fix enum conversions which are invalid in C++:
12021         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
12022         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
12023         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
12024         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
12025         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
12026         (dbxout_parms): Likewise.
12027         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
12028         (df_clear_flags): Likewise.
12029         * df-problems.c (df_rd_bb_local_compute_process_def): Change
12030         top_flag parameter to int.
12031         (df_chain_create_bb_process_use): Likewise.
12032         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
12033         Remove cast.
12034         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
12035         (df_ref_create_structure, df_def_record_1): Likewise.
12036         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
12037         (df_notes_rescan): Change 0 to VOIDmode in function call.
12038         (df_get_call_refs, df_insn_refs_collect): Likewise.
12039         (df_bb_regs_collect): Likewise.
12040         (df_entry_block_defs_collect): Likewise.
12041         (df_exit_block_uses_collect): Likewise.
12042         * df.h: Update declarations.
12043         * double-int.c (double_int_divmod): Add cast to enum type.
12044         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
12045         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
12046         (based_loc_descr): Likewise.
12047         (loc_descriptor_from_tree_1): Change first_op and second_op to
12048         enum dwarf_location_atom.  Add cast to enum type.
12049         * expmed.c (init_expmed): Change 0 to SET in function call.
12050         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
12051         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
12052         (do_store_flag): Likewise.
12053         * fixed-value.h (struct fixed_value): Change mode to enum
12054         machine_mode.
12055         * function.c (assign_parms): Change 0 to VOIDmode in function call.
12056         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
12057         function call.
12058         (insert_insn_decl, insert_decl, insert_state): Likewise.
12059         (automata_list_finish): Likewise.
12060         * genrecog.c (process_define_predicate): Add cast to enum type.
12061         * gensupport.c (init_predicate_table): Add cast to enum type.
12062         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
12063         function call.
12064         (gimple_build_call_1, gimple_build_label): Likewise.
12065         (gimple_build_goto, gimple_build_asm_1): Likewise.
12066         (gimple_build_switch_1, gimple_build_cdt): Likewise.
12067         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
12068         (enum fallback): Rename from enum fallback_t.
12069         (fallback_t): Typedef as int.
12070         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
12071         GSI_SAME_STMT in function call.
12072         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
12073         enum type.
12074         (setup_reg_class_relations): Likewise.
12075         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
12076         (setup_prohibited_class_mode_regs): Add cast to enum type.
12077         (setup_prohibited_mode_move_regs): Likewise.
12078         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
12079         (record_address_regs): Change i to enum reg_class.
12080         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
12081         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
12082         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
12083         (GET_MODE_2XWIDER_MODE): Likewise.
12084         (GET_CLASS_NARROWEST_MODE): Likewise.
12085         * omp-low.c (expand_omp_for): Add cast to enum type.
12086         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
12087         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
12088         * postreload.c (reload_cse_simplify_operands): Change rclass local
12089         to enum reg_class.
12090         * predict.c (combine_predictions_for_insn): Change best_predictor
12091         and predictor to enum br_predictor.
12092         (combine_predictions_for_bb): Likewise.
12093         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
12094         use SET_PREDICT_EXPR_OUTCOME.
12095         * real.c (real_arithmetic): Change icode to code in function call.
12096         * reginfo.c (init_move_cost): Add casts to enum type.
12097         (init_reg_sets_1, init_fake_stack_mems): Likewise.
12098         * regmove.c (regclass_compatible_p): Change class0 and class1 to
12099         enum reg_class.
12100         * reload.c (find_valid_class): Add casts to enum type.
12101         (push_reload): Change 0 to NO_REGS in function call.
12102         (find_reloads): Change this_alternative to array of enum
12103         reg_class.  Remove some now-unnecessary casts.
12104         (make_memloc): Change 0 to VOIDmode in function call.
12105         * reload1.c (reload): Change 0 to VOIDmode in function call.
12106         (eliminate_regs_1, elimination_effects): Likewise.
12107         (eliminate_regs_in_insn): Likewise.
12108         (emit_input_reload_insns): Add cast to enum type.
12109         (delete_output_reload): Change 0 to VOIDmode in function call.
12110         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
12111         to enum type in function call.
12112         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
12113         (SET_PREDICT_EXPR_OUTCOME): Define.
12114         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
12115         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
12116         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
12117         (dump_function): Likewise.
12118         * tree-dump.h: Update declarations.
12119         * tree-pass.h: Update declarations.
12120         * varasm.c (assemble_integer): Change mclass to enum mode_class.
12121         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
12122         enum type.
12123         (arm_rtx_costs_1): Correct parenthesization.
12124         (arm_rtx_costs): Add casts to enum type.
12125         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
12126         (vfp_emit_fstmd): Use add_rg_note.
12127         (emit_multi_reg_push, emit_sfm): Likewise.
12128         (thumb_set_frame_pointer): Likewise.
12129         (arm_expand_prologue): Likewise.
12130         (arm_regno_class): Change return type to enum reg_class.
12131         (thumb1_expand_prologue): Use add_reg_note.
12132         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
12133         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
12134         in function call.
12135         * config/arm/gentune.sh: Add cast to enum type.
12136         * config/arm/arm-tune.md: Rebuild.
12137         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
12138         (ix86_split_fp_branch, predict_jump): Likewise.
12139         (ix86_expand_multi_arg_builtin): Change sub_code from enum
12140         insn_code to enum rtx_code.
12141         (ix86_builtin_vectorized_function): Add cast to enum type.
12142         * config/i386/i386.md (truncdfsf2): Change slot to enum
12143         ix86_stack_slot.
12144         (truncxf<mode>2, isinf<mode>2): Likewise.
12145         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
12146         enum type.
12147         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
12148         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
12149         (insert_bundle_state): Change 1 to INSERT in function call.
12150         (ia64_add_bundle_selector_before): Likewise.
12151         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
12152         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
12153         (restore_stack_nonlocal): Likewise.
12154         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
12155         function call.
12156         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
12157         function call.
12158         (mips_rtx_costs): Likewise.
12159         (mips_override_options): Add casts to enum type.
12160         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
12161         in function call.
12162         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
12163         (store_reg, set_reg_plus_d): Likewise.
12164         (hppa_expand_prologue, hppa_profile_hook): Likewise.
12165         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
12166         cast to enum type.
12167         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
12168         function call.
12169         (emit_unlikely_jump): Use add_reg_note.
12170         (rs6000_emit_allocate_stack): Likewise.
12171         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
12172         (output_toc): Change 1 to INSERT in function call.
12173         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
12174         (rs6000_initialize_trampoline): Likewise.
12175         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
12176         function call.
12177         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
12178         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
12179         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
12180         (save_gprs): Use add_reg_note.
12181         (s390_emit_prologue): Likewise.
12182         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
12183         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
12184         (sparc_fold_builtin): Add cast to enum type.
12185         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
12186         enum insn_code.
12187         (spu_expand_prologue): Use add_reg_note.
12188         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
12189
12190 2009-04-20  Ian Lance Taylor  <iant@google.com>
12191
12192         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
12193         (c_parser_postfix_expression_after_primary): Get VEC for list of
12194         arguments.  Get original types of arguments.  Call
12195         build_function_call_vec.
12196         (cached_expr_list_1, cached_expr_list_2): New static variables.
12197         (c_parser_expr_list): Change return type to VEC *.  Add
12198         p_orig_types parameter.  Change all callers.
12199         (c_parser_release_expr): New static function.
12200         (c_parser_vec_to_tree_list): New static function.
12201         * c-typeck.c (build_function_call): Rewrite to build a VEC and
12202         call build_function_call_vec.
12203         (build_function_call_vec): New function, based on old
12204         build_function_call.
12205         (convert_arguments): Remove nargs and argarray parameters.  Change
12206         values to a VEC.  Add origtypes parameter.
12207         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
12208         (convert_for_assignment): Add origtype parameter.  Change all
12209         callers.  If warn_cxx_compat, check for conversion to an enum
12210         type when calling a function.
12211         (store_init_value): Add origtype parameter.  Change all callers.
12212         (digest_init): Likewise.
12213         (struct init_node): Add origtype field.
12214         (add_pending_init): Add origtype parameter.  Change all callers.
12215         (output_init_element): Likewise.
12216         (output_pending_init_elements): Pass origtype from init_node to
12217         output_init_element.
12218         (process_init_element): Pass origtype from c_expr to
12219         output_init_element.
12220         (c_finish_return): Add origtype parameter.  Change all callers.
12221         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
12222         caller.
12223         (sync_resolve_params): Likewise.
12224         (sync_resolve_return): Change params to first_param.  Change caller.
12225         (resolve_overloaded_builtins): Change params to VEC *.  Change
12226         callers.  Save first parameter around call to build_function_call_vec.
12227         * c-decl.c (finish_decl): Add origtype parameter.  Change all
12228         callers.  Call build_function_call_vec rather than
12229         build_function_call for cleanup.
12230         * c-tree.h: Update declarations.
12231         * c-common.h: Update declarations.
12232         * stub-objc.c (objc_rewrite_function_call): Change parameter from
12233         params to first_param.
12234         * target.h (struct gcc_target): Change resolve_overloaded_builtin
12235         params parameter from tree to void *.
12236         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
12237         Change arglist parameter to have type void *, and to be a pointer
12238         to a VEC.
12239         * config/rs6000/rs6000-protos.h
12240         (altivec_resolve_overloaded_builtin): Update declaration.
12241         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
12242         fnargs parameter to have type void *, and to be a pointer to a
12243         VEC.  Call build_function_call_vec instead of
12244         build_function_call.
12245         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
12246
12247 2009-04-20  Joey Ye  <joey.ye@intel.com>
12248             Xuepeng Guo  <xuepeng.guo@intel.com>
12249             H.J. Lu  <hongjiu.lu@intel.com>
12250
12251         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
12252
12253         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
12254         (IX86_LEA_PRIORITY): Likewise.
12255         (distance_non_agu_define): New function.
12256         (distance_agu_use): Likewise.
12257         (ix86_lea_for_add_ok): Likewise.
12258         (ix86_dep_by_shift_count): Likewise.
12259
12260         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
12261         should split for LEA.
12262
12263         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
12264         function.
12265         (ix86_dep_by_shift_count): Likewise.
12266
12267 2009-04-20  Richard Guenther  <rguenther@suse.de>
12268
12269         * expr.c (handled_component_p): Move ...
12270         * tree.h (handled_component_p): ... here.
12271         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
12272         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
12273         and REALPART_EXPR to be in one group.
12274
12275 2009-04-20  Richard Guenther  <rguenther@suse.de>
12276
12277         * basic-block.h (get_all_dominated_blocks): Declare.
12278         * dominance.c (get_all_dominated_blocks): New function.
12279         * tree-cfg.c (get_all_dominated_blocks): Remove.
12280         (remove_edge_and_dominated_blocks): Adjust.
12281         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
12282         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
12283         instead of recursing.
12284
12285 2009-04-20  Doug Kwan  <dougkwan@google.com>
12286
12287         * cgraph.h (cgraph_node_ptr): New type for vector functions.
12288         (struct cgraph_node_set_def): New type.
12289         (cgraph_node_set) New type. Also declare vector functions.
12290         (struct cgraph_node_set_element_def): New type.
12291         (cgraph_node_set_element): Ditto.
12292         (cgraph_node_set_iterator): New iterator type.
12293         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
12294         cgraph_node_set_remove, dump_cgraph_node_set,
12295         debug_cgraph_node_set): New prototypes.
12296         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
12297         cgraph_node_set_size): New inlines.
12298         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
12299         including cgraph.h.
12300         (struct ipa_opt_pass): Add struct cgraph_node_set_def
12301         argument to function 'write_summary'.
12302         * ipa.c: Include ggc.h.
12303         (hash_cgraph_node_set_element,
12304         eq_cgraph_node_set_element, cgraph_node_set_new,
12305         cgraph_node_set_add, cgraph_node_set_remove,
12306         cgraph_node_set_find, dump_cgraph_node_set,
12307         debug_cgraph_node_set): New functions.
12308         * Makefile.in (ipa.o): Add dependency on GGC_H.
12309
12310 2009-04-20  Ira Rosen  <irar@il.ibm.com>
12311
12312         PR tree-optimization/39675
12313         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
12314         check of the return code of vect_schedule_slp. Check that
12315         stmt_vec_info still exists for the statement, before checking its
12316         vectorization type.
12317
12318 2009-04-20  Michael Matz  <matz@suse.de>
12319
12320         * Makefile.in (generated_files): Take out $(simple_generated_c).
12321
12322 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
12323
12324         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
12325         (UINTPTR_TYPE):  Likewise.
12326
12327 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
12328
12329         PR c/37481
12330         * c-typeck.c (digest_init): Check for initializing an array with a
12331         string literal.
12332
12333 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
12334
12335         PR c/19771
12336         * c-semantics.c (pop_stmt_list): Propagate
12337         STATEMENT_LIST_HAS_LABEL to parent statement list.
12338
12339 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
12340
12341         * config/mips/mips.h (mips_tune_attr): New macro.
12342         * config/mips/mips.md (cpu): Use it.
12343
12344 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
12345
12346         PR c/38243
12347         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
12348         declaring a tag.
12349
12350 2009-04-19  Diego Novillo  <dnovillo@google.com>
12351
12352         * toplev.c (compile_file): Move call to coverage_finish ...
12353         * cgraphunit.c (ipa_passes): ... here.
12354         Call cgraph_process_new_functions.
12355         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
12356         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
12357
12358 2009-04-19  Jan Hubicka  <jh@suse.cz>
12359
12360         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
12361         cfun.
12362         (dump_cgraph_node): Dump can throw external flag.
12363         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
12364
12365 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
12366
12367         PR c/32061
12368         PR c++/36954
12369         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
12370         * common.opt (Wlogical-op): Move from here...
12371         * c.opt (Wlogical-op): ... to here.
12372         * c-typeck.c (parser_build_binary_op): Update call to
12373         warn_logical_operator.
12374         * c-opts.c (c_common_post_options): Enable warn_logical_op with
12375         extra_warnings.
12376         * c-common.c (warn_logical_op): Update.
12377         * c-common.h (warn_logical_op): Update declaration.
12378
12379 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
12380
12381         * tree.c (protected_set_expr_location): Fix formatting.
12382
12383 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
12384
12385         PR c/27676
12386         * c-typeck.c (readonly_warning): new.
12387         (build_unary_op, build_modify_expr): Use readonly_warning for
12388         storing into something readonly but not const-qualified.
12389
12390 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
12391
12392         PR c/22367
12393         * c-typeck.c (build_unary_op): Check for taking address of
12394         expression of type void.
12395
12396 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
12397
12398         PR c/35210
12399         * c-typeck.c (build_function_call): Check for calling a function
12400         with qualified void return types.  Call require_complete_type when
12401         generating a trap.
12402
12403 2009-04-18  Jan Hubicka  <jh@suse.cz>
12404
12405         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
12406         Set nothrow flag.
12407         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
12408         can_throw_external flag.
12409         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
12410         * ipa-pure-const.c (ignore_edge): New function.
12411         (propagate): Compute order for NOTHROW computation; set NOTHROWs
12412         only over can_throw_external edges.
12413         (local_pure_const): Add nothrow flag.
12414         * ipa-utils.c (searchc): Add ignore_edge callback.
12415         (ipa_utils_reduced_inorder): Add ignore_edge callback.
12416         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
12417         (set_nothrow_function_flags): Update cgraph.
12418         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
12419
12420 2009-04-18  Richard Guenther  <rguenther@suse.de>
12421
12422         PR middle-end/39804
12423         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
12424         (fold_stmt): ... this and ...
12425         (fold_stmt_inplace): ... this.
12426         (fold_stmt_1): Fold references in calls and asms.
12427         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
12428
12429 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12430
12431         * tree-vrp.c (ssa_name_nonzero_p): Remove.
12432         * tree.h: Remove the prototype for ssa_name_nonzero_p.
12433
12434 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12435
12436         * tree.c (function_args_count): Remove.
12437         * tree.h: Remove the prototype for function_args_count.
12438
12439 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12440
12441         * tree-iterator.c (expr_only): Remove.
12442         * tree.h: Remove the prototype for expr_only.
12443
12444 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12445
12446         * reginfo.c (cannot_change_mode_set_regs): Remove.
12447         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
12448
12449 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
12450
12451         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
12452         whether operands 0 and 1 overlaps.
12453
12454 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
12455
12456         PR middle-end/36902
12457         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
12458         pointer. Use warning_at instead of warning.
12459         (search_for_addr_array): Likewise.
12460         (check_array_bounds): Likewise.
12461         (check_all_array_refs): Check that the incoming edge is not in the
12462         list of edges to be removed.
12463         (check_all_array_refs): Avoid the temporal pointer.
12464         (vrp_visit_cond_stmt): Fix typo.
12465         (simplify_switch_using_ranges): Handle the case where the switch
12466         index is an integer constant.
12467
12468 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
12469
12470         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
12471
12472 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12473
12474         * doc/extend.texi, doc/invoke.texi: Fix typos.
12475
12476 2009-04-17  Cary Coutant  <ccoutant@google.com>
12477
12478         * tree-flow-inline.h (get_lineno): Fix inverted test.
12479
12480 2009-04-17  Diego Novillo  <dnovillo@google.com>
12481
12482         * tree-ssa-pre.c (create_expression_by_pieces): Remove
12483         assertion for AVAIL_OUT.
12484
12485 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
12486
12487         PR target/38627
12488         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
12489         * config/sh/linux-atomic.asm: Likewise.
12490
12491 2009-04-17  Diego Novillo  <dnovillo@google.com>
12492
12493         * except.c (debug_eh_tree): New.
12494         (struct eh_region, struct eh_status): Move ...
12495         * except.h: ... here.
12496         (add_type_for_runtime): Declare extern.
12497         (lookup_type_for_runtime): Likewise.
12498         (debug_eh_tree): Declare.
12499         * Makefile.in (GTFILES): List except.h before except.c
12500
12501 2009-04-17  Diego Novillo  <dnovillo@google.com>
12502
12503         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
12504         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
12505         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
12506         (find_vars_r): ... here.
12507         * tree-flow.h (find_referenced_vars_in): Declare.
12508         * tree-ssa-pre.c (create_expression_by_pieces): Assert
12509         that AVAIL_OUT exists for BLOCK.
12510         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
12511         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
12512         (tree-parloops.o): Likewise.
12513
12514 2009-04-17  Simon Baldwin  <simonb@google.com>
12515
12516         * toplev.c (default_tree_printer): Add handling for %E format.
12517
12518 2009-04-17  Diego Novillo  <dnovillo@google.com>
12519
12520         * tree-pretty-print.c (dump_generic_node): Add break after
12521         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
12522         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
12523         FUNCTION_TYPE together.  Call print_struct_decl when printing
12524         structures and TDF_SLIM is not given.
12525         (print_struct_decl): Fix logic for detecting recursion.
12526
12527 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
12528
12529         PR 31567
12530         * gcc.c (create_at_file): New.
12531         (compile_input_file_p): New.
12532         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
12533         * main.c (main): Update call to toplev_main.
12534         * toplev.c (toplev_main): Change signature. Call expandargv.
12535         * toplev.h (toplev_main): Change signature.
12536
12537 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
12538
12539         * dwarf2out.c (field_byte_offset): Use the type size as the field size
12540         if the latter is not constant.
12541
12542 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
12543
12544         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
12545
12546 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
12547
12548         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
12549         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
12550
12551 2009-04-17  Richard Guenther  <rguenther@suse.de>
12552
12553         * tree-ssa-structalias.c (get_constraint_for_component_ref):
12554         Handle component references view-converting an invariant address.
12555
12556 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
12557
12558         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
12559         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
12560         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
12561         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
12562         Use @deftypevr rather than @deftypevar.
12563
12564 2009-04-17  Richard Guenther  <rguenther@suse.de>
12565
12566         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
12567         (get_prop_source_stmt): Likewise.
12568         (can_propagate_from): Likewise.
12569
12570 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
12571
12572         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
12573         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
12574         (--with-multilib-list): Add default value.
12575         * configure: Regenerate.
12576         * Makefile.in (TM_ENDIAN_CONFIG): Define.
12577         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
12578         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
12579         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
12580         Don't add default cpu to multilib list unnecessarily, but do enable
12581         the relevant compiler option..
12582         Add support for --with-multilib-list=<blank> and
12583         --with-multilib-list=!<somelib> to supress unwanted multilibs.
12584         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
12585         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
12586         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
12587         TM_MULTILIB_CONFIG.
12588         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
12589         (MULTILIB_OSDIRNAMES): New variable.
12590         * config/sh/t-1e: Delete file.
12591         * config/sh/t-mlib-sh1: Delete file.
12592         * config/sh/t-mlib-sh2: Delete file.
12593         * config/sh/t-mlib-sh2a: Delete file.
12594         * config/sh/t-mlib-sh2a-nofpu: Delete file.
12595         * config/sh/t-mlib-sh2a-single: Delete file.
12596         * config/sh/t-mlib-sh2a-single-only: Delete file.
12597         * config/sh/t-mlib-sh2e: Delete file.
12598         * config/sh/t-mlib-sh3e: Delete file.
12599         * config/sh/t-mlib-sh4: Delete file.
12600         * config/sh/t-mlib-sh4-nofpu: Delete file.
12601         * config/sh/t-mlib-sh4-single: Delete file.
12602         * config/sh/t-mlib-sh4-single-only: Delete file.
12603         * config/sh/t-mlib-sh4a: Delete file.
12604         * config/sh/t-mlib-sh4a-nofpu: Delete file.
12605         * config/sh/t-mlib-sh4a-single: Delete file.
12606         * config/sh/t-mlib-sh4a-single-only: Delete file.
12607         * config/sh/t-mlib-sh4al: Delete file.
12608         * config/sh/t-mlib-sh5-32media: Delete file.
12609         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
12610         * config/sh/t-mlib-sh5-64media: Delete file.
12611         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
12612         * config/sh/t-mlib-sh5-compact: Delete file.
12613         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
12614         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
12615         * doc/install.texi (Options specification): Add
12616         --with-multilib-list and --with-endian.
12617
12618 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
12619
12620         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
12621         REVISION_c.
12622         (OBJS-common): Add plugin-version.o.
12623         (plugin-version.o): New.
12624         * gcc-plugin.h (plugin_gcc_version): New.
12625         (plugin_default_version_check): New.
12626         (plugin_init_func, plugin_init): Add version argument.
12627         * plugin-version.c: New.
12628         * plugin.c (str_plugin_gcc_version_name): New.
12629         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
12630         pass it to the init function.
12631         (plugin_default_version_check): New.
12632
12633 2009-04-17  Richard Guenther  <rguenther@suse.de>
12634
12635         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
12636         for decl-vs-decl disambiguation.
12637
12638 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
12639
12640         * config/s390/s390.h (s390_tune_attr): New macro definition.
12641         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
12642
12643 2009-04-17  Richard Guenther  <rguenther@suse.de>
12644
12645         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
12646         (fold_stmt_r): Likewise.
12647         (maybe_fold_reference): New function.
12648         (fold_gimple_assign): Handle cases fold_stmt_r did.
12649         (fold_stmt): Do not use fold_stmt_r.
12650         (fold_stmt_inplace): Likewise.
12651
12652 2009-04-17  Richard Guenther  <rguenther@suse.de>
12653
12654         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
12655         (record_equivalences_from_stmt): Remove useless checks and
12656         simplifications.
12657         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
12658         the type is already suitable.
12659
12660 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
12661
12662         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
12663
12664 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
12665
12666         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
12667         (CMPtype): Define as __gcc_CMPtype.
12668
12669 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
12670
12671         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
12672         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
12673
12674 2009-04-17  Richard Guenther  <rguenther@suse.de>
12675
12676         PR tree-optimization/39746
12677         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
12678         special-casing for builtins and static variable use/def.
12679         (call_may_clobber_ref_p_1): Likewise.
12680
12681 2009-04-16  Ian Lance Taylor  <iant@google.com>
12682
12683         * df.h: Include "timevar.h".
12684         (struct df_problem): Change tv_id field to timevar_id_t.
12685         * tree-pass.h: Include "timevar.h".
12686         (struct opt_pass): Change tv_id field to timevar_id_t.
12687         * timevar.h (timevar_id_t): Define TV_NONE.
12688         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
12689         TV_NONE rather than tv_id != 0.
12690         (execute_one_pass): Likewise.
12691         * Makefile.in (DF_H): Add $(TIMEVAR_H).
12692         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
12693         dependencies to $(TREE_PASS_H).
12694         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
12695         to TV_NONE.
12696         (pass_branch_target_load_optimize2): Likewise.
12697         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
12698         (pass_outof_cfg_layout_mode): Likewise.
12699         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
12700         (pass_rebuild_cgraph_edges): Likewise.
12701         (pass_remove_cgraph_callee_edges): Likewise.
12702         * df-core.c (pass_df_initialize_opt): Likewise.
12703         (pass_df_initialize_no_opt): Likewise.
12704         (pass_df_finish): Likewise.
12705         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
12706         * except.c (pass_set_nothrow_function_flags): Likewise.
12707         (pass_convert_to_eh_region_ranges): Likewise.
12708         * final.c (pass_compute_alignments): Likewise.
12709         * function.c (pass_instantiate_virtual_regs): Likewise.
12710         (pass_init_function): Likewise.
12711         (pass_leaf_regs): Likewise.
12712         (pass_match_asm_constraints): Likewise.
12713         * gimple-low.c (pass_lower_cf): Likewise.
12714         (pass_mark_used_blocks): Likewise.
12715         * init-regs.c (pass_initialize_regs): Likewise.
12716         * integrate.c (pass_initial_value_sets): Likewise.
12717         * ira.c (pass_ira): Likewise.
12718         * jump.c (pass_cleanup_barriers): Likewise.
12719         * omp-low.c (pass_expand_omp): Likewise.
12720         (pass_lower_omp): Likewise.
12721         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
12722         * recog.c (pass_split_all_insns): Likewise.
12723         (pass_split_after_reload): Likewise.
12724         (pass_split_before_regstack): Likewise.
12725         (pass_split_before_sched2): Likewise.
12726         (pass_split_for_shorten_branches): Likewise.
12727         * reginfo.c (pass_reginfo_init): Likewise.
12728         (pass_subregs_of_mode_init): Likewise.
12729         (pass_subregs_of_mode_finish): Likewise.
12730         * passes.c (pass_postreload): Likewise.
12731         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
12732         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
12733         (pass_warn_function_return): Likewise.
12734         (pass_warn_function_noreturn): Likewise.
12735         * tree-complex.c (pass_lower_complex): Likewise.
12736         (pass_lower_complex_O0): Likewise.
12737         * tree-if-conv.c (pass_if_conversion): Likewise.
12738         * tree-into-ssa.c (pass_build_ssa): Likewise.
12739         * tree-mudflap.c (pass_mudflap_1): Likewise.
12740         (pass_mudflap_2): Likewise.
12741         * tree-nomudflap.c (pass_mudflap_1): Likewise.
12742         (pass_mudflap_2): Likewise.
12743         * tree-nrv.c (pass_return_slot): Likewise.
12744         * tree-object-size.c (pass_object_sizes): Likewise.
12745         * tree-optimize.c (pass_all_optimizations): Likewise.
12746         (pass_early_local_passes): Likewise.
12747         (pass_all_early_optimizations): Likewise.
12748         (pass_cleanup_cfg): Likewise.
12749         (pass_cleanup_cfg_post_optimizing): Likewise.
12750         (pass_free_datastructures): Likewise.
12751         (pass_free_cfg_annotations): Likewise.
12752         (pass_fixup_cfg): Likewise.
12753         (pass_init_datastructures): Likewise.
12754         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
12755         (pass_late_warn_uninitialized): Likewise.
12756         (pass_update_address_taken): Likewise.
12757         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
12758         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
12759         (pass_cse_sincos): Likewise.
12760         (pass_convert_to_rsqrt): Likewise.
12761         * tree-ssa-structalias.c (pass_build_alias): Likewise.
12762         * tree-stdarg.c (pass_stdarg): Likewise.
12763         * tree-tailcall.c (pass_tail_recursion): Likewise.
12764         (pass_tail_calls): Likewise.
12765         * tree-vect-generic.c (pass_lower_vector): Likewise.
12766         (pass_lower_vector_ssa): Likewise.
12767         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
12768
12769 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
12770
12771         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
12772         XLR entry.
12773         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
12774         Handle -march=xlr.
12775         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
12776         logical and signext.
12777
12778 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
12779
12780         PR target/39767
12781         * config/sh/predicates.md (arith_operand): Check if the operand
12782         of TRUNCATE is a REG.
12783
12784 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12785
12786         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
12787         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
12788
12789 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12790
12791         * tree-iterator.c (tsi_split_statement_list_after,
12792         tsi_split_statement_list_before): Remove.
12793         * tree-iterator.h: Remove the prototypes for
12794         tsi_split_statement_list_after and tsi_split_statement_list_before.
12795
12796 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12797
12798         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
12799         * tree-ssa-propagate.h: Remove the prototype for
12800         stmt_makes_single_load.
12801
12802 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12803
12804         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
12805         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
12806
12807 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12808
12809         * tree-iterator.c (EXPR_LAST_BODY): Remove.
12810
12811 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12812
12813         * except.c (eh_region_outer_p): Remove.
12814         * except.h: Remove the prototype for eh_region_outer_p.
12815
12816 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12817
12818         * function.c (current_function_assembler_name): Remove.
12819         * function.h: Remove the prototype for
12820         current_function_assembler_name.
12821
12822 2009-04-16  Ian Lance Taylor  <iant@google.com>
12823
12824         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
12825         (add_reg_note): Call alloc_reg_note.
12826         * rtl.h (alloc_reg_note): Declare.
12827         * combine.c (try_combine): Use alloc_reg_note.
12828         (recog_for_combine, move_deaths): Likewise.
12829         (distribute_notes): Use alloc_reg_note and add_reg_note.
12830         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
12831         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
12832         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
12833
12834 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
12835
12836         PR rtl-optimization/39762
12837         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
12838         ira_may_move_out_cost): Add comments about way of their usage.
12839         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
12840
12841         * ira-conflicts.c (process_regs_for_copy): Use function
12842         ira_get_register_move_cost instead of global
12843         ira_register_move_cost.
12844
12845         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
12846         color_pass, move_spill_restore, update_curr_costs): Ditto.
12847
12848         * ira-lives.c (process_single_reg_class_operands): Ditto.
12849
12850         * ira-emit.c (emit_move_list): Ditto.
12851
12852         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
12853         (record_reg_classes): Ditto.  Use functions
12854         ira_get_register_move_cost and ira_get_may_move_cost instead of
12855         global vars ira_register_move_cost, ira_may_move_out_cost and
12856         ira_may_move_in_cost.
12857         (record_address_regs): Don't call ira_init_register_move_cost.
12858         Use function ira_get_may_move_cost instead of global
12859         ira_may_move_in_cost.
12860         (process_bb_node_for_hard_reg_moves): Use function
12861         ira_get_register_move_cost instead of global ira_register_move_cost.
12862         (ira_costs): Don't call ira_init_register_move_cost.
12863
12864 2009-04-16  Richard Guenther  <rguenther@suse.de>
12865
12866         * tree-cfg.c (verify_gimple_assign_binary):
12867         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
12868         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
12869         (create_general_new_stmt): Note that this function is broken.
12870
12871 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
12872
12873         * common.opt (fhelp): Add Var(help_flag).
12874         * gcc-plugin.h (plugin_info): Add help.
12875         * plugin.c (plugin_name_args): Add help.
12876         (register_plugin_info): Set plugin->help.
12877         (print_help_one_plugin): New.
12878         (print_plugins_help): New.
12879         * plugin.h (print_plugins_help): New.
12880         * toplev.c (toplev_main): Call print_plugins_help if needed.
12881
12882 2009-04-16  Richard Guenther  <rguenther@suse.de>
12883
12884         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
12885         (gimple_ior_addresses_taken_1): New function.
12886         (gimple_ior_addresses_taken): Likewise.
12887         * gimple.h (struct gimple_statement_with_ops_base): Remove
12888         addresses_taken member.
12889         (gimple_ior_addresses_taken): Declare.
12890         (gimple_addresses_taken, gimple_addresses_taken_ptr,
12891         gimple_set_addresses_taken): Remove.
12892         * ipa-reference.c (mark_address): New function.
12893         (scan_stmt_for_static_refs): Use it for marking addresses taken.
12894         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
12895         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
12896         (gimple_add_to_addresses_taken): Remove.
12897         (get_tmr_operands): Call mark_address_taken.
12898         (get_asm_expr_operands): Likewise.
12899         (get_expr_operands): Likewise.
12900         (build_ssa_operands): Do not clear the addresses_taken bitmap.
12901         (free_stmt_operands): Do not free it.
12902         * tree-ssa.c (delete_tree_ssa): Likewise.
12903         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
12904
12905 2009-04-16  Richard Guenther  <rguenther@suse.de>
12906
12907         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
12908         (walk_stmt_load_store_ops): Likewise.
12909         * gimple.c (get_base_loadstore): New function.
12910         (walk_stmt_load_store_addr_ops): Likewise.
12911         (walk_stmt_load_store_ops): Likewise.
12912         * ipa-pure-const.c (check_op): Simplify.
12913         (check_load, check_store): New functions.
12914         (check_stmt): Use walk_stmt_load_store_ops.
12915         * ipa-reference.c (mark_load): Adjust signature.
12916         (mark_store): Likewise.
12917         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
12918
12919 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
12920
12921         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
12922         (plugin_info): New.
12923         * opts.c (common_handle_option): Don't call print_version.
12924         * plugin.c (plugin_name_args): Add version.
12925         (register_plugin_info): New.
12926         (register_callback): Handle PLUGIN_INFO.
12927         (try_init_one_plugin): New.
12928         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
12929         if failed to init.
12930         (finalize_one_plugin): New.
12931         (finalize_plugins): New.
12932         (print_one_plugin): New.
12933         (print_plugins_versions): New.
12934         * plugin.h (print_plugins_versions): New.
12935         (finalize_plugins): New.
12936         * toplev.c (compile_file): Don't call initialize_plugins.
12937         (print_version): Call print_plugins_versions.
12938         (toplev_main): Call initialize_plugins. Print version if needed.
12939         Call finalize_plugins.
12940
12941 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
12942
12943         * common.opt (fversion): New.
12944         * gcc.c (print_version): New.
12945         (process_command): Don't print the version. Just set print_version.
12946         (main): Print version. Call subprocesses if print_version and
12947         verbose_flag are set.
12948         * opts.c (common_handle_option): Handle OPT_fversion.
12949
12950 2009-04-16  Richard Guenther  <rguenther@suse.de>
12951             Ira Rosen  <irar@il.ibm.com>
12952
12953         PR tree-optimization/39698
12954         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
12955         type of the reduction variable.  Only generate the def if
12956         it is needed.
12957
12958         * omp-low.c (expand_omp_for_generic): When converting to a pointer
12959         make sure to first convert to an integer of the same precision.
12960         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
12961         the type of the evolution correctly in computing the new
12962         induction variable base.
12963
12964 2009-04-16  Richard Guenther  <rguenther@suse.de>
12965
12966         PR middle-end/39625
12967         * tree-cfg.c (make_blocks): Split statements with to-be
12968         abnormal SSA names on the lhs.
12969
12970 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
12971
12972         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
12973         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
12974         * c-typeck.c (really_start_incremental_init): Likewise.
12975         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
12976         (TARGET_INITIALIZER): Remove it.
12977         * target.h (struct target): Remove vector_opaque_p.
12978         * tree.c (build_opaque_vector_type): New.
12979         * tree.h (TYPE_VECTOR_OPAQUE): New.
12980         (build_opaque_vector_type): Declare.
12981         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
12982         * config/rs6000/rs6000.c (build_opaque_vector_type,
12983         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
12984         (rs6000_init_builtins): Use build_opaque_vector_type for
12985         opaque_V4SI_type_node.
12986
12987 2009-04-15  Catherine Moore  <clm@codesourcery.com>
12988
12989         * debug.h (set_name):  Declare.
12990         * dwarf2out.c (dwarf2out_set_name): Declare.
12991         (dwarf2_debug_hooks): Add set_name.
12992         (find_AT_string): New.
12993         (add_AT_string): Call find_AT_string.
12994         (dwarf2out_set_name): New.
12995         * cp/decl.c (grokdeclarator): Call set_name.
12996         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
12997         * debug.c (do_nothing_debug_hooks):  Likewise.
12998         * dbxout.c (dbx_debug_hooks): Likewise.
12999         * sdbout.c (sdb_debug_hooks): Likewise.
13000
13001 2009-04-15  Michael Eager  <eager@eagercon.com>
13002
13003         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
13004         reg for single-precision FPU.
13005         * config/rs6000/rs6000.md (movsi_internal1): Only for
13006         !TARGET_SINGLE_FPU.
13007         (movsi_internal1_single): New. Add pattern to move SI values to/from
13008         single-precision FP regs.
13009
13010 2009-04-15  Richard Guenther  <rguenther@suse.de>
13011
13012         * omp-low.c (lower_rec_input_clauses): Build correct address
13013         expressions.
13014         (expand_omp_for_generic): Fix multiplication type.
13015         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
13016         (generate_memset_zero): Fix types.
13017         * tree-profile.c (prepare_instrumented_value): Correctly
13018         widen a pointer.
13019
13020 2009-04-15  Ian Lance Taylor  <iant@google.com>
13021
13022         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
13023         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
13024         for -Wall and for -Wc++-compat.
13025         (c_common_post_options): For C++, set warn_enum_compare if not
13026         already set.
13027         * c-tree.h (struct c_expr): Add field original_type.
13028         (build_external_ref): Update declaration.
13029         * c-parser.c (c_parser_braced_init): Set original_type.
13030         (c_parser_initelt): Likewise.
13031         (c_parser_expr_no_commas): Likewise.
13032         (c_parser_conditional_expression): Likewise.
13033         (c_parser_cast_expression): Likewise.
13034         (c_parser_unary_expression): Likewise.  Pull setting of
13035         original_code to top of function.
13036         (c_parser_sizeof_expression): Set original_type.
13037         (c_parser_alignof_expression): Likewise.
13038         (c_parser_postfix_expression): Likewise.  Pull setting of
13039         original_code to top of function.
13040         (c_parser_postfix_expression_after_paren_type): Set original_type.
13041         (c_parser_postfix_expression_after_primary): Likewise.
13042         (c_parser_expression): Likewise.
13043         * c-typeck.c (build_external_ref): Add type parameter.  Change all
13044         callers.
13045         (c_expr_sizeof_expr): Set original_type field.
13046         (parser_build_unary_op): Likewise.
13047         (parser_build_binary_op): Likewise.  Optionally warn about
13048         comparisons of enums of different types.
13049         (digest_init): Set original_type field.
13050         (really_start_incremental_init): Likewise.
13051         (push_init_level, pop_init_level): Likewise.
13052         * doc/invoke.texi (Warning Options): -Wenum-compare now
13053         supported in C.
13054
13055 2009-04-15  Richard Guenther  <rguenther@suse.de>
13056
13057         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
13058         out a necessary conversion.
13059         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
13060         names we didn't value number.
13061         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
13062
13063 2009-04-15  Richard Guenther  <rguenther@suse.de>
13064
13065         PR tree-optimization/39764
13066         * tree-ssa-ccp.c (get_value): Canonicalize value with
13067         canonicalize_float_value.
13068
13069 2009-04-15  Jan Hubicka  <jh@suse.cz>
13070
13071         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
13072         Wrong version of patch.
13073
13074 2009-04-15  Jan Hubicka  <jh@suse.cz>
13075
13076         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
13077
13078 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
13079
13080         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
13081         our distinct integral and vector types.
13082
13083 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
13084
13085         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
13086         * init.c (build_vtbl_address): Remove call to assemble_external.
13087
13088 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
13089
13090         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
13091         output for other floating point modes.
13092
13093 2009-04-14  Diego Novillo  <dnovillo@google.com>
13094
13095         * diagnostic.c (diagnostic_report_diagnostic): Do not
13096         warn about loaded plugins for DK_ERROR and DK_WARNING.
13097         * c-decl.c (declspecs_add_type): Move call to
13098         invoke_plugin_callbacks ...
13099         * c-parser.c (c_parser_declspecs): ... here.
13100         * plugin.c (dump_active_plugins): Tidy output.
13101
13102 2009-04-14  Diego Novillo  <dnovillo@google.com>
13103             Le-Chun Wu  <lcwu@google.com>
13104
13105         * configure.ac: Add --enable-plugin support.
13106         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
13107         * Makefile.in (PLUGIN_H): Define.
13108         Export ENABLE_PLUGIN and GMPINC to site.exp.
13109         Add PLUGINLIBS to link command.
13110         Add/modify dependencies for plugin.o and files including plugin.h.
13111         (plugin.o): New.
13112         * config.in: Regenerate.
13113
13114         * opts.c (common_handle_option): Handle OPT_fplugin_ and
13115         OPT_fplugin_arg_.
13116
13117 2009-04-14  Le-Chun Wu  <lcwu@google.com>
13118
13119         * tree-pass.h (register_one_dump_file): Add a prototype for
13120         register_one_dump_file.
13121         * toplev.c (compile_file): Call initialize_plugins.
13122         (do_compile): Call invoke_plugin_callbacks.
13123         (toplev_main): Call invoke_plugin_callbacks.
13124         * common.opt: Add -fplugin= and -fplugin-arg-.
13125         * gcc-plugin.h: New public header file for plugins to include.
13126         * plugin.c: New source file.
13127         * plugin.h: New internal header file.
13128         * passes.c (register_one_dump_file): Make it external.
13129
13130         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
13131
13132 2009-04-14  Diego Novillo  <dnovillo@google.com>
13133
13134         * doc/plugins.texi: New.
13135         * doc/gccint.texi: Add reference to Plugins chapter.
13136         * doc/invoke.texi: Document -fplugin and -fplugin-arg
13137         * diagnostic.c (diagnostic_report_diagnostic): Warn about
13138         loaded plugins, if any.
13139         * timevar.def (TV_PLUGIN_INIT): Define.
13140         (TV_PLUGIN_RUN): Define.
13141         * plugin.c: Include timevar.h
13142         (plugins_active_p): New.
13143         (dump_active_plugins): New.
13144         (debug_active_plugins): New.
13145
13146 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
13147
13148         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
13149         library paths.
13150         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
13151
13152 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
13153
13154         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
13155         the same as a minus without a shift.
13156
13157 2009-04-14  Nick Clifton  <nickc@redhat.com>
13158
13159         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
13160         comparisons with small integers will always produce a short
13161         branch.
13162
13163 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
13164
13165         Merge:
13166         2008-12-19  Diego Novillo  <dnovillo@google.com>
13167
13168         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
13169
13170 2009-04-14  Richard Guenther  <rguenther@suse.de>
13171
13172         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
13173         verification.
13174         (verify_gimple_assign_binary): Likewise.  Handle shifts and
13175         rotates correctly.
13176         (verify_gimple_phi): Print the mismatched argument position.
13177         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
13178         Fix types.
13179         (vect_update_init_of_dr): Likewise.
13180         * matrix-reorg.c (transform_access_sites): Do what the
13181         comment suggests.
13182         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
13183
13184 2009-04-13  Michael Eager  <eager@eagercon.com>
13185
13186         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
13187         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
13188         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
13189         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
13190         remove duplicate config
13191
13192 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13193
13194         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
13195         file_name:line_number type locator of the call site.
13196
13197 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
13198
13199         * genautomata.c: Put blank after comma.
13200         (automaton_decls): New.
13201         (struct unit_usage): Add comments to member next.
13202         (store_alt_unit_usage): Keep the list ordered.
13203         (unit_present_on_list_p, equal_alternatives_p): New.
13204         (check_regexp_units_distribution): Check units distribution
13205         correctness correctly.
13206         (main): Don't write automata if error is found.  Return correct
13207         exit code.
13208
13209         * config/m68k/cf.md (cfv4_ds): Remove.
13210         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
13211         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
13212
13213         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
13214         power4-load-ext, power4-store, power4-store-update,
13215         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
13216         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
13217         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
13218         power4-sqrt, power4-isync): Modify reservation to make correct
13219         unit distribution to automata.
13220
13221         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
13222         power5-store-update, power5-two, power5-three, power5-lmul,
13223         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
13224
13225 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
13226
13227         * except.c (pass_set_nothrow_function_flags): Set name and add
13228         TODO_dump_func.
13229         (set_nothrow_function_flags): Mention in the dump file when
13230         changing a function to nothrow.
13231
13232 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
13233
13234         PR/39066
13235         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
13236         instead of unsigned long.
13237
13238 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13239
13240         * config/arm/arm.c (return_used_this_function): Remove.
13241         (arm_output_function_prologue): Remove use of
13242         return_used_this_function.
13243         (output_return_instruction): Replace use of
13244         return_used_this_function
13245         by cfun->machine->return_used_this_function.
13246         (arm_output_epilogue): Likewise.
13247         (arm_output_function_epilogue): Likewise.
13248         (thumb_unexpanded_epilogue): Likewise.
13249         * config/arm/arm.h (struct machine_function):
13250         New member return_used_this_function.
13251
13252 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
13253
13254         * doc/install.texi: Correct description of default directory for
13255         --with-gxx-include-dir.
13256
13257 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
13258
13259         * fold-const.c (build_range_check): Properly deal with enumeral and
13260         boolean base types.
13261
13262 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
13263
13264         * doc/invoke.texi (max_gcse_passes): Remove documentation.
13265         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
13266         * params.h (MAX_GCSE_PASSES): Remove.
13267         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
13268         in sequence.  Remove ability to run multiple passes.
13269         (bypass_jumps): Report run as third CPROP pass.
13270
13271 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
13272
13273         PR middle-end/39651
13274         * except.c (can_throw_external): Look at each insn in a SEQUENCE
13275         when deciding whether the whole SEQUENCE can throw.
13276
13277 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
13278
13279         PR target/39740
13280         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
13281         offseted label references.
13282
13283 2009-04-11  Jan Hubicka  <jh@suse.cz>
13284
13285         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
13286
13287 2009-04-11  Richard Guenther  <rguenther@suse.de>
13288
13289         PR middle-end/39732
13290         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
13291         return variables as TREE_ADDRESSABLE.
13292
13293 2009-04-11  Richard Guenther  <rguenther@suse.de>
13294
13295         PR tree-optimization/39713
13296         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
13297         reference trees have SSA_NAME operands.
13298
13299 2009-04-11  Richard Guenther  <rguenther@suse.de>
13300
13301         PR c/39712
13302         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
13303         address expressions.
13304
13305 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
13306
13307         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
13308         match changes in Cygwin 1.7
13309         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
13310         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
13311
13312 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
13313
13314         PR tree-optimization/39701
13315         * doc/invoke.texi (Optimization Options): Document change in
13316         meaning and initialization of -fdelete-null-pointer-checks.
13317
13318 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
13319
13320         PR middle-end/39701
13321         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
13322
13323         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
13324         here.
13325
13326         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
13327
13328 2009-04-10  Chao-ying Fu  <fu@mips.com>
13329
13330         * doc/tm.texi (Instruction Output): Document
13331         TARGET_ASM_FINAL_POSTSCAN_INSN.
13332         * target.h (final_postscan_insn): New field in asm_out.
13333         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
13334         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
13335         * final.c (final_scan_insn): Call
13336         targetm.asm_out.final_postscan_insn after outputting
13337         an asm macro and a normal instruction.
13338
13339         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
13340         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
13341         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
13342         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
13343         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
13344
13345 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
13346
13347         PR middle-end/39701
13348         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
13349         variables as non-NULL even with -fdelete-null-pointer-checks.
13350
13351 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
13352
13353         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
13354
13355 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
13356
13357         PR target/39678
13358         * config/i386/i386.c (classify_argument): Handle SCmode with
13359         (bit_offset % 64) != 0.
13360
13361 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
13362
13363         * doc/invoke.texi (Optimize Options): Add cross-reference to
13364         -Q --help=optimizers examples.
13365
13366 2009-04-10  Ben Elliston  <bje@au.ibm.com>
13367
13368         PR target/36800
13369         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
13370         regalign for the reg == fpr and TDmode case.
13371
13372 2009-04-09  David Ayers  <ayers@fsfe.org>
13373
13374         PR objc/29200
13375         * objc/objc-act.c (warn_with_method): Remove helper function.
13376         (check_duplicates): Call warning and inform directly.
13377         (really_start_method): Likewise.
13378
13379 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
13380
13381         * expmed.c (expand_divmod): Always use a comparison for a division
13382         by a large unsigned integer.
13383
13384         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
13385         for things others than variables or functions as nonzero.
13386
13387 2009-04-09  Nick Clifton  <nickc@redhat.com>
13388
13389         * unwind-compat.c: Change copyright header to refer to version
13390         3 of the GNU General Public License with version 3.1 of the
13391         GCC Runtime Library Exception and to point readers at the
13392         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
13393         * config/alpha/crtfastmath.c: Likewise.
13394         * config/alpha/linux-unwind.h: Likewise.
13395         * config/alpha/qrnnd.asm: Likewise.
13396         * config/alpha/vms-crt0-64.c: Likewise.
13397         * config/alpha/vms-crt0.c: Likewise.
13398         * config/alpha/vms-dwarf2.asm: Likewise.
13399         * config/alpha/vms-dwarf2eh.asm: Likewise.
13400         * config/alpha/vms-psxcrt0-64.c: Likewise.
13401         * config/alpha/vms-psxcrt0.c: Likewise.
13402         * config/alpha/vms_tramp.asm: Likewise.
13403         * config/arc/initfini.c: Likewise.
13404         * config/arc/lib1funcs.asm: Likewise.
13405         * config/arm/bpabi-v6m.S: Likewise.
13406         * config/arm/bpabi.S: Likewise.
13407         * config/arm/bpabi.c: Likewise.
13408         * config/arm/crti.asm: Likewise.
13409         * config/arm/crtn.asm: Likewise.
13410         * config/arm/ieee754-df.S: Likewise.
13411         * config/arm/ieee754-sf.S: Likewise.
13412         * config/arm/lib1funcs.asm: Likewise.
13413         * config/arm/libunwind.S: Likewise.
13414         * config/arm/linux-atomic.c: Likewise.
13415         * config/arm/mmintrin.h: Likewise.
13416         * config/arm/pr-support.c: Likewise.
13417         * config/arm/unaligned-funcs.c: Likewise.
13418         * config/arm/unwind-arm.c: Likewise.
13419         * config/arm/unwind-arm.h: Likewise.
13420         * config/avr/libgcc.S: Likewise.
13421         * config/bfin/crti.s: Likewise.
13422         * config/bfin/crtlibid.s: Likewise.
13423         * config/bfin/crtn.s: Likewise.
13424         * config/bfin/lib1funcs.asm: Likewise.
13425         * config/bfin/linux-unwind.h: Likewise.
13426         * config/cris/arit.c: Likewise.
13427         * config/cris/cris_abi_symbol.c: Likewise.
13428         * config/darwin-64.c: Likewise.
13429         * config/darwin-crt2.c: Likewise.
13430         * config/darwin-crt3.c: Likewise.
13431         * config/darwin.h: Likewise.
13432         * config/dbxelf.h: Likewise.
13433         * config/dfp-bit.c: Likewise.
13434         * config/dfp-bit.h: Likewise.
13435         * config/elfos.h: Likewise.
13436         * config/fixed-bit.c: Likewise.
13437         * config/fixed-bit.h: Likewise.
13438         * config/fp-bit.c: Likewise.
13439         * config/fp-bit.h: Likewise.
13440         * config/fr30/crti.asm: Likewise.
13441         * config/fr30/crtn.asm: Likewise.
13442         * config/fr30/lib1funcs.asm: Likewise.
13443         * config/freebsd-spec.h: Likewise.
13444         * config/frv/cmovd.c: Likewise.
13445         * config/frv/cmovh.c: Likewise.
13446         * config/frv/cmovw.c: Likewise.
13447         * config/frv/frvbegin.c: Likewise.
13448         * config/frv/frvend.c: Likewise.
13449         * config/frv/lib1funcs.asm: Likewise.
13450         * config/glibc-stdint.h: Likewise.
13451         * config/h8300/clzhi2.c: Likewise.
13452         * config/h8300/crti.asm: Likewise.
13453         * config/h8300/crtn.asm: Likewise.
13454         * config/h8300/ctzhi2.c: Likewise.
13455         * config/h8300/fixunssfsi.c: Likewise.
13456         * config/h8300/lib1funcs.asm: Likewise.
13457         * config/h8300/parityhi2.c: Likewise.
13458         * config/h8300/popcounthi2.c: Likewise.
13459         * config/i386/ammintrin.h: Likewise.
13460         * config/i386/att.h: Likewise.
13461         * config/i386/avxintrin.h: Likewise.
13462         * config/i386/biarch64.h: Likewise.
13463         * config/i386/bmmintrin.h: Likewise.
13464         * config/i386/cpuid.h: Likewise.
13465         * config/i386/cross-stdarg.h: Likewise.
13466         * config/i386/crtfastmath.c: Likewise.
13467         * config/i386/crtprec.c: Likewise.
13468         * config/i386/cygming-crtbegin.c: Likewise.
13469         * config/i386/cygming-crtend.c: Likewise.
13470         * config/i386/cygwin.asm: Likewise.
13471         * config/i386/emmintrin.h: Likewise.
13472         * config/i386/gmm_malloc.h: Likewise.
13473         * config/i386/gthr-win32.c: Likewise.
13474         * config/i386/i386.h: Likewise.
13475         * config/i386/immintrin.h: Likewise.
13476         * config/i386/linux-unwind.h: Likewise.
13477         * config/i386/linux64.h: Likewise.
13478         * config/i386/mm3dnow.h: Likewise.
13479         * config/i386/mmintrin-common.h: Likewise.
13480         * config/i386/mmintrin.h: Likewise.
13481         * config/i386/nmmintrin.h: Likewise.
13482         * config/i386/pmm_malloc.h: Likewise.
13483         * config/i386/pmmintrin.h: Likewise.
13484         * config/i386/smmintrin.h: Likewise.
13485         * config/i386/sol2-c1.asm: Likewise.
13486         * config/i386/sol2-ci.asm: Likewise.
13487         * config/i386/sol2-cn.asm: Likewise.
13488         * config/i386/sol2-gc1.asm: Likewise.
13489         * config/i386/tmmintrin.h: Likewise.
13490         * config/i386/unix.h: Likewise.
13491         * config/i386/w32-unwind.h: Likewise.
13492         * config/i386/wmmintrin.h: Likewise.
13493         * config/i386/x86-64.h: Likewise.
13494         * config/i386/x86intrin.h: Likewise.
13495         * config/i386/xmmintrin.h: Likewise.
13496         * config/ia64/crtbegin.asm: Likewise.
13497         * config/ia64/crtend.asm: Likewise.
13498         * config/ia64/crtfastmath.c: Likewise.
13499         * config/ia64/crti.asm: Likewise.
13500         * config/ia64/crtn.asm: Likewise.
13501         * config/ia64/fde-glibc.c: Likewise.
13502         * config/ia64/lib1funcs.asm: Likewise.
13503         * config/ia64/linux-unwind.h: Likewise.
13504         * config/ia64/quadlib.c: Likewise.
13505         * config/ia64/unwind-ia64.c: Likewise.
13506         * config/linux.h: Likewise.
13507         * config/m32c/m32c-lib1.S: Likewise.
13508         * config/m32c/m32c-lib2-trapv.c: Likewise.
13509         * config/m32c/m32c-lib2.c: Likewise.
13510         * config/m32r/initfini.c: Likewise.
13511         * config/m68hc11/larith.asm: Likewise.
13512         * config/m68hc11/m68hc11-crt0.S: Likewise.
13513         * config/m68k/cf.md: Likewise.
13514         * config/m68k/crti.s: Likewise.
13515         * config/m68k/crtn.s: Likewise.
13516         * config/m68k/lb1sf68.asm: Likewise.
13517         * config/m68k/linux-unwind.h: Likewise.
13518         * config/mcore/crti.asm: Likewise.
13519         * config/mcore/crtn.asm: Likewise.
13520         * config/mcore/lib1.asm: Likewise.
13521         * config/mips/linux-unwind.h: Likewise.
13522         * config/mips/loongson.h: Likewise.
13523         * config/mips/mips16.S: Likewise.
13524         * config/mmix/crti.asm: Likewise.
13525         * config/mmix/crtn.asm: Likewise.
13526         * config/pa/fptr.c: Likewise.
13527         * config/pa/hpux-unwind.h: Likewise.
13528         * config/pa/lib2funcs.asm: Likewise.
13529         * config/pa/linux-atomic.c: Likewise.
13530         * config/pa/linux-unwind.h: Likewise.
13531         * config/pa/milli64.S: Likewise.
13532         * config/pa/quadlib.c: Likewise.
13533         * config/pa/stublib.c: Likewise.
13534         * config/picochip/libgccExtras/adddi3.asm: Likewise.
13535         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
13536         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
13537         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
13538         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
13539         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
13540         * config/picochip/libgccExtras/divmod15.asm: Likewise.
13541         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
13542         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
13543         * config/picochip/libgccExtras/longjmp.asm: Likewise.
13544         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
13545         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
13546         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
13547         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
13548         * config/picochip/libgccExtras/setjmp.asm: Likewise.
13549         * config/picochip/libgccExtras/subdi3.asm: Likewise.
13550         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
13551         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
13552         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
13553         * config/rs6000/750cl.h: Likewise.
13554         * config/rs6000/altivec.h: Likewise.
13555         * config/rs6000/biarch64.h: Likewise.
13556         * config/rs6000/crtresfpr.asm: Likewise.
13557         * config/rs6000/crtresgpr.asm: Likewise.
13558         * config/rs6000/crtresxfpr.asm: Likewise.
13559         * config/rs6000/crtresxgpr.asm: Likewise.
13560         * config/rs6000/crtsavfpr.asm: Likewise.
13561         * config/rs6000/crtsavgpr.asm: Likewise.
13562         * config/rs6000/darwin-asm.h: Likewise.
13563         * config/rs6000/darwin-fallback.c: Likewise.
13564         * config/rs6000/darwin-fpsave.asm: Likewise.
13565         * config/rs6000/darwin-ldouble.c: Likewise.
13566         * config/rs6000/darwin-tramp.asm: Likewise.
13567         * config/rs6000/darwin-unwind.h: Likewise.
13568         * config/rs6000/darwin-vecsave.asm: Likewise.
13569         * config/rs6000/darwin-world.asm: Likewise.
13570         * config/rs6000/e500crtres32gpr.asm: Likewise.
13571         * config/rs6000/e500crtres64gpr.asm: Likewise.
13572         * config/rs6000/e500crtres64gprctr.asm: Likewise.
13573         * config/rs6000/e500crtrest32gpr.asm: Likewise.
13574         * config/rs6000/e500crtrest64gpr.asm: Likewise.
13575         * config/rs6000/e500crtresx32gpr.asm: Likewise.
13576         * config/rs6000/e500crtresx64gpr.asm: Likewise.
13577         * config/rs6000/e500crtsav32gpr.asm: Likewise.
13578         * config/rs6000/e500crtsav64gpr.asm: Likewise.
13579         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
13580         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
13581         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
13582         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
13583         * config/rs6000/eabi-ci.asm: Likewise.
13584         * config/rs6000/eabi-cn.asm: Likewise.
13585         * config/rs6000/eabi.asm: Likewise.
13586         * config/rs6000/linux-unwind.h: Likewise.
13587         * config/rs6000/linux64.h: Likewise.
13588         * config/rs6000/paired.h: Likewise.
13589         * config/rs6000/paired.md: Likewise.
13590         * config/rs6000/ppc64-fp.c: Likewise.
13591         * config/rs6000/ppu_intrinsics.h: Likewise.
13592         * config/rs6000/rs6000.h: Likewise.
13593         * config/rs6000/si2vmx.h: Likewise.
13594         * config/rs6000/sol-ci.asm: Likewise.
13595         * config/rs6000/sol-cn.asm: Likewise.
13596         * config/rs6000/spe.h: Likewise.
13597         * config/rs6000/spu2vmx.h: Likewise.
13598         * config/rs6000/sysv4.h: Likewise.
13599         * config/rs6000/tramp.asm: Likewise.
13600         * config/rs6000/vec_types.h: Likewise.
13601         * config/s390/linux-unwind.h: Likewise.
13602         * config/s390/tpf-unwind.h: Likewise.
13603         * config/score/crti.asm: Likewise.
13604         * config/score/crtn.asm: Likewise.
13605         * config/sh/crt1.asm: Likewise.
13606         * config/sh/crti.asm: Likewise.
13607         * config/sh/crtn.asm: Likewise.
13608         * config/sh/divtab-sh4-300.c: Likewise.
13609         * config/sh/divtab-sh4.c: Likewise.
13610         * config/sh/divtab.c: Likewise.
13611         * config/sh/lib1funcs-4-300.asm: Likewise.
13612         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
13613         * config/sh/lib1funcs.asm: Likewise.
13614         * config/sh/lib1funcs.h: Likewise.
13615         * config/sh/linux-atomic.asm: Likewise.
13616         * config/sh/linux-unwind.h: Likewise.
13617         * config/sh/shmedia.h: Likewise.
13618         * config/sh/sshmedia.h: Likewise.
13619         * config/sh/ushmedia.h: Likewise.
13620         * config/sparc/crtfastmath.c: Likewise.
13621         * config/sparc/linux-unwind.h: Likewise.
13622         * config/sparc/sol2-c1.asm: Likewise.
13623         * config/sparc/sol2-ci.asm: Likewise.
13624         * config/sparc/sol2-cn.asm: Likewise.
13625         * config/spu/divmodti4.c: Likewise.
13626         * config/spu/divv2df3.c: Likewise.
13627         * config/spu/float_disf.c: Likewise.
13628         * config/spu/float_unsdidf.c: Likewise.
13629         * config/spu/float_unsdisf.c: Likewise.
13630         * config/spu/float_unssidf.c: Likewise.
13631         * config/spu/mfc_multi_tag_release.c: Likewise.
13632         * config/spu/mfc_multi_tag_reserve.c: Likewise.
13633         * config/spu/mfc_tag_release.c: Likewise.
13634         * config/spu/mfc_tag_reserve.c: Likewise.
13635         * config/spu/mfc_tag_table.c: Likewise.
13636         * config/spu/multi3.c: Likewise.
13637         * config/spu/spu_internals.h: Likewise.
13638         * config/spu/spu_intrinsics.h: Likewise.
13639         * config/spu/spu_mfcio.h: Likewise.
13640         * config/spu/vec_types.h: Likewise.
13641         * config/spu/vmx2spu.h: Likewise.
13642         * config/stormy16/stormy16-lib2.c: Likewise.
13643         * config/svr4.h: Likewise.
13644         * config/sync.c: Likewise.
13645         * config/v850/lib1funcs.asm: Likewise.
13646         * config/vxlib-tls.c: Likewise.
13647         * config/vxlib.c: Likewise.
13648         * config/vxworks-dummy.h: Likewise.
13649         * config/xtensa/crti.asm: Likewise.
13650         * config/xtensa/crtn.asm: Likewise.
13651         * config/xtensa/ieee754-df.S: Likewise.
13652         * config/xtensa/ieee754-sf.S: Likewise.
13653         * config/xtensa/lib1funcs.asm: Likewise.
13654         * config/xtensa/lib2funcs.S: Likewise.
13655         * config/xtensa/linux-unwind.h: Likewise.
13656         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
13657         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
13658         * coretypes.h: Likewise.
13659         * crtstuff.c: Likewise.
13660         * defaults.h: Likewise.
13661         * dwarf2.h: Likewise.
13662         * emutls.c: Likewise.
13663         * gbl-ctors.h: Likewise.
13664         * gcov-io.h: Likewise.
13665         * ginclude/float.h: Likewise.
13666         * ginclude/iso646.h: Likewise.
13667         * ginclude/stdarg.h: Likewise.
13668         * ginclude/stdbool.h: Likewise.
13669         * ginclude/stddef.h: Likewise.
13670         * ginclude/stdfix.h: Likewise.
13671         * ginclude/stdint-gcc.h: Likewise.
13672         * ginclude/tgmath.h: Likewise.
13673         * gthr-aix.h: Likewise.
13674         * gthr-dce.h: Likewise.
13675         * gthr-gnat.c: Likewise.
13676         * gthr-gnat.h: Likewise.
13677         * gthr-lynx.h: Likewise.
13678         * gthr-mipssde.h: Likewise.
13679         * gthr-nks.h: Likewise.
13680         * gthr-posix.c: Likewise.
13681         * gthr-posix.h: Likewise.
13682         * gthr-posix95.h: Likewise.
13683         * gthr-rtems.h: Likewise.
13684         * gthr-single.h: Likewise.
13685         * gthr-solaris.h: Likewise.
13686         * gthr-tpf.h: Likewise.
13687         * gthr-vxworks.h: Likewise.
13688         * gthr-win32.h: Likewise.
13689         * gthr.h: Likewise.
13690         * libgcc2.c: Likewise.
13691         * libgcc2.h: Likewise.
13692         * libgcov.c: Likewise.
13693         * tsystem.h: Likewise.
13694         * typeclass.h: Likewise.
13695         * unwind-c.c: Likewise.
13696         * unwind-compat.h: Likewise.
13697         * unwind-dw2-fde-compat.c: Likewise.
13698         * unwind-dw2-fde-darwin.c: Likewise.
13699         * unwind-dw2-fde-glibc.c: Likewise.
13700         * unwind-dw2-fde.c: Likewise.
13701         * unwind-dw2-fde.h: Likewise.
13702         * unwind-dw2.c: Likewise.
13703         * unwind-dw2.h: Likewise.
13704         * unwind-generic.h: Likewise.
13705         * unwind-pe.h: Likewise.
13706         * unwind-sjlj.c: Likewise.
13707         * unwind.inc: Likewise.
13708         * config/arm/neon-gen.ml: Change generated copyright header to
13709         refer to version 3 of the GNU General Public License with
13710         version 3.1 of the GCC Runtime Library Exception and to point
13711         readers at the COPYING3 and COPYING3.RUNTIME files and the
13712         FSF's license web page.
13713         * config/arm/arm_neon.h: Regenerate.
13714
13715 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
13716
13717         * config/cris/cris.md: Change copyright header to refer to version
13718         3 of the GNU General Public License.
13719         * doc/install.texi2html: Change copyright header to refer to version
13720         3 of the GNU General Public License and to point readers at the
13721         COPYING3 file and the FSF's license web page.
13722         * config/vax/linux.h: Likewise.
13723
13724 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
13725
13726         * config/i386/i386.md (cmpcc): New.
13727         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
13728         (sync_compare_and_swap_cc*): Delete.
13729
13730         * config/s390/s390.c (s390_compare_emitted): Remove.
13731         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
13732         s390_compare_emitted used to be handled.  Assert that modes match.
13733         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
13734         refer to sync_compare_and_swap_ccsi.
13735         * config/s390/s390.h (s390_compare_emitted): Remove.
13736         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
13737         instead of s390_compare_emitted.
13738         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
13739         instead of s390_compare_emitted.
13740         * config/s390/s390.md (cmpcc): New.
13741         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
13742         CC_REGNUM, do not pretend it's set.
13743         (sync_compare_and_swap_cc*): Delete.
13744         * config/s390/predicates.md (cc_reg_operand): New.
13745
13746         * expr.c (sync_compare_and_swap_cc): Delete.
13747         * optabs.h (sync_compare_and_swap_cc): Delete.
13748         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
13749         is being used with can_compare_p.
13750         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
13751         (find_cc_set): New.
13752         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
13753         look for a MODE_CC set instead.  Use emit_store_flag.
13754         (expand_compare_and_swap_loop): Likewise, with some additional
13755         complication to avoid a force_reg when useless.  Use
13756         emit_cmp_and_jump_insns.
13757         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
13758         * doc/md.texi (sync_compare_and_swap_cc): Merge with
13759         sync_compare_and_swap documentation.
13760
13761 2009-04-09  Jan Hubicka  <jh@suse.cz>
13762
13763         * except.c (find_prev_try): Break out from ....
13764         (duplicate_eh_regions): ... here; properly update prev_try pointers
13765         when duplication part of tree.
13766         (dump_eh_tree): Improve dumping.
13767         (verify_eh_region): New.
13768         (verify_eh_tree): Use it.
13769
13770 2009-04-06  Richard Guenther  <rguenther@suse.de>
13771
13772         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
13773         &ARRAY addresses by adjusting their types and prepending
13774         a conversion.
13775         * tree-cfg.c (verify_gimple_assign_single): Verify that
13776         addresses are correct.
13777
13778 2009-04-09  Richard Guenther  <rguenther@suse.de>
13779
13780         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
13781         indices into an array reference if possible.
13782         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
13783         Fold POINTER_PLUS_EXPR statements with invariant address.
13784
13785 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
13786
13787         PR target/39634
13788         * config.gcc (powerpc64-*-linux*): Always build biarch.
13789
13790 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
13791
13792         PR c/39613
13793         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
13794         it and pedwarn if this results in an INTEGER_CST.
13795
13796 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13797
13798         * doc/install.texi: Update minimum GMP version.  Remove obsolete
13799         text in MPFR section.
13800
13801 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
13802
13803         * dwarf2out.c (class_scope_p): New static inline.
13804         (class_or_namespace_scope_p): Use it.
13805         (gen_variable_die): Use DW_TAG_member tag for static data member
13806         declarations instead of DW_TAG_variable.
13807
13808         PR middle-end/39573
13809         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
13810         variables.
13811
13812 2009-04-08  Richard Guenther  <rguenther@suse.de>
13813
13814         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
13815         valueize random data.
13816
13817 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
13818
13819         * config.gcc (aix tm_file):  Add aix-stdint.h.
13820         (aix tm clause use_gcc_stdint):  Set to wrap.
13821         * config/rs6000/aix-stdint.h:  New file.
13822
13823 2009-04-08  Richard Guenther  <rguenther@suse.de>
13824
13825         PR middle-end/36291
13826         * tree-dfa.c (add_referenced_var): Do not recurse into
13827         global initializers.
13828         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
13829         exposed variables.
13830         (fold_const_aggregate_ref): Likewise.
13831
13832 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
13833
13834         * recog.c (ordered_comparison_operator): New.
13835         * gensupport.c (std_preds): Add it.
13836         * doc/md.texi (Machine-Independent Predicates): Document it.
13837
13838 2009-04-08  Jan Hubicka  <jh@suse.cz>
13839
13840         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
13841         * function.h (rtl_eh): Remove exception_handler_label_map.
13842         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
13843         remove_exception_handler_label, for_each_eh_label_1): Remove.
13844         (rtl_remove_unreachable_regions): Remove.
13845         (convert_from_eh_region_ranges): Do not remove unreachable regions.
13846         (find_exception_handler_labels): Don't build the hashtable.
13847         (maybe_remove_eh_handler): Remove.
13848         (for_each_eh_label): Rewrite to walk the tree.
13849         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
13850         * except.h (maybe_remove_eh_handler): Remove.
13851         * passes.c (init_optimization_passes): Schedule second EH cleanup
13852         before out-of-ssa.
13853         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
13854         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
13855
13856 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
13857
13858         * genoutput.c (validate_optab_operands): New.
13859         (gen_insn, gen_expand): Call it.
13860
13861         * genflags.c (gen_insn): Detect misused iterators.
13862         (main): Pass line_no to gen_insn, exit with status 1 on error.
13863
13864         * genextract.c (line_no): Make global.
13865         (VEC_safe_set_locstr): Change assertion to error message.
13866         (main): Exit with status 1 on error.
13867
13868 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
13869
13870         PR c/39614
13871         PR c/39673
13872         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
13873         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
13874         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
13875         * c-convert.c (convert): Do not call fold on results of conversion
13876         functions when the result is a C_MAYBE_CONST_EXPR.
13877         * c-parser.c (c_parser_postfix_expression): Do not fold condition
13878         of __builtin_choose_expr.
13879         * c-typeck.c (remove_c_maybe_const_expr): New.
13880         (build_unary_op, build_conditional_expr, build_compound_expr,
13881         build_binary_op, c_objc_common_truthvalue_conversion): Call
13882         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
13883         integer operands.
13884
13885 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
13886
13887         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
13888         CODE to produce a new one. Add a prototype to use fold_convert_const
13889
13890 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
13891
13892         PR bootstrap/39660
13893         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
13894         mix declarations and code.
13895
13896 2009-04-08  Ben Elliston  <bje@au.ibm.com>
13897
13898         * gcc.c: Replace `CC' with `GCC' throughout.
13899
13900 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
13901
13902         * doc/invoke.texi: Document Atom support.
13903
13904 2009-04-07  Jason Merrill  <jason@redhat.com>
13905
13906         PR c++/25185
13907         * c-common.h, c-common.c: Add flag_pretty_templates.
13908         * c-opts.c (c_common_handle_option): Set it.
13909         * c.opt: Add -fno-pretty-templates.
13910         * doc/invoke.texi (C++ Dialect Options): Likewise.
13911
13912 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
13913
13914         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
13915         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
13916         (ia64_expand_builtin): Likewise.
13917
13918 2009-04-07  Martin Jambor  <mjambor@suse.cz>
13919
13920         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
13921         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
13922         ADDR_EXPRS are include too.
13923
13924 2009-04-07  Richard Guenther  <rguenther@suse.de>
13925
13926         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
13927         decls are only used if passes as parameters or if they are
13928         local statics and the call is not to a builtin.
13929         (call_may_clobber_ref_p_1): Likewise.
13930
13931 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
13932
13933         * expr.c (do_store_flag): Remove last argument.  Simplify code
13934         to avoid duplication of tests already done by can_compare_p.
13935         (expand_expr_real_1): Adjust caller.
13936
13937 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
13938
13939         * optabs.c (can_compare_p): Test the predicate of a
13940         cbranch and cstore pattern.
13941
13942 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
13943
13944         * expr.c (convert_move): Use emit_store_flag instead of
13945         "emulating" it.
13946
13947 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
13948
13949         * config/i386/i386.c (ix86_compare_emitted): Remove.
13950         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
13951         ix86_compare_op0 like ix86_compare_emitted used to be handled.
13952         * config/i386/i386.h (ix86_compare_emitted): Remove.
13953         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
13954         instead of ix86_compare_emitted.
13955         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
13956
13957 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
13958
13959         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
13960         Add t-sysroot-suffix to tmake_file.
13961         * config/print-sysroot-suffix.sh: New file.
13962         * config/t-sysroot-suffix: New file.
13963
13964 2009-04-07  Ben Elliston  <bje@au.ibm.com>
13965
13966         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
13967         as the latter produces a warning when the target does not support
13968         infinity.
13969
13970 2009-04-07  Ben Elliston  <bje@au.ibm.com>
13971
13972         * dfp.c: Replace type punning assignments with memcpy throughout.
13973         * Makefile.in (dfp.o-warn): Remove.
13974
13975 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
13976
13977         PR target/39634
13978         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
13979         Include soft-fp/t-softfp after rs6000/t-linux64.
13980
13981 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
13982
13983         * stor-layout.c (set_sizetype): Use the full precision of their
13984         machine mode for bitsize types.
13985
13986 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
13987
13988         * config/i386/i386.md: Revert 2 accidental checkins.
13989
13990 2009-04-06  Joey Ye  <joey.ye@intel.com>
13991             Xuepeng Guo  <xuepeng.guo@intel.com>
13992             H.J. Lu  <hongjiu.lu@intel.com>
13993
13994         Atom pipeline model, tuning and insn selection.
13995         * config.gcc (atom): Add atom config options and target.
13996
13997         * config/i386/atom.md: New.
13998
13999         * config/i386/i386.c (atom_cost): New cost.
14000         (m_ATOM): New macro flag.
14001         (initial_ix86_tune_features): Set m_ATOM.
14002         (x86_accumulate_outgoing_args): Likewise.
14003         (x86_arch_always_fancy_math_387): Likewise.
14004         (processor_target): Add Atom cost.
14005         (cpu_names): Add Atom cpu name.
14006         (override_options): Set Atom ISA.
14007         (ix86_issue_rate): New case PROCESSOR_ATOM.
14008         (ix86_adjust_cost): Likewise.
14009
14010         * config/i386/i386.h (TARGET_ATOM): New target macro.
14011         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
14012         (TARGET_OPT_AGU): New target option.
14013         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
14014         (processor_type): Add PROCESSOR_ATOM.
14015
14016         * config/i386/i386.md (cpu): Add new value "atom".
14017         (use_carry, movu): New attr.
14018         (atom.md): Include atom.md.
14019         (adddi3_carry_rex64): Set attr "use_carry".
14020         (addqi3_carry): Likewise.
14021         (addhi3_carry): Likewise.
14022         (addsi3_carry): Likewise.
14023         (*addsi3_carry_zext): Likewise.
14024         (subdi3_carry_rex64): Likewise.
14025         (subqi3_carry): Likewise.
14026         (subhi3_carry): Likewise.
14027         (subsi3_carry): Likewise.
14028         (x86_movdicc_0_m1_rex64): Likewise.
14029         (*x86_movdicc_0_m1_se): Likewise.
14030         (x86_movsicc_0_m1): Likewise.
14031         (*x86_movsicc_0_m1_se): Likewise.
14032         (*adddi_1_rex64): Emit add insn as much as possible.
14033         (*addsi_1): Likewise.
14034         (return_internal): Set atom_unit.
14035         (return_internal_long): Likewise.
14036         (return_pop_internal): Likewise.
14037         (*rcpsf2_sse): Set atom_sse_attr attr.
14038         (*qrt<mode>2_sse): Likewise.
14039         (*prefetch_sse): Likewise.
14040
14041         * config/i386/i386-c.c (ix86_target_macros_internal): New case
14042         PROCESSOR_ATOM.
14043         (ix86_target_macros_internal): Likewise.
14044
14045         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
14046         (*prefetch_sse_rex): Likewise.
14047         (sse_rcpv4sf2): Likewise.
14048         (sse_vmrcpv4sf2): Likewise.
14049         (sse_sqrtv4sf2): Likewise.
14050         (<sse>_vmsqrt<mode>2): Likewise.
14051         (sse_ldmxcsr): Likewise.
14052         (sse_stmxcsr): Likewise.
14053         (*sse_sfence): Likewise.
14054         (sse2_clflush): Likewise.
14055         (*sse2_mfence): Likewise.
14056         (*sse2_lfence): Likewise.
14057         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
14058         (<sse>_movup<ssemodesuffixf2c>): Likewise.
14059         (avx_movdqu<avxmodesuffix>): Likewise.
14060         (avx_lddqu<avxmodesuffix>): Likewise.
14061         (sse2_movntv2di): Change attr "type" to "ssemov".
14062         (sse2_movntsi): Likewise.
14063         (rsqrtv8sf2): Change attr "type" to "sseadd".
14064         (sse3_addsubv2df3): Set attr "atom_unit".
14065         (sse3_h<plusminus_insn>v4sf3): Likewise.
14066         (*sse2_pmaddwd): Likewise.
14067         (*vec_extractv2di_1_rex64): Likewise.
14068         (*vec_extractv2di_1_avx): Likewise.
14069         (sse2_psadbw): Likewise.
14070         (ssse3_phaddwv8hi3): Likewise.
14071         (ssse3_phaddwv4hi3): Likewise.
14072         (ssse3_phadddv4si3): Likewise.
14073         (ssse3_phadddv2si3): Likewise.
14074         (ssse3_phaddswv8hi3): Likewise.
14075         (ssse3_phaddswv4hi3): Likewise.
14076         (ssse3_phsubwv8hi3): Likewise.
14077         (ssse3_phsubwv4hi3): Likewise.
14078         (ssse3_phsubdv4si3): Likewise.
14079         (ssse3_phsubdv2si3): Likewise.
14080         (ssse3_phsubswv8hi3): Likewise.
14081         (ssse3_phsubswv4hi3): Likewise.
14082         (ssse3_pmaddubsw128): Likewise.
14083         (sse3_pmaddubsw: Likewise.
14084         (ssse3_palignrti): Likewise.
14085         (ssse3_palignrdi): Likewise.
14086
14087 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
14088
14089         * doc/install.texi (Specific): Fix two cross-references to MinGW.
14090
14091 2009-04-06  Richard Guenther  <rguenther@suse.de>
14092
14093         PR tree-optimization/28868
14094         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
14095         of which PHI results we inserted.
14096         (insert_into_preds_of_block): Record inserted PHIs.
14097         (eliminate): Eliminate redundant PHI nodes.
14098         (init_pre): Init inserted_phi_names.
14099
14100 2009-04-06  Richard Guenther  <rguenther@suse.de>
14101
14102         PR tree-optimization/39643
14103         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
14104         IMAGPART_EXPRs of complex constants.
14105         (execute_fold_all_builtins): If we folded a call queue
14106         TODO_update_address_taken.
14107
14108 2009-04-06  Jan Hubicka  <jh@suse.cz>
14109
14110         PR middle-end/39659
14111         * except.c (remove_unreachable_regions): Propagate may_contain_throw
14112         flag.
14113
14114 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
14115
14116         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
14117         delay slot.
14118         (ic_invalidate_array): Likewise.
14119
14120 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
14121
14122         * calls.c (emit_library_call_value_1): Fix a problem with parameter
14123         alignment for library calls.
14124
14125 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
14126
14127         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
14128         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
14129         * config/i386/mingw-stdint.h:  New file.
14130
14131 2009-04-05  Richard Guenther  <rguenther@suse.de>
14132
14133         PR tree-optimization/39648
14134         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
14135         our &A vs. &A[0] IL deficiencies.
14136
14137 2009-04-04  Jan Hubicka  <jh@suse.cz>
14138
14139         * except.c (sjlj_find_directly_reachable_regions): Be ready for
14140         removed toplevel regions.
14141         (sjlj_mark_call_sites): Likewise.
14142
14143 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
14144
14145         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
14146         (cygwin tm clause use_gcc_stdint):  Set to wrap.
14147         * config/i386/cygwin-stdint.h:  New file.
14148
14149 2009-04-04  Richard Guenther  <rguenther@suse.de>
14150
14151         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
14152         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
14153         single-argument PHIs if we are in loop-closed SSA form.
14154         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
14155         for the pre-condition.
14156         (slpeel_tree_peel_loop_to_edge): Likewise.
14157         (vect_build_loop_niters): Take an optional sequence to append stmts.
14158         (vect_generate_tmps_on_preheader): Likewise.
14159         (vect_do_peeling_for_loop_bound): Take extra guards for the
14160         pre-condition.
14161         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
14162         the cost model check.
14163         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
14164         guards if we are going to peel.  Do not apply versioning in that case.
14165         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
14166         (vect_do_peeling_for_loop_bound): Likewise.
14167         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
14168         loop bound only record extra pre-conditions, do not apply loop
14169         versioning.
14170
14171 2009-04-04  Richard Guenther  <rguenther@suse.de>
14172
14173         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
14174         renaming code.
14175
14176 2009-04-04  Jan Hubicka  <jh@suse.cz>
14177
14178         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
14179         last_basic_block for size of bb->index indexed array.
14180         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
14181         compute_out, link_btr_uses, build_btr_def_use_webs,
14182         build_btr_def_use_webs, migrate_btr_defs): Likewise.
14183
14184 2009-04-04  Jan Hubicka  <jh@suse.cz>
14185
14186         * except.c (remove_eh_handler_and_replace): Break out from ...
14187         (remove_eh_handler): ... here.
14188         (bring_to_root): New function.
14189         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
14190         handled ones, bring others to root of tree.
14191
14192 2009-04-04  Jan Hubicka  <jh@suse.cz>
14193
14194         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
14195         (all_phis_safe_to_merge): New function.
14196         (update_info): New structure.
14197         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
14198         (cleanup_empty_eh): Update SSA if possible.
14199
14200 2009-04-04  Richard Guenther  <rguenther@suse.de>
14201
14202         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
14203         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
14204         (append_vuse): Likewise.
14205
14206 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
14207
14208         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
14209         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
14210         instead of REG_UNSAVED for DW_CFA_undefined.
14211         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
14212         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
14213         outermost frame.
14214
14215 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
14216
14217         PR target/39501
14218         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
14219         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
14220         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
14221
14222 2009-04-04  Richard Guenther  <rguenther@suse.de>
14223
14224         PR tree-optimization/8781
14225         PR tree-optimization/37892
14226         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
14227         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
14228         (valueize_refs): Call it for *& valueizations.
14229         (shared_reference_ops_from_ref): Rename to ...
14230         (valueize_shared_reference_ops_from_ref): ... this and valueize.
14231         (shared_reference_ops_from_call): Rename to ...
14232         (valueize_shared_reference_ops_from_call): ... this and valueize.
14233         (vn_reference_lookup): Update.
14234         (visit_reference_op_call): Likewise.
14235         * tree-ssa-pre.c (phi_translate_1): Fold *&.
14236         (eliminate): Value-replace the call address in call statements.
14237
14238 2009-04-04  Richard Guenther  <rguenther@suse.de>
14239
14240         PR tree-optimization/39636
14241         * tree-ssa-forwprop.c
14242         (forward_propagate_addr_into_variable_array_index): Check for
14243         GIMPLE_ASSIGN before accessing the rhs code.
14244
14245 2009-04-03  Jason Merrill  <jason@redhat.com>
14246
14247         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
14248
14249 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
14250
14251         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
14252         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
14253         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
14254         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
14255         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
14256         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
14257         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
14258         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
14259         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
14260         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
14261         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
14262         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
14263         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
14264         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
14265         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
14266         Use fr_reg_or_fp01_operand instead of fr_register_operand
14267
14268         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
14269         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
14270         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
14271
14272 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
14273
14274         PR rtl-optimization/39607
14275         PR rtl-optimization/39631
14276
14277         Revert:
14278
14279         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
14280         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
14281         instead of DF_LR_OUT.
14282         * ira-lives.c (process_bb_node_lives): Ditto.
14283         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
14284         instead of DF_LR_{OUT,IN}.
14285         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
14286         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
14287
14288 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
14289
14290         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
14291         (execute_lower_omp): Always run but take the short way out if -fopenmp
14292         is not given.
14293         (gate_lower_omp): Remove, forcing the pass manager to always run the
14294         pass and always set PROP_gimple_lomp.
14295         (pass_lower_omp): Remove gate function.
14296         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
14297         PROP_trees.  Instead, require it.
14298         * ipa-cp.c (pass_ipa_cp): Likewise.
14299         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
14300         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
14301         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
14302         and PROP_gimple_leh.
14303
14304 2009-04-03  Richard Guenther  <rguenther@suse.de>
14305
14306         PR middle-end/13146
14307         PR tree-optimization/23940
14308         PR tree-optimization/33237
14309         PR middle-end/33974
14310         PR middle-end/34093
14311         PR tree-optimization/36201
14312         PR tree-optimization/36230
14313         PR tree-optimization/38049
14314         PR tree-optimization/38207
14315         PR tree-optimization/38230
14316         PR tree-optimization/38301
14317         PR tree-optimization/38585
14318         PR middle-end/38895
14319         PR tree-optimization/38985
14320         PR tree-optimization/39299
14321         * tree-ssa-structalias.h: Remove.
14322         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
14323         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
14324         (struct vuse_element_d): Remove.
14325         (struct vuse_vec_d): Likewise.
14326         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
14327         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
14328         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
14329         VUSE_ELEMENT_VAR): Likewise.
14330         (struct voptype_d): Likewise.
14331         (NUM_VOP_FREE_BUCKETS): Likewise.
14332         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
14333         (struct stmt_operands_d): Remove.
14334         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
14335         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
14336         VDEF_NUM, VDEF_VECT): Likewise.
14337         (copy_virtual_operands): Remove.
14338         (operand_build_cmp): Likewise.
14339         (create_ssa_artificial_load_stmt): Likewise.
14340         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
14341         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
14342         vuse_index and mayuse_index members.  Pack and move done and iter_type
14343         members to the front.
14344         (SSA_OP_VMAYUSE): Remove.
14345         (SSA_OP_VIRTUAL_USES): Adjust.
14346         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
14347         (unlink_stmt_vdef): Declare.
14348         (add_to_addressable_set): Remove.
14349         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
14350         (vrp_visit_stmt): Likewise.
14351         * doc/tree-ssa.texi (Alias analysis): Update.
14352         * doc/invoke.texi (max-aliased-vops): Remove docs.
14353         (avg-aliased-vops): Likewise.
14354         * tree-into-ssa.c (syms_to_rename): Remove.
14355         (need_to_update_vops_p): Likewise.
14356         (need_to_initialize_update_ssa_p): Rename to ...
14357         (update_ssa_initialized_fn): ... this.  Track function we are
14358         initialized for.
14359         (symbol_marked_for_renaming): Simplify.
14360         (add_new_name_mapping): Do not set need_to_update_vops_p.
14361         (dump_currdefs): Use SYMS_TO_RENAME.
14362         (rewrite_update_stmt): Always walk all uses/defs.
14363         (dump_update_ssa): Adjust.
14364         (init_update_ssa): Take function argument.  Track what we are
14365         initialized for.
14366         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
14367         (create_new_def_for): Initialize for cfun, assert we are initialized
14368         for cfun.
14369         (mark_sym_for_renaming): Simplify.
14370         (mark_set_for_renaming): Do not initialize update-ssa.
14371         (need_ssa_update_p): Simplify.  Take function argument.
14372         (name_mappings_registered_p): Assert we ask for the correct function.
14373         (name_registered_for_update_p): Likewise.
14374         (ssa_names_to_replace): Likewise.
14375         (release_ssa_name_after_update_ssa): Likewise.
14376         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
14377         (dump_decl_set): Do not print a newline.
14378         (debug_decl_set): Do it here.
14379         (dump_update_ssa): And here.
14380         * tree-ssa-loop-im.c (move_computations): Adjust.
14381         (movement_possibility): Likewise.
14382         (determine_max_movement): Likewise.
14383         (gather_mem_refs_stmt): Likewise.
14384         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
14385         or NAME_MEMORY_TAG.
14386         * tree-complex.c (update_all_vops): Remove.
14387         (expand_complex_move): Adjust.
14388         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
14389         Simplify test for memory referencing statement.  Exclude
14390         non-invariant ADDR_EXPRs.
14391         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
14392         * tree-loop-distribution.c (generate_memset_zero): Adjust.
14393         (rdg_flag_uses): Likewise.
14394         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
14395         related code.
14396         (tree_optimize_tail_calls_1): Also split the
14397         edge from the entry block if we have degenerate PHI nodes in
14398         the first basic block.
14399         * tree.c (init_ttree): Remove memory-tag related code.
14400         (tree_code_size): Likewise.
14401         (tree_node_structure): Likewise.
14402         (build7_stat): Re-write to be build6_stat.
14403         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
14404         (SSA_VAR_P): Adjust.
14405         (struct tree_memory_tag): Remove.
14406         (struct tree_memory_partition_tag): Likewise.
14407         (union tree_node): Adjust.
14408         (build7): Re-write to be build6.
14409         * tree-pass.h (pass_reset_cc_flags): Remove.
14410         (TODO_update_address_taken): New flag.
14411         (pass_simple_dse): Remove.
14412         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
14413         * params.h (MAX_ALIASED_VOPS): Remove.
14414         (AVG_ALIASED_VOPS): Likewise.
14415         * omp-low.c (expand_omp_taskreg): Update SSA form.
14416         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
14417         aliases the lhs in a copy stmt.
14418         * tree-ssa-dse.c (struct address_walk_data): Remove.
14419         (memory_ssa_name_same): Likewise.
14420         (memory_address_same): Likewise.
14421         (get_kill_of_stmt_lhs): Likewise.
14422         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
14423         unused stores.  Look through PHI nodes into post-dominated regions.
14424         (dse_optimize_stmt): Simplify.  Properly remove stores.
14425         (tree_ssa_dse): Compute dominators.
14426         (execute_simple_dse): Remove.
14427         (pass_simple_dse): Likewise.
14428         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
14429         gimple_loaded_syms and gimple_stored_syms computation.
14430         * toplev.c (dump_memory_report): Dump alias and pta stats.
14431         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
14432         (vn_reference_eq): Likewise.
14433         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
14434         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
14435         valueize_vuses): Remove.
14436         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
14437         (get_def_ref_stmt_vuse): ... this.
14438         (vn_reference_lookup_2): New function.
14439         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
14440         walking equivalent vuses.  Simplify.
14441         (vn_reference_lookup): Likewise.
14442         (vn_reference_insert): Likewise.
14443         (vn_reference_insert_pieces): Likewise.
14444         (visit_reference_op_call): Simplify.
14445         (visit_reference_op_load): Likewise.
14446         (visit_reference_op_store): Likewise.
14447         (init_scc_vn): Remove shared_lookup_vuses initialization.
14448         (free_scc_vn): Remove shared_lookup_vuses freeing.
14449         (sort_vuses, sort_vuses_heap): Remove.
14450         (get_ref_from_reference_ops): Export.
14451         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
14452         vector with single vuse pointer.
14453         (vn_reference_lookup_pieces, vn_reference_lookup,
14454         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
14455         (shared_vuses_from_stmt): Remove.
14456         (get_ref_from_reference_ops): Declare.
14457         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
14458         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
14459         memory-tag related code.
14460         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
14461         (likely_value): Add comment, skip static-chain of call statements.
14462         (surely_varying_stmt_p): Adjust.
14463         (gimplify_and_update_call_from_tree): Likewise.
14464         (execute_fold_all_builtins): Do not rebuild alias info.
14465         (gimplify_and_update_call_from_tree): Properly update VOPs.
14466         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
14467         (copy_ref_info): Remove memory-tag related code.
14468         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
14469         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
14470         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
14471         computation.
14472         * tree-ssa-dom.c (gimple_p): Remove typedef.
14473         (eliminate_redundant_computations): Adjust.
14474         (record_equivalences_from_stmt): Likewise.
14475         (avail_expr_hash): Likewise.
14476         (avail_expr_eq): Likewise.
14477         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
14478         (stmt_makes_single_load): Likewise.
14479         (stmt_makes_single_store): Likewise.
14480         * tree-ssa-alias.c: Rewrite completely.
14481         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
14482         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
14483         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
14484         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
14485         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
14486         Remove public functions.
14487         (pass_reset_cc_flags): Remove.
14488         (pass_build_alias): Move ...
14489         * tree-ssa-structalias.c (pass_build_alias): ... here.
14490         * tree-ssa-alias.c (may_be_aliased): Move ...
14491         * tree-flow-inline.h (may_be_aliased): ... here.
14492         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
14493         count_uses_and_derefs): Move ...
14494         * gimple.c: ... here.
14495         * gimple.h (count_uses_and_derefs): Declare.
14496         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
14497         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
14498         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
14499         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
14500         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
14501         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
14502         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
14503         New functions.
14504         * tree-dfa.c (refs_may_alias_p): Move ...
14505         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
14506         * tree-ssa-alias.h: New file.
14507         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
14508         (statement_sink_location): Likewise.
14509         * opts.c (decode_options): Do not adjust max-aliased-vops or
14510         avg-aliased-vops values.
14511         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
14512         (TV_CALL_CLOBBER): Likewise.
14513         (TV_FLOW_SENSITIVE): Likewise.
14514         (TV_FLOW_INSENSITIVE): Likewise.
14515         (TV_MEMORY_PARTITIONING): Likewise.
14516         (TV_ALIAS_STMT_WALK): New timevar.
14517         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
14518         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
14519         (get_address_description): Remove memory-tag related code.
14520         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
14521         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
14522         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
14523         and immediate uses in statements.  Document.
14524         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
14525         (dump_symbols): Remove.
14526         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
14527         * alias.c (get_deref_alias_set): New function split out from ...
14528         (get_alias_set): ... here.
14529         * alias.h (get_deref_alias_set): Declare.
14530         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
14531         type parameter.  Remove restrict pointer handling.  Create a
14532         ref-all pointer in case type-based alias sets do not conflict.
14533         (vect_analyze_data_refs): Remove SMT related code.
14534         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
14535         (vectorizable_load): Likewise.
14536         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
14537         (DR_SYMBOL_TAG, DR_VOPS): Remove.
14538         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
14539         Ignore vops and SMTs.
14540         (dr_analyze_alias): Likewise..
14541         (free_data_ref): Likewise.
14542         (create_data_ref): Likewise.
14543         (analyze_all_data_dependences): Likewise.
14544         (get_references_in_stmt): Adjust.
14545         * tree-flow-inline.h (gimple_aliases_computed_p,
14546         gimple_addressable_vars, gimple_call_clobbered_vars,
14547         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
14548         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
14549         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
14550         gimple_mem_ref_stats): Remove.
14551         (gimple_vop): New function.
14552         (op_iter_next_use): Remove vuses and mayuses cases.
14553         (op_iter_next_def): Remove vdefs case.
14554         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
14555         (clear_and_done_ssa_iter): Do not set removed fields.
14556         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
14557         Assert we are not iterating over vuses or vdefs if not also
14558         iterating over uses or defs.
14559         (op_iter_init_use): Likewise.
14560         (op_iter_init_def): Likewise.
14561         (op_iter_next_vdef): Remove.
14562         (op_iter_next_mustdef): Likewise.
14563         (op_iter_init_vdef): Likewise.
14564         (compare_ssa_operands_equal): Likewise.
14565         (link_use_stmts_after): Handle vuse operand.
14566         (is_call_used): Use is_call_clobbered.
14567         (is_call_clobbered): Global variables are always call clobbered,
14568         query the call-clobbers bitmap.
14569         (mark_call_clobbered): Ignore global variables.
14570         (clear_call_clobbered): Likewise.
14571         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
14572         virtual operands sanity check.
14573         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
14574         Remove.
14575         (TARGET_MEM_REF): Remove TMR_TAG operand.
14576         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
14577         Remove call-clobber related code.
14578         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
14579         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
14580         partitions or escape reason.
14581         (get_single_def_stmt, get_single_def_stmt_from_phi,
14582         get_single_def_stmt_with_phi): Remove.
14583         (dump_referenced_vars): Tidy.
14584         (get_ref_base_and_extent): Allow bare decls.
14585         (collect_dfa_stats): Adjust.
14586         * graphite.c (rename_variables_in_stmt): Adjust.
14587         (graphite_copy_stmts_from_block): Likewise.
14588         (translate_clast): Likewise.
14589         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
14590         (EXPR_DIES): New.
14591         (translate_vuse_through_block): Use the oracle.
14592         (phi_translate_1): Adjust.
14593         (value_dies_in_block_x): Use the oracle.  Cache the outcome
14594         in EXPR_DIES.
14595         (valid_in_sets): Check if the VUSE for
14596         a REFERENCE is available.
14597         (eliminate): Do not remove stmts during elimination,
14598         instead queue and remove them afterwards.
14599         (do_pre): Do not rebuild alias info.
14600         (pass_pre): Run TODO_rebuild_alias before PRE.
14601         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
14602         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
14603         (mark_all_v_defs_stmt): Remove.
14604         (mark_all_v_defs_seq): Adjust.
14605         (sra_replace): Likewise.
14606         (scalarize_use): Likewise.
14607         (scalarize_copy): Likewise.
14608         (scalarize_init): Likewise.
14609         (scalarize_ldst): Likewise.
14610         (todoflags): Remove.
14611         (tree_sra): Do not rebuild alias info.
14612         (tree_sra_early): Adjust.
14613         (pass_sra): Run TODO_update_address_taken before SRA.
14614         * tree-predcom.c (set_alias_info): Remove.
14615         (prepare_initializers_chain): Do not call it.
14616         (mark_virtual_ops_for_renaming): Adjust.
14617         (mark_virtual_ops_for_renaming_list): Remove.
14618         (initialize_root_vars): Adjust.
14619         (initialize_root_vars_lm): Likewise.
14620         (prepare_initializers_chain): Likewise.
14621         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
14622         (may_propagate_copy_into_stmt): Likewise.
14623         (merge_alias_info): Do nothing for now.
14624         (propagate_tree_value_into_stmt): Adjust.
14625         (stmt_may_generate_copy): Likewise.
14626         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
14627         not mark symbols for renaming.
14628         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
14629         with the same statement, make sure to update the new pointed-to one.
14630         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
14631         call statements, do not mark symbols for renaming.
14632         (mark_operand_necessary): Dump something.
14633         (ref_may_be_aliased): New function.
14634         (mark_aliased_reaching_defs_necessary_1): New helper function.
14635         (mark_aliased_reaching_defs_necessary): Likewise.
14636         (mark_all_reaching_defs_necessary_1): Likewise.
14637         (mark_all_reaching_defs_necessary): Likewise.
14638         (propagate_necessity): Do not process virtual PHIs.  For
14639         non-aliased loads mark all reaching definitions as necessary.
14640         For aliased loads and stores mark the immediate dominating
14641         aliased clobbers as necessary.
14642         (visited): New global static.
14643         (perform_tree_ssa_dce): Free visited bitmap after propagating
14644         necessity.
14645         (remove_dead_phis): Perform simple dead virtual PHI removal.
14646         (remove_dead_stmt): Properly unlink virtual operands when
14647         removing stores.
14648         (eliminate_unnecessary_stmts): Schedule PHI removal after
14649         stmt removal.
14650         * tree-ssa-ter.c (is_replaceable_p): Adjust.
14651         (process_replaceable): Likewise.
14652         (find_replaceable_in_bb): Likewise.
14653         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
14654         based on the single gimple vop.
14655         (verify_flow_insensitive_alias_info): Remove.
14656         (verify_flow_sensitive_alias_info): Likewise.
14657         (verify_call_clobbering): Likewise.
14658         (verify_memory_partitions): Likewise.
14659         (verify_alias_info): Likewise.
14660         (verify_ssa): Adjust..
14661         (execute_update_addresses_taken): Export.  Update SSA
14662         manually.  Optimize only when optimizing.  Use a local bitmap.
14663         (pass_update_address_taken): Remove TODO_update_ssa, add
14664         TODO_dump_func.
14665         (pass_update_address_taken): Just use TODO_update_address_taken.
14666         (init_tree_ssa): Do not initialize addressable_vars.
14667         (verify_ssa): Verify new VUSE / VDEF properties.
14668         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
14669         Do not call verify_alias_info.
14670         (delete_tree_ssa): Clear the VUSE, VDEF operands.
14671         Do not free the loaded and stored syms bitmaps.  Reset the escaped
14672         and callused solutions.  Do not free addressable_vars.
14673         Remove memory-tag related code.
14674         (warn_uninitialized_var): Aliases are always available.
14675         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
14676         * lambda-code.c (can_put_in_inner_loop): Adjust.
14677         (can_put_after_inner_loop): Likewise.
14678         (perfect_nestify): Likewise.
14679         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
14680         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
14681         (vectorizable_conversion): Do not mark symbols for renaming.
14682         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
14683         (expand_call_inline): Unlink the calls virtual operands before
14684         replacing it.
14685         (tree_function_versioning): Do not call update_ssa if we are not
14686         updating clones.  Simplify.
14687         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
14688         (propagate_with_phi): Likewise..
14689         * tree-outof-ssa.c (create_temp): Remove memory tag and call
14690         clobber code.  Assert we are not aliased or global.
14691         * tree-flow.h: Include tree-ssa-alias.h
14692         (enum escape_type): Remove.
14693         (struct mem_sym_stats_d): Likewise.
14694         (struct mem_ref_stats_d): Likewise.
14695         (struct gimple_df): Add vop member.  Remove global_var,
14696         call_clobbered_vars, call_used_vars, addressable_vars,
14697         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
14698         escaped and callused members.
14699         (struct ptr_info_def): Remove all members, add points-to solution
14700         member pt.
14701         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
14702         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
14703         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
14704         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
14705         (tree-ssa-alias.o): Likewise.
14706         (toplev.o): Add tree-ssa-alias.h
14707         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
14708         * gimple.c (gimple_set_bb): Fix off-by-one error.
14709         (is_gimple_reg): Do not handle memory tags.
14710         (gimple_copy): Also copy virtual operands.
14711         Delay updating the statement.  Do not reset loaded and stored syms.
14712         (gimple_set_stored_syms): Remove.
14713         (gimple_set_loaded_syms): Likewise.
14714         (gimple_call_copy_skip_args): Copy the virtual operands
14715         and mark the new statement modified.
14716         * tree-ssa-structalias.c (may_alias_p): Remove.
14717         (set_uids_in_ptset): Take the alias set to prune with as
14718         parameter.  Fold in the alias test of may_alias_p.
14719         (compute_points_to_sets): Compute whether a ptr is dereferenced
14720         in a local sbitmap.
14721         (process_constraint): Deal with &ANYTHING on the lhs, reject all
14722         other ADDRESSOF constraints on the lhs.
14723         (get_constraint_for_component_ref): Assert that we don't get
14724         ADDRESSOF constraints from the base of the reference.
14725         Properly generate UNKNOWN_OFFSET for DEREF if needed.
14726         (struct variable_info): Remove collapsed_to member.
14727         (get_varinfo_fc): Remove.
14728         (new_var_info): Do not set collapsed_to.
14729         (dump_constraint): Do not follow cycles.
14730         (dump_constraint_graph): Likewise.
14731         (build_pred_graph): Likewise.
14732         (build_succ_graph): Likewise.
14733         (rewrite_constraints): Likewise.
14734         (do_simple_structure_copy): Remove.
14735         (do_rhs_deref_structure_copy): Remove.
14736         (do_lhs_deref_structure_copy): Remove.
14737         (collapse_rest_of_var): Remove.
14738         (do_structure_copy): Re-implement.
14739         (pta_stats): New global variable.
14740         (dump_pta_stats): New function.
14741         (struct constraint_expr): Make offset signed.
14742         (UNKNOWN_OFFSET): Define special value.
14743         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
14744         (solution_set_expand): New helper function split out from ...
14745         (do_sd_constraint): ... here.
14746         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
14747         (do_ds_constraint): Likewise.
14748         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
14749         and CALLUSED = *CALLUSED.
14750         (set_union_with_increment): Make inc argument signed.
14751         (type_safe): Remove.
14752         (get_constraint_for_ptr_offset): Handle unknown and negative
14753         constant offsets.
14754         (first_vi_for_offset): Handle offsets before start.  Bail
14755         out early for offsets beyond the variable extent.
14756         (first_or_preceding_vi_for_offset): New function.
14757         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
14758         Together with ESCAPED = *ESCAPED this properly computes reachability.
14759         (find_what_var_points_to): New function.
14760         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
14761         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
14762         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
14763         pt_solutions_intersect): New functions.
14764         (compute_call_used_vars): Remove.
14765         (compute_may_aliases): New main entry into PTA computation.
14766         * gimple.h (gimple_p): New typedef.
14767         (struct gimple_statement_base): Remove references_memory_p.
14768         (struct gimple_statement_with_memory_ops_base): Remove
14769         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
14770         members.
14771         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
14772         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
14773         gimple_set_references_memory): Remove.
14774         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
14775         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
14776         New functions.
14777         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
14778         (verify_expr): Allow RESULT_DECL.
14779         (gimple_duplicate_bb): Do not copy virtual operands.
14780         (gimple_duplicate_sese_region): Adjust.
14781         (gimple_duplicate_sese_tail): Likewise.
14782         (mark_virtual_ops_in_region): Remove.
14783         (move_sese_region_to_fn): Do not call it.
14784         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
14785         and pass_simple_dse.
14786         (execute_function_todo): Handle TODO_update_address_taken,
14787         call execute_update_addresses_taken for TODO_rebuild_alias.
14788         (execute_todo): Adjust.
14789         (execute_one_pass): Init dump files early.
14790         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
14791         call-clobbered.
14792         (create_general_new_stmt): Clear vops.
14793         * tree-ssa-reassoc.c (get_rank): Adjust.
14794         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
14795         symbols for renaming.
14796         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
14797         (PARAM_AVG_ALIASED_VOPS): Likewise.
14798         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
14799         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
14800         * tree-ssa-operands.c: Simplify for new virtual operand representation.
14801         (operand_build_cmp, copy_virtual_operands,
14802         create_ssa_artificial_load_stmt, add_to_addressable_set,
14803         gimple_add_to_addresses_taken): Remove public functions.
14804         (unlink_stmt_vdef): New function.
14805
14806 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
14807
14808         * config.gcc (powerpc-*-linux*): Merge variants.
14809
14810 2009-04-02  Chao-ying Fu  <fu@mips.com>
14811             James Grosbach  <james.grosbach@microchip.com>
14812
14813         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
14814         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
14815         cop0_sp_offset.
14816         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
14817         keep_interrupts_masked_p, use_debug_exception_return_p.
14818         (mips_attribute_table): Add interrupt, use_shadow_register_set,
14819         keep_interrupts_masked, use_debug_exception_return.
14820         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
14821         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
14822         New functions.
14823         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
14824         (mips_print_operand): Process COP0 registers to print $0 .. $31
14825         correctly for GAS to process.
14826         (mips_interrupt_extra_call_saved_reg_p): New function.
14827         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
14828         extra registers.
14829         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
14830         (mips_compute_frame_info): Add supports for interrupt context that
14831         includes doubleword accumulators and COP0 registers.
14832         (mips_for_each_saved_acc): New function.
14833         (mips_for_each_saved_gpr_and_fpr): Change the function name from
14834         mips_for_each_saved_reg.
14835         (mips_save_reg): Save accumulators.
14836         (mips_kernel_reg_p): A new for_each_rtx callback.
14837         (mips_expand_prologue): Support interrupt handlers.
14838         (mips_restore_reg): Restore accumulators.
14839         (mips_expand_epilogue): Support interrupt handlers.
14840         (mips_can_use_return_insn): Return false for interrupt handlers.
14841         (mips_epilogue_uses): New function.
14842         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
14843         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
14844         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
14845         cop0_move): New instructions.
14846         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
14847         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
14848         defines.
14849         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
14850         New defines.
14851         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
14852         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
14853         interrupt handlers, we use K0 as the temporary register.
14854         (EPILOGUE_USES): Change to a function call.
14855         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
14856         handlers, we use K0 as the temporary register.
14857
14858         * doc/extend.texi (Function Attributes): Document interrupt,
14859         use_shadow_register_set, keep_interrupts_masked,
14860         use_debug_exception_return for MIPS attributes.
14861
14862 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
14863
14864         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
14865         Remove a number of t-files from tmake_file.
14866         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
14867         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
14868         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
14869         target_prototype, not TARGET_PROTOTYPE.
14870         (LINK_OS_GNU_SPEC): Define.
14871         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
14872         and darwin-ldoubdle.c.
14873
14874 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
14875
14876         PR driver/39293
14877         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
14878         (cpp_options): Ditto.
14879         (default_compilers): Ditto.
14880         (display_help): Ditto.
14881         (process_command): Ditto.
14882         (do_spec_1): Ditto.
14883         (set_input): Use lbasename instead of duplicate code.
14884         (save_temps_prefix): New static for -save-temps=obj.
14885         (save_temps_length): Ditto.
14886
14887         * doc/invoke.texi (-save-temps=obj): Document new variant to
14888         -save-temps switch.
14889
14890 2009-04-02  Jeff Law  <law@redhat.com>
14891
14892         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
14893         variable.
14894
14895 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
14896
14897         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
14898         * configure: Regenerated.
14899
14900 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
14901
14902         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
14903         share the argument list.
14904
14905 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
14906
14907         Merge
14908
14909         2009-02-12  Diego Novillo  <dnovillo@google.com>
14910
14911         * varpool.c (debug_varpool): New.
14912         * cgraph.h (debug_varpool): Declare.
14913
14914 2009-04-02  Jan Hubicka  <jh@suse.cz>
14915
14916         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
14917         pass.
14918
14919 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
14920
14921         * config/i386/i386.c (ix86_abi): Move initialization to ...
14922         (override_options): Here.
14923
14924 2009-04-02  Christian Bruel  <christian.bruel@st.com>
14925
14926         * config/sh/sh.c (sh_dwarf_register_span): New function.
14927         (TARGET_DWARF_REGISTER_SPAN): Define.
14928         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
14929
14930 2009-04-02  Ira Rosen  <irar@il.ibm.com>
14931
14932         PR tree-optimization/39595
14933         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
14934         interleaved loads group is not  greater than the SLP group size.
14935
14936 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
14937
14938         * builtins.c (is_builtin_name): New.
14939         (called_as_built_in): Use is_builtin_name.
14940         * tree.h (is_builtin_name): New.
14941         * varasm.c (incorporeal_function_p): Use is_builtin_name
14942
14943 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
14944
14945         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
14946
14947 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
14948
14949         PR c++/26693
14950         * c-decl.c (clone_underlying_type): Move this ...
14951         * c-common.c (set_underlying_type): ... here.
14952         Also, make sure the function properly sets TYPE_STUB_DECL() on
14953         the newly created typedef variant type.
14954         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
14955         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
14956         points.
14957
14958 2009-04-02  Richard Guenther  <rguenther@suse.de>
14959
14960         PR tree-optimization/37221
14961         * tree-flow.h (degenerate_phi_result): Declare.
14962         * tree-ssa-dom.c (degenerate_phi_result): Export.
14963         * tree-scalar-evolution.c (analyze_initial_condition): If
14964         the initial condition is defined by a degenerate PHI node
14965         use the degenerate value.
14966
14967 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
14968
14969         PR rtl-optimization/39588
14970         * combine.c (merge_outer_ops): Do not set the constant when this
14971         is not necessary.
14972         (simplify_shift_const_1): Do not modify it either in this case.
14973
14974 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
14975
14976         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
14977         tuning is deprecated if -mtune value is set to an Itanium1 variant.
14978
14979 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
14980
14981         PR c/29027
14982         * c-lex.c (interpret_float): Default (no suffix) is double.
14983
14984 2009-04-1  Xinliang David Li  <davidxl@google.com>
14985
14986         * config/i386/i386.c (legitimate_constant_p): Recognize
14987         all one vector constant.
14988
14989 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
14990
14991         * config/vax/vax.c: Add #includes to silence warnings.
14992         Change #include order to silence two warnings.
14993
14994 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
14995
14996         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
14997         (ASM_SPEC): Pass -k to the assembler for PIC code.
14998
14999 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15000
15001         * config.gcc: Add vax-*-linux* to the switch.
15002         * config/vax/linux.h: New file. (TARGET_VERSION,
15003         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
15004
15005 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15006
15007         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
15008         Use predicate macros instead of GET_CODE() == foo.
15009         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
15010         ashlsi3, rotrsi3, <unnamed>): Likewise.
15011
15012 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15013
15014         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
15015         jbbccihi, jbbccisi): Remova trailing whitespace.
15016         * config/vax/constraints.md: Likewise.
15017         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
15018         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
15019         * config/vax/predicates.md: Likewise.
15020         * config/vax/vax.c (print_operand_address, vax_output_int_move,
15021         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
15022         * config/vax/vax.h: Likewise.
15023         * config/vax/vax.md (nonlocal_goto): Likewise.
15024
15025 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15026
15027         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
15028         (indirectable_address_p, adjacent_operands_p): Add spaces around
15029         braces.
15030         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
15031
15032 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15033
15034         * config/vax/vax.c (legitimate_constant_address_p,
15035         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
15036         index_term_p, reg_plus_index_p, legitimate_address_p,
15037         vax_mode_dependent_address_p): Update comments to match functions
15038         modified by the recent int->bool conversion.
15039
15040 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15041
15042         * config/vax/builtins.md: Update copyright message.
15043         * config/vax/constraints.md: Likewise.
15044         * config/vax/netbsd-elf.h: Likewise.
15045         * config/vax/predicates.md: Likewise.
15046         * config/vax/vax-protos.h: Likewise.
15047         * config/vax/vax.c: Likewise.
15048         * config/vax/vax.h: Likewise.
15049         * config/vax/vax.md: Likewise.
15050         * config/vax/vax.opt: Likewise.
15051
15052 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15053
15054         * config/vax/builtins.md (ffssi2, ffssi2_internal,
15055         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
15056         * config/vax/constraints.md (B, R): Likewise.
15057         * config/vax/predicates.md (external_memory_operand,
15058         nonimmediate_addsub_di_operand): Likewise.
15059         * config/vax/vax.c (vax_output_int_add): Likewise.
15060         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
15061         untyped_call): Likewise.
15062
15063 2009-04-01  Matt Thomas  <matt@3am-software.com>
15064
15065         * config/vax/predicates.md: New file.
15066         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
15067         external_const_operand, nonsymbolic_operand, external_memory_operand,
15068         indirect_memory_operand, indexed_memory_operand,
15069         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
15070         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
15071         predicate.
15072         * config/vax/constraints.md: New file.
15073         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
15074         New constraint.
15075         * config/vax/builtins.md: New file.
15076         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
15077         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
15078         jbbccisi): Define.
15079         * config/vax/vax.opt (mqmath): Add option.
15080         * config/vax/vax.md (isfx): Extend with DI.
15081         (VAXintQH, VAXintQHSD): Define.
15082         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
15083         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
15084         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
15085         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
15086         (movdi): Update constraints and use vax_output_int_move().
15087         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
15088         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
15089         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
15090         nonlocal_goto): New.
15091         (mov<mode>): Extend accepted operand types.
15092         (subdi3_old): Rename from subdi3, change update constraints and use
15093         a new implementation.
15094         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
15095         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
15096         MOVE_RATIO, CLEAR_RATIO): Define.
15097         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
15098         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
15099         (PRINT_OPERAND): Redefine using a function instead of inlined code.
15100         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
15101         (split_quadword_operands): Make static and really allow variable
15102         splitting.
15103         (print_operand_address): Update for PIC generation.
15104         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
15105         indexable_address_p, fixup_mathdi_operand,
15106         vax_expand_addsub_di_operands, adjacent_operands_p): New.
15107         (vax_float_literal, legitimate_constant_p,
15108         indirectable_constant_address_p, index_term_p,
15109         reg_plus_index_p): Return bool instead of int.
15110         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
15111         where needed.
15112         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
15113         generation.
15114         (vax_output_conditional_branch): Indent.
15115         (legitimate_constant_address_p, indirectable_constant_address_p,
15116         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
15117         vax_mode_dependent_address_p): Return bool instead of int, update for
15118         PIC generation.
15119         * config/vax/vax-protos.h (legitimate_constant_address_p,
15120         legitimate_constant_p, legitimate_address_p,
15121         vax_mode_dependent_address_p): Change declaration to bool.
15122         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
15123         vax_expand_addsub_di_operands, vax_output_int_subtract,
15124         vax_output_movmemsi): Declare.
15125         (split_quadword_operands, vax_float_literal): Delete declaration.
15126         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
15127         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
15128         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
15129         ASM_OUTPUT_DWARF_PCREL): Define.
15130         (ASM_SPEC): Change definition to allow PIC generation.
15131
15132 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
15133
15134         * doc/sourcebuild.texi: Update front-end requirements.
15135
15136 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
15137
15138         PR target/39226
15139         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
15140         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
15141         (booldi3_internal3): Use boolean_or_operator instead of
15142         boolean_operator.
15143
15144 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
15145
15146         PR c/39605
15147         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
15148         declarator whose size is not an integer constant expression but
15149         folds to an integer constant, then treat it as a constant
15150         subsequently.
15151
15152 2009-04-01  Richard Guenther  <rguenther@suse.de>
15153
15154         * fold-const.c (fold_plusminus_mult_expr): Do not fold
15155         i * 4 + 2 to (i * 2 + 1) * 2.
15156
15157 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
15158
15159         PR c/37772
15160         * c-parser.c (c_parser_asm_statement): Skip until close paren and
15161         return if c_parser_asm_string_literal returned NULL.
15162
15163 2009-04-01  Nick Clifton  <nickc@redhat.com>
15164
15165         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
15166         already defined.
15167         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
15168         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
15169         other typedefs to avoid conflicts with libgcc2.c.  Define labels
15170         to gain 16-bit bit-manipulation functions from libgcc2.c and then
15171         include it.
15172         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
15173         to gain 16-bit trapping arithmetic functions from libgcc2.c and
15174         then include it.
15175
15176 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
15177
15178         * varasm.c (default_function_rodata_section): Declare DOT as
15179         const char*.
15180
15181 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
15182             Andrey Galkin  <agalkin@hypercom.com>
15183
15184         PR/39492
15185         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
15186         Make object_name unique for each process.
15187
15188 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
15189
15190         PR other/39591
15191         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
15192         addressable variables in the parallel that could go out of scope while
15193         running queued tasks.
15194
15195 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
15196
15197         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
15198         (CASE_VALUES_THRESHOLD): Redefine.
15199         * config/avr/avr.c (avr_override_options): Remove initialization of
15200         avr_case_values_threshold variable.
15201         (avr_case_values_threshold): Remove variable. Add new function.
15202         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
15203         * config/avr/avr.opt (mno-tablejump): Remove option.
15204         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
15205
15206 2009-04-01  DJ Delorie  <dj@redhat.com>
15207
15208         * varasm.c (default_function_rodata_section): Don't assume
15209         anything about where the first '.' in the section name is.
15210
15211 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
15212
15213         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
15214         rs6000_emit_stack_tie.
15215
15216 2009-03-31  Ian Lance Taylor  <iant@google.com>
15217
15218         * tree-eh.c (tree_remove_unreachable_handlers): Compare
15219         gimple_code with GIMPLE_RESX, not RESX.
15220
15221 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
15222
15223         * c-common.c (c_get_ident): New.
15224         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
15225
15226 2009-04-01  Ben Elliston  <bje@au.ibm.com>
15227
15228         * config/rs6000/sysv4.opt (msdata): Improve option description.
15229
15230 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
15231
15232         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
15233         (divdf3_internal_lat): Remove.
15234         (divxf3_internal_lat): Remove.
15235         (divxf3_internal_thr): Remove.
15236         (divxf): Use divxf3_internal.
15237         * config/ia64/div.md (divsf3_internal_lat): New.
15238         (divdf3_internal_lat): New.
15239         (divxf3_internal): New.
15240
15241 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
15242
15243         PR c/448
15244         * Makefile.in (USE_GCC_STDINT): Define.
15245         (stmp-int-hdrs): Install stdint.h if applicable.
15246         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
15247         if known.
15248         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
15249         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
15250         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
15251         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
15252         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
15253         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
15254         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
15255         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
15256         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
15257         (c_common_nodes_and_builtins): Initialize
15258         underlying_wchar_type_node.  Do not initialize
15259         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
15260         nodes for new types.
15261         (c_stddef_cpp_builtins): Define macros for new types.
15262         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
15263         Remove.
15264         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
15265         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
15266         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
15267         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
15268         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
15269         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
15270         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
15271         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
15272         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
15273         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
15274         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
15275         int16_type_node, int32_type_node, int64_type_node,
15276         uint8_type_node, uint16_type_node, c_uint32_type_node,
15277         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
15278         int_least32_type_node, int_least64_type_node,
15279         uint_least8_type_node, uint_least16_type_node,
15280         uint_least32_type_node, uint_least64_type_node,
15281         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
15282         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
15283         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
15284         uintptr_type_node): Define.
15285         * c-cppbuiltin.c (builtin_define_constants,
15286         builtin_define_type_minmax): New.
15287         (builtin_define_stdint_macros): Define more macros.
15288         (c_cpp_builtins): Define more limit macros.
15289         (type_suffix): New.
15290         (builtin_define_type_max): Define in terms of
15291         builtin_define_type_minmax.  Remove is_long parameter.  All
15292         callers changed.
15293         * config.gcc (use_gcc_stdint): Define.
15294         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
15295         Add newlib-stdint.h for generic targets.
15296         * config/glibc-stdint.h, config/newlib-stdint.h,
15297         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
15298         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
15299         * config/score/score.h (UINTPTR_TYPE): Define.
15300         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
15301         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
15302         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
15303         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
15304         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
15305         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
15306         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
15307         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
15308         * config/spu/spu.h (STDINT_LONG32): Define.
15309         * configure.ac (use_gcc_stdint): Substitute.
15310         * configure: Regenerate.
15311         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
15312         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
15313         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
15314         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
15315         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
15316         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
15317         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
15318         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
15319         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
15320         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
15321         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
15322         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
15323         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
15324         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
15325         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
15326         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
15327         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
15328         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
15329         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
15330         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
15331         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
15332         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
15333         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
15334         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
15335         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
15336         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
15337         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
15338         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
15339         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
15340
15341 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
15342
15343         * loop-iv.c (suitable_set_for_replacement): Renamed from
15344         simplify_using_assignment; changed to return bool and to accept new
15345         args DEST and SRC.  Return true iff we find a source/destination pair
15346         that can be used to make a replacement, and fill SRC and DEST if so.
15347         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
15348         changed.
15349         (simplify_using_initial_values): Deal with altered regs here and track
15350         more precisely the effect they have on the validity of our expression.
15351
15352         * loop-iv.c (simplify_using_condition): A condition of the form
15353         (EQ REG CONST) can be used to simply make a substitution.
15354         (simplify_using_initial_values): Keep track of conditions we have seen
15355         and keep using them to simplify new expressions, while applying the
15356         same substitutions to them as to the expression.
15357
15358         * simplify-rtx.c (simplify_relational_operation_1): Simplify
15359         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
15360         GEU/LTU reversed.
15361
15362         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
15363         changed.  Use this when trying to improve the upper bound.
15364         Generate the comparison by using simplify_gen_relational.
15365
15366         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
15367
15368         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
15369         functions.
15370         (simplify_using_assignment, simplify_using_initial_values): Call
15371         replace_in_expr to make replacements.  Call replace_single_def_regs
15372         once on the initial version of the expression.
15373
15374 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15375
15376         PR target/27237
15377         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
15378
15379 2009-03-31  Richard Guenther  <rguenther@suse.de>
15380
15381         PR middle-end/31029
15382         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
15383         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
15384
15385 2009-03-31  Richard Guenther  <rguenther@suse.de>
15386
15387         * tree.h (div_if_zero_remainder): Declare.
15388         * fold-const.c (div_if_zero_remainder): Export.
15389         * tree-ssa-forwprop.c
15390         (forward_propagate_addr_into_variable_array_index): Handle
15391         constant array index addition outside of the variable index.
15392
15393 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
15394
15395         PR target/39592
15396         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
15397         define_splits, floatunssi<mode>2): Require x87 conversions from
15398         DImode to be permitted.
15399
15400 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
15401
15402         PR preprocessor/15638
15403         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
15404
15405 2009-03-31  Richard Guenther  <rguenther@suse.de>
15406
15407         PR middle-end/23401
15408         PR middle-end/27810
15409         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
15410         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
15411         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
15412         a separate statement.
15413         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
15414         (lookup_tmp_var): Likewise.
15415         (is_gimple_formal_tmp_or_call_rhs): Remove.
15416         (is_gimple_reg_or_call_rhs): Rename to ...
15417         (is_gimple_reg_rhs_or_call): ... this.
15418         (is_gimple_mem_or_call_rhs): Rename to ...
15419         (is_gimple_mem_rhs_or_call): ... this.
15420         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
15421         DECL_GIMPLE_REG_P only if is_formal is true.
15422         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
15423         for non-proper post-modify expression gimplification.
15424         (gimplify_self_mod_expr): For post-modify expressions gimplify
15425         the lvalue to a minimal lvalue.
15426         (rhs_predicate_for): Remove formal temp case.
15427         (gimplify_modify_expr_rhs): Likewise.
15428         (gimplify_addr_expr): Use is_gimple_reg.
15429         (gimplify_expr): Remove formal temp cases.
15430         (gimple_regimplify_operands): Likewise.
15431         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
15432         and FILTER_EXPR like constants.
15433         * gimple.c (walk_gimple_op): Fix val_only initialization, use
15434         is_gimple_reg.
15435         (is_gimple_formal_tmp_rhs): Remove.
15436         (is_gimple_reg_rhs): Remove special casing.
15437         (is_gimple_mem_rhs): Fix.
15438         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
15439         (is_gimple_formal_tmp_var): Remove.
15440         (is_gimple_formal_tmp_reg): Likewise.
15441         (is_gimple_min_lval): Allow invariant component ref parts.
15442         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
15443         is_gimple_formal_tmp_reg): Remove declarations.
15444         * tree-cfg.c (verify_expr): Verify that variables with address
15445         taken do not have DECL_GIMPLE_REG_P set.
15446         * tree-mudflap.c (mf_build_check_statement_for): Use
15447         force_gimple_operand instead of gimplify_expr.
15448
15449 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
15450
15451         * modulo-sched.c (sms_schedule_by_order): Pass the actual
15452         schedulable rows to compute_split_row.
15453
15454 2009-03-31  Ben Elliston  <bje@au.ibm.com>
15455
15456         PR target/31635
15457         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
15458         OPT_mvrsave.
15459
15460 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
15461
15462         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
15463         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
15464         * configure: Regenerate.
15465         * config.in: Regenerate.
15466         * config/rs6000/rs6000.opt (mtls-markers): Add.
15467         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
15468         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
15469         (tls_ld_aix, tls_ld_sysv): Likewise.
15470         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
15471         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
15472
15473 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
15474
15475         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
15476
15477 2009-03-30  Jan Hubicka  <jh@suse.cz>
15478
15479         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
15480         out of RESX.
15481         (tree_remove_unreachable_handlers): Cleanup EH predecestor
15482         detection and label handling.
15483
15484 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
15485
15486         * ira-int.h (ira_allocno): Rename left_conflicts_num to
15487         left_conflicts_size.
15488         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
15489         ALLOCNO_LEFT_CONFLICTS_SIZE.
15490
15491         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
15492         remove_allocno_from_bucket_and_push,
15493         allocno_spill_priority_compare, push_allocnos_to_stack,
15494         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
15495         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
15496         (setup_allocno_left_conflicts_num): Ditto.  Rename to
15497         setup_allocno_left_conflicts_size.
15498         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
15499         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
15500         setup_allocno_left_conflicts_size instead of
15501         setup_allocno_left_conflicts_num.
15502
15503         * ira-build.c (ira_create_allocno): Use
15504         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
15505         ALLOCNO_LEFT_CONFLICTS_NUM.
15506
15507 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
15508
15509         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
15510         instead of DF_LR_OUT.
15511
15512         * ira-lives.c (process_bb_node_lives): Ditto.
15513
15514         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
15515         instead of DF_LR_{OUT,IN}.
15516
15517         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
15518
15519         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
15520
15521 2009-03-30  Jan Hubicka  <jh@suse.cz>
15522
15523         * except.c (label_to_region_map): Fix thinko.
15524
15525 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
15526
15527         PR middle-end/38237
15528         * tree.h (tree_find_value): New declaration.
15529         * tree.c (tree_find_value): New function.
15530         * varasm.c (assemble_external): Avoid duplicate entries on lists.
15531
15532 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
15533
15534         PR debug/39563
15535         * c-decl.c (struct c_binding): Add locus field.
15536         (bind): Add locus argument, set locus field from it.
15537         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
15538         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
15539         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
15540         implicitly_declare, undeclared_variable, lookup_label,
15541         declare_label, c_make_fname_decl, c_builtin_function,
15542         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
15543         bind callers.
15544
15545 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
15546
15547         PR target/38781
15548         * config/i386/i386.c (classify_argument): Check total size of
15549         structure.
15550
15551 2009-03-30  Martin Jambor  <mjambor@suse.cz>
15552
15553         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
15554         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
15555         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
15556         respectively.
15557
15558         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
15559         seen_variable_array_ref while also traversing a union.
15560
15561         * tree-inline.c (optimize_inline_calls): Do not call
15562         cgraph_node_remove_callees.
15563         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
15564         (pass_remove_cgraph_callee_edges): New variable.
15565         * passes.c (init_optimization_passes): Add
15566         pass_remove_cgraph_callee_edges after early inlining and before all
15567         late intraprocedural passes.
15568
15569         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
15570
15571 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15572
15573         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
15574         Fix typos in names.
15575
15576 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15577
15578         * combine.c (simplify_comparison): Use have_insn_for.
15579         * dojump.c (do_jump): Likewise.
15580
15581 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15582
15583         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
15584         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
15585         sparc_compare_op0 like sparc_compare_emitted used to be handled.
15586         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
15587         instead of sparc_compare_emitted.
15588         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
15589         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
15590         instead of sparc_compare_emitted.
15591
15592 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15593
15594         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
15595         enter/exit cfglayout mode.
15596         (pass_partition_block): Require it.
15597         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
15598         (combine_instructions): Track basic blocks instead of labels.
15599         (update_cfg_for_uncondjump): New.
15600         (try_combine): Use it.  Update jumps after rescanning.
15601         (pass_combine): Require PROP_cfglayout.
15602         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
15603
15604 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15605
15606         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
15607         Provide/destroy PROP_cfglayout respectively.
15608         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
15609         * tree-pass.h (PROP_cfglayout): New.
15610
15611 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15612
15613         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
15614         fold_convert_const_fixed_from_fixed,
15615         fold_convert_const_fixed_from_int,
15616         fold_convert_const_fixed_from_real, fold_negate_const): Do not
15617         set TREE_CONSTANT_OVERFLOW.
15618         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
15619         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
15620
15621 2009-03-30  Ira Rosen  <irar@il.ibm.com>
15622
15623         * tree-vect-loop-manip.c: New file.
15624         * tree-vectorizer.c: Update documentation and included files.
15625         (vect_loop_location): Make extern.
15626         (rename_use_op): Move to tree-vect-loop-manip.c
15627         (rename_variables_in_bb, rename_variables_in_loop,
15628         slpeel_update_phis_for_duplicate_loop,
15629         slpeel_update_phi_nodes_for_guard1,
15630         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
15631         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
15632         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
15633         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
15634         find_loop_location): Likewise.
15635         (new_stmt_vec_info): Move to tree-vect-stmts.c.
15636         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
15637         get_vectype_for_scalar_type, vect_is_simple_use,
15638         supportable_widening_operation, supportable_narrowing_operation):
15639         Likewise.
15640         (bb_in_loop_p): Move to tree-vect-loop.c.
15641         (new_loop_vec_info, destroy_loop_vec_info,
15642         reduction_code_for_scalar_code, report_vect_op,
15643         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
15644         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
15645         (vect_supportable_dr_alignment): Likewise.
15646         * tree-vectorizer.h (tree-data-ref.h): Include.
15647         (vect_loop_location): Declare.
15648         Reorganize function declarations according to the new file structure.
15649         * tree-vect-loop.c: New file.
15650         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
15651         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
15652         * tree-vect-data-refs.c: New file.
15653         * tree-vect-patterns.c (timevar.h): Don't include.
15654         * tree-vect-stmts.c: New file.
15655         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
15656         tree-vect-slp.c, tree-vect-loop.c.
15657         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
15658         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
15659         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
15660         (tree-vect-analyze.o): Remove.
15661         (tree-vect-transform.o): Likewise.
15662         (tree-vect-data-refs.o): Add rule.
15663         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
15664         tree-vect-slp.o): Likewise.
15665         (tree-vect-patterns.o): Remove redundant dependencies.
15666         (tree-vectorizer.o): Likewise.
15667         * tree-vect-slp.c: New file.
15668
15669 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15670
15671         * optc-gen.awk: Warn if an option flag has multiple different
15672         help strings.
15673
15674 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
15675
15676         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
15677         -floop-block): Document dependences on PPL, CLooG and Graphite.
15678
15679 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
15680
15681         PR rtl-optimization/323
15682         * c-common.c (c_fully_fold, convert_and_check,
15683         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
15684         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
15685         * c-common.def (EXCESS_PRECISION_EXPR): New.
15686         * c-cppbuiltin.c (builtin_define_float_constants): Define
15687         constants with enough digits for long double.
15688         * c-lex.c (interpret_float): Interpret constant with excess
15689         precision where appropriate.
15690         * c-opts.c (c_common_post_options): Set
15691         flag_excess_precision_cmdline.  Give an error for
15692         -fexcess-precision=standard for C++ for processors where the
15693         option is significant.
15694         * c-parser.c (c_parser_conditional_expression): Handle excess
15695         precision in condition.
15696         * c-typeck.c (convert_arguments): Handle arguments with excess
15697         precision.
15698         (build_unary_op): Move excess precision outside operation.
15699         (build_conditional_expr): Likewise.
15700         (build_compound_expr): Likewise.
15701         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
15702         (build_modify_expr): Handle excess precision in RHS.
15703         (convert_for_assignment): Handle excess precision in converted
15704         value.
15705         (digest_init, output_init_element, process_init_element): Handle
15706         excess precision in initializer.
15707         (c_finish_return): Handle excess precision in return value.
15708         (build_binary_op): Handle excess precision in operands and add
15709         excess precision as needed for operation.
15710         * common.opt (-fexcess-precision=): New option.
15711         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
15712         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
15713         For standard excess precision, output explicit conversion to and
15714         truncation from XFmode.
15715         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
15716         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
15717         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
15718         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
15719         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
15720         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
15721         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
15722         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
15723         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
15724         define_splits, sqrt<mode>2): Disable where appropriate for
15725         standard excess precision.
15726         * convert.c (convert_to_real): Do not shorten arithmetic to type
15727         for which excess precision would be used.
15728         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
15729         * doc/invoke.texi (-fexcess-precision=): Document option.
15730         (-mfpmath=): Correct index entry.
15731         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
15732         flag_excess_precision): New.
15733         * langhooks.c (lhd_post_options): Set
15734         flag_excess_precision_cmdline.
15735         * opts.c (common_handle_option): Handle -fexcess-precision=.
15736         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
15737         init_excess_precision): New.
15738         (lang_dependent_init_target): Call init_excess_precision.
15739         * tree.c (excess_precision_type): New.
15740         * tree.h (excess_precision_type): Declare.
15741
15742 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
15743
15744         PR c/35235
15745         * c-typeck.c (build_component_ref): Do not copy qualifiers from
15746         non-lvalue to component.
15747
15748 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
15749
15750         PR preprocessor/34695
15751         * Makefile.in (c-opts.o): Depend on c-tree.h.
15752         * c-common.c: Move down include of diagnostic.h.
15753         (done_lexing, c_cpp_error): New.
15754         * c-common.h (done_lexing): Declare.
15755         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
15756         (parse_in).
15757         * c-opts.c: Include c-tree.h.
15758         (c_common_init_options): Set preprocessor error callback.
15759         (c_common_handle_option): Do not set preprocessor
15760         inhibit_warnings, warnings_are_errors, warn_system_headers,
15761         pedantic_errors or inhibit_warnings flags.
15762         (c_common_post_options): Do not check cpp_errors (parse_in).
15763         (c_common_finish): Do not output dependencies if there were
15764         errors.  Do not check return value of cpp_finish.
15765         * c-ppoutput.c (pp_file_change): Set input_location.
15766         * c-tree.h (c_cpp_error): Declare.
15767         * diagnostic.c (diagnostic_set_info_translated): Also initialize
15768         override_column.
15769         (diagnostic_build_prefix): Check override_column.
15770         * diagnostic.h (diagnostic_info): Add override_column field.
15771         (diagnostic_override_column): Define.
15772
15773 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
15774
15775         * c-common.c (c_expand_expr, c_staticp): Remove.
15776         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
15777         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
15778         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
15779         * c-gimplify.c (gimplify_compound_literal_expr,
15780         optimize_compound_literals_in_ctor): Remove.
15781         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
15782         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
15783         * c-semantics.c (emit_local_var): Remove.
15784
15785         * langhooks-def.h (lhd_expand_expr): Remove.
15786         * langhooks.c (lhd_expand_expr): Remove.
15787         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
15788
15789         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
15790         handling from c-semantics.c; don't call into langhook.
15791         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
15792         * gimplify.c (gimplify_compound_literal_expr,
15793         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
15794         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
15795         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
15796         as was done in c-gimplify.c.
15797         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
15798         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
15799         Move from c-common.h.
15800         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
15801
15802         * tree.c (staticp): Do not call langhook.
15803         * langhooks.c (lhd_staticp): Delete.
15804         * langhooks-def.h (lhd_staticp): Delete prototype.
15805         (LANG_HOOKS_STATICP): Delete.
15806         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
15807
15808         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
15809         instead of DECL_STMTs.
15810
15811 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
15812
15813         PR c/456
15814         PR c/5675
15815         PR c/19976
15816         PR c/29116
15817         PR c/31871
15818         PR c/35198
15819         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
15820         void_type_node.
15821         (fold_call_expr): Return a NOP_EXPR from folding rather than the
15822         contained expression.
15823         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
15824         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
15825         conditional expressions for C.
15826         (decl_constant_value_for_optimization): Move from
15827         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
15828         whether optimizing and that the expression is a VAR_DECL not of
15829         array type instead of doing such checks in the caller.  Do not
15830         check pedantic.  Call gcc_unreachable for C++.
15831         * c-common.def (C_MAYBE_CONST_EXPR): New.
15832         * c-common.h (c_fully_fold, c_save_expr,
15833         decl_constant_value_for_optimization): New prototypes.
15834         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
15835         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
15836         EXPR_INT_CONST_OPERANDS): Define.
15837         * c-convert.c (convert): Strip nops from expression.
15838         * c-decl.c (groktypename): Take extra parameters expr and
15839         expr_const_operands.  Update call to grokdeclarator.
15840         (start_decl): Update call to grokdeclarator.  Add statement for
15841         expressions used in type of decl.
15842         (grokparm): Update call to grokdeclarator.
15843         (push_parm_decl): Update call to grokdeclarator.
15844         (build_compound_literal): Add parameter non_const and build a
15845         C_MAYBE_COSNT_EXPR if applicable.
15846         (grokdeclarator): Take extra parameters expr and
15847         expr_const_operands.  Track expressions used in declaration
15848         specifiers and declarators.  Fold array sizes and track whether
15849         they are constant expressions and whether they are integer
15850         constant expressions.
15851         (parser_xref_tag): Set expr and expr_const_operands fields in
15852         return value.
15853         (grokfield): Update call to grokdeclarator.
15854         (start_function): Update call to grokdeclarator.
15855         (build_null_declspecs): Set expr and expr_const_operands fields in
15856         return value.
15857         (declspecs_add_type): Handle expressions in typeof specifiers.
15858         * c-parser.c (c_parser_declspecs): Set expr and
15859         expr_const_operands fields for declaration specifiers.
15860         (c_parser_enum_specifier): Likewise.
15861         (c_parser_struct_or_union_specifier): Likewise.
15862         (c_parser_typeof_specifier): Likewise.  Update call to
15863         groktypename.  Fold expression as needed.  Return expressions with
15864         type instead of adding statements.
15865         (c_parser_attributes): Update calls to c_parser_expr_list.
15866         (c_parser_statement_after_labels): Fold expression before passing
15867         to objc_build_throw_stmt.
15868         (c_parser_condition): Fold expression.
15869         (c_parser_asm_operands): Fold expression.
15870         (c_parser_conditional_expression): Use c_save_expr.  Update call
15871         to build_conditional_expr.
15872         (c_parser_alignof_expression): Update call to groktypename.
15873         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
15874         original_code.  Fold expression argument of va_arg.  Create
15875         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
15876         argument to va_arg.  Update calls to groktypename.  Fold array
15877         index for offsetof.  Verify that first argument to
15878         __builtin_choose_expr has integer type.
15879         (c_parser_postfix_expression_after_paren_type): Update calls to
15880         groktypename and build_compound_literal.  Handle expressions with
15881         side effects in type name.
15882         (c_parser_postfix_expression_after_primary): Update call to
15883         c_parser_expr_list.  Set original_code for calls to
15884         __builtin_constant_p.
15885         (c_parser_expr_list): Take extra parameter fold_p.  Fold
15886         expressions if requested.
15887         (c_parser_objc_type_name): Update call to groktypename.
15888         (c_parser_objc_synchronized_statement): Fold expression.
15889         (c_parser_objc_receiver): Fold expression.
15890         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
15891         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
15892         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
15893         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
15894         (struct c_typespec): Add elements expr and expr_const_operands.
15895         (struct c_declspecs): Add elements expr and expr_const_operands.
15896         (groktypename, build_conditional_expr, build_compound_literal):
15897         Update prototypes.
15898         (in_late_binary_op): Declare.
15899         * c-typeck.c (note_integer_operands): New function.
15900         (in_late_binary_op): New variable.
15901         (decl_constant_value_for_broken_optimization): Move to c-common.c
15902         and rename to decl_constant_value_for_optimization.
15903         (default_function_array_conversion): Do not strip nops.
15904         (default_conversion): Do not call
15905         decl_constant_value_for_broken_optimization.
15906         (build_array_ref): Do not fold result.
15907         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
15908         result when operand is a VLA.
15909         (c_expr_sizeof_type): Update call to groktypename.  Handle
15910         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
15911         result when operand names a VLA type.
15912         (build_function_call): Update call to build_compound_literal.
15913         Only fold result for calls to __builtin_* functions.  Strip
15914         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
15915         the function designator.
15916         (convert_arguments): Fold arguments.  Update call to
15917         convert_for_assignment.
15918         (build_unary_op): Handle increment and decrement of
15919         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
15920         decrement earlier.  Fold operand of increment and decrement.
15921         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
15922         built for integer operand.  Wrap returns that are INTEGER_CSTs
15923         without being integer constant expressions or that have integer
15924         constant operands without being INTEGER_CSTs.
15925         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
15926         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
15927         result is an integer constant expression or can be used in
15928         unevaluated parts of one and avoid folding and wrap as
15929         appropriate.  Fold operands before possibly doing -Wsign-compare
15930         warnings.
15931         (build_compound_expr): Wrap result for C99 if operands can be used
15932         in integer constant expressions.
15933         (build_c_cast): Update call to digest_init.  Do not ignore
15934         overflow from casting floating-point constants to integers.  Wrap
15935         results that could be confused with integer constant expressions,
15936         null pointer constants or floating-point constants.
15937         (c_cast_expr): Update call to groktypename.  Handle expressions
15938         included in type name.
15939         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
15940         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
15941         Update calls to convert_for_assignment.
15942         (convert_for_assignment): Take new parameter
15943         null_pointer_constant.  Do not strip nops or call
15944         decl_constant_value_for_broken_optimization.  Set
15945         in_late_binary_op for conversions to boolean.
15946         (store_init_value): Update call to digest_init.
15947         (digest_init): Take new parameter null_pointer_constant.  Do not
15948         call decl_constant_value_for_broken_optimization.  pedwarn for
15949         initializers not constant expressions.  Update calls to
15950         convert_for_assignment.
15951         (constructor_nonconst): New.
15952         (struct constructor_stack): Add nonconst element.
15953         (really_start_incremental_init, push_init_level, pop_init_level):
15954         Handle constructor_nonconst and nonconst element.
15955         (set_init_index): Call constant_expression_warning for array
15956         designators.
15957         (output_init_element): Fold value.  Set constructor_nonconst as
15958         applicable.  pedwarn for initializers not constant expressions.
15959         Update call to digest_init.  Call constant_expression_warning
15960         where constant initializers are required.
15961         (process_init_element): Use c_save_expr.
15962         (c_finish_goto_ptr): Fold expression.
15963         (c_finish_return): Fold return value.  Update call to
15964         convert_for_assignment.
15965         (c_start_case): Fold switch expression.
15966         (c_process_expr_stmt): Fold expression.
15967         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
15968         ensure statement expression is not evaluated in constant expression.
15969         (build_binary_op): Track whether results are integer constant
15970         expressions or may occur in such, disable folding and wrap results
15971         as applicable.  Fold operands for -Wsign-compare warnings unless
15972         in_late_binary_op.
15973         (c_objc_common_truthvalue_conversion): Handle results folded to
15974         integer constants that are not integer constant expressions.
15975         * doc/extend.texi: Document when typeof operands are evaluated,
15976         that condition of __builtin_choose_expr is an integer constant
15977         expression, and more about use of __builtin_constant_p in
15978         initializers.
15979
15980 2009-03-29  Richard Guenther  <rguenther@suse.de>
15981
15982         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
15983         propagate addresses of array references.
15984
15985 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
15986
15987         * regmove.c (perhaps_ends_bb_p): Remove.
15988         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
15989         from INSN and check that the main loop stays within that basic block.
15990         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
15991         (regmove_forward_pass): Split out from regmove_optimize.  Use
15992         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
15993         (regmove_backward_pass): Split out from regmove_optimize.  Use
15994         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
15995         (regmove_optimize): Simplify.
15996
15997 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
15998
15999         PR target/39545
16000         * config/i386/i386.c (classify_argument): Ignore flexible array
16001         member in struct and warn ABI change.
16002
16003 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
16004
16005         * config/i386/i386-protos.h (ix86_agi_dependent): New.
16006
16007         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
16008         (ix86_adjust_cost): Updated.
16009
16010 2009-03-29  Jan Hubicka  <jh@suse.cz>
16011
16012         PR middle-end/28850
16013         * tree-pass.h (pass_cleanup_eh): New function.
16014         (remove_unreachable_regions): Break code handling RTL
16015         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
16016         that can not be reached by runtime.
16017         (can_be_reached_by_runtime): New function.
16018         (label_to_region_map): New function.
16019         (num_eh_regions): New function.
16020         (rtl_remove_unreachable_regions): New function.
16021         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
16022         (remove_eh_region): New function.
16023         * except.h: Include sbitmap and vecprim.
16024         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
16025         num_eh_regions): Declare.
16026         * passes.c (init_optimization_passes): Schedule cleanup_eh.
16027         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
16028         * tree-eh.c (tree_remove_unreachable_handlers): New function.
16029         (tree_empty_eh_handler_p): New function.
16030         (cleanup_empty_eh): New function.
16031         (cleanup_eh): New function.
16032         (pass_cleanup_eh): New function.
16033
16034 2009-03-29  Jan Hubicka  <jh@suse.cz>
16035
16036         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
16037         for removed regions.
16038
16039 2009-03-29  Jan Hubicka  <jh@suse.cz>
16040
16041         * except.c (dump_eh_tree): Dump all datastructures.
16042
16043 2009-03-29  Jan Hubicka  <jh@suse.cz>
16044
16045         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
16046         (duplicate_eh_regions_1): Likewise.
16047         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
16048         vector; call EH verification.
16049         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
16050         Be ready for region being removed.
16051
16052 2009-03-29  Jan Hubicka  <jh@suse.cz>
16053
16054         * bitmap.c (bitmap_last_set_bit): New function.
16055         * bitmap.h (bitmap_last_set_bit): Declare.
16056
16057 2009-03-29  David Ayers  <ayers@fsfe.org>
16058
16059         PR objc/27377
16060         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
16061         by calling objc_compare_types and surpress warnings about
16062         incompatible C pointers that are compatible ObjC pointers.
16063
16064 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
16065
16066         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
16067         call initialize_inline_failed.
16068         (initialize_inline_failed): Move it from here ...
16069         * cgraph.c (initialize_inline_failed): ... to here.
16070         (cgraph_create_edge): Call initialize_inline_failed rather than
16071         setting inline_failed directly.
16072
16073 2009-03-29  Ben Elliston  <bje@au.ibm.com>
16074
16075         PR target/32542
16076         * sysv4.opt (msdata): Improve comment.
16077         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
16078         * sysv4.h (SVR4_ASM_SPEC): Likewise.
16079
16080 2009-03-29  Ben Elliston  <bje@au.ibm.com>
16081
16082         PR target/30451
16083         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
16084         load and store attributes.
16085
16086 2009-03-29  Ben Elliston  <bje@au.ibm.com>
16087
16088         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
16089         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
16090         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
16091         * doc/extend.texi (X86 Built-in Functions): Add index entries for
16092         __builtin_infq and __builtin_huge_valq.
16093
16094 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
16095
16096         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
16097         atmega8m1 devices.
16098         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
16099         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
16100
16101 2009-03-28  Xinliang David Li  <davidxl@google.com>
16102
16103         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
16104         (do_dbg_cnt): New function.
16105
16106 2009-03-28  Jan Hubicka  <jh@suse.cz>
16107
16108         Merge from pretty-ipa:
16109
16110         2009-03-27  Jan Hubicka  <jh@suse.cz>
16111
16112         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
16113         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
16114         * passes.c (function_called_by_processed_nodes_p): New.
16115         * ipa-pure-const.c (check_call): Fix handling of operands.
16116         (analyze_function): Dump debug output for skipped bodies.
16117         (local_pure_const): Use function_called_by_processed_nodes_p.
16118         * dwarf2out.c (reference_to_unused): Use output.
16119         * passes.c (do_per_function_toporder): Likewise.
16120
16121         2008-11-12  Jan Hubicka  <jh@suse.cz>
16122
16123         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
16124         * ipa-pure-const.c (funct_state_d): Add can throw field; make
16125         state_set_in_source enum
16126         (check_decl): Ignore memory tags; do not set fake looping flags;
16127         dump diagnostics.
16128         (check_operand, check_tree, check_rhs_var, check_lhs_var,
16129         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
16130         (check_call, analyze_function): Rewrite.
16131         (check_stmt): New.
16132         (add_new_function): Update call of analyze_function.
16133         (generate_summary): Add call of analyze_function.
16134         (propagate): Propagate can_throw; handle state_set_in_source correctly.
16135         (local_pure_const): New function.
16136         (pass_local_pure_const): New pass.
16137         * ipa-inline.c (inline_transform): Set after_inlining.
16138         * tree-eh.c (stmt_can_throw_external): New.
16139         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
16140         work with aliasing built.
16141         * tree-flow.h (stmt_can_throw_external): New.
16142         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
16143         and local pure/const pass in early and late optimization queue.
16144
16145 2009-03-28  Martin Jambor  <mjambor@suse.cz>
16146
16147         * fold-const.c (get_pointer_modulus_and_residue): New parameter
16148         allow_func_align.
16149         (fold_binary): Allow function decl aligment consideration is the
16150         second argument is integer constant one.
16151         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
16152         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
16153         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
16154
16155 2009-03-28  Jan Hubicka  <jh@suse.cz>
16156
16157         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
16158         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
16159         * function.h (rtl_data): Add nothrow flag.
16160         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
16161         set DECL_NOTHROW for AVAILABLE functions.
16162
16163 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
16164
16165         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
16166         following vector keyword has expansion starting with pixel or bool
16167         keyword, expand vector to __vector and pixel or bool to __pixel or
16168         __bool.
16169
16170         PR c++/39554
16171         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
16172         warn_if_disallowed_function_p): Removed.
16173         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
16174         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
16175         warning_if_disallowed_function_p.
16176         * flags.h (warn_if_disallowed_function_p,
16177         warn_disallowed_functions): Removed.
16178         * common.opt (Wdisallowed-function-list=): Removed.
16179         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
16180
16181 2009-03-28  Richard Guenther  <rguenther@suse.de>
16182
16183         PR tree-optimization/38723
16184         * tree-ssa-pre.c (compute_avail): Add all default definitions to
16185         the entry block.
16186
16187 2009-03-28  Jan Hubicka  <jh@suse.cz>
16188
16189         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
16190         test introduced by my previous patch.
16191
16192 2009-03-28  Richard Guenther  <rguenther@suse.de>
16193
16194         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
16195         the PHIs value undefined.
16196
16197 2009-03-28  Jan Hubicka  <jh@suse.cz>
16198
16199         * tree-pass.h (pass_fixup_cfg): New pass.
16200         * ipa-inline.c (inline_transform): Set
16201         always_inline_functions_inlined/after_inlining.
16202         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
16203         (pass_fixup_cfg): New pass.
16204         * passes.c (init_optimization_passes): Add fixup_cfg.
16205
16206 2009-03-28  Richard Guenther  <rguenther@suse.de>
16207
16208         PR tree-optimization/38458
16209         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
16210         argument use the arguments copy-of value.
16211
16212 2009-03-28  Richard Guenther  <rguenther@suse.de>
16213
16214         PR tree-optimization/38180
16215         * tree-ssa-ccp.c (get_default_value): Simplify.
16216         (likely_value): Likewise.
16217         (surely_varying_stmt_p): Properly handle VOP case.
16218         (ccp_initialize): Likewise.
16219         (ccp_fold): Handle propagating through *&.
16220         (fold_const_aggregate_ref): Also handle decls.
16221
16222 2009-03-28  Jan Hubicka  <jh@suse.cz>
16223
16224         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
16225         * cgraph.h (cgraph_node): Likewise.
16226         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
16227         (cgraph_reset_node): Use process flag.
16228         (cgraph_mark_functions_to_output): Likewise.
16229         (cgraph_expand_function): Likewise.
16230         (cgraph_expand_all_functions): Likewise.
16231         (cgraph_output_in_order): Likewise.
16232         * dwarf2out.c (reference_to_unused): Likewise.
16233         * passes.c do_per_function_toporder): Likewise.
16234
16235 2009-03-28  Jan Hubicka  <jh@suse.cz>
16236
16237         Bring from lto-branch:
16238
16239         2008-09-03  Doug Kwan  <dougkwan@google.com>
16240
16241         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
16242         enums instead of reason strings.
16243         * cgraph.c (cgraph_create_edge): Same.
16244         (cgraph_inline_failed_string): New function.
16245         * cgraph.h (cgraph_inline_failed_t): New enum type.
16246         (cgraph_inline_failed_string): New prototype.
16247         (struct cgraph_edge): Change type of INLINED_FAILED from constant
16248         char pointer to cgraph_inline_failed_t.
16249         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
16250         (cgraph_default_inline_p): Ditto.
16251         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
16252         to cgraph_inline_failed_t pointer.
16253         * cif-code.def: New file.
16254         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
16255         reason string.
16256         (cgraph_check_inline_limits): Change type of REASON to pointer to
16257         cgraph_inline_failed_t.  Replace reason strings with enums.
16258         (cgraph_default_inline_p): Ditto.
16259         (cgraph_recursive_inlining_p): Ditto.
16260         (update_caller_keys): Change type of FAILED_REASON to
16261         cgraph_inline_failed_t.
16262         (cgraph_set_inline_failed): Change type of REASON to pointer to
16263         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
16264         convert enums to strings for text output.
16265         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
16266         to be of type cgraph_inline_failed_t.  Replace reason strings with
16267         enums.  Call cgraph_inline_failed_string to covert enums
16268         to strings for text output.
16269         (cgraph_decide_inlining): Replace reason strings with enums.
16270         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
16271         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
16272         for text output.
16273         * tree-inline.c (expand_call_inline): Change type of REASON
16274         to cgraph_inline_failed_t.  Replace reason strings with enums.
16275         Call cgraph_inline_failed_string for text output.
16276         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
16277         (cgraph.o): Ditto.
16278
16279 2009-03-28  Jan Hubicka  <jh@suse.cz>
16280
16281         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
16282         cgraph_clone_node): Remove master clone handling.
16283         (cgraph_is_master_clone, cgraph_master_clone): Remove.
16284         * cgraph.h (master_clone): Remove.
16285         (cgraph_is_master_clone, cgraph_master_clone): Remove.
16286         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
16287         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
16288
16289 2009-03-28  Jan Hubicka  <jh@suse.cz>
16290
16291         * cgraph.c (cgraph_function_body_availability): Functions declared
16292         inline are always safe to assume that it is not going to be replaced.
16293
16294 2009-03-28  Richard Guenther  <rguenther@suse.de>
16295
16296         PR tree-optimization/38513
16297         * tree-ssa-pre.c (eliminate): Remove redundant stores.
16298         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
16299         EXC_PTR_EXPR and FILTER_EXPR.
16300         (get_ref_from_reference_ops): Likewise.
16301
16302 2009-03-28  Richard Guenther  <rguenther@suse.de>
16303
16304         PR tree-optimization/38968
16305         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
16306         Use FLOOR_MOD_EXPR to compute misalignment.
16307
16308 2009-03-28  Richard Guenther  <rguenther@suse.de>
16309
16310         PR tree-optimization/37795
16311         * tree.h (combine_comparisons): Declare.
16312         * fold-const.c (combine_comparisons): Export.
16313         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
16314         comparisons.
16315         (ifcombine_iforif): Use combine_comparisons.
16316
16317 2009-03-28  Jan Hubicka  <jh@suse.cz>
16318
16319         * tree-eh.c (inlinable_call_p): New function.
16320         (make_eh_edges): Use it.
16321         (verify_eh_edges): Use it.
16322         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
16323         * except.c (reachable_next_level): Add inlinable_function argument
16324         (sjlj_find_directly_reachable_regions): Update.
16325         (add_reachable_handler): Do not set saw_any_handlers.
16326         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
16327         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
16328         Add new inlinable call parameter.
16329         (can_throw_internal, can_throw_external): Update.
16330         * except.h (can_throw_internal_1, can_throw_external_1,
16331         foreach_reachable_handler): Update declaration.
16332
16333 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
16334
16335         * config/arm/t-arm-coff, config/h8300/coff.h,
16336         config/i386/i386-aout.h, config/i386/i386-coff.h,
16337         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
16338         config/pdp11/2bsd.h, config/rs6000/aix41.h,
16339         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
16340         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
16341         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
16342         sys-types.h: Remove.
16343         * Makefile.in: Remove protoize and fixproto support and references
16344         in comments.
16345         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
16346         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
16347         Remove.
16348         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
16349         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
16350         unprotoize$(exeext).
16351         (rest.encap): Don't depend on $(STMP_FIXPROTO)
16352         (.PHONY): Don't depend on proto.
16353         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
16354         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
16355         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
16356         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
16357         build/gen-protos.o, build/scan.o, xsys-protos.h,
16358         build/fix-header$(build_exeext), build/fix-header.o,
16359         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
16360         stmp-install-fixproto): Remove.
16361         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
16362         SYSCALLS.c or fixproto files.
16363         (install-common): Don't install protoize.
16364         (install-headers-tar, install-headers-cpio, install-headers-cp):
16365         Don't depend on $(STMP_FIXPROTO).
16366         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
16367         install fixproto files or write out fixproto settings.
16368         (uninstall): Don't uninstall protoize.
16369         * config.gcc (use_fixproto): Remove.
16370         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
16371         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
16372         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
16373         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
16374         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
16375         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
16376         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
16377         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
16378         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
16379         * config/t-vxworks (STMP_FIXPROTO): Remove.
16380         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
16381         STMP_FIXPROTO): Remove.
16382         * config.in, configure: Regenerate.
16383         * crtstuff.c (gid_t, uid_t): Don't undefine.
16384         * doc/install.texi: Change m68k-coff to m68k-elf in example.
16385         (arm-*-coff, arm-*-aout: Remove target entries.
16386         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
16387         Remove mention of AIX 4.1.
16388         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
16389         * doc/invoke.texi (Running Protoize): Remove.
16390         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
16391         (Protoize Caveats): Remove.
16392         * tsystem.h: Update comments on headers assumed to exist.
16393
16394 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
16395
16396         * genautomata.c: Add a new year to the copyright.  Add a new
16397         reference.
16398         (struct insn_reserv_decl): Add comments for member bypass_list.
16399         (find_bypass): Remove.
16400         (insert_bypass): New.
16401         (process_decls): Use insert_bypass.
16402         (output_internal_insn_latency_func): Output all bypasses with the
16403         same input insn in one switch case.
16404
16405         * rtl.def (define_bypass): Describe bypass choice.
16406         * doc/md.texi (define_bypass): Ditto.
16407
16408 2009-03-27  Richard Guenther  <rguenther@suse.de>
16409
16410         * gimplify.c (mark_addressable): Export.
16411         * tree-flow.h (mark_addressable): Declare.
16412         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
16413         * tree-ssa.c (verify_phi_args): Verify that address taken
16414         variables have TREE_ADDRESSABLE set.
16415
16416 2009-03-27  Richard Guenther  <rguenther@suse.de>
16417
16418         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
16419         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
16420         Do not mark decls TREE_ADDRESSABLE.
16421         (build_fold_addr_expr): Adjust.
16422         (fold_addr_expr): Remove.
16423         (fold_unary): Use build_fold_addr_expr.
16424         (fold_comparison): Likewise.
16425         (split_address_to_core_and_offset): Likewise.
16426         * coverage.c (tree_coverage_counter_addr): Mark the array decl
16427         TREE_ADDRESSABLE.
16428         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
16429         (gimplify_modify_expr_to_memcpy): Mark source and destination
16430         addressable.
16431         * omp-low.c (create_omp_child_function): Mark the object decl
16432         TREE_ADDRESSABLE.
16433         (lower_rec_input_clauses): Mark the var we take the address of
16434         TREE_ADDRESSABLE.
16435         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
16436
16437 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16438
16439         PR middle-end/39315
16440         * cfgexpand.c (expand_one_stack_var_at): Change alignment
16441         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
16442
16443 2009-03-27  Richard Guenther  <rguenther@suse.de>
16444
16445         PR tree-optimization/39120
16446         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
16447         constraints.
16448         (handle_lhs_call): Process return constraints.  Add escape
16449         constraints if necessary.
16450         (handle_const_call): Fill out return constraints.  Make nested
16451         case more precise.  Avoid consttmp if possible.
16452         (handle_pure_call): Fill out return constraints.  Avoid
16453         callused if possible.
16454         (find_func_aliases): Simplify call handling.
16455
16456 2009-03-27  Richard Guenther  <rguenther@suse.de>
16457
16458         PR tree-optimization/39120
16459         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
16460         as a representative.
16461         (solve_graph): Do propagate CALLUSED.
16462         (handle_pure_call): Use a scalar constraint from CALLUSED for
16463         the return value.
16464         (find_what_p_points_to): CALLUSED shall not appear in poins-to
16465         solutions.
16466
16467 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16468
16469         PR c/39323
16470         * c-common.c (handle_aligned_attribute): Properly check alignment
16471         overflow.  Use (1U << i) instead of (1 << i).
16472
16473         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
16474
16475         * expr.h (get_mem_align_offset): Updated.
16476
16477         * tree.h (tree_decl_common): Change align to "unsigned int" and
16478         move it before pointer_alias_set.
16479
16480 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16481             Jakub Jelinek  <jakub@redhat.com>
16482
16483         PR target/38034
16484         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
16485         gr_register_operand with gr_reg_or_0_operand.
16486         (cmpxchg_rel_di): Likewise.
16487         (sync_lock_test_and_set<mode>): Likewise.
16488
16489 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16490
16491         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
16492         (true_regnum): Likewise.
16493
16494         * rtlanal.c (subreg_info): Moved to ...
16495         * rtl.h (subreg_info): Here.  New.
16496         (subreg_get_info): New.
16497
16498         * rtlanal.c (subreg_get_info): Make it extern.
16499
16500 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16501
16502         PR target/39472
16503         * config/i386/i386.c (ix86_abi): New.
16504         (override_options): Handle -mabi=.
16505         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
16506         (ix86_call_abi_override): Likewise.
16507         (init_cumulative_args): Likewise.
16508         (function_arg_advance): Likewise.
16509         (function_arg_64): Likewise.
16510         (function_arg): Likewise.
16511         (ix86_pass_by_reference): Likewise.
16512         (ix86_function_value_regno_p): Likewise.
16513         (ix86_build_builtin_va_list_abi): Likewise.
16514         (setup_incoming_varargs_64): Likewise.
16515         (is_va_list_char_pointer): Likewise.
16516         (ix86_init_machine_status): Likewise.
16517         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
16518         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
16519         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
16520         (ix86_function_abi): Make it static and return enum calling_abi.
16521         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
16522         with ix86_abi.
16523         (ix86_fn_abi_va_list): Updated.
16524
16525         * config/i386/i386.h (ix86_abi): New.
16526         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
16527         (CONDITIONAL_REGISTER_USAGE): Likewise.
16528         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
16529         (machine_function): Likewise.
16530
16531         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
16532         with ix86_abi.
16533         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
16534         (STACK_BOUNDARY): Likewise.
16535         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
16536
16537         * config/i386/i386.opt (mabi=): New.
16538
16539         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
16540         return enum calling_abi.
16541         (ix86_function_type_abi): Likewise.
16542         (ix86_function_abi): Removed.
16543
16544         * doc/invoke.texi: Document -mabi= option for x86.
16545
16546 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16547
16548         * builtins.c (real_dconstp): Delete.
16549         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
16550
16551 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
16552             Jakub Jelinek  <jakub@redhat.com>
16553
16554         PR debug/37959
16555         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
16556         (gen_subprogram_die): When a function is explicit, generate the
16557         DW_AT_explicit attribute.
16558         * langhooks.h (struct lang_hooks_for_decls): Add
16559         function_decl_explicit_p langhook.
16560         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
16561         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
16562
16563 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
16564
16565         * builtins.c (fold_builtin_memory_op): Optimize memmove
16566         into memcpy if we can prove source and destination don't overlap.
16567
16568         * tree-inline.c: Include gt-tree-inline.h.
16569         (clone_fn_id_num): New variable.
16570         (clone_function_name): New function.
16571         (tree_function_versioning): Use it.
16572         * Makefile.in (GTFILES): Add tree-inline.c.
16573
16574 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
16575
16576         * BASE-VER: Change to 4.5.0.
16577
16578 2009-03-27  Xinliang David Li  <davidxl@google.com>
16579
16580         PR tree-optimization/39557
16581         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
16582
16583 2009-03-27  Xinliang David Li  <davidxl@google.com>
16584
16585         PR tree-optimization/39548
16586         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
16587         candidate check.
16588
16589 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16590
16591         * c-common.c (pointer_int_sum): Use %wd on return from
16592         tree_low_cst.
16593
16594 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16595
16596         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
16597         on return from tree_low_cst.
16598
16599 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16600
16601         PR c++/36799
16602         * ginclude/stdarg.h (va_copy): Define also for
16603         __GXX_EXPERIMENTAL_CXX0X__.
16604
16605 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16606
16607         PR c++/35652
16608         * builtins.h (c_strlen): Do not warn here.
16609         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
16610         * c-common.c (pointer_int_sum): Take an explicit location.
16611         Warn about offsets out of bounds.
16612         * c-common.h (pointer_int_sum): Adjust declaration.
16613
16614 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16615
16616         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
16617         markup glitch.
16618
16619 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
16620
16621         PR c++/39554
16622         * opts.c (warn_if_disallowed_function_p): Don't assume
16623         get_callee_fndecl must return non-NULL.
16624
16625 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
16626
16627         PR rtl-optimization/39522
16628         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
16629         when reg_reloaded_valid is set.
16630
16631 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
16632
16633         * config/spu/divv2df3.c: New file.
16634         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
16635         (DPBIT_FUNCS): Filter out _div_df.
16636
16637 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
16638
16639         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
16640         a jump insn, count that jump in the distance to the loop start.
16641
16642 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
16643
16644         PR target/39523
16645         * config/sh/sh.c (calc_live_regs): Fix condition for global
16646         registers except PIC_OFFSET_TABLE_REGNUM.
16647
16648 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
16649
16650         PR/39518
16651         * doc/invoke.texi (-mconsole): New.
16652         (-mcygwin): New.
16653         (-mno-cygwin): New.
16654         (-mdll): New.
16655         (-mnop-fun-dllimport): New.
16656         (-mthread): New.
16657         (-mwin32): New.
16658         (-mwindows): New.
16659         (sub section "i386 and x86-64 Windows Options"): New.
16660
16661 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
16662
16663         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
16664         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
16665
16666 2009-03-25  Richard Guenther  <rguenther@suse.de>
16667
16668         PR middle-end/39497
16669         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
16670         of -Wno-error.
16671
16672 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
16673
16674         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
16675         neither of haifa/selective schedulers are working.
16676
16677 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16678
16679         * doc/invoke.texi (Debugging Options): Fix description of
16680         -fno-merge-debug-strings.
16681
16682 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
16683
16684         * config/cris/libgcc.ver: New version-script.
16685         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
16686
16687         * configure.ac <GAS features, nop mnemonic>: Add pattern
16688         crisv32-*-* for "nop".
16689         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
16690         * configure: Regenerate.
16691
16692 2009-03-24  Ira Rosen  <irar@il.ibm.com>
16693
16694         PR tree-optimization/39529
16695         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
16696         mark_sym_for_renaming for the tag copied to the new vector
16697         pointer.
16698
16699 2009-03-24  Arthur Loiret  <aloiret@debian.org>
16700
16701         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
16702         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
16703         EXTRA_SPEC_FUNCTIONS.
16704         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
16705         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
16706         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
16707         -march and -mtune options.
16708
16709 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
16710
16711         * config/m68k/t-rtems: Add m5329 multilib.
16712
16713 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
16714             Jakub Jelinek  <jakub@redhat.com>
16715
16716         PR debug/39524
16717         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
16718         nodes.
16719
16720 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
16721
16722         PR c/39495
16723         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
16724         instead of c_parser_expression_conv, if original_code isn't one of the
16725         4 allowed comparison codes, fail.
16726
16727 2009-03-23  Richard Guenther  <rguenther@suse.de>
16728
16729         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
16730         * tree.h (struct tree_type): Likewise.
16731         * reload.h (struct insn_chain): Likewise.
16732         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
16733         * function.h (struct function): Likewise.
16734         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
16735
16736 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
16737
16738         PR tree-optimization/39516
16739         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
16740
16741 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
16742
16743         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
16744         should be set true if BITS_PER_WORD of target is bigger than 32
16745
16746 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
16747
16748         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
16749         Translate -B-options to -rpath-link.  Correct existing
16750         rpath-link and conditionalize on !nostdlib.
16751
16752 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16753
16754         * doc/extend.texi (Function Attributes, Variable Attributes):
16755         Fix typos.
16756         * doc/invoke.texi (Debugging Options, Optimize Options)
16757         (i386 and x86-64 Options, MCore Options): Likewise.
16758
16759 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
16760
16761         PR debug/37890
16762         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
16763         it for block local namespace aliases.
16764         (gen_decl_die): Pass context_die to gen_namespace_die.
16765
16766 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
16767
16768         PR c/39495
16769         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
16770         minimum or maximum value.
16771
16772 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
16773
16774         * reginfo.c (globalize_reg): Recompute derived reg sets.
16775
16776 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
16777
16778         PR target/39063
16779         * libgcc2.c (mprotect): Do not use signed arguments for
16780         VirtualProtect, use DWORD arguments.  Also fix the 'may
16781         be used uninitialized' warning for the np variable.
16782
16783 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
16784
16785         PR target/39496
16786         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
16787         functions using regparm calling conventions when not optimizing.
16788         (ix86_function_sseregparm): Similarly for sseregparm calling
16789         conventions.
16790
16791 2009-03-19  Li Feng  <nemokingdom@gmail.com>
16792
16793         PR middle-end/39500
16794         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
16795         dependence if the first conflict is after niter iterations.
16796
16797 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
16798
16799         PR middle-end/38609
16800         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
16801         functions with dynamic stack-pointer adjustments.
16802
16803 2009-03-19  Ben Elliston  <bje@au.ibm.com>
16804
16805         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
16806         option; change to -msdata=data.
16807
16808 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16809
16810         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
16811         and -fopenmp.
16812
16813 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
16814
16815         PR target/35180
16816         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
16817
16818 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
16819
16820         * doc/invoke.texi (Code Gen Options): Expand discussion of
16821         -fno-common.
16822
16823 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
16824
16825         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
16826         * matrix-reorg.c (struct matrix_info): Likewise.
16827         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
16828         * rtl.h (struct mem_attrs): Likewise.
16829         * df.h (struct df): Likewise.
16830         * tree-data-ref.h (struct data_dependence_relation): Likewise.
16831         * ira-int.h (struct ira_allocno): Likewise.
16832         * df-scan.c (struct df_collection_rec): Likewise.
16833         * ira.c (struct equivalence): Likewise.
16834         * function.c (struct temp_slot): Likewise.
16835         * cfgloop.h (struct loop): Likewise.
16836
16837         PR debug/39485
16838         * function.c (use_register_for_decl): When not optimizing, disregard
16839         register keyword for variables with types containing methods.
16840
16841 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
16842
16843         PR middle-end/39447
16844         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
16845         (is_simple_operand): Call contains_component_ref_p before calling data
16846         reference analysis that would fail on COMPONENT_REFs.
16847
16848         * tree-vrp.c (search_for_addr_array): Fix formatting.
16849
16850 2009-03-18  Richard Guenther  <rguenther@suse.de>
16851
16852         * tree-vect-transform.c (vect_loop_versioning): Fold the
16853         generated comparisons.
16854         * tree-vectorizer.c (set_prologue_iterations): Likewise.
16855         (slpeel_tree_peel_loop_to_edge): Likewise.
16856
16857 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16858
16859         PR middle-end/37805
16860         * opts.c (print_specific_help): In addition to `undocumented',
16861         accept `separate' and `joined' flags if passed alone.  Describe
16862         output by the first matched one of those.
16863         (common_handle_option): Skip over empty strings.
16864         * gcc.c (display_help): Fix help string for `--help='.
16865         * doc/invoke.texi (Option Summary, Overall Options): With
16866         `--help=', classes and qualifiers can both be repeated, but
16867         only the latter can be negated.  One should not pass only
16868         negated qualifiers.  Fix markup and examples.
16869
16870         Revert
16871         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
16872         PR middle-end/37805
16873         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
16874         and -fhelp=separate.
16875
16876 2009-03-17  Jing Yu  <jingyu@google.com>
16877
16878         PR middle-end/39378
16879         * function.h (struct rtl_data): Move is_thunk from here...
16880         (struct function): ...to here.
16881         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
16882         * varasm.c (assemble_start_function): Change is_thunk from crtl to
16883         cfun.
16884         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
16885         cfun.
16886         (alpha_does_function_need_gp, alpha_start_function): Likewise.
16887         (alpha_output_function_end_prologue): Likewise.
16888         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
16889         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
16890         (rs6000_output_function_epilogue): Likewise.
16891         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
16892
16893 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
16894
16895         PR target/39482
16896         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
16897         from different units in a single alternative.
16898         (*truncdfsf_i387): Ditto.
16899         (*truncxfsf2_mixed): Ditto.
16900         (*truncxfdf2_mixed): Ditto.
16901
16902 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
16903
16904         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
16905         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
16906
16907         PR debug/39474
16908         * tree-ssa-live.c (remove_unused_locals): Don't remove local
16909         unused non-artificial variables when not optimizing.
16910
16911         PR debug/39471
16912         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
16913         DW_TAG_imported_module even if decl is IMPORTED_DECL with
16914         NAMESPACE_DECL in its DECL_INITIAL.
16915
16916         PR middle-end/39443
16917         * optabs.c (set_user_assembler_libfunc): New function.
16918         * expr.h (set_user_assembler_libfunc): New prototype.
16919         * c-common.c: Include libfuncs.h.
16920         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
16921         for memcmp, memset, memcpy, memmove and abort.
16922         * Makefile.in (c-common.o): Depend on libfuncs.h.
16923
16924         PR debug/39412
16925         * dwarf2out.c (gen_inlined_enumeration_type_die,
16926         gen_inlined_structure_type_die, gen_inlined_union_type_die,
16927         gen_tagged_type_instantiation_die): Removed.
16928         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
16929         do nothing.
16930
16931 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
16932
16933         PR testsuite/38526
16934         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
16935         its use.
16936         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
16937         (check-parallel-%): Ditto.
16938         (check-consistency): Ditto.
16939
16940 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
16941
16942         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
16943         local variable rhs by NULL_TREE.
16944
16945 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
16946
16947         PR target/39477
16948         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
16949
16950 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
16951
16952         PR target/39476
16953         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
16954
16955 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
16956
16957         PR target/39473
16958         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
16959         for ms->sysv ABI calls only in 64bit mode.
16960
16961         * config/i386/i386.md (untyped_call): Support 32bit.
16962
16963 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
16964
16965         * doc/extend.texi: Replace x86_65 with x86_64.
16966
16967 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
16968
16969         PR tree-optimization/39455
16970         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
16971         mismatches for POINTER_TYPE_P (type).
16972         (number_of_iterations_le): Likewise.
16973
16974 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
16975
16976         * config/picochip/picochip.c: Removed profiling support.
16977         * config/picochip/picochip.md: Removed profiling instruction.
16978         * config/picochip/picochip.h: Removed profiling builtin.
16979
16980 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
16981
16982         * doc/install.texi (--with-host-libstdcxx): Document.
16983
16984 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
16985
16986         PR target/34299
16987         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
16988         generate a warning if the function name does not begin with
16989         "__vector" and the function has either the 'signal' or 'interrupt'
16990         attribute, from here to ...
16991         (avr_declare_function_name): ...here. New function.
16992         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
16993         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
16994
16995 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
16996
16997         PR bootstrap/39454
16998         * cse.c (fold_rtx): Don't modify original const_arg1 when
16999         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
17000         separate variable instead.
17001         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
17002         from out of range shift counts.
17003         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
17004
17005 2009-03-13  Catherine Moore  <clm@codesourcery.com>
17006
17007         * config/i386/x-mingw32 (host-mingw32.o): Replace
17008         diagnostic.h with $(DIAGNOSTIC_H).
17009
17010 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
17011
17012         PR target/39431
17013         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
17014         predicate.
17015         * config/i386/sync.md (sync_compare_and_swap<mode>,
17016         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
17017         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
17018         into a register.
17019         (sync_double_compare_and_swapdi_pic,
17020         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
17021         cmpxchg8b_pic_memory_operand instead of just memory_operand.
17022
17023 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
17024
17025         PR target/39445
17026         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
17027
17028 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
17029
17030         PR target/39327
17031         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
17032         (avx_addsubv4df3): Likewise.
17033         (*avx_addsubv4sf3): Likewise.
17034         (sse3_addsubv4sf3): Likewise.
17035
17036 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
17037
17038         PR target/38824
17039         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
17040
17041 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
17042
17043         PR debug/39432
17044         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
17045         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
17046         registers for allocnos created from user-defined variables.
17047
17048 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17049
17050         PR target/39181
17051         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
17052         of non-integer mode as well.
17053
17054 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
17055
17056         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
17057         for functions for which the parameter types are unknown.
17058
17059 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
17060
17061         PR target/39137
17062         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
17063         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
17064         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
17065         * config/i386/i386.c (ix86_local_alignment): For
17066         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
17067         long long variables on the stack to avoid dynamic realignment.
17068         Allow the first argument to be a decl rather than type.
17069         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
17070
17071 2009-03-11  Nick Clifton  <nickc@redhat.com>
17072
17073         PR target/5362
17074         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
17075         options.
17076         Add description to mno-lsim option.
17077         * config/mcore/mcore.h: Remove comment about deprecated m4align
17078         option.
17079         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
17080         * doc/invoke.texi: Add description of mno-lsim and
17081         mstack-increment options.
17082
17083         * config/fr30/fr30.opt: Document the -mno-lsim option.
17084         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
17085         and -mno-lsim options.
17086
17087 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17088
17089         * fold-const.c (fold_comparison): Only call fold_inf_compare
17090         if the mode supports infinities.
17091
17092 2009-03-11  Jason Merrill  <jason@redhat.com>
17093
17094         PR debug/39086
17095         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
17096         end already did.  Notice GIMPLE_CALL modifications of the result.
17097         Don't copy debug information from an ignored decl or a decl from
17098         another function.
17099
17100 2009-03-10  Richard Guenther  <rguenther@suse.de>
17101             Nathan Froyd  <froydnj@codesourcery.com>
17102
17103         PR middle-end/37850
17104         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
17105         (__divMODE3): Likewise.
17106
17107 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
17108
17109         PR tree-optimization/39394
17110         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
17111         DECL_SIZE_UNIT of variable length FIELD_DECLs.
17112
17113 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17114
17115         * recog.c (verfiy_changes): Disallow renaming of hard regs in
17116         inline asms for register asm ("") declarations.
17117
17118 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
17119
17120         * fold-const.c (fold_unary): Fix comment.
17121
17122 2009-03-07  Jan Hubicka  <jh@suse.cz>
17123
17124         PR target/39361
17125         * tree-inline.c (setup_one_parameter): Do replacement of const
17126         argument by constant in SSA form.
17127
17128 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17129
17130         PR middle-end/38028
17131         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
17132         determine alignment passed to assign_stack_local.
17133         (assign_parms_unsplit_complex): Likewise.
17134         * except.c (sjlj_build_landing_pads): Likewise.
17135
17136 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
17137
17138         PR middle-end/39360
17139         * tree-flow.h (add_referenced_var): Return bool instead of void.
17140         * tree-dfa.c (add_referenced_var): Return result of
17141         referenced_var_check_and_insert call.
17142         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
17143         of referenced_var_check_and_insert.
17144
17145         PR debug/39372
17146         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
17147         (gen_variable_die): Emit DW_AT_location on abstract static variable's
17148         DIE, don't emit it if abstract origin already has it.
17149         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
17150         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
17151
17152 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
17153
17154         * genpreds.c (needs_variable): Fix parentheses at variable name
17155         detection.
17156         (write_tm_constrs_h): Indent generated code.
17157
17158 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17159
17160         * doc/extend.texi (Function Attributes): Add documentation
17161         for isr attributes.
17162
17163 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
17164
17165         PR debug/39387
17166         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
17167         take locus from its DECL_SOURCE_LOCATION instead of input_location.
17168
17169 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
17170
17171         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
17172         the loop as bad.
17173
17174 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
17175
17176         PR debug/39379
17177         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
17178         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
17179
17180 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
17181
17182         * config/i386/i386.md (R8_REG, R9_REG): New constants.
17183         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
17184         constants instead of magic numbers.
17185         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
17186         (QI_REG_P): Ditto.
17187         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
17188         (x86_64_ms_abi_int_parameter_registers): Ditto.
17189         (x86_64_int_return_registers): Ditto.
17190         (ix86_maybe_switch_abi): Ditto.
17191         (ix86_expand_call): Ditto for clobbered_registers array.
17192         (ix86_hard_regno_mode_ok): Ditto.
17193         (x86_extended_QIreg_mentioned_p): Ditto.
17194
17195 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
17196
17197         PR tree-optimization/39349
17198         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
17199
17200         * combine.c (gen_lowpart_for_combine): Use omode when generating
17201         clobber.
17202
17203 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
17204
17205         PR rtl-optimization/39235
17206         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
17207
17208 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
17209
17210         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
17211
17212 2009-03-04  Richard Guenther  <rguenther@suse.de>
17213
17214         PR tree-optimization/39362
17215         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
17216         that occur in abnormal PHIs should be varying.
17217
17218 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
17219
17220         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
17221         Extend comments.
17222         (simple_iv):  Take loop as an argument instead of statement.
17223         * tree-scalar-evolution.h (simple_iv): Declaration changed.
17224         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
17225         to simple_iv.
17226         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
17227         Ditto.
17228         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
17229         * matrix-reorg.c (analyze_transpose): Ditto.
17230         * tree-data-ref.c (dr_analyze_innermost): Ditto.
17231         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
17232         * tree-predcom.c (ref_at_iteration): Ditto.
17233         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
17234
17235 2009-03-04  Richard Guenther  <rguenther@suse.de>
17236
17237         PR tree-optimization/39358
17238         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
17239         escaped_id and callused_id.
17240         (solve_graph): Likewise.
17241
17242 2009-03-04  Richard Guenther  <rguenther@suse.de>
17243
17244         PR tree-optimization/39339
17245         * tree-sra.c (try_instantiate_multiple_fields): Make it
17246         no longer ICE on the above.
17247
17248 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
17249
17250         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
17251         that fits within Pmode.
17252
17253 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
17254
17255         PR middle-end/10109
17256         * tm.texi (LIBCALL_VALUE): Update description.
17257
17258 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
17259
17260         PR middle-end/34443
17261         * doc/extend.texi (section): Update description.
17262
17263 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
17264
17265         PR middle-end/39345
17266         * tree-inline.c (remapped_type): New.
17267         (can_be_nonlocal): Call remapped_type instead of remap_type.
17268
17269 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
17270
17271         PR fortran/39354
17272         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
17273         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
17274
17275 2009-03-03  Richard Guenther  <rguenther@suse.de>
17276
17277         PR middle-end/39272
17278         * tree.c (tree_nonartificial_location): New function.
17279         * tree.h (tree_nonartificial_location): Declare.
17280         * builtins.c (expand_builtin_memory_chk): Provide location
17281         of the call location for artificial function pieces.
17282         (maybe_emit_chk_warning): Likewise.
17283         (maybe_emit_sprintf_chk_warning): Likewise.
17284         (maybe_emit_free_warning): Likewise.
17285         * expr.c (expand_expr_real_1): Likewise.
17286
17287 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
17288
17289         PR tree-optimization/39343
17290         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
17291         COMPONENT_REF t has ARRAY_TYPE.
17292
17293 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
17294
17295         PR middle-end/39335
17296         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
17297         when the type precision of the induction variable should be
17298         larger than the type precision of nit.
17299         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
17300         * graphite.c (graphite_loop_normal_form): Same.
17301         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
17302
17303 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
17304
17305         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
17306         (*call_1_rex64_ms_sysv): Use named constants instead of magic
17307         numbers to describe clobbered registers.
17308         (*call_value_0_rex64_ms_sysv): Ditto.
17309         * config/i386/mmx.md (mmx_emms): Ditto.
17310         (mmx_femms): Ditto.
17311
17312 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
17313
17314         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
17315         of ABI_64.
17316
17317 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17318
17319         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
17320         (spu_section_type_flags): New function.
17321
17322 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
17323
17324         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
17325         reg_class_contents of FLOAT_REGS into a temporary.
17326
17327 2009-03-02  Richard Guenther  <rguenther@suse.de>
17328             Ira Rosen  <irar@il.ibm.com>
17329
17330         PR tree-optimization/39318
17331         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
17332         information to the vectorized statement.
17333
17334 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
17335
17336         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
17337         variable.  Use defined names instead of magic constants for REX SSE
17338         registers.
17339
17340 2009-03-01  Richard Guenther  <rguenther@suse.de>
17341
17342         PR tree-optimization/39331
17343         * omp-low.c (lower_send_shared_vars): Do not receive new
17344         values for the reference of DECL_BY_REFERENCE parms or results.
17345
17346 2009-03-01  Jan Hubicka  <jh@suse.cz>
17347
17348         PR debug/39267
17349         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
17350         BLOCK_NONLOCALIZED_VAR): New macros.
17351         (tree_block): Add nonlocalized_vars.
17352         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
17353         gen_decl_die): Add origin argument.  Allow generation of die with
17354         origin at hand only.
17355         (gen_member_die, gen_type_die_with_usage, force_decl_die,
17356         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
17357         of gen_*.
17358         (gen_block_die): Fix checking for unused blocks.
17359         (process_scope_var): Break out from .... ; work with origins only.
17360         (decls_for_scope) ... here; process nonlocalized list.
17361         (dwarf2out_ignore_block): Look for nonlocalized vars.
17362         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
17363         vars.
17364         (dump_scope_block): Dump them.
17365         * tree-inline.c (remap_decls): Handle nonlocalized vars.
17366         (remap_block): Likewise.
17367         (can_be_nonlocal): New predicate.
17368         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
17369
17370 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17371
17372         * configure: Regenerate.
17373
17374 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17375
17376         * optc-gen.awk: No need to duplicate option flags twice.
17377         Reuse help texts for duplicate options which do not have any.
17378
17379         * gcc.c (display_help): Document --version.
17380
17381         * gcc.c (main): If print_help_list and verbose_flag, ensure
17382         driver output comes before subprocess output.
17383
17384         * optc-gen.awk: Assign all remaining fields to help string,
17385         space-separated, for multi-line help in *.opt.
17386
17387         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
17388         -Wno-pedantic-ms-format is for MinGW targets only.
17389
17390         * doc/options.texi (Option file format): Fix bad indentation,
17391         restoring dropped sentence.
17392
17393 2009-02-28  Jan Hubicka  <jh@suse.cz>
17394
17395         * tree-inline.c (tree_function_versioning): Output debug info.
17396
17397 2009-02-28  Jan Hubicka  <jh@suse.cz>
17398
17399         PR debug/39267
17400         * tree-inline.c (setup_one_parameter): Do not copy propagate
17401         arguments when not optimizing.
17402
17403 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
17404
17405         PR target/39327
17406         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
17407         (avx_addsubv4df3): Likewise.
17408         (*avx_addsubv4sf3): Likewise.
17409         (sse3_addsubv4sf3): Likewise.
17410         (*avx_addsubv2df3): Likewise.
17411         (sse3_addsubv2df3): Likewise.
17412         (avx_unpckhps256): Correct item selectors.
17413         (avx_unpcklps256): Likewise.
17414         (avx_unpckhpd256): Likewise.
17415         (avx_unpcklpd256): Likewise.
17416
17417 2009-02-28  Jan Hubicka  <jh@suse.cz>
17418
17419         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
17420         static vars.
17421         (copy_arguments_for_versioning): If var is declared don't declare it.
17422         (tree_function_versioning): First setup substitutions and then copy
17423         args.
17424
17425 2009-02-27  Jan Hubicka  <jh@suse.cz>
17426
17427         PR debug/39267
17428         * cgraph.h (varpool_output_debug_info): Remove.
17429         * cgraphunit.c (varpool_output_debug_info): Remove.
17430         * dwarf2out.c (deferred_locations_struct): New struct
17431         (deferred_locations): New type.
17432         (deferred_locations_list): New static var.
17433         (deffer_location): New function.
17434         (gen_variable_die): Use it.
17435         (decls_for_scope): Output info on local static vars.
17436         (dwarf2out_finish): Process deferred locations.
17437         * varpool.c (varpool_output_debug_info): Remove.
17438
17439 2009-02-27  Jan Hubicka  <jh@suse.cz>
17440
17441         PR debug/39267
17442         * tree.h (TREE_PROTECTED): Fix comment.
17443         (BLOCK_HANDLER_BLOCK): Remove.
17444         (struct tree_block): Remove handler_block add body_block.
17445         (inlined_function_outer_scope_p): New.
17446         (is_body_block): Remove.
17447         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
17448         * dwarf2out.c (is_inlined_entry_point): Remove.
17449         (add_high_low_attributes): Use inlined_function_outer_scope_p.
17450         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
17451         code.
17452         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
17453         * gimplify.c (gimplify_expr): Gimplify body blocks.
17454         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
17455         block with multiple subblocks.
17456         (dump_scope_block): Prettier output; dump more flags and info.
17457         (dump_scope_blocks): New.
17458         (remove_unused_locals): Use dump_scope_blocks.
17459         * tree-flow.h (dump_scope_blocks): Declare.
17460         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
17461         * stmt.c (is_body_block): Remove.
17462         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
17463         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
17464
17465 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
17466
17467         PR middle-end/39308
17468         * graphite.c (graphite_loop_normal_form): Do not call
17469         number_of_iterations_exit from a gcc_assert.
17470
17471 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17472
17473         * config/s390/s390.c (s390_swap_cmp): Look for conditional
17474         jumps if COND is NULL.
17475         (find_cond_jump): New function.
17476         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
17477         * config/s390/s390.md: Remove z10_cobra attribute value.
17478
17479 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
17480
17481         * config/alpha/alpha.h (alpha_expand_mov): Return false if
17482         force_const_mem returns NULL_RTX.
17483
17484 2009-02-26  Jan Hubicka  <jh@suse.cz>
17485
17486         PR debug/39267
17487         * cgraph.h (varpool_output_debug_info): Remove.
17488         * cgraphunit.c (varpool_output_debug_info): Remove.
17489         * dwarf2out.c (deferred_locations_struct): New struct
17490         (deferred_locations): New type.
17491         (deferred_locations_list): New static var.
17492         (deffer_location): New function.
17493         (gen_variable_die): Use it.
17494         (decls_for_scope): Output info on local static vars.
17495         (dwarf2out_finish): Process deferred locations.
17496         * varpool.c (varpool_output_debug_info): Remove.
17497
17498 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
17499
17500         PR rtl-optimization/39241
17501         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
17502         to subreg_offset_representable_p.
17503
17504 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
17505
17506         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
17507         execute function prototype.  Get f and nregs from max_reg_num
17508         and get_insns.  Remove the first backward pass as it's dead,
17509         guard the forward pass by flag_expensive_optimizations.
17510         (rest_of_handle_regmove): Delete.
17511         (pass_regmove): Replace it with regmove_optimize.
17512
17513 2009-02-25  Martin Jambor  <mjambor@suse.cz>
17514
17515         PR tree-optimization/39259
17516         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
17517         calls_alloca function flags.
17518         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
17519         calls are detected.
17520
17521 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
17522
17523         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
17524         flags_set_1_rtx, flags_set_1_set): Delete.
17525         (regmove_optimize): Do not call mark_flags_life_zones.
17526
17527 2009-02-24  Julian Brown  <julian@codesourcery.com>
17528
17529         PR target/35965
17530         * config/arm/arm.c (require_pic_register): Only set
17531         cfun->machine->pic_reg once per function.
17532
17533 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
17534
17535         * doc/invoke.texi (Link Options): Document an easier way to pass
17536         options that take arguments to the GNU linker using -Xlinker and -Wl.
17537
17538 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
17539
17540         PR target/33785
17541         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
17542
17543 2009-02-24  Richard Guenther  <rguenther@suse.de>
17544
17545         PR debug/39285
17546         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
17547
17548 2009-02-24  Richard Guenther  <rguenther@suse.de>
17549             Zdenek Dvorak  <ook@ucw.cz>
17550
17551         PR tree-optimization/39233
17552         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
17553         from converting them to a generic type.
17554
17555 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
17556
17557         PR tree-optimization/39260
17558         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
17559         contains a condition with a real type.
17560         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
17561
17562 2009-02-23  Jason Merrill  <jason@redhat.com>
17563
17564         PR c++/38880
17565         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
17566         narrowing_initializer_constant_valid_p.
17567         (narrowing_initializer_constant_valid_p): Don't return
17568         null_pointer_node for adding a pointer to itself.
17569
17570 2009-02-23  Jan Hubicka  <jh@suse.cz>
17571
17572         PR c/12245
17573         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
17574         resizing.
17575
17576 2009-02-23  Jan Hubicka  <jh@suse.cz>
17577
17578         PR tree-optimization/37709
17579         * tree.c (block_ultimate_origin): Move here from dwarf2out.
17580         * tree.h (block_ultimate_origin): Declare.
17581         * dwarf2out.c (block_ultimate_origin): Move to tree.c
17582         * tree-ssa-live.c (remove_unused_scope_block_p):
17583         Eliminate blocks containig no instructions nor live variables nor
17584         nested blocks.
17585         (dump_scope_block): New function.
17586         (remove_unused_locals): Enable removal of dead blocks by default;
17587         enable dumping at TDF_DETAILS.
17588
17589 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
17590
17591         * config/i386/i386.c (classify_argument): Don't allow COImode
17592         and OImode.
17593         (function_arg_advance_32): Don't allow OImode.
17594         (function_arg_32): Likewise.
17595         (function_value_32): Likewise.
17596         (return_in_memory_32): Likewise.
17597         (function_arg_64): Remove OImode comment.
17598
17599 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
17600
17601         PR target/39261
17602         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
17603         ix86_expand_vector_set for V4DImode in 64bit mode only.
17604         (ix86_expand_vector_init_one_var): Likewise.
17605
17606 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
17607
17608         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
17609
17610 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
17611
17612         PR bootstrap/39257
17613         * loop-iv.c: Revert last change.
17614         * emit-rtl.c: Likewise.
17615
17616 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
17617
17618         PR target/39256
17619         * config/i386/i386.c (type_natural_mode): Remove an extra
17620         space in the warning message.
17621         (function_value_32): Handle 32-byte vector modes.
17622         (return_in_memory_32): Likewise.
17623
17624 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
17625
17626         * loop-iv.c (truncate_value): New function.
17627         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
17628         of lowpart_subreg.
17629         (lowpart_subreg): Move to...
17630         * emit-rtl.c: ...here.
17631
17632 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
17633
17634         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
17635         accidental and undocumented change at revision 140860.
17636
17637 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
17638
17639         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
17640         take gimple_seq * arguments.
17641         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
17642         types_compatible_p langhook.
17643
17644 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
17645             Joseph Myers  <joseph@codesourcery.com>
17646
17647         * config/arm/arm.c (arm_builtin_va_list): New function.
17648         (arm_expand_builtin_va_start): Likewise.
17649         (arm_gimplify_va_arg_expr): Likewise.
17650         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
17651         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
17652         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
17653         (va_list_type): New variable.
17654         (arm_mangle_type): Mangle va_list_type appropriately.
17655
17656 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
17657
17658         PR middle-end/39157
17659         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
17660         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
17661         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
17662         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
17663         parameter to 1000 for -O1 by default.
17664         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
17665         parameter.
17666         * loop-invariant.c: Include params.h.
17667         (move_loop_invariants): Don't call move_single_loop_invariants on
17668         very large loops.
17669
17670 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
17671
17672         * calls.c (emit_library_call_value_1): Use slot_offset instead of
17673         offset when calculating bounds for indexing stack_usage_map.  Fixes
17674         a buffer overflow with certain target setups.
17675
17676 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
17677
17678         PR target/39240
17679         * calls.c (expand_call): Clear try_tail_call if caller and callee
17680         disagree in promotion of function return value.
17681
17682 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
17683
17684         PR target/39175
17685         * c-common.c (c_determine_visibility): If visibility changed and
17686         DECL_RTL has been already set, call make_decl_rtl to update symbol
17687         flags.
17688
17689 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
17690
17691         PR c++/39188
17692         * varasm.c (assemble_variable): Don't check DECL_NAME when
17693         globalizing a variable.
17694
17695 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
17696
17697         PR c/38483
17698         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
17699         expression before any __builtin_trap call.
17700         * c-typeck.c (build_function_call): Convert and check function
17701         arguments before generating a call to a trap.  Evaluate the
17702         function arguments before the trap.
17703
17704 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
17705
17706         PR target/39228
17707         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
17708         (UNSPEC_FXAM_MEM): New unspec.
17709         (fxam<mode>2_i387_with_temp): New insn and split pattern.
17710         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
17711         memory using fxam<mode>2_i387_with_temp to remove excess precision.
17712
17713 2009-02-19  Richard Guenther  <rguenther@suse.de>
17714
17715         PR tree-optimization/39207
17716         PR tree-optimization/39074
17717         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
17718         storedanything_tree): New.
17719         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
17720         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
17721         (build_succ_graph): Add edges from STOREDANYTHING to all
17722         non-direct nodes.
17723         (init_base_vars): Initialize STOREDANYTHING.
17724         (compute_points_to_sets): Free substitution info after
17725         building the succ graph.
17726         (ipa_pta_execute): Likewise.
17727
17728         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
17729         field.
17730         (do_ds_constraint): Do not add to special var or non-pointer
17731         field solutions.
17732         (type_could_have_pointers): Split out from ...
17733         (could_have_pointers): ... here.  For arrays use the element type.
17734         (create_variable_info_for): Initialize may_have_pointers.
17735         (new_var_info): Likewise.
17736         (handle_lhs_call): Make the HEAP variable unknown-sized.
17737         (intra_create_variable_infos): Use a type with pointers for
17738         PARM_NOALIAS, make it unknown-sized.
17739
17740 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
17741
17742         PR target/39224
17743         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
17744
17745 2009-02-18  Jason Merrill  <jason@redhat.com>
17746
17747         PR target/39179
17748         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
17749         value if DECL_EXTERNAL.
17750         * tree-sra.c (sra_walk_gimple_assign): Likewise.
17751         * target.h (gcc_target::binds_local_p): Clarify "module".
17752         * tree.h (TREE_PUBLIC): Clarify "module".
17753
17754 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
17755
17756         PR target/38891
17757         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
17758         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
17759
17760 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
17761
17762         PR target/39082
17763         * c.opt (Wabi): Support C and ObjC.
17764         (Wpsabi): New.
17765
17766         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
17767
17768         * config/i386/i386.c (classify_argument): Warn once about the ABI
17769         change when passing union with long double.
17770
17771         * doc/invoke.texi: Update -Wabi for warning psABI changes.
17772
17773 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
17774
17775         PR c/35447
17776         * c-parser.c (c_parser_compound_statement): Always enter and leave
17777         a scope.
17778
17779 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17780
17781         PR target/34587
17782         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
17783
17784 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
17785
17786         PR tree-optimization/36922
17787         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
17788         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
17789         Likewise.
17790
17791 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
17792
17793         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
17794         to 0 for EABI64.
17795
17796 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
17797
17798         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
17799
17800 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
17801
17802         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
17803         tree sharing.
17804
17805 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
17806             Richard Sandiford  <rdsandiford@googlemail.com>
17807
17808         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
17809         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
17810         (loongson_biadd): ...this.
17811
17812 2009-02-17  Richard Guenther  <rguenther@suse.de>
17813
17814         PR tree-optimization/39202
17815         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
17816         a var make sure to follow existing collapses.
17817
17818 2009-02-17  Richard Guenther  <rguenther@suse.de>
17819
17820         PR middle-end/39214
17821         * langhooks.c (lhd_print_error_function): Check for NULL block.
17822
17823 2009-02-17  Richard Guenther  <rguenther@suse.de>
17824
17825         PR tree-optimization/39204
17826         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
17827         of the PHI arg.
17828
17829 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
17830
17831         * config/soft-fp/double.h: Update from glibc CVS.
17832
17833 2009-02-17  Richard Guenther  <rguenther@suse.de>
17834
17835         PR tree-optimization/39207
17836         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
17837         strict-aliasing warnings for pointers pointing to NULL.
17838
17839 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
17840
17841         PR c/35446
17842         * c-parser.c (c_parser_braced_init): Call pop_init_level when
17843         skipping until next close brace.
17844
17845 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
17846
17847         PR target/37049
17848         * config/i386/i386.c (ix86_expand_push): Set memory alignment
17849         to function argument boundary.
17850
17851 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
17852
17853         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
17854         in the lea_add. Reload eventually constraints it properly.
17855         * config/picochip/constraints.md: Remove the target constraint
17856         "b", since it is not needed anymore.
17857
17858 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
17859
17860         * gthr-dce.h: Uglify function parameter and local variable names.
17861         * gthr-gnat.h: Likewise.
17862         * gthr-mipssde.h: Likewise.
17863         * gthr-nks.h: Likewise.
17864         * gthr-posix95.h: Likewise.
17865         * gthr-posix.h: Likewise.
17866         * gthr-rtems.h: Likewise.
17867         * gthr-single.h: Likewise.
17868         * gthr-solaris.h: Likewise.
17869         * gthr-tpf.h: Likewise.
17870         * gthr-vxworks.h: Likewise.
17871         * gthr-win32.h: Likewise.
17872
17873 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
17874
17875         PR target/39196
17876         * config/i386/i386.md: Restrict the new peephole2 to move
17877         between MMX/SSE registers.
17878
17879 2009-02-15  Richard Guenther  <rguenther@suse.de>
17880
17881         Revert
17882         2009-02-13  Richard Guenther  <rguenther@suse.de>
17883
17884         * configure.ac: Enable LFS.
17885         * configure: Re-generate.
17886         * config.in: Likewise.
17887
17888 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17889
17890         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
17891         spu_srqwbyte, spu_srqwbytebc): Define.
17892         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
17893         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
17894         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
17895         "shrqby_<mode>"): New insn-and-split patterns.
17896         * config/spu/spu.c (expand_builtin_args): Determine and return
17897         number of operands using spu_builtin_description data.
17898         (spu_expand_builtin_1): Use it.
17899
17900 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
17901
17902         PR target/38056
17903         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
17904         TARGET_CONST_GP.
17905
17906 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
17907
17908         PR target/39149
17909         * config/i386/i386.c (override_options): Correct warning
17910         messages for -malign-loops, -malign-jumps and -malign-functions.
17911
17912 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
17913
17914         PR target/39152
17915         * config/i386/i386.md: Restrict the new peephole2 to move
17916         between the general purpose registers.
17917
17918 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
17919
17920         PR target/39162
17921         * config/i386/i386.c (type_natural_mode): Add a new argument.
17922         Return the original mode and warn ABI change if vector size is 32byte.
17923         (function_arg_advance): Updated.
17924         (function_arg): Likewise.
17925         (ix86_function_value): Likewise.
17926         (ix86_return_in_memory): Likewise.
17927         (ix86_sol10_return_in_memory): Likewise.
17928         (ix86_gimplify_va_arg): Likewise.
17929         (function_arg_32): Don't warn ABX ABI change here.
17930         (function_arg_64): Likewise.
17931
17932 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
17933
17934         * loop-iv.c (implies_p): In the final case, test that operands 0
17935         of the two comparisons match.
17936
17937         * config/bfin/bfin.c (find_prev_insn_start): New function.
17938         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
17939         (find_next_insn_start): Move.
17940
17941 2009-02-13  Richard Guenther  <rguenther@suse.de>
17942
17943         * configure.ac: Enable LFS.
17944         * configure: Re-generate.
17945         * config.in: Likewise.
17946
17947 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
17948
17949         PR c/35444
17950         * c-parser.c (c_parser_parms_list_declarator): Discard pending
17951         sizes on syntax error after some arguments have been parsed.
17952
17953 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
17954
17955         * doc/invoke.texi (-fira): Remove.
17956
17957 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
17958
17959         * caller-save.c: Replace regclass.c with reginfo.c in comments.
17960         * recog.c: Likewise.
17961         * rtl.h: Likewise.
17962
17963 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
17964
17965         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
17966         (umul_ppmm): Likewise.
17967         (count_leading_zeros): Likewise.
17968         (count_trailing_zeros): Likewise.
17969         (UMUL_TIME): Likewise.
17970
17971 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
17972
17973         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
17974         soft-fp/t-softfp to tmake_file.
17975
17976         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
17977         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
17978         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
17979         IA64_BUILTIN_INFQ]: New.
17980         (ia64_init_builtins): Initialize __builtin_infq,
17981         __builtin_fabsq and __builtin_copysignq if not HPUX.
17982         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
17983         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
17984
17985         * config/ia64/lib1funcs.asm (__divtf3): Define only if
17986         SHARED is defined.
17987         (__fixtfti): Likewise.
17988         (__fixunstfti): Likewise.
17989         (__floattitf): Likewise.
17990
17991         * config/ia64/libgcc-glibc.ver: New.
17992         * config/ia64/t-fprules-softfp: Likewise.
17993         * config/ia64/sfp-machine.h: Likewise.
17994
17995         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
17996         (LIBGCC2_TF_CEXT): Likewise.
17997         (TF_SIZE): Likewise.
17998         (TARGET_INIT_LIBFUNCS): Likewise.
17999
18000         * config/ia64/t-glibc (SHLINB_MAPFILES):
18001         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
18002
18003 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
18004
18005         * config/i386/i386.c (construct_container): Rewrite processing
18006         BLKmode with X86_64_SSE_CLASS.
18007
18008 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
18009
18010         PR target/39152
18011         * config/i386/i386.md: Replace simplify_replace_rtx with
18012         replace_rtx in the new peephole2.
18013
18014 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
18015
18016         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
18017         loop unrolling do not happen at -O2.
18018
18019 2009-02-12  Michael Matz  <matz@suse.de>
18020
18021         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
18022
18023 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
18024
18025         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
18026         for -g3.
18027
18028 2009-02-12  Ben Elliston  <bje@au.ibm.com>
18029
18030         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
18031         patterns when updating the back chain.  Missed in the 2009-02-10
18032         change.
18033
18034 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
18035
18036         * doc/extend.texi (Decimal Floating Types): Update identifier of
18037         draft TR and list of missing support.
18038
18039 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
18040
18041         PR middle-end/39154
18042         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
18043         bit to variable length decl's flags, add it also to its
18044         pointer replacement variable.
18045
18046 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
18047             Jakub Jelinek  <jakub@redhat.com>
18048
18049         PR target/39118
18050         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
18051         (memory_blockage): New expander.
18052         (*memory_blockage): New insn pattern.
18053         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
18054         instead of general blockage at the end of function prologue when
18055         frame pointer is used to access red zone area.  Do not emit blockage
18056         when profiling, it is emitted in generic code.
18057         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
18058         function epilogue when frame pointer is used to access red zone area.
18059
18060 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
18061
18062         PR target/38824
18063         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
18064         by arithmetic with memory operands.
18065         * config/i386/predicates.md (commutative_operator): New.
18066
18067 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
18068
18069         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
18070         bulleted lists.
18071
18072 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
18073
18074         * alias.h (record_alias_subset): Declare.
18075         * alias.c (record_alias_subset): Make global.
18076
18077 2009-02-10  Nick Clifton  <nickc@redhat.com>
18078
18079         * tree-parloops.c: Change license to GPLv3.
18080         * ipa-struct-reorg.c: Change license to GPLv3.
18081         * ipa-struct-reorg.h: Change license to GPLv3.
18082
18083 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
18084
18085         PR c/39084
18086         * c-decl.c (start_struct): Return NULL on error.
18087
18088 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
18089
18090         PR middle-end/39124
18091         * cfgloopmanip.c (remove_path): Call remove_bbs after
18092         cancel_loop_tree, not before it.
18093
18094         PR target/39139
18095         * function.h (struct function): Add has_local_explicit_reg_vars bit.
18096         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
18097         VAR_DECLs were seen.
18098         * tree-ssa-live.c (remove_unused_locals): Recompute
18099         cfun->has_local_explicit_reg_vars.
18100         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
18101         copies or clearings if cfun->has_local_explicit_reg_vars.
18102
18103 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
18104
18105         PR target/39118
18106         * config/i386/i386.c (expand_prologue): Emit blockage at the end
18107         of function prologue when frame pointer is used to access
18108         red zone area.
18109
18110 2009-02-10  Richard Guenther  <rguenther@suse.de>
18111
18112         PR middle-end/39127
18113         * gimplify.c (gimple_regimplify_operands): Always look if
18114         we need to create a temporary.
18115
18116 2009-02-10  Richard Guenther  <rguenther@suse.de>
18117
18118         PR tree-optimization/39132
18119         * tree-loop-distribution.c (todo): New global var.
18120         (generate_memset_zero): Trigger TODO_rebuild_alias.
18121         (tree_loop_distribution): Return todo.
18122
18123 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
18124
18125         PR target/39119
18126         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
18127         (x86_64_reg_class_name): Removed.
18128         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
18129         first one isn't X86_64_SSE_CLASS or any other ones aren't
18130         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
18131         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
18132         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
18133         and 3 X86_64_SSEUP_CLASS.
18134         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
18135         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
18136
18137 2009-02-10  Ben Elliston  <bje@au.ibm.com>
18138
18139         * config/rs6000/rs6000.md (allocate_stack): Always use an update
18140         form instruction to update the stack back chain word, even if the
18141         user has disabled the generation of update instructions.
18142         (movdi_<mode>_update_stack): New.
18143         (movsi_update_stack): Likewise.
18144         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
18145         always use an update form instruction to update the stack back
18146         chain word.
18147
18148 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
18149
18150         PR middle-end/38953
18151         * graphite.c (if_region_set_false_region): After moving a region in
18152         the false branch of a condition, remove the empty dummy basic block.
18153         (gloog): Remove wrong fix for PR38953.
18154
18155 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18156
18157         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
18158         generation due to implicit sign extension.
18159
18160 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
18161
18162         PR middle-end/38981
18163         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
18164         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
18165
18166 2009-02-09  Richard Guenther  <rguenther@suse.de>
18167
18168         PR middle-end/35202
18169         * convert.c (convert_to_real): Disable (float)fn((double)x)
18170         to fnf(x) conversion if errno differences may occur and
18171         -fmath-errno is set.
18172
18173 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
18174
18175         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
18176         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
18177         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
18178
18179 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
18180
18181         PR c/35434
18182         * c-common.c (handle_alias_attribute): Disallow attribute for
18183         anything not a FUNCTION_DECL or VAR_DECL.
18184
18185 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
18186
18187         PR c/39035
18188         * real.c (do_compare): Special-case compare of zero against
18189         decimal float value.
18190
18191 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
18192
18193         PR c/36432
18194         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
18195         as indicating flexible array members unless the field itself is
18196         being declarared as the incomplete array.
18197
18198 2009-02-06  Jan Hubicka  <jh@suse.cz>
18199
18200         PR tree-optimization/38844
18201         * ipa-inline.c (try_inline): Stop inlining recursion when edge
18202         is already inlined.
18203
18204 2009-02-06  Richard Guenther  <rguenther@suse.de>
18205
18206         PR middle-end/38977
18207         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
18208         fork because we may expand it as __gcov_fork.
18209
18210 2009-02-06  Nick Clifton  <nickc@redhat.com>
18211
18212         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
18213
18214 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
18215
18216         PR tree-optimization/35659
18217         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
18218         vn_phi_eq): Shortcut if hashcode does not match.
18219         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
18220         NULL operands.
18221         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
18222         and avoid iterative_hash_expr.
18223         (FOR_EACH_VALUE_ID_IN_SET): New.
18224         (value_id_compare): Remove.
18225         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
18226         sort expressions by value id.
18227
18228 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
18229
18230         PR target/38991
18231         * config/sh/predicates.md (general_movsrc_operand): Don't check
18232         the subreg of system registers here.
18233
18234 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
18235
18236         PR c++/39106
18237         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
18238         on the copied decl.
18239
18240 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
18241
18242         PR rtl-optimization/39110
18243         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
18244         addresses, not aligned ones.
18245
18246 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
18247             Richard Guenther  <rguenther@suse.de>
18248
18249         PR tree-optimization/39100
18250         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
18251         comment says and add edges.
18252
18253 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
18254
18255         PR c/35435
18256         * c-common.c (handle_tls_model_attribute): Ignore attribute for
18257         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
18258
18259 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
18260
18261         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
18262         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
18263         register_bb_in_sese, new_sese, free_sese): Moved.
18264         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
18265         outermost_loop_in_scop, build_scop_iteration_domain,
18266         expand_scalar_variables_ssa_name, get_vdef_before_scop,
18267         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
18268         Use loop_in_sese_p instead of loop_in_scop_p.
18269         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
18270         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
18271         (scopdet_basic_block_info): Fix bug in scop detection.
18272         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
18273         eq_loop_to_cloog_loop): Remove.
18274         (nb_loops_around_loop_in_scop, nb_loop
18275         ref_nb_loops): Moved here...
18276         * graphite.h (ref_nb_loops): ... from here.
18277         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
18278         (loop_domain_dim, loop_iteration_vector_dim): Remove.
18279         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
18280         * testsuite/gcc.dg/graphite/scop-19.c: New
18281
18282 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
18283             Hans-Peter Nilsson  <hp@axis.com>
18284
18285         PR rtl-optimization/37889
18286         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
18287         Move offset handling from PLUS to before the switch.  Use new
18288         arguments when considering SYMBOL_REFs too.
18289         (rtx_addr_can_trap_p): Pass dummy offset and size.
18290         (enum may_trap_p_flags): Remove.
18291         (may_trap_p_1): Pass size from MEM_SIZE.
18292
18293         PR rtl-optimization/38921
18294         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
18295         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
18296         * rtlanal.c (may_trap_after_code_motion_p): Delete.
18297         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
18298
18299 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
18300
18301         AVX Programming Reference (January, 2009)
18302         * config/i386/sse.md (*vpclmulqdq): New.
18303
18304 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
18305
18306         PR tree-optimization/38977
18307         PR gcov-profile/38292
18308         * calls.c (special_function_p): Disregard __builtin_ prefix.
18309
18310 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
18311
18312         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
18313         non-indexable addresses even before reload.
18314
18315 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
18316
18317         PR c/29129
18318         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
18319         as having variable size.  Do not give an error for unnamed
18320         parameters with [*] declarators.  Give a warning for type names
18321         with [*] declarators and mark them as variable size.
18322         * c-parser.c (c_parser_sizeof_expression): Do not give an error
18323         for sizeof applied to [*] type names.
18324
18325 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18326
18327         PR C++/36607
18328         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
18329
18330 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
18331
18332         * gcc.c (process_command): Update copyright notice dates.
18333         * gcov.c (print_version): Likewise.
18334         * gcov-dump.c (print_version): Likewise.
18335         * mips-tfile.c (main): Likewise.
18336         * mips-tdump.c (main): Likewise.
18337
18338 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
18339
18340         PR c/35433
18341         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
18342         for composite type involving a zero-length array type.
18343
18344 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
18345
18346         PR target/35318
18347         * function.c (match_asm_constraints_1): Skip over
18348         initial optional % in the constraint.
18349
18350         PR inline-asm/39059
18351         * c-parser.c (c_parser_postfix_expression): If fixed point is not
18352         supported, don't accept FIXED_CSTs.
18353         * c-decl.c (finish_declspecs): Error if fixed point is not supported
18354         and _Sat is used without _Fract/_Accum.  Set specs->type to
18355         integer_type_node for cts_fract/cts_accum if fixed point is not
18356         supported.
18357
18358 2009-02-02  Catherine Moore  <clm@codesourcery.com>
18359
18360         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
18361
18362 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
18363
18364         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
18365         (ABI_HAS_64BIT_SYMBOLS): Use it.
18366         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
18367
18368 2009-02-02  Paul Brook  <paul@codesourcery.com>
18369
18370         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
18371
18372 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
18373
18374         PR inline-asm/39058
18375         * recog.h (asm_operand_ok): Add constraints argument.
18376         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
18377         recurse on matching constraint.
18378         (check_asm_operands): Pass constraints as 3rd argument to
18379         asm_operand_ok.  Don't look up matching constraint here.
18380         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
18381         to asm_operand_ok.
18382
18383 2009-02-02  Ben Elliston  <bje@au.ibm.com>
18384
18385         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
18386         TARGET_NARROW_VOLATILE_BITFIELD macro names.
18387
18388 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18389
18390         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
18391         information.  Remove some obsolete information.  Reorganize.
18392
18393         * config/pa/fptr.c: Revert license to GPL 2.
18394         * config/pa/milli64.S: Likewise.
18395
18396 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
18397
18398         PR target/38904
18399         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
18400         LIBRARY name in, instead of hard-coding it.
18401         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
18402         extra target make frag to tmake_files according to EH model.
18403         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
18404         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
18405         frags that define makefile variable EH_MODEL appropriately.
18406         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
18407         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
18408         to "-sjlj" according to type of EH configured.
18409         (LIBGCC_SONAME):  Concatenate it to shared library base name.
18410         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
18411         to "_sjlj" according to type of EH configured.
18412         (LIBGCC_SONAME):  Concatenate it to shared library base name.
18413         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
18414         (SHLIB_LINK):  Add missing semicolon to if-else construct.
18415         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
18416         string value of "pe_dll" command-line option.
18417         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
18418         (SHLIB_SONAME):  Use it when overriding t-cygming default.
18419         (SHLIB_IMPLIB):  Override t-cygming default.
18420         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
18421         string value of "pe_dll" command-line option.
18422
18423 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
18424
18425         PR target/38952
18426         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
18427         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
18428
18429 2009-01-31  Richard Guenther  <rguenther@suse.de>
18430
18431         PR tree-optimization/38937
18432         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
18433         computing the transitive closure.
18434
18435 2009-01-30  Richard Guenther  <rguenther@suse.de>
18436
18437         PR tree-optimization/39041
18438         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
18439         Propagate variable indices only if the types match for this stmt.
18440
18441 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
18442
18443         PR target/39013
18444         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
18445         inline but never defined.
18446
18447 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
18448
18449         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
18450         (*insv_h_di_reg_extimm): New insn.
18451         (*insv_l<mode>_reg_extimm): New insn.
18452
18453 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
18454
18455         * config/picochip/picochip.c (flag_conserve_stack): set
18456         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
18457         fconserve-stack. Reduce call-overhead used by inliner.
18458
18459 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
18460
18461         PR/38157
18462         * common.opt (flag_conserve_stack): Initialised to zero.
18463
18464 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
18465
18466         PR/39002
18467         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
18468         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
18469         method.
18470
18471 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
18472
18473         * ira-color.c (allocno_reload_assign): Update comments.
18474         * regmove.c (regmove_optimize): Likewise.
18475
18476         * ra.h: Removed.
18477
18478 2009-01-29  Robert Millan  <rmh@aybabtu.com>
18479
18480         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
18481         * config/i386/kopensolaris-gnu.h: New file.  Undefine
18482         `MD_UNWIND_SUPPORT'.
18483         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
18484
18485 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
18486
18487         PR tree-optimization/39007
18488         * tree-loop-distribution.c (generate_builtin): Use
18489         recompute_dominator to compute the immediate dominator of the
18490         basic block just after the loop.
18491
18492 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
18493
18494         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
18495         (ASM_OUTPUT_DWARF_PCREL): Define.
18496
18497 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
18498
18499         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
18500         * doc/passes.texi: Remove entries about regclass, local-alloc, and
18501         global.  Modify entries about regmove and IRA.
18502
18503         * ra-conflict.c: Remove the file.
18504
18505         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
18506
18507         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
18508         (pass_regclass_init): Rename to pass_reginfo_init.
18509
18510         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
18511
18512         * toplev.h (flag_ira): Remove.
18513
18514         * caller-save.c (setup_save_areas): Remove flag_ira.
18515
18516         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
18517
18518         * global.c: Remove the file.
18519
18520         * opts.c (decode_options): Remove flag_ira.
18521
18522         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
18523
18524         * regmove.c: Modify file description.
18525         (find_use_as_address, try_auto_increment): Define them only if
18526         AUTO_INC_DEC is defined.
18527         (replacement_quality, replace_in_call_usage, fixup_match_1,
18528         stable_and_no_regs_but_for_p): Remove.
18529         (reg_set_in_bb): Make it static.
18530         (regmove_optimize): Remove flag_ira and code which worked for
18531         !flag_ira.
18532
18533         * local-alloc.c: Remove the file.
18534
18535         * common.opt (fira): Remove.
18536
18537         * ira.c: Include except.h.
18538         (eliminable_regset): Move from global.c.
18539         (mark_elimination): Ditto.  Remove flag_ira.
18540         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
18541         equiv_mem_modified, validate_equiv_mem_from_store,
18542         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
18543         contains_replace_regs, memref_referenced_p, memref_used_between_p,
18544         no_equiv, recorded_label_ref): Move from local-alloc.c.
18545         (update_equiv_regs): Ditto.  Make it static.
18546         (print_insn_chain, print_insn_chains): Move it from global.c.
18547         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
18548         (build_insn_chain): Ditto.  Make it static.
18549         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
18550         Rename to init_live_subregs.
18551         (gate_ira): Remove flag_ira.
18552
18553         * regclass.c: Rename reginfo.c.  Change file description.
18554         (FORBIDDEN_INC_DEC_CLASSES): Remove.
18555         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
18556         (init_reg_sets_1): Remove code for evaluation of
18557         reg_class_superclasses and losing_caller_save_reg_set.
18558         (init_regs): Remove init_reg_autoinc.
18559         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
18560         ok_for_base_p_nonstrict): Remove.
18561         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
18562         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
18563         corresponding entries.
18564         (dump_regclass, record_operand_costs, scan_one_insn,
18565         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
18566         record_address_regs, auto_inc_dec_reg_p): Remove.
18567         (gt-regclass.h): Rename to gt-reginfo.h.
18568
18569         * rtl.h (dump_global_regs, retry_global_alloc,
18570         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
18571
18572         * Makefile.in (RA_H): Remove.
18573         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
18574         Rename regclass.o to reginfo.o.
18575         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
18576         gt-reginfo.h.
18577         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
18578         (GTFILES): Rename regclass.c to reginfo.c.
18579
18580         * passes.c (init_optimization_passes): Remove pass_local_alloc and
18581         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
18582
18583         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
18584         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
18585         Remove flag_ira.
18586         (finish_spills): Ditto.  Remove code for !flag_ira.
18587
18588 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
18589
18590         PR middle-end/35854
18591         * doc/invoke.texi (rtl debug options): Complete rewrite.
18592         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
18593         to auto_inc_dec".
18594         * mode-switching.c (pass_mode_switching): Rename pass from
18595         "mode-sw" to "mode_sw".
18596         * except.c (pass_convert_to_eh_ranges): Rename pass from
18597         "eh-ranges" to "eh_ranges".
18598         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
18599         to "subreg1".
18600
18601
18602 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
18603             Alexander Monakov  <amonakov@ispras.ru>
18604
18605         PR middle-end/38857
18606         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
18607         register.
18608         (move_exprs_to_boundary): Change return type and pass through
18609         should_move from move_op.  Relax assert.  Update usage ...
18610         (schedule_expr_on_boundary): ... here.  Use should_move instead of
18611         cant_move.
18612         (move_op_orig_expr_found): Indicate that insn was disconnected from
18613         stream.
18614         (code_motion_process_successors): Do not call after_merge_succs
18615         callback if original expression was not found when traversing any of
18616         the branches.
18617         (code_motion_path_driver): Change return type.  Update prototype.
18618         (move_op): Update comment.  Add a new parameter (should_move).  Update
18619         prototype.  Set *should_move based on indication provided by
18620         move_op_orig_expr_found.
18621
18622 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
18623
18624         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
18625         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
18626         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
18627         * config/rs6000/rs6000.c (rs6000_override_options): Default
18628         avoid-indexed-addresses on for Power6, off for everything else.
18629         (avoiding_indexed_address_p): New function.
18630         (rs6000_legitimize_address): Use it.
18631         (rs6000_legitimate_address): Likewise.
18632         * config/rs6000/rs6000.md (movXX_updateX): Likewise
18633
18634 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
18635
18636         PR tree-optimization/38997
18637         * tree-loop-distribution.c (generate_memset_zero): Use
18638         POINTER_PLUS_EXPR for a pointer addition.
18639
18640 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
18641
18642         * config/s390/s390.md (bswap<mode>2): New pattern added.
18643
18644 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
18645
18646         * config/s390/s390.md (*tls_load_31): Added type attribute.
18647
18648 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
18649
18650         * config/s390/s390.md: Fix a few comments.
18651
18652 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
18653
18654         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
18655         (*tm<mode>_full): Fixed z10prop attribute.
18656         (*tst<mode>_extimm): Fixed z10prop attribute.
18657         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
18658         (*tstqiCCT_cconly): Fixed z10prop attribute.
18659         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
18660         (*movsi_larl): Fixed z10prop attribute.
18661         (*movsi_zarch): Fixed z10prop attribute.
18662         (*movsi_eas): Fixed z10prop attribute.
18663         (*movhi): Fixed z10prop attribute.
18664         (*movqi): Fixed z10prop attribute.
18665         (*movstrictqi): Fixed z10prop attribute.
18666         (*mov<mode>): Fixed z10prop attribute.
18667         (*movcc): Fixed z10prop attribute.
18668         (*sethighpartdi_64): Fixed z10prop attribute.
18669         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
18670         (*negdi2_sign_cc): Fixed z10prop attribute.
18671         (*negdi2_sign): Fixed z10prop attribute.
18672         (*absdi2_sign_cc): Fixed z10prop attribute.
18673         (*absdi2_sign): Fixed z10prop attribute.
18674         (*negabsdi2_sign_cc): Fixed z10prop attribute.
18675         (*negabsdi2_sign): Fixed z10prop attribute.
18676         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
18677         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
18678         (doloop_si64): Fixed z10prop attribute.
18679         (doloop_si31): Fixed z10prop attribute.
18680         (doloop_long): Fixed z10prop attribute.
18681         (indirect_jump): Fixed z10prop attribute.
18682         (nop): Fixed z10prop attribute.
18683         (main_base_64): Fixed z10prop attribute.
18684         (reload_base_64): Fixed z10prop attribute.
18685
18686 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
18687
18688         PR rtl-optimization/38740
18689         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
18690         if !optimize.
18691         * config/mips/mips.c (mips_reorg): Likewise.
18692
18693 2009-01-28  Richard Guenther  <rguenther@suse.de>
18694
18695         PR tree-optimization/38926
18696         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
18697         with the correct value id to a value.
18698         (do_regular_insertion): Use the value number of edoubleprime
18699         for the value number of the expr.
18700
18701         Revert
18702         2008-08-21  Richard Guenther  <rguenther@suse.de>
18703
18704         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
18705         a PHI ask VN if it is already available.
18706         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
18707         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
18708
18709 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
18710
18711         PR middle-end/38934
18712         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
18713         set to varying whenever max has TREE_OVERFLOW set, similarly
18714         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
18715
18716 2009-01-28  Richard Guenther  <rguenther@suse.de>
18717
18718         PR middle-end/38908
18719         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
18720         uninitialized aggregate uses in call arguments.
18721
18722 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
18723
18724         PR tree-optimization/38984
18725         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
18726         the nothing_id variable if -fno-delete-null-pointer-checks.
18727
18728 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
18729
18730         PR target/38988
18731         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
18732         (set_got_offset_rex64): Ditto.
18733
18734 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
18735
18736         PR target/38941
18737         * doc/extend.texi: Improve local variable with asm reg.
18738
18739 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
18740
18741         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
18742         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
18743         was not supplied then set warn_packed_bitfield_compat to the
18744         default value of 1.
18745         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
18746         against 1.
18747
18748 2009-01-27  Richard Guenther  <rguenther@suse.de>
18749
18750         PR tree-optimization/38503
18751         * cfgexpand.c (expand_gimple_basic_block): Ignore
18752         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
18753         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
18754         variables that cannot have TBAA applied.
18755         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
18756         statements.
18757
18758 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
18759
18760         PR middle-end/38969
18761         * calls.c (initialize_argument_information): Do not wrap complex
18762         arguments in SAVE_EXPR.
18763
18764 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
18765
18766         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
18767         (INSTALL_LIBGCC): Revert typo commit.
18768
18769 2009-01-26  Richard Guenther  <rguenther@suse.de>
18770
18771         PR tree-optimization/38745
18772         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
18773         from special handling.
18774
18775 2009-01-26  Richard Guenther  <rguenther@suse.de>
18776
18777         PR tree-optimization/38745
18778         * tree-ssa.c (execute_update_addresses_taken): Do not include
18779         variables that cannot possibly be a register in not_reg_needs.
18780         Do not clear TREE_ADDRESSABLE on vars that may not become
18781         registers.
18782         * tree-ssa.c (update_alias_info_1): Include those in the set
18783         of addressable vars.
18784
18785 2009-01-26  Richard Guenther  <rguenther@suse.de>
18786
18787         PR middle-end/38851
18788         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
18789         * tree-ssa-dse.c: Include langhooks.h
18790         (execute_simple_dse): Remove stores with zero size.
18791
18792 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
18793
18794         PR c/38957
18795         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
18796         as PLUS_EXPR.
18797
18798 2009-01-24  Julian Brown  <julian@codesourcery.com>
18799
18800         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
18801         config/arm/linux-atomic.c.
18802         * config/arm/linux-atomic.c: New.
18803
18804 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
18805
18806         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
18807         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
18808         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
18809
18810 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
18811
18812         PR c/38938
18813         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
18814         properly.
18815
18816 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
18817
18818         PR tree-optimization/38953
18819         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
18820         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
18821         (gloog): Split the exit of the scop when the scop exit is a loop exit.
18822         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
18823         changed the CFG.
18824
18825 2009-01-24  Paul Brook  <paul@codesourcery.com>
18826
18827         * config/arm/neon.md (neon_type): Move to arm.md.
18828         (neon_mov<VSTRUCT>): Add neon_type attribute.
18829         * config/arm/arm.md (neon_type): Move to here.
18830         (conds): Add "unconditioal" and use as default for NEON insns.
18831
18832 2009-01-24  Ben Elliston  <bje@au.ibm.com>
18833
18834         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
18835         void *' warning from -Wc++-compat.
18836         * Makefile.in (dominance.o-warn): Remove.
18837
18838 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
18839
18840         PR tree-optimization/38932
18841         * fold-const.c (fold_unary_ignore_overflow): New.
18842         * tree.h (fold_unary_ignore_overflow): Declare.
18843         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
18844         * tree-ssa-sccvn.c (visit_reference_op_load,
18845         simplify_unary_expression): Likewise.
18846
18847 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
18848
18849         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
18850         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
18851         regardless of their type.
18852         * c-common.c (handle_packed_attribute): Don't ignore packed on
18853         bitfields.
18854         * c.opt (Wpacked-bitfield-compat): New warning option.
18855         * stor-layout.c (place_field): Warn if offset of a field changed.
18856         * doc/extend.texi (packed): Mention the ABI change.
18857         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
18858         (Warning Options): Add it to the list.
18859
18860 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
18861
18862         * c-opts.c (c_common_post_options): Fix a typo in comments.
18863
18864 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
18865
18866         PR middle-end/38615
18867         * gimplify.c (gimplify_init_constructor): Fix promotion of const
18868         variables to static.
18869         * doc/invoke.texi (-fmerge-all-constants): Update description.
18870
18871 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
18872
18873         PR target/38931
18874         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
18875         (*movdi_1_rex64): Use type "mmx" for alternative 5.
18876
18877 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
18878
18879         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
18880         a word boundary.
18881         (LOCAL_ALIGNMENT): Similarly.
18882
18883 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
18884             Joseph Myers  <joseph@codesourcery.com>
18885
18886         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
18887         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
18888         * config/arm/arm-tune.md: Regenerate.
18889         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
18890         -march=iwmmxt2.
18891
18892 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
18893
18894         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
18895         version number to five.
18896
18897 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
18898
18899         PR c++/38930
18900         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
18901         * c-common.c (set_underlying_type): Likewise.
18902         (is_typedef_decl ): Likewise
18903         * tree.h: Likewise
18904         (set_underlying_type): Likewise.
18905         (is_typedef_type): Likewise.
18906
18907 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
18908
18909         PR middle-end/38587
18910         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
18911         crossing setjmps.
18912
18913 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
18914
18915         PR bootstrap/37660
18916         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
18917         (LIBGCC_SPEC):  Don't define.
18918         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
18919
18920 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
18921
18922         PR rtl-optimization/38879
18923         * alias.c (base_alias_check): Unaligned access via AND address can
18924         alias all surrounding object types except those with sizes equal
18925         or wider than the size of unaligned access.
18926
18927 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
18928
18929         PR c++/26693
18930         * c-decl.c (clone_underlying_type): Move this ...
18931         * c-common.c (set_underlying_type): ... here.
18932         Also, make sure the function properly sets TYPE_STUB_DECL() on
18933         the newly created typedef variant type.
18934         (is_typedef_decl ): New entry point.
18935         * tree.h: Added a new member member_types_needing_access_check to
18936         struct tree_decl_non_common.
18937         (set_underlying_type): New entry point.
18938         (is_typedef_type): Likewise.
18939
18940 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
18941
18942         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
18943         Check whether two instructions have memory references that
18944         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
18945         are helper functions for traversing.
18946         * alias.h (insn_alias_sets_confilict_p): New prototypes.
18947         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
18948         not to draw dependency edge for instructions with non-conflicting
18949         alias sets.
18950
18951 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
18952
18953         PR other/38758
18954         * longlong.h: Update copyright years.  Use soft-fp license notice.
18955         Sync __clz_tab declaration with glibc.
18956
18957 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
18958
18959         PR target/30687
18960         * doc/extend.texi (syscall_linkage): New.
18961         (version_id): Modify.
18962
18963 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18964             Richard Guenther  <rguenther@suse.de>
18965
18966         PR tree-optimization/38747
18967         PR tree-optimization/38748
18968         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
18969         conversion if the base address is an indirect reference and the
18970         aliasing sets could cause issues.
18971
18972 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
18973
18974         * common.opt (fgraphite, fgraphite-identity): Add comment for
18975         explaining why these options are not documented.
18976
18977 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
18978
18979         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
18980         gimple_call_lhs is NULL.
18981
18982 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
18983
18984         PR target/38868
18985         * emit-rtl.c (adjust_address_1): Make sure memref is never
18986         overwritten.
18987
18988 2009-01-20  Ben Elliston  <bje@au.ibm.com>
18989
18990         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
18991         const qualifier from arg parameter. Remove unnecessary cast to char *.
18992         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
18993         const qualifier from arg 2.
18994
18995 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
18996
18997         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
18998
18999 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
19000
19001         PR c/38869
19002         * rtl.h (reinit_regs): New prototype.
19003         * regclass.c: Include ira.h.
19004         (reinit_regs): New.
19005         * Makefile.in (regclass.o): Add ira.h.
19006         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
19007
19008 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
19009
19010         PR target/38736
19011         * c-common.c (handle_aligned_attribute): Use
19012         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
19013         default alignment value.
19014
19015         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
19016
19017         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
19018         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
19019
19020         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
19021         __BIGGEST_ALIGNMENT__.
19022
19023         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
19024
19025 2009-01-18  Richard Guenther  <rguenther@suse.de>
19026
19027         PR tree-optimization/38819
19028         * tree-flow.h (operation_could_trap_helper_p): Declare.
19029         * tree-eh.c (operation_could_trap_helper_p): Export.
19030         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
19031         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
19032         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
19033         are about to insert a possibly trapping instruction and fail
19034         in this case.
19035
19036 2009-01-18  Andreas Schwab  <schwab@suse.de>
19037
19038         * doc/install.texi (Configuration): Remove obsolete paragraph
19039         about use of --with-gnu-ld with --with-gnu-as.
19040
19041 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
19042
19043         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
19044         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
19045         Follow spelling conventions.
19046
19047 2009-01-18  Ben Elliston  <bje@au.ibm.com>
19048
19049         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
19050         C++ warning about implicit conversion from void * to struct
19051         bitmap_head_def *.
19052         (bitmap_obstack_free): Likewise for bitmap_element *.
19053         * Makefile.in (bitmap.o-warn): Remove.
19054
19055 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
19056
19057         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
19058
19059 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
19060             Tobias Grosser  <tobi.grosser@amd.com>
19061
19062         * graphite.c (graphite_trans_scop_block): Do not block single
19063         nested loops.
19064
19065 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
19066
19067         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
19068         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
19069         test with assertion.
19070
19071 2009-01-16  Richard Guenther  <rguenther@suse.de>
19072
19073         PR tree-optimization/38835
19074         PR middle-end/36227
19075         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
19076         and INT + PTR -> (INT)(PTR p+ INT) folding.
19077         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
19078
19079 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
19080
19081         PR target/38554
19082         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
19083         the subreg from a lowpart subreg if it is also casting the value.
19084
19085 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
19086             Tobias Grosser  <tobi.grosser@amd.com>
19087
19088         * graphite.c (compare_prefix_loops): New.
19089         (build_scop_canonical_schedules): Rewritten.
19090         (graphite_transform_loops): Move build_scop_canonical_schedules
19091         after build_scop_iteration_domain.
19092
19093 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
19094             Tobias Grosser  <tobi.grosser@amd.com>
19095
19096         * graphite.c (add_conditions_to_domain): Add the loops to
19097         the dimension of the iteration domain.  Do copy the domain
19098         only when it exists.
19099         (build_scop_conditions_1): Do not call add_conditions_to_domain.
19100         (add_conditions_to_constraints): New.
19101         (can_generate_code_stmt, can_generate_code): Removed.
19102         (gloog): Do not call can_generate_code.
19103         (graphite_transform_loops): Call add_conditions_to_constraints
19104         after building the iteration domain.
19105
19106 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
19107
19108         PR tree-optimization/38789
19109         * tree-ssa-threadedge.c
19110         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
19111         __builtin_constant_p.
19112
19113 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
19114
19115         * dce.c (delete_unmarked_insns): Reversed the order that insns are
19116         examined before deleting them.
19117
19118 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
19119
19120         * function.c (aggregate_value_p): Correctly extract the function
19121         type from CALL_EXPR_FN lookup.
19122
19123 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
19124
19125         * config/picochip/picochip.c (picochip_override_options): Revert
19126         CFI asm flag disable commited previously.
19127
19128 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
19129             Tobias Grosser  <tobi.grosser@amd.com>
19130             Jan Sjodin  <jan.sjodin@amd.com>
19131
19132         * graphite.c (scan_tree_for_params): On substractions negate
19133         all the coefficients of the term.
19134         (clast_to_gcc_expression_red): New.  Handle reduction expressions
19135         of more than two operands.
19136         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
19137         (get_vdef_before_scop): Handle also the case of default definitions.
19138
19139 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
19140
19141         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
19142         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
19143         Also use them when walking CALL_INSN_FUNCTION_USAGE.
19144
19145 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
19146             Joey Ye  <joey.ye@intel.com>
19147
19148         PR middle-end/37843
19149         * cfgexpand.c (expand_stack_alignment): Don't update stack
19150         boundary nor check incoming stack boundary here.
19151         (gimple_expand_cfg): Update stack boundary and check incoming
19152         stack boundary here.
19153
19154 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
19155
19156         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
19157
19158 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
19159
19160         PR rtl-optimization/38245
19161         * calls.c (expand_call): Add stack arguments to
19162         CALL_INSN_FUNCTION_USAGE even for pure calls (when
19163         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
19164         in regs and partially in memory or BLKmode arguments.
19165         (emit_library_call_value_1): Add stack arguments to
19166         CALL_INSN_FUNCTION_USAGE even for pure calls (when
19167         ACCUMULATE_OUTGOING_ARGS).
19168         * dce.c: Include tm_p.h.
19169         (find_call_stack_args): New function.
19170         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
19171         argument.
19172         (mark_insn): Call find_call_stack_args for CALL_Ps.
19173         (prescan_insns_for_dce): Walk insns backwards in bb rather than
19174         forwards.  Allocate and free arg_stores bitmap if needed, pass it
19175         down to deletable_insn_p, don't mark stores set in arg_stores
19176         bitmap, clear the bitmap at the beginning of each bb.
19177         * Makefile.in (dce.o): Depend on $(TM_P_H).
19178
19179 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
19180
19181         PR target/22599
19182         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
19183         to make sure the insn is a conditional test (bug 22599).  Reformat a
19184         few long lines.
19185
19186 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
19187
19188         PR middle-end/38431
19189         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
19190         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
19191         (gloog): Do not call cleanup_tree_cfg.
19192         (graphite_transform_loops): Call cleanup_tree_cfg after all
19193         scops have been code generated.
19194
19195 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
19196         * doc/gty.texi (Invoking the garbage collector): Added new node
19197         and section documenting ggc_collect.
19198
19199 2009-01-14  Richard Guenther  <rguenther@suse.de>
19200
19201         PR tree-optimization/38826
19202         PR middle-end/38477
19203         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
19204         initialization notes only if we actually emitted a warning.
19205         (intra_create_variable_infos): Add constraints for a result decl
19206         that is passed by hidden reference.
19207         (build_pred_graph): Mark all related variables non-direct on
19208         address-taking.
19209
19210 2009-01-14  Nick Clifton  <nickc@redhat.com>
19211
19212         * ira-conflicts.c: Include addresses.h for the definition of
19213         base_reg_class.
19214         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
19215         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
19216
19217 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
19218
19219         PR target/38811
19220         * Makefile.in (ira-lives.o): Add except.h.
19221
19222         * ira-lives.c: Include except.h.
19223         (process_bb_node_lives): Process can_throw_internal.
19224
19225 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
19226
19227         PR rtl-optimization/38774
19228         * combine.c (simplify_set): When undoing cc_use change, don't do
19229         PUT_CODE on the newly created comparison, but instead put back the
19230         old comparison.
19231
19232 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
19233
19234         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
19235         values.  Remove duplicate arm8 entry.
19236
19237 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
19238
19239         PR tree-optimization/38786
19240         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
19241         the SSA_NAME case of expand_scalar_variables_expr.
19242         Set the type of an expression to the type of its assign statement.
19243         (expand_scalar_variables_expr): Also gather the scalar computation
19244         used to index the memory access.  Do not pass loop_p.
19245         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
19246         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
19247         the gimple_stmt_iterator where it inserts new code.
19248         Do not pass loop_p.
19249         (copy_bb_and_scalar_dependences): Do not pass loop_p.
19250         (translate_clast): Update call to copy_bb_and_scalar_dependences.
19251
19252 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
19253
19254         * graphite.h (debug_value): Removed.
19255         * graphite.c (debug_value): Removed.
19256
19257 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
19258
19259         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
19260         ldrd/strd with two 32-bit instructions.
19261
19262 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
19263
19264         * config/arm/arm.c (struct processors): Pass for speed down into
19265         cost helper functions.
19266         (const_ok_for_op): Handle COMPARE and inequality nodes.
19267         (arm_rtx_costs_1): Rewrite.
19268         (arm_size_rtx_costs): Update prototype.
19269         (arm_rtx_costs): Pass speed down to helper functions.
19270         (arm_slowmul_rtx_costs): Rework cost calculations.
19271         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
19272         (arm_9e_rtx_costs): Likewise.
19273
19274 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
19275
19276         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
19277         relocations of local symbols wider than UNITS_PER_WORD are not valid.
19278         (alpha_legitimize_address): Do not split local symbols wider than
19279         UNITS_PER_WORD into HIGH/LO_SUM parts.
19280
19281 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
19282
19283         PR bootstrap/38580
19284         * gcc.c (process_command): Replace call to execvp with calls
19285         to pex_one and exit.
19286
19287 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
19288
19289         PR target/29141
19290         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
19291         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
19292         variant for devices with 3-byte PC.
19293         (__tablejump_elpm__): New.
19294
19295 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
19296
19297         PR c/32041
19298         * c-parser.c (c_parser_postfix_expression): Allow `->' in
19299         offsetof member-designator, handle it as `[0].'.
19300
19301 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19302
19303         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
19304         function when not using named sections on targets with named sections
19305         if branch distance is less than 262132.
19306
19307 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
19308
19309         * combine.c (combine_instructions):  Recompute
19310         optimize_this_for_speed_p  for each BB in the main combine loop.
19311
19312 2009-01-12  Tomas Bily  <tbily@suse.cz>
19313
19314         PR middlend/38385
19315         * tree-loop-distribution.c (prop_phis): New function.
19316         (generate_builtin): Call prop_phis.
19317         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
19318
19319 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
19320
19321         PR tree-optimization/38807
19322         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
19323         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
19324
19325 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
19326
19327         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
19328         subreg of op0 to the original op0.
19329
19330 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
19331
19332         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
19333
19334 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
19335
19336         PR debug/7055
19337         * mips-tfile.c (parse_def): Fix parsing of def strings
19338         starting with digits.
19339
19340 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
19341
19342         PR target/38695
19343         * config/arm/arm.c (arm_is_long_call_p): Don't call
19344         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
19345
19346 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
19347
19348         * regrename.c (regrename_optimize): Fix dumping.
19349         (find_oldest_value_reg): Preserve REG_POINTER.
19350         (copy_hardreg_forward_1): Likewise.
19351
19352 2009-01-09  Diego Novillo  <dnovillo@google.com>
19353
19354         * gimple.h (struct gimple_statement_base) <uid>: Document
19355         the restrictions on its use.
19356         (gimple_uid): Tidy.
19357         (gimple_set_uid): Tidy.
19358
19359 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
19360
19361         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
19362         zero guard even if align_bytes != 0 and count is smaller than
19363         size_needed.
19364
19365 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
19366
19367         PR rtl-optimization/38495
19368         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
19369         (add_range_and_copies_from_move_list): Print all added ranges.
19370         Add ranges to memory optimized destination.
19371
19372 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
19373
19374         PR target/38686
19375         PR target/38708
19376         * config/i386/i386.c (override_options): Reject
19377         -mstringop-strategy=rep_8byte with -m32.
19378         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
19379         to 1.  Do count comparison against epilogue_size_needed at compile
19380         time even when count_exp was constant forced into register.  For
19381         size_needed don't jump to epilogue, instead just avoid aligning
19382         and invoke the body algorithm.  If need_zero_guard, add zero guard
19383         even if count is non-zero, but smaller than size_needed + number of
19384         bytes that could be stored for alignment.
19385         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
19386         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
19387         but smaller than size_needed + number of bytes that could be stored
19388         for alignment.  Compare size_needed with epilogue_size_needed instead
19389         of desired_align - align, don't adjust size_needed, pass
19390         epilogue_size_needed to the epilogue expanders.
19391
19392         PR c/35742
19393         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
19394
19395 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19396
19397         * pa.c (last_address): Change to unsigned.
19398         (update_total_code_bytes): Change argument to unsigned.  Don't
19399         check if insn addresses are set.
19400         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
19401         addresses are not set.
19402         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
19403
19404 2009-01-09  Nick Clifton  <nickc@redhat.com>
19405
19406         * config/sh/symbian.c: Replace uses of DECL_INLINE with
19407         DECL_DECLARED_INLINE_P.
19408
19409 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
19410
19411         PR middle-end/38347
19412         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
19413         GET_MODE (op0) in operand_subword_force calls.
19414
19415         PR middle-end/38771
19416         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
19417         fold_convert arg0 operands to TREE_TYPE (op0) first.
19418
19419 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
19420
19421         * params.def (ira-max-conflict-table-size): Decrease default value
19422         to 1000.
19423
19424 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
19425
19426         PR tree-optimization/37031
19427         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
19428         on parameter_set.
19429         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
19430         allocate it using gc instead of heap, use VEC_quick_push instead of
19431         VEC_safe_push.
19432         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
19433         instead of heap, use VEC_quick_push instead of VEC_safe_push.
19434         * tree-data-ref.h (struct access_matrix): Change matrix to gc
19435         allocated vector from heap allocated.
19436         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
19437         * tree-loop-linear.c (linear_transform_loops): Allocate nest
19438         vector only after perfect_loop_nest_depth call.
19439
19440 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
19441             Jan Sjodin  <jan.sjodin@amd.com>
19442
19443         PR tree-optimization/38559
19444         * graphite.c (debug_value, copy_constraint,
19445         swap_constraint_variables, scale_constraint_variable, ): New.
19446         (get_lower_bound, get_upper_bound): Removed.
19447         (graphite_trans_bb_strip_mine): Clean up this code that works
19448         only for constant number of iterations.  Fully copy upper and
19449         lower bound constraints, not only the constant part of them.
19450         * graphite.h (debug_value): Declared.
19451
19452 2009-01-08  Ira Rosen  <irar@il.ibm.com>
19453
19454         PR tree-optimization/37194
19455         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
19456         Don't add the cost of cost model guard in prologue to scalar
19457         outside cost in case of known number of iterations.
19458
19459 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
19460             Alan Modra  <amodra@bigpond.net.au>
19461
19462         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
19463         non-word-aligned REG+CONST addressing.
19464
19465 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
19466
19467         PR target/38706
19468         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
19469         free_after_compilation when outputting a thunk.
19470         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
19471         Do not call free_after_compilation here.
19472
19473 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
19474
19475         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
19476         (ix86_valid_target_attribute_inner_p): Ditto.
19477
19478 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
19479
19480         PR tree-optimization/38492
19481         PR tree-optimization/38498
19482         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
19483         * tree-chrec.h (scev_is_linear_expression): Declared.
19484         * graphite.c (graphite_cannot_represent_loop_niter): New.
19485         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
19486         (graphite_loop_normal_form): Use gcc_assert.
19487         (scan_tree_for_params): Use CASE_CONVERT.
19488         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
19489         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
19490         Use gcc_assert.  Discard scops that contain unhandled cases.
19491         (build_scop_conditions): Return a boolean status for unhandled cases.
19492         (strip_mine_profitable_p): Print the loop number, not its depth.
19493         (is_interchange_valid): Pass the depth of the loop nest, don't
19494         recompute it wrongly.
19495         (graphite_trans_bb_block): Same.
19496         (graphite_trans_bb_block): Print tentative of loop blocking.
19497         (graphite_trans_scop_block): Do not print that the loop has been
19498         blocked.
19499         (graphite_transform_loops): Do not handle scops that contain condition
19500         scalar phi nodes.
19501
19502 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
19503
19504         AVX Programming Reference (December, 2008)
19505         * config/i386/avxintrin.h (_mm256_stream_si256): New.
19506         (_mm256_stream_pd): Likewise.
19507         (_mm256_stream_ps): Likewise.
19508
19509         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
19510         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
19511         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
19512         (bdesc_special_args): Add __builtin_ia32_movntdq256,
19513         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
19514         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
19515         (ix86_expand_special_args_builtin): Likewise.
19516
19517         * config/i386/sse.md (AVXMODEDI): New.
19518         (avx_movnt<mode>): Likewise.
19519         (avx_movnt<mode>): Likewise.
19520         (<sse>_movnt<mode>): Remove AVX support.
19521         (sse2_movntv2di): Likewise.
19522
19523 2009-01-07  Richard Guenther  <rguenther@suse.de>
19524
19525         PR middle-end/38751
19526         * fold-const.c (extract_muldiv): Remove obsolete comment.
19527         (fold_plusminus_mult_expr): Undo MINUS_EXPR
19528         to PLUS_EXPR canonicalization for the canonicalization.
19529
19530 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
19531
19532         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
19533         hosted cross-compilers generating less efficient code.
19534
19535 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
19536
19537         * function.h (rtl_data): Add a dbr_scheduled_p field.
19538         * reorg.c (dbr_schedule): Set it.
19539         (gate_handle_delay_slots): Check it.
19540         * config/mips/mips.c (mips_base_delayed_branch): Delete.
19541         (mips_reorg): Check flag_delayed_branch instead of
19542         mips_base_delayed_branch.
19543         (mips_override_options): Don't set mips_base_delayed_branch
19544         or flag_delayed_branch.
19545
19546 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
19547
19548         PR rtl-optimization/38426.
19549         * ira.c (ira): Set current_function_is_leaf earlier.
19550
19551 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
19552
19553         PR rtl-optimization/38722
19554         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
19555         too early, only set a flag and modify after last possible
19556         undo_all point.
19557
19558 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
19559
19560         PR c/34252
19561         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
19562         * real.c (decimal_single_format): Correct values of emin and emax.
19563         (decimal_double_format): Ditto.
19564         (decimal_quad_format): Ditto.
19565         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
19566         computation of DECnn_MIN and DECnn_MAX for corrected values of
19567         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
19568         __DECnn_MIN__, and adjust its computation for the corrected value
19569         of emin.
19570
19571 2009-01-06  Jan Hubicka  <jh@suse.cz>
19572
19573         PR target/38744
19574         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
19575
19576 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
19577
19578         * doc/contrib.texi (Contributors): Slightly adjust the end note.
19579         Add Robert Clark to the list of testers.
19580
19581 2009-01-06  Jan Hubicka  <jh@suse.cz>
19582             Kai Tietz  <kai.tietz@onevision.com>
19583
19584         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
19585         * config/i386/i386.c (ix86_expand_call): Add clobbers.
19586
19587 2009-01-06  Jan Hubicka  <jh@suse.cz>
19588             Kai Tietz  <kai.tietz@onevision.com>
19589
19590         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
19591         for w64 ABI.
19592         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
19593         (ix86_nsaved_regs): Count only general purpose regs.
19594         (ix86_nsaved_sseregs): New.
19595         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
19596         to 16 for w64; compute padding and size of sse reg save area.
19597         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
19598         general purpose regs.
19599         (ix86_emit_save_sse_regs_using_mov): New.
19600         (ix86_expand_prologue): Save SSE regs if needed.
19601         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
19602         (ix86_emit_restore_sse_regs_using_mov): New.
19603         (ix86_expand_epilogue): Save SSE regs if needed.
19604
19605 2009-01-06  Jan Hubicka  <jh@suse.cz>
19606             Kai Tietz  <kai.tietz@onevision.com>
19607
19608         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
19609         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
19610         functions when accumulate outgoing args is off.
19611
19612 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
19613
19614         PR bootstrap/38742
19615         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
19616         before using pseudos_have_intersected_live_ranges_p.
19617
19618         * ira-int.h (ira_assert): Always define.
19619
19620 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
19621
19622         AVX Programming Reference (December, 2008)
19623         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
19624         (_mm256_permute2_pd): Likewise.
19625         (_mm_permute2_ps): Likewise.
19626         (_mm256_permute2_ps): Likewise.
19627         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
19628         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
19629
19630         * config/i386/i386.c (ix86_builtins): Remove
19631         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
19632         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
19633         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
19634         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
19635         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
19636         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
19637         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
19638         __builtin_ia32_vpermil2ps256.
19639         (ix86_init_mmx_sse_builtins): Updated.
19640         (ix86_expand_args_builtin): Likewise.
19641
19642 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19643
19644         * pa.c (output_call): Relocate non-jump insns in the delay slot of
19645         long absolute calls when generating PA 2.0 code.
19646
19647 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
19648
19649         PR rtl-optimization/38583
19650         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
19651
19652         * params.def (ira-max-conflict-table-size): New.
19653
19654         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
19655
19656         * ira.h (ira_conflicts_p): New external definition.
19657
19658         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
19659         table.  Report this.  Return result of building.
19660         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
19661         building conflict table.
19662
19663         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
19664         (ira_color): Use ira_conflicts_p.
19665
19666         * global.c: Include ira.h.
19667         (pseudo_for_reload_consideration_p, build_insn_chain): Use
19668         ira_conflicts_p.
19669
19670         * Makefile.in (global.o): Add ira.h.
19671
19672         * ira-build.c (mark_all_loops_for_removal,
19673         propagate_some_info_from_allocno): New.
19674         (remove_unnecessary_allocnos): Call
19675         propagate_some_info_from_allocno.
19676         (remove_low_level_allocnos): New.
19677         (remove_unnecessary_regions): Add parameter.  Call
19678         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
19679         parameter to remove_unnecessary_regions.
19680         (ira_build): Remove all regions but root if the conflict table was
19681         not built.  Update conflict hard regs for allocnos crossing calls.
19682
19683         * ira.c (ira_conflicts_p): New global.
19684         (ira): Define and use ira_conflicts_p.
19685
19686         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
19687         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
19688         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
19689
19690 2009-01-06  Ben Elliston  <bje@au.ibm.com>
19691
19692         * gengtype-lex.l (YY_NO_INPUT): Define.
19693
19694 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19695
19696         PR c/34911
19697         * c-common.c (handle_vector_size_attribute): Also reject
19698         BOOLEAN_TYPE types.
19699
19700 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
19701
19702         PR tree-optimization/38492
19703         * graphite.c (rename_map_elt, debug_rename_elt,
19704         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
19705         rename_map_elt_info, eq_rename_map_elts,
19706         get_new_name_from_old_name, bb_in_sese_p): Moved around.
19707         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
19708         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
19709         (sese_build_livein_liveouts): New.
19710         (new_sese, free_sese): New.
19711         (new_scop): Call new_sese.
19712         (free_scop): Call free_sese.
19713         (rename_variables_from_edge, rename_phis_end_scop): Removed.
19714         (register_old_new_names): Renamed register_old_and_new_names.
19715         (register_scop_liveout_renames, add_loop_exit_phis,
19716         insert_loop_close_phis, struct igp,
19717         default_liveout_before_guard, add_guard_exit_phis,
19718         insert_guard_phis, copy_renames): New.
19719         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
19720         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
19721         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
19722         (scop_adjust_phis_for_liveouts): New.
19723         (gloog): Call scop_adjust_phis_for_liveouts.
19724
19725         * graphite.h (struct sese): Documented.  Added fields liveout,
19726         num_ver and livein.
19727         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
19728         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
19729         (struct scop): Added field liveout_renames.
19730         (SCOP_LIVEOUT_RENAMES): New.
19731
19732 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
19733
19734         PR tree-optimization/38510
19735         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
19736         (translate_clast): Call recompute_all_dominators before
19737         graphite_verify.
19738         (gloog): Call recompute_all_dominators before graphite_verify.
19739
19740 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
19741             Jan Sjodin  <jan.sjodin@amd.com>
19742
19743         PR tree-optimization/38500
19744         * graphite.c (create_sese_edges): Call fix_loop_structure after
19745         splitting blocks.
19746
19747 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
19748
19749         * config.gcc: Add m32r*-*-rtems*.
19750         * config/m32r/rtems.h: New file.
19751
19752 2009-01-05  Ben Elliston  <bje@au.ibm.com>
19753
19754         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
19755         (.po.pox): Likewise.
19756         (po/gcc.pot): Likewise.
19757
19758 2009-01-04  David S. Miller  <davem@davemloft.net>
19759
19760         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
19761         (STARTING_FRAME_OFFSET): Always set to zero.
19762
19763 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
19764
19765         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
19766         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
19767         fixed-point types, and vectors of the same.
19768
19769 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
19770
19771         * config/mips/sync.md (*mb_barrier): Rename to...
19772         (*memory_barrier): ...this.
19773
19774 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
19775
19776         * doc/extend.texi (Function Attributes): Move @cindex after @item
19777         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
19778         and put in alphabetical order. Fix 'target' name and put in order.
19779         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
19780         typos.
19781
19782 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
19783
19784         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
19785         (memory_barrier): Expand as unspec instead of unspec_volatile.
19786         Remove mem:BLK from insn operands.  Use Pmode scratch register.
19787         (*memory_barrier): Define as unspec instead of unspec_volatile.
19788         Use (match_dup 0) as input operand.
19789
19790         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
19791         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
19792         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
19793         scratch register.  Remove operand 1.
19794         (*stbar): Define as unspec instead of unspec_volatile.
19795         Use (match_dup 0) as input operand, remove (const_int 8).
19796         (*membar): Define as unspec instead of unspec_volatile.
19797         Use (match_dup 0) as input operand, remove input operand 2.
19798
19799         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
19800         (memory_barrier): Expand as unspec instead of unspec_volatile.
19801         Remove mem:BLK from insn operands.  Use Pmode scratch register.
19802         (*memory_barrier): Define as unspec instead of unspec_volatile.
19803         Use (match_dup 0) as input operand.
19804
19805         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
19806         Remove mem:BLK from insn operands.  Use Pmode scratch register.
19807         Set volatile flag on operand 0.
19808         (*memory_barrier): New insn pattern.
19809
19810         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
19811         insn operands.
19812         (*memory_barrier): Use (match_dup 0) as input operand.
19813
19814         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
19815         Remove mem:BLK from insn operands.  Use Pmode scratch register.
19816         Set volatile flag on operand 0.
19817         (*mb_internal): New insn pattern.
19818
19819         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
19820
19821 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
19822
19823         PR middle-end/38586
19824         * function.c (struct temp_slot): Move to the section of the file
19825         that deals with temp slots.  Remove field 'address'.
19826         (temp_slot_address_table): New hash table of address -> temp slot.
19827         (struct temp_slot_address_entry): New struct, items for the table.
19828         (temp_slot_address_compute_hash, temp_slot_address_hash,
19829         temp_slot_address_eq, insert_temp_slot_address): Support functions
19830         for the new table.
19831         (find_temp_slot_from_address): Rewrite to use the new hash table.
19832         (remove_unused_temp_slot_addresses): Remove addresses of temp
19833         slots that have been made available.
19834         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
19835         worker function for remove_unused_temp_slot_addresses.
19836         (assign_stack_temp_for_type): Don't clear the temp slot address list.
19837         Add the temp slot address to the address -> temp slot map.
19838         (update_temp_slot_address): Update via insert_temp_slot_address.
19839         (free_temp_slots): Call remove_unused_temp_slot_addresses.
19840         (pop_temp_slots): Likewise.
19841         (init_temp_slots): Allocate the address -> temp slot map, or empty
19842         the map if it is already allocated.
19843         (prepare_function_start): Initialize temp slot processing.
19844
19845 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
19846
19847         PR middle-end/38584
19848         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
19849         Calculate the size of all stack vars assuming no packing of stack
19850         vars will happen, replacing a quadratic algorithm with a linear one.
19851
19852 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
19853
19854         PR target/38707
19855         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
19856         can't be used.
19857
19858 2009-01-03  Diego Novillo  <dnovillo@google.com>
19859
19860         * doc/contrib.texi: Update contributions.
19861
19862 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
19863
19864         PR c++/38705
19865         * builtins.c (fold_builtin_memory_op): Give up if either operand
19866         is volatile.  Set srctype or desttype to non-qualified version
19867         of the other type.
19868
19869         PR c/38700
19870         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
19871         and FUNCTION_DECLs.
19872
19873 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
19874
19875         PR rtl-optimization/35805
19876         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
19877         problem if fast dce is able to remove any instructions.
19878         * dce.c (dce_process_block): Fix dump message.
19879
19880 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
19881
19882         PR 33649
19883         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
19884
19885 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
19886
19887         PR middle-end/38690
19888         * tree-flow.h (op_code_prio, op_prio): New prototypes.
19889         * tree-pretty-print.c (op_code_prio): New function.
19890         (op_prio): No longer static.  Use op_code_prio.
19891         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
19892         Use op_prio and op_code_prio to determine if () should be
19893         printed around operand(s) or not.
19894
19895         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
19896         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
19897         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
19898         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
19899         pp_character instead of pp_string for single letter printing.
19900
19901 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
19902
19903         * doc/extend.texi: Fix '#pragma GCC option' typo.
19904
19905 2009-01-02  Richard Guenther  <rguenther@suse.de>
19906
19907         * doc/install.texi (--enable-checking): Mention different
19908         default for stage1.
19909         (--enable-stage1-checking): Document.
19910
19911 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
19912
19913         PR middle-end/30142
19914         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
19915         case to be an error.
19916
19917 2009-01-02  Ben Elliston  <bje@au.ibm.com>
19918
19919         * config/fp-bit.h (pack_d): Constify argument.
19920         * config/fp-bit.c (makenan): Constify return type. Remove casts.
19921         (isnan): Constify argument.
19922         (isinf): Likewise.
19923         (iszero): Likewise.
19924         (pack_d): Likewise.
19925         (_fpadd_parts): Constify return type.
19926         (_fpmul_parts): Likewise.
19927         (_fpdiv_parts): Likewise.
19928
19929 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
19930
19931         PR c/36489
19932         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
19933         warn about overwriting initializer with side-effects or
19934         -Woverride-init if !IMPLICIT.
19935         (output_init_element): Likewise.  Pass IMPLICIT down to
19936         add_pending_init.
19937         (process_init_element): Add IMPLICIT argument.  Pass it down
19938         to output_init_element.
19939         (push_init_element, pop_init_level, set_designator): Adjust
19940         process_init_element callers.
19941         (set_nonincremental_init, set_nonincremental_init_from_string):
19942         Adjust add_pending_init callers.
19943         (output_pending_init_elements): Adjust output_init_element callers.
19944         * c-tree.h (process_init_element): Adjust prototype.
19945         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
19946         process_init_element callers.
19947
19948 \f
19949 Copyright (C) 2009 Free Software Foundation, Inc.
19950
19951 Copying and distribution of this file, with or without modification,
19952 are permitted in any medium without royalty provided the copyright
19953 notice and this notice are preserved.