OSDN Git Service

* config/i386/bsd.h (ASM_BYTE): New define.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
2
3         * config/i386/bsd.h (ASM_BYTE): New define.
4         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
5         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
6         .byte.  Use fputs or putc instead of fprintf where appropriate.
7         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
8         fputs or putc instead of fprintf where appropriate.
9         * config/i386/i386elf.h: Ditto.
10         * config/i386/sysv4.h: Ditto.
11         
12         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
13         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
14         (*tls_global_dynamic_64): Ditto.
15
16 2009-07-31  Christian Bruel  <christian.bruel@st.com>   
17
18         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
19         
20 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21
22         * config/arm/arm.c (arm_arm_address_cost): Fix typo. 
23         Remove dead code for MINUS.
24
25 2009-07-31  Anthony Green  <green@moxielogic.com>
26
27         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
28         $r12 in prologue.
29         (moxie_expand_epilogue): Ditto for epilogue.
30         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
31         incoming arguments.
32         (moxie_function_arg): Ditto.
33         (moxie_pass_by_reference): Ditto.
34         (moxie_arg_partial_bytes): Ditto.
35         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
36         (FUNCTION_ARG_ADVANCE) Ditto.
37         (REG_PARM_STACK_SPACE) Ditto.
38         (FUNCTION_ARG_REGNO_P) Dito.
39
40         * config.gcc: Add moxie linux config support.
41         * gcc/config/moxie/uclinux.h: New file.
42
43 2009-07-31  DJ Delorie  <dj@redhat.com>
44
45         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
46         (UNSPECV_SP_SWITCH_E): New.
47         (sp_switch_1): Change to an unspec.
48         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
49         replace $r15.
50         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
51         reference the new stack's address
52
53 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
54
55         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
56         graphite-clast-to-gimple.o, graphite-dependences.o,
57         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
58         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
59         (graphite-blocking.o,
60         graphite-clast-to-gimple.o, graphite-dependences.o,
61         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
62         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
63         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
64         * cfgloop.h (struct loop): Add can_be_parallel field.
65         * common.opt (fgraphite-identity): Moved up.
66         (fgraphite-force-parallel): New flag.
67         * graphite.c: Rewrite.
68         * graphite.h: Rewrite.
69         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
70         after Graphite.
71         * toplev.c (graphite_out_file): New file descriptor.
72         (graphite_in_file): New.
73         (process_options): flag_graphite_force_parallel cannot be used without
74         Graphite.
75         * tree-ssa-loop.c: Include toplev.h.
76         (gate_graphite_transforms): Enable flag_graphite for
77         flag_graphite_force_parallel.
78
79 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
80
81         * ChangeLog.graphite: New.
82         * graphite-blocking.c: New.
83         * graphite-clast-to-gimple.c: New.
84         * graphite-clast-to-gimple.h: New.
85         * graphite-dependences.c: New.
86         * graphite-dependences.h: New.
87         * graphite-interchange.c: New.
88         * graphite-poly.c: New.
89         * graphite-poly.h: New.
90         * graphite-ppl.c: New.
91         * graphite-ppl.h: New.
92         * graphite-scop-detection.c: New.
93         * graphite-scop-detection.h: New.
94         * graphite-sese-to-poly.c: New.
95         * graphite-sese-to-poly.h: New.
96         * sese.c: New.
97         * sese.h: New.
98
99 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
100
101         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
102         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
103
104 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
105
106         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
107         (scev_is_linear_expression): Return false if the evolution is not
108         affine multivariate.
109
110 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
111
112         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
113         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
114
115 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
116
117         * tree-data-ref.c (debug_data_references): New.
118         (debug_data_reference): New.
119         * tree-data-ref.h (debug_data_references): Declared.
120         (debug_data_reference): Declared.
121
122 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
123
124         * tree-data-ref.c (stmt_simple_memref_p: Removed.
125         * tree-data-ref.h (scop_p): Removed.
126         (struct data_reference): Remove field scop.
127         (DR_SCOP): Removed.
128         (stmt_simple_memref_p): Removed.
129
130 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
131
132         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
133         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
134         basic block empty.
135
136 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
137
138         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
139
140 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
141
142         * doc/invoke.texi (-fgraphite-identity): Documented.
143
144 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
145
146         * tree-scalar-evolution.c: Fix comment.
147         (instantiate_scev_1): Return unknow from scev instantiation if the
148         result is not above instantiate_below.
149
150 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
151
152         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
153         static anymore.  Instantiate the symbols that may have been introduced
154         by chrec_apply.
155         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
156         Declared.
157
158 2009-07-30  DJ Delorie  <dj@redhat.com>
159
160         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
161         .vliw directive to VLIW sections.
162
163 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
164
165         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
166         New variables.
167         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
168         (AUTOHEADER): New variable.
169         ($(srcdir)/cstamp-h.in): Use it.
170
171 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
172             Pat Haugen  <pthaugen@us.ibm.com>
173             Revital Eres <ERES@il.ibm.com>
174
175         * config/rs6000/vector.md (VEC_F): Add VSX support.
176         (VEC_A): Ditto.
177         (VEC_N): Ditto.
178         (mov<mode>): Ditto.
179         (vector_load_<mode>): Ditto.
180         (vector_store_<mode>): Ditto.
181         (vector GPR move split): Ditto.
182         (vec_reload_and_plus_<mptrsize>): Ditto.
183         (vec_reload_and_reg_<mptrsize>): Ditto.
184         (add<mode>3): Ditto.
185         (sub<mode>3): Ditto.
186         (mul<mode>3): Ditto.
187         (neg<mode>2): Ditto.
188         (abs<mode>2): Ditto.
189         (smin<mode>3): Ditto.
190         (smax<mode>3): Ditto.
191         (vector_eq<mode>): Ditto.
192         (vector_gt<mode>): Ditto.
193         (vector_ge<mode>): Ditto.
194         (vector_gtu<mode>): Ditto.
195         (vector_select_<mode>_uns): Ditto.
196         (vector_eq_<mode>_p): Ditto.
197         (vector_gt_<mode>_p): Ditto.
198         (vector_ge_<mode>_p): Ditto.
199         (vector_gtu_<mode>_p): Ditto.
200         (cr6_test_for_zero): Ditto.
201         (cr6_test_for_zero_reverse): Ditto.
202         (cr6_test_for_lt): Ditto.
203         (cr6_test_for_lt_reverse): Ditto.
204         (xor<mode>3): Ditto.
205         (ior<mode>3): Ditto.
206         (and<mode>3): Ditto.
207         (one_cmpl<mode>2): Ditto.
208         (nor<mode>2): Ditto.
209         (andc<mode>2): Ditto.
210         (float<VEC_int<mode>2): Ditto.
211         (unsigned_float<VEC_int><mode>2): Ditto.
212         (fix_trunc<mode><VEC_int>2): Ditto.
213         (fixuns_trunc<mode><VEC_int>2): Ditto.
214         (vec_init<mode>):
215         (vec_set<mode>): Ditto.
216         (vec_extract<mode>): Ditto.
217         (vec_interleave_highv4sf): Ditto.
218         (vec_interleave_lowv4sf): Ditto.
219         (vec_realign_load_<mode>): Ditto.
220         (vec_shl_<mode>): Ditto.
221         (vec_shr_<mode>): Ditto.
222         (div<mode>3): New patterns for VSX.
223         (vec_interleave_highv2df): Ditto.
224         (vec_interleave_lowv2df): Ditto.
225         (vec_pack_trunc_v2df): Ditto.
226         (vec_pack_sfix_trunc_v2df): Ditto.
227         (vec_pack_ufix_trunc_v2df): Ditto.
228         (vec_unpacks_hi_v4sf): Ditto.
229         (vec_unpacks_lo_v4sf): Ditto.
230         (vec_unpacks_float_hi_v4si): Ditto.
231         (vec_unpacku_float_lo_v4si): Ditto.
232         (vec_unpacku_float_hi_v4si): Ditto.
233         (vec_unpacks_float_lo_v4si): Ditto.
234         (movmisalign<mode>): Ditto.
235         (vector_ceil<mode>2): New patterns for vectorizing math library.
236         (vector_floor<mode>2): Ditto.
237         (vector_btrunc<mode>2): Ditto.
238         (vector_copysign<mode>3): Ditto.
239
240         * config/rs6000/predicates.md (easy_vector_constant_msb): New
241         predicate for setting the high bit in each word, used for copysign.
242
243         * config/rs6000/ppc-asm.h (f19): Whitespace.
244         (f32-f63): Define if VSX.
245         (v0-v31): Define if Altivec.
246         (vs0-vs63): Define if VSX.
247
248         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
249
250         * config/rs6000/power7.md: New file, provide tuning parameters for
251         -mcpu=power7.
252
253         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
254         (rs6000_cpu_cpp_builtins): Ditto.
255         (altivec_overloaded_builtins): Ditto.
256         (altivec_resolve_overloaded_builtin): Ditto.
257
258         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
259         debug switch to disable vectorizing simple math builtin
260         functions.
261
262         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
263         Vectorize simple math builtin functions.
264         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
265         hook to vectorize math builtins.
266         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
267         (rs6000_builtin_conversion): Add VSX/power7 support.
268         (rs6000_builtin_vec_perm): Ditto.
269         (vsplits_constant): Add support for loading up a vector constant
270         with just the high bit set in each part.
271         (rs6000_expand_vector_init): Add VSX/power7 support.
272         (rs6000_expand_vector_set): Ditto.
273         (rs6000_expand_vector_extract): Ditto.
274         (rs6000_emit_move): Ditto.
275         (bdesc_3arg): Ditto.
276         (bdesc_2arg): Ditto.
277         (bdesc_1arg): Ditto.
278         (rs6000_expand_ternop_builtin): Ditto.
279         (altivec_expand_builtin): Ditto.
280         (rs6000_expand_unop_builtin): Ditto.
281         (rs6000_init_builtins): Ditto.
282         (altivec_init_builtins): Ditto.
283         (builtin_function_type): Ditto.
284         (rs6000_common_init_builtins): Ditto.
285         (rs6000_handle_altivec_attribute); Ditto.
286         (rs6000_mangle_type): Ditto.
287         (rs6000_vector_mode_supported_p): Ditto.
288         (rs6000_mode_dependent_address): Altivec addresses with AND -16
289         are mode dependent.
290
291         * config/rs6000/vsx.md: New file for VSX support.
292
293         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
294         identifing values with just the most significant bit set.
295         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
296         vectorized builtins.
297
298         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
299         (UNSPEC_VRFIM): Delete.
300         (splitter for loading up vector with most significant bit): New
301         splitter for vectorizing copysign.
302         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
303         vectorizing simple math functions.
304         (altivec_vrfip): Add support for vectorizing simple math functions.
305         (altivec_vrfim): Ditto.
306         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
307
308         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
309         (power7.md, vsx.md): Include for power7 support.
310         (copysigndf3): Use VSX instructions if -mvsx.
311         (negdf2_fpr): Ditto.
312         (absdf2_fpr): Ditto.
313         (nabsdf2_fpr): Ditto.
314         (adddf3_fpr): Ditto.
315         (subdf3_fpr): Ditto.
316         (muldf3_fpr): Ditto.
317         (divdf3_fpr): Ditto.
318         (fix_truncdfdi2_fpr): Ditto.
319         (cmpdf_internal1): Ditto.
320         (fred, fred_fpr): Convert into expander/insn to add VSX support.
321         (btruncdf2, btruncdf2_fpr): Ditto.
322         (ceildf2, ceildf2_fpr): Ditto.
323         (floordf2, floordf2_fpr): Ditto.
324         (floatdidf2, floatdidf2_fpr): Ditto.
325         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
326         (fmsubdf4_fpr): Ditto.
327         (fnmadddf4_fpr_1): Ditto.
328         (fnmadddf4_fpr_2): Ditto.
329         (fnmsubdf4_fpr_1): Ditto.
330         (fnmsubdf4_fpr_2): Ditto.
331         (fixuns_truncdfdi2): Add expander for VSX support.
332         (fix_truncdfdi2): Ditto.
333         (fix_truncdfsi2): Ditto.
334         (ftruncdf2): Ditto.
335         (btruncsf2): Whitespace.
336         (movdf_hardfloat32): Add support for VSX registers.
337         (movdf_softfloat32): Ditto.
338         (movdf_hardfloat64): Ditto.
339         (movdf_hardfloat64_mfpgpr): Ditto.
340         (movdf_softfloat64): Ditto.
341         (movti splitters): Add check for vector registers supporting
342         TImode in the future.
343         (bpermd): Add power7 bpermd instruction.
344
345         * config/rs6000/altivec.h (vec_div): Define if VSX.
346         (vec_mul): Ditto.
347         (vec_msub): Ditto.
348         (vec_nmadd): Ditto.
349         (vec_nearbyint): Ditto.
350         (vec_rint): Ditto.
351         (vec_sqrt): Ditto.
352         (all predicates): Use the generic builtin function, and not the V4SF
353         specific function so that the predicates will work with VSX's V2DF.
354         (vec_all_*): Ditto.
355         (vec_any_*): Ditto.
356
357         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
358         Document new VSX functions and types.
359
360         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
361         switches.
362
363         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
364         "wa", and "j" constraints.  Modify "v" to talk about Altivec
365         instead of just vector.
366
367 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
368
369         PR debug/26475
370         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
371         location for phi arguments.
372         (rewrite_update_phi_arguments): Find locations for reaching defs.
373         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
374         Add location to add_phi_arg calls.
375         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
376         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
377         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
378         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
379         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
380         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
381         * tree-phinodes.c (make_phi_node): Initialize location.
382         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
383         (add_phi_arg): Add location parameter.
384         (remove_phi_arg_num): Move location when moving phi argument.
385         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set 
386         location.
387         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
388         slpeel_update_phi_nodes_for_guard1,
389         slpeel_update_phi_nodes_for_guard2,
390         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
391         vect_loop_versioning): Set locations.
392         * tree-parloops.c (create_phi_for_local_result,
393         transform_to_exit_first_loop, create_parallel_loop): Add locations.
394         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
395         * tree-vect-loop.c (get_initial_def_for_induction,
396         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
397         locations.
398         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
399         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
400         (gimple_phi_arg_set_location): New.  Set locus.
401         (gimple_phi_arg_has_location): New.  Check for locus.
402         (redirect_edge_var_map_location): New.  Return locus from var_map.
403         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
404         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
405         combining PHI arguments.
406         (cond_store_replacement): Set location.
407         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
408         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
409         scop_add_exit_phis_edge): Add locations.
410         * tree-cfgcleanup.c (remove_forwarder_block,
411         remove_forwarder_block_with_phi): Add locations.
412         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
413         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
414         locations.
415         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
416         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
417         flush_pending_stmts): Add source location.
418         * lambda-code.c (perfect_nestify): Maintain location stack with argument
419         stack to preserve locations.
420         * tree-vect-stmts.c (vectorizable_load): Add location.
421         * tree-inline.c (copy_phis_for_bb): Copy locus.
422         (setup_one_parameter): Add call locus to inlined parameter stmts.
423         (initialize_inlined_parameters): Pass in call location as parameter
424         assignment locus.
425         (tree_function_versioning): Pass location to setup_one_parameter.
426         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
427         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
428         copy and edge lists.
429         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
430         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a 
431         locus parameter and override the stmt default if provided.
432         (new_elim_graph, clear_elim_graph, delete_elim_graph,
433         elim_graph_add_edge, elim_graph_remove_succ_edge,
434         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
435         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
436         eliminate_phi):  Add locus info in elimination graph for each edge and
437         value copy.
438         (insert_backedge_copies): Copy locus if present.
439         * tree-flow.h (struct _edge_var_map): Add locus field.
440         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
441         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
442         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add 
443         locations.
444         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
445         
446 2009-07-30  Martin Jambor  <mjambor@suse.cz>
447
448         PR tree-optimization/40570
449         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
450         use inlining loops.
451
452 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
453
454         * ssa-loop-manip.c: Include langhooks.h.
455         (rewrite_phi_with_iv): New.
456         (rewrite_all_phi_nodes_with_iv): New.
457         (canonicalize_loop_ivs): Move here from tree-parloops.c.
458         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
459         * tree-parloops.c (loop_parallel_p): Move out all conditions
460         except dependency check.
461         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
462         (gen_parallel_loop): Call canonicalize_loop_ivs without
463         reduction_list argument.
464         (build_new_reduction): New.
465         (gather_scalar_reductions): New.
466         (try_get_loop_niter): New.
467         (try_create_reduction_list): New.
468         (parallleize_loops): Change the parallel conditions check.
469         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
470         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
471
472 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
473
474         * opt-functions.awk (opt_args): Allow argument to be enclosed in
475         curly braces.
476         * doc/options.texi (Option properties):  Mention new quoting syntax.
477
478 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
479
480         * config/alpha/alpha.c (alpha_start_function):
481         Handle VMS_DEBUG_MAIN_POINTER
482         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
483         * doc/invoke.texi: Document -mdebug-main switch.
484
485 2009-07-29  Richard Henderson  <rth@redhat.com>
486
487         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
488         (cgraph_create_edge_including_clones): Likewise.
489         * tree-inline.c (copy_bb): Operate on the correct edges
490         when updating the callgraph.
491
492 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
493
494         * config/alpha/vms-cc.c: Deleted.
495         * config/alpha/vms-ld.c: Deleted.
496         * config/alpha/t-vms64: Moved to config/vms
497         * config/alpha/vms-crt0-64.c: Moved to config/vms
498         * config/alpha/vms-crt0.c: Moved to config/vms
499         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
500         * config/alpha/vms-psxcrt0.c: Moved to config/vms
501         * config/alpha/xm-vms.h: Moved to config/vms
502         * config/alpha/x-vms: Moved to config/vms
503         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
504         config/vms/t-vms.
505         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
506         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
507         (version): Set.
508         * config/vms/t-vms64: Moved here from config/alpha
509         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
510         (argc,argv,envp): Enforce 32bit malloc'ing.
511         * config/vms/vms-psxcrt0-64.c: Likewise.
512         * config/vms/vms-crt0.c: Moved here from config/alpha.
513         * config/vms/vms-psxcrt0.c: Likewise.
514         * config/vms/vms-crtl-64.h: New file.
515         * config/vms/vms-crtl.h: New file.
516         * config/vms/vms.opt: New file.
517         * config/vms/xm-vms64.h: New file.
518         * config/vms/xm-vms.h: Moved here from config/alpha.
519         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
520         Set.
521         * config/vms/x-vms: Moved here from config/alpha.
522         (version, VMS_EXTRA_PARTS): Moved to t-vms.
523         (vms-ld.o, vms-cc.o): Removed.
524         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
525
526 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
527
528         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
529         correct stack (obvious VMS fix).
530
531 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
532
533         * dwarf2out.c (output_file_names): Output VMS style file name, size,
534         date, version info if VMS_DEBUGGING_INFO defined.
535         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
536         size, date calculating code moved here.
537
538 2009-07-29  Paul Brook  <paul@codesourcery.com>
539
540         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
541         do_push/do_pop.
542
543 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
544
545         PR target/40577
546         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
547         to DImode when generating insq_le insn.
548
549 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
550
551         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
552         New macro set for VMS_DEBUGGGING_INFO.
553         (AT_string_form): Use it.
554
555 2009-07-28  DJ Delorie  <dj@redhat.com>
556
557         * config/mep/mep.c (vtext_section): New.
558         (vftext_section): New.
559         (ftext_section): New.
560         (mep_select_section): Add support for functions.
561         (mep_unique_section): Likewise.
562         (mep_asm_init_sections): Likewise.
563         (mep_encode_section_info): Remove it from here.
564
565         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
566
567 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
568
569         * tree.h (TREE_DEPRECATED): Document it is used for types too.
570         (TYPE_VECTOR_OPAQUE): Use default_def_flag
571
572 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
573
574         * dwarf2out.c (output_file_names): Test new macro
575         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
576         (add_comp_dir_attribute): Likewise.
577
578 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
579
580         * config/i386/mingw-w64.h (LINK_SPEC): Add
581         separating space between commands.
582
583 2009-07-28  Jan Hubicka  <jh@suse.cz>
584
585         PR tree-optimization/40759
586         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
587         for renaming.
588
589 2009-07-27  DJ Delorie  <dj@redhat.com>
590
591         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
592         types are dword-aligned.
593         (mep_expand_va_start): Likewise.
594
595 2009-07-27  Olivier Hainque  <hainque@adacore.com>
596             Douglas B Rupp  <rupp@gnat.com>
597
598         * convert.c (convert_to_pointer): Don't assume the target
599         pointer type is POINTER_SIZE long. Fetch its precision instead.
600
601 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
602
603         * system.h (fopen): Undefine if macro.
604
605 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
606
607         * dwarf2out.c (output_cfi_p): Removed.
608         (output_cfis): New function.
609         (output_fde): New function, split from output_call_frame_info.
610         (output_call_frame_info): Use it.
611         (dwarf2out_switch_text_section): Use output_cfis.
612
613 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
614
615         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
616         TARGET_BI_ARCH is specified without enabling SJLJ.
617         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
618         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
619
620 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
621
622         * arm.md (negdi2): Use DImode if forcing a value into a register.
623
624 2009-07-26  Ira Rosen  <irar@il.ibm.com>
625
626         PR tree-optimization/40801
627         * tree-vect-stmts.c (vectorizable_call): Get previous copy
628         of vector operand from the previous copy of vector statement.
629         Pass the correct definition type value to
630         vect_get_vec_def_for_stmt_copy().
631
632 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
633
634         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
635         const char ** conversion.
636
637 2009-07-25 David Daney <ddaney@caviumnetworks.com>
638
639         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
640         fancy_abort() if !ENABLE_ASSERT_CHECKING.
641         (gcc_unreachable): Invoke __builtin_unreachable() if
642         !ENABLE_ASSERT_CHECKING.
643
644 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
645
646         PR rtl-optimization/40445
647         * emit-rtl.c (next_nonnote_insn_bb): New function.
648         * rtl.h (next_nonnote_insn_bb): Declare new function.
649         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
650         with no successors that is the successor of the ENTRY_BLOCK.
651         Continue from the top after removing an empty fallthrough block.
652         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
653         of next_nonnote_insn.
654
655 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
656
657         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
658         
659 2009-07-25  Martin Jambor  <mjambor@suse.cz>
660
661         * c-common.c (c_common_attribute_table): New element for noclone.
662         (handle_noclone_attribute): New function. Forward-declare.
663         * tree-inline.c (tree_versionable_function_p): Check for noclone
664         attribute.
665         * doc/extend.texi (Labels as Values): Document need for noclone.
666         (Function Attributes): Document noclone attribute.
667
668 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
669
670         PR rtl-optimization/34999
671         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
672         and dw_fde_switched_cold_to_hot fields.
673         (output_cfi_p): New function.
674         (output_call_frame_info): If fde->dw_fde_switched_sections,
675         output 2 FDEs instead of one with corrupted header.
676         (dwarf2out_do_cfi_startproc): New function.
677         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
678         and fde->dw_fde_switched_cold_to_hot.
679         (dwarf2out_switch_text_section): Compute
680         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
681         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
682         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
683         Otherwise, compute fde->dw_fde_switch_cfi.
684
685 2009-07-24  Cary Coutant  <ccoutant@google.com>
686
687         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
688
689 2009-07-24  Cary Coutant  <ccoutant@google.com>
690
691         * cfghooks.c (split_block): Copy discriminator to new block.
692         * tree-cfg.c (assign_discriminator): Check location of last
693         instruction in block as well as first.
694
695 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
696
697         * config/i386/linux.c: Use fputs or putc instead of fprintf
698         where appropriate.
699         * config/i386/gas.h: Ditto.
700         * config/i386/x86-64.h: Ditto.
701         * config/i386/att.h: Ditto.
702
703 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
704
705         * expmed.c (emit_store_flag): Use a recursive call to optimize the
706         xor case.
707
708 2009-07-24  Martin Jambor  <mjambor@suse.cz>
709
710         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
711         (ipa_push_func_to_list_1): Declare.
712         (ipa_push_func_to_list): New function.
713
714         * ipa-prop.c (ipa_push_func_to_list_1): New function.
715         (ipa_init_func_list): Call ipa_push_func_to_list_1.
716         (ipa_push_func_to_list): Removed.
717         (ipa_pop_func_from_list): Clear node_enqueued flag.
718
719 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
720         
721         * config/s390/s390.c (override_options): Default
722         max-unrolled-insns to 100 for z10 tuning.
723
724 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
725
726         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
727         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
728         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
729         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
730         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
731         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
732         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
733
734 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
735
736         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
737         use default set in mingw32.h header.
738         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
739         64-bit /mingw/include path.
740         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
741         path.
742
743 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
744
745         PR rtl-optimization/40209
746         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
747
748 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
749
750         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
751         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
752         with the rest of string where appropriate.  Use fputs or putc
753         instead of fprintf where appropriate.
754
755 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
756             Pat Haugen  <pthaugen@us.ibm.com>
757             Revital Eres <ERES@il.ibm.com>
758
759         * config/rs6000/vector.md: New file.  Move most of the vector
760         expander support here from altivec.md to allow for the VSX vector
761         unit in the future.  Add support for secondary_reload patterns.
762         Rewrite the patterns for vector comparison, and vector comparison
763         predicate instructions so that the RTL expresses the desired
764         behavior, instead of using unspec.
765
766         * config/rs6000/constraints.md ("f" constraint): Use
767         rs6000_constraints to hold the precalculated register class.
768         ("d" constraint): Ditto.
769         ("wd" constraint): New constraint for VSX.
770         ("wf" constraint): Ditto.
771         ("ws" constraint): Ditto.
772         ("wa" constraint): Ditto.
773         ("wZ" constraint): Ditto.
774         ("j" constraint): Ditto.
775
776         * config/rs6000/predicates.md (vsx_register_operand): New
777         predicate for VSX.
778         (vfloat_operand): New predicate for vector.md.
779         (vint_operand): Ditto.
780         (vlogical_operand): Ditto.
781         (easy_fp_constant): If VSX, 0.0 is an easy constant.
782         (easy_vector_constant): Add VSX support.
783         (altivec_indexed_or_indirect_operand): New predicate for
784         recognizing Altivec style memory references with AND -16.
785
786         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
787         for vector secondary reload support.
788         (rs6000_vector_reg_class): Delete, replacing it with
789         rs6000_constraints.
790         (rs6000_vsx_reg_class): Ditto.
791         (rs6000_constraints): New array to hold the register classes of
792         each of the register constraints that can vary at runtime.
793         (builtin_mode_to_type): New static array for builtin function type
794         creation.
795         (builtin_hash_table): New static hash table for builtin function
796         type creation.
797         (TARGET_SECONDARY_RELOAD): Define target hook.
798         (TARGET_IRA_COVER_CLASSES): Ditto.
799         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
800         registers are 128 bits if VSX memory reference instructions are used.
801         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
802         unit is being used.
803         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
804         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
805         Print several of the scheduling related parameters.
806         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
807         rs6000_constraints instead of rs6000_vector_reg_class.  Move
808         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
809         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
810         Altivec.  Add VSX support.  Setup for secondary reload support on
811         Altivec/VSX registers.
812         (rs6000_override_options): Make power7 set the scheduling groups
813         like the power5.  Add support for new debug switches to override
814         the scheduling defaults.  Temporarily disable -mcpu=power7 from
815         setting -mvsx.  Add support for debug switches -malways-hint,
816         -msched-groups, and -malign-branch-targets.
817         (rs6000_buitlin_conversion): Add support for returning unsigned
818         vector conversion functions to fix regressions due to stricter
819         type checking.
820         (rs6000_builtin_mul_widen_even): Ditto.
821         (rs6000_builtin_mul_widen_odd): Ditto.
822         (rs6000_builtin_vec_perm): Ditto.
823         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
824         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
825         to zero a register.
826         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
827         generated upstream.
828         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
829         VSX types for bit operations.  Changes to accomidate vector.md.
830         (bdesc_2arg): Ditto.
831         (bdesc_1arg): Ditto.
832         (struct builtin_description_predicates): Rewrite predicate
833         handling so that RTL describes the operation, instead of passing
834         the instruction to be used as a string argument.
835         (bdesc_altivec_preds): Ditto.
836         (altivec_expand_predicate_builtin): Ditto.
837         (altivec_expand_builtin): Ditto.
838         (rs6000_expand_ternop_builtin): Use a switch instead of an if
839         statement for vsldoi support.
840         (altivec_expand_ld_builtin): Change to use new names from vector.md.
841         (altivec_expand_st_builtin): Ditto.
842         (paired_expand_builtin): Whitespace changes.
843         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
844         builtin_mode_to_type table for secondary reload.  Call
845         builtin_function_type to build random builtin functions.
846         (altivec_init_builtins): Change to use builtin_function_type to
847         create builtin function types dynamically as we need them.
848         (builtin_hash_function): New support for hashing the tree types
849         for builtin function as we need it, rather than trying to build
850         all of the trees that we need.  Add initial preliminary VSX support.
851         (builtin_function_type): Ditto.
852         (builtin_function_eq): Ditto.
853         (builtin_hash_struct): Ditto.
854         (rs6000_init_builtins): Ditto.
855         (rs6000_common_init_builtins): Ditto.
856         (altivec_init_builtins): Ditto.
857         (rs6000_common_init_builtins): Ditto.
858         (enum reload_reg_type): New enum for simplifing reg classes.
859         (rs6000_reload_register_type): Simplify register classes into GPR,
860         Vector, and other registers.  Altivec and VSX addresses in reload.
861         (rs6000_secondary_reload_inner): Ditto.
862         (rs6000_ira_cover_classes): New target hook, that returns the
863         appropriate cover classes, based on -mvsx being used or not.
864         (rs6000_secondary_reload_class): Add VSX support.
865         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
866         (get_vsel_insn): Ditto.
867         (rs6000_emit_vector_compare): Rewrite vector conditional support
868         so that where we can, we use RTL operators, instead of blindly use
869         UNSPEC.
870         (rs6000_emit_vector_select): Ditto.
871         (rs6000_emit_vector_cond_expr): Ditto.
872         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
873         (create_TOC_reference): Add -mdebug=addr support.
874         (emit_frame_save): VSX loads/stores need register indexed addressing.
875
876         * config/rs6000/rs6000.md: Include vector.md.
877
878         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
879
880         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
881         support for V2DI, V2DF in logical, permute, select operations.
882
883         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
884         switch for vsx/power7.
885         (-mvsx-scalar-memory): Ditto.
886         (-mvsx-align-128): Ditto.
887         (-mallow-movmisalign): Ditto.
888         (-mallow-df-permute): Ditto.
889         (-msched-groups): Ditto.
890         (-malways-hint): Ditto.
891         (-malign-branch-targets): Ditto.
892         
893         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
894         hook instead.
895         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
896         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
897         (rs6000_vector_reg_class): Delete.
898         (rs6000_vsx_reg_class): Ditto.
899         (enum rs6000_reg_class_enum): New enum for the constraints that
900         vary based on target switches.
901         (rs6000_constraints): New array to hold the register class for all
902         of the register constraints that vary based on the switches used.
903         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
904         (enum rs6000_builtins): Add unsigned varients for the builtin
905         declarations returned by target hooks for expanding multiplies,
906         select, and permute operations.  Add VSX builtins.
907         (enum rs6000_builtin_type_index): Add entries for VSX.
908         (V2DI_type_node): Ditto.
909         (V2DF_type_node): Ditto.
910         (unsigned_V2DI_type_node): Ditto.
911         (bool_long_type_node): Ditto.
912         (intDI_type_internal_node): Ditto.
913         (uintDI_type_internal_node): Ditto.
914         (double_type_internal_node): Ditto.
915
916         * config/rs6000/altivec.md (whole file): Move all expanders to
917         vector.md from altivec.md.  Rename insn matching functions to be
918         altivec_foo.
919         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
920         (altivec_vcmp*): Ditto.
921         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
922         (VM): New iterator for moves that includes the VSX types.
923         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
924         (altivec_vperm_<mode>_uns): New, for unsigned types.
925         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
926         (altivec_eq<mode>): Ditto.
927         (altivec_gt<mode>): Ditto.
928         (altivec_gtu<mode>): Ditto.
929         (altivec_eqv4sf): Ditto.
930         (altivec_gev4sf): Ditto.
931         (altivec_gtv4sf): Ditto.
932         (altivec_vcmpbfp_p): Ditto.
933
934 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
935
936         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to 
937         unsigned HWI.
938
939 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
940
941         PR target/40832
942         * config/i386/i386.c (output_387_ffreep): Rewrite to use
943         ASM_SHORT instead of .word.
944         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
945         instead of .word in asm template.
946
947 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
948
949         PR target/37488
950         * ira-lives.c (bb_has_abnormal_call_pred): New function.
951         (process_bb_node_lives): Use it.
952
953         * ira.c (setup_cover_and_important_classes): Don't setup
954         ira_important_class_nums.  Add cover classes to the end of
955         important classes.
956         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
957         New.
958         (find_reg_class_closure): Use reorder_important_classes.
959
960         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
961
962         * config/i386/i386.c (i386_ira_cover_classes): New function.
963         (TARGET_IRA_COVER_CLASSES): Redefine.
964
965         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
966         importance of order of cover classes in the array.
967         
968 2009-07-22  Diego Novillo  <dnovillo@google.com>
969
970         * tree-pass.h (TDF_EH): Define.
971         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
972         contains TDF_EH, print the EH region number holding GS.
973         * tree-dump.c (dump_options): Add "eh".
974         * doc/invoke.texi: Document it.
975
976 2009-07-22  Doug Kwan  <dougkwan@google.com>
977
978         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
979
980 2009-07-22  Michael Matz  <matz@suse.de>
981
982         PR tree-optimization/35229
983         PR tree-optimization/39300
984
985         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
986         (inhibit_phi_insertion): New function.
987         (insert_into_preds_of_block): Call it for REFERENCEs.
988         (init_pre): Initialize and finalize scalar evolutions.
989         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
990
991 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
992
993         * config/i386/predicates.md (zero_extended_scalar_load_operand):
994         Use CONST_VECTOR_NUNITS to determine number of elements.
995
996 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
997
998         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
999         (U, W): Constraints are now deprecated and will be removed if we
1000         run out of letters.     
1001         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
1002         the file.
1003         ("prefetch"): Add the stcmh instruction for prefetching.
1004         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
1005         changes.
1006         (s390_short_displacement): Return always true if compiling for
1007         machines not providing the long displacement facility.
1008         (s390_mem_constraint): Support the new constraint letter Z.
1009         (s390_check_qrst_address): New function.
1010
1011 2009-07-21  DJ Delorie  <dj@redhat.com>
1012
1013         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
1014         alone too.
1015
1016 2009-07-21  Jason Merrill  <jason@redhat.com>
1017
1018         * c-common.c (max_tinst_depth): Increase default to 1024.
1019
1020 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
1021
1022         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
1023         (vec_unpacku_float_lo_v4si): Ditto.
1024
1025 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
1026
1027         PR target/40811
1028         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
1029         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
1030         (builtin_description): Add __builtin_ia32_cvtudq2ps.
1031         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
1032
1033 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
1034
1035         PR tree-optimization/40813
1036         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
1037         it.
1038
1039 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
1040
1041         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
1042         with a NOP_EXPR if needed.
1043
1044 2009-07-21  Paul Brook <paul@codesourcery.com>
1045
1046         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
1047         Terminate debug dump with newline.
1048
1049 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1050
1051         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
1052         Cast "1" to unsigned HOST_WIDE_INT.
1053         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
1054         deposit length to the maximum length - lsb.  Extend length if
1055         HOST_BITS_PER_WIDE_INT is 32.
1056
1057 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
1058
1059         * cgraph.h (constant_pool_htab): New function.
1060         (constant_descriptor_tree): Move from varasm.c.
1061         * varasm.c (constant_pool_htab): New function.
1062         (constant_descriptor_tree): Move to cgraph.h.
1063
1064 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
1065
1066         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
1067
1068 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
1069
1070         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
1071         $(VARRAY_H).
1072
1073 2009-07-20  Xinliang David Li  <davidxl@google.com>
1074
1075         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
1076
1077 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
1078
1079         * config/mips/mips.md (move_type): Add arith.
1080         (type): Handle arith.
1081         (zero_extendsidi2): Rename this into ...
1082         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
1083         (zero_extendsidi2): New expander.
1084         (*zero_extendsidi2_dext): New pattern.
1085
1086 2009-07-20  Nick Clifton  <nickc@redhat.com>
1087
1088         * config.gcc (mips64-*-*): Add definition of tm_defines in order
1089         to set MIPS_ABI_DEFAULT.
1090         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
1091
1092 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
1093
1094         * tree-object-size.c (addr_object_size): Handle unions with
1095         array in it as last field of structs in __bos (, 1) as __bos (, 0).
1096
1097         PR tree-optimization/40792
1098         * tree.c (build_function_type_skip_args): Remove bogus assert.
1099
1100 2009-07-20  Jan Hubicka  <jh@suse.cz>
1101             Martin Jambor  <mjambor@suse.cz>
1102
1103         * cgraph.h (combined_args_to_skip): New field.
1104         * cgraph.c (cgraph_create_virtual_clone): Properly handle
1105         combined_args_to_skip and args_to_skip.
1106         * tree-inline.c (update_clone_info): New function.
1107         (tree_function_versioning): Call update_clone_info.
1108         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
1109         functions.
1110         (cgraph_materialize_all_clones): More extensive dumping, working
1111         with combined_args_to_skip rather than args_to_skip.
1112
1113 2009-07-20  Ira Rosen  <irar@il.ibm.com>
1114
1115         * tree-vectorizer.h (vectorizable_condition): Add parameters.
1116         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
1117         (get_initial_def_for_reduction): Likewise.
1118         (vectorizable_reduction): Skip the check of first operand in case
1119         of COND_EXPR. Add check that it is outer loop vectorization if
1120         nested cycle was detected. Call vectorizable_condition() for 
1121         COND_EXPR. If reduction epilogue cannot be created do not fail for
1122         nested cycles (if it is not double reduction). Assert that there
1123         is only one type in the loop in case of COND_EXPR. Call
1124         vectorizable_condition() to vectorize COND_EXPR.
1125         * tree-vect-stmts.c (vectorizable_condition): Update comment.
1126         Add parameters. Allow nested cycles if called from 
1127         vectorizable_reduction(). Use reduction vector variable if provided.
1128         (vect_analyze_stmt): Call vectorizable_reduction() before
1129         vectorizable_condition().
1130         (vect_transform_stmt): Update call to vectorizable_condition().
1131
1132 2009-07-20  Christian Bruel  <christian.bruel@st.com>
1133         
1134         * config/sh/sh.opt (-mfmovd): Resurrect and document.
1135         * doc/invoke.texi (-mfmovd): Likewise.
1136         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
1137         
1138 2009-07-20  Jan Hubicka  <jh@suse.cz>
1139
1140         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
1141         when handling SSA name.
1142
1143 2009-07-19  Jan Hubicka  <jh@suse.cz>
1144
1145         PR tree-optimization/40676
1146         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
1147         virtual PHIs in empty BBs.
1148
1149 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
1150
1151         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
1152         re-expanded the compound use gen_lowpart instead to convert to the
1153         desired mode.
1154
1155 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
1156
1157         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
1158         OUTER_CONST arguments.
1159         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
1160         the new wider mode will be masked off.
1161         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
1162
1163 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
1164
1165         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
1166         high-order bits are zero.
1167
1168 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
1169
1170         * combine.c (simplify_shift_const_1): Split code to determine
1171         shift_mode into ...
1172         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
1173         new bits shifted in are identical to the old sign bit.
1174
1175 2009-07-18  Richard Guenther  <rguenther@suse.de>
1176
1177         PR c/40787
1178         * gimplify.c (gimplify_call_expr): Reject code using results from
1179         functions returning void.
1180
1181 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
1182
1183         * doc/md.texi: Document the new PowerPC "es" constraint.
1184         Document that "m" can include automodified addresses on this target,
1185         and explain how %U must be used.  Extend the "Q" and "Z" documentation
1186         to suggest "es" as well as "m".
1187         * config/rs6000/constraints.md (es): New memory constraint.
1188         (Q, Z): Update strings to match new documentation.
1189
1190 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
1191
1192         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
1193         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
1194         * config/rs6000/predicates.md (volatile_mem_operand): Use
1195         offsettable_nonstrict_memref_p.
1196         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
1197         (*floatunssidf2_internal): Likewise.
1198         (*fix_truncdfsi2_internal): Likewise.
1199         (*fix_trunctfsi2_internal): Likewise.
1200
1201 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
1202
1203         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
1204         atmega32u2 devices.
1205         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1206
1207 2009-07-17  Richard Guenther  <rguenther@suse.de>
1208
1209         PR c/40401
1210         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
1211         (pass_warn_unused_result): Likewise.
1212         (TODO_set_props): Remove.
1213         * omp-low.c (diagnose_omp_structured_block_errors): Change to
1214         run as a pass.
1215         (pass_diagnose_omp_blocks): Define.
1216         * c-decl.c (pop_file_scope): Do not finalize the CU here.
1217         (c_gimple_diagnostics_recursively): Remove.
1218         (finish_function): Do not call it.
1219         (c_write_global_declarations): Continue after errors.
1220         Finalize the CU here.
1221         * c-gimplify.c (c_genericize): Do not gimplify here.
1222         * c-common.c (c_warn_unused_result): Move ...
1223         * tree-cfg.c (do_warn_unused_result): ... here.
1224         (run_warn_unused_result): New function.
1225         (gate_warn_unused_result): New function.
1226         (pass_warn_unused_result): New pass.
1227         * c-common.h (c_warn_unused_result): Remove.
1228         * flags.h (flag_warn_unused_result): Declare.
1229         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
1230         * opts.c (flag_warn_unused_result): Initialize to false.
1231         * toplev.c (compile_file): Add comment.
1232         * omp-low.c (create_omp_child_function): Do not register
1233         the function with the frontend.
1234         (diagnose_omp_structured_block_errors): Prepare to be
1235         called as optimization pass.
1236         (gate_diagnose_omp_blocks): New function.
1237         (pass_diagnose_omp_blocks): New pass.
1238         * cgraph.h (cgraph_optimize): Remove.
1239         (cgraph_analyze_function): Likewise.
1240         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
1241         * cgraphunit.c (cgraph_lower_function): Lower nested functions
1242         before their parents here.
1243         (cgraph_finalize_function): Not here.
1244         (cgraph_analyze_function): Gimplify functions here.
1245         (cgraph_finalize_compilation_unit): Continue after errors.
1246         Optimize the callgraph from here.
1247         (cgraph_optimize): Make static.
1248         * langhooks.c (write_global_declarations): Finalize the CU.
1249         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
1250         (gimplify_function_tree): Assert we gimplify only once.
1251         Set PROP_gimple_any property.
1252         * tree-nested.c (gimplify_all_functions): New function.
1253         (lower_nested_functions): Gimplify all nested functions.
1254         * gimple.h (diagnose_omp_structured_block_errors): Remove.
1255         * passes.c (init_optimization_passes): Add pass_warn_unused_result
1256         and pass_diagnose_omp_blocks after gimplification.  Do not
1257         set TODO_set_props on all_lowering_passes.
1258         (execute_one_pass): Do not handle TODO_set_props.
1259         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
1260         (gimplify.o): Add tree-pass.h dependency.
1261         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
1262         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
1263         (unsave_r): Likewise.
1264         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
1265         temporary variable.
1266
1267 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
1268
1269         * doc/service.texi (Service): Restore previously removed link,
1270         which isn't broken after all.
1271
1272 2009-07-17  Richard Guenther  <rguenther@suse.de>
1273
1274         PR tree-optimization/40321
1275         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
1276         PHI nodes to the maximal set.
1277         (make_values_for_phi): Add PHI arguments to the maximal set.
1278         (execute_pre): Dump PHI_GEN and the maximal set.
1279
1280 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
1281
1282         PR c++/40780
1283         * gimplify.c (gimplify_conversion): Don't change non-conversions into
1284         VIEW_CONVERT_EXPR.
1285
1286 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
1287
1288         * doc/extend.texi (Nested Functions): Replace broken link with
1289         textual reference.
1290         * doc/service.texi (Service): Remove broken link.
1291
1292 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
1293
1294         PR bootstrap/40781
1295         * builtins.c (expand_builtin_memcmp): Use loc instead of
1296         EXPR_LOCATION (exp).
1297         (expand_builtin_strncmp): Likewise.
1298
1299 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
1300             Manuel López-Ibáñez  <manu@gcc.gnu.org>
1301
1302         PR 40435 
1303         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
1304         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
1305         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
1306         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
1307         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
1308         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
1309         tree-inline.c, c-common.c, c-common.h, gimple.c,
1310         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
1311         convert.c: Add location argument to fold_{unary,binary,ternary},
1312         fold_build[123], build_call_expr, build_size_arg,
1313         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
1314         fold_build1_initializer, fold_build2_initializer,
1315         fold_build3_initializer, fold_build_call_array,
1316         fold_build_call_array_initializer, fold_single_bit_test,
1317         omit_one_operand, omit_two_operands, invert_truthvalue,
1318         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
1319         combine_comparisons, fold_builtin_*, fold_call_expr,
1320         build_range_check, maybe_fold_offset_to_address, round_up,
1321         round_down.
1322
1323 2009-07-16  Jason Merrill  <jason@redhat.com>
1324
1325         PR libstdc++/37907
1326         * c-common.c (c_common_reswords): Add __is_standard_layout
1327         and __is_trivial.
1328         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
1329         * doc/implement-cxx.texi: New.
1330         * doc/gcc.texi: Include it.
1331
1332 2009-07-16  DJ Delorie  <dj@redhat.com>
1333
1334         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
1335         compares that may be indirectly affected by previous instructions.
1336
1337 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1338
1339         * builtins.c (do_mpc_arg2): New.
1340         (fold_builtin_2): Fold builtin cpow.
1341         * real.h (HAVE_mpc_pow): New.
1342
1343 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
1344
1345         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
1346         comparison to skip unprofitable schedule
1347
1348 2009-07-16  Simon Baldwin  <simonb@google.com>
1349
1350         * gcc.c (option_map): New flag -no-canonical-prefixes.
1351         * (display_help): Print help text for new flag.
1352         * (process_command): Move options translation and language specifics
1353         and handle new flag early.  Use it to set a function pointer to a
1354         prefix builder.  Replace make_relative_prefix calls with calls to
1355         the function pointed to.  Ignore new flag in regular options handling.
1356         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
1357
1358 2009-07-15  DJ Delorie  <dj@redhat.com>
1359
1360         * config/mep/mep.md (sibcall_internal): Change register to avoid
1361         argument registers.
1362         (sibcall_value_internal): Likewise.
1363
1364 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
1365
1366         PR rtl-optimization/40710
1367         * resource.c (mark_target_live_regs): Reset DF problem to LR.
1368
1369 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
1370
1371         * config/mips/mips.md (*extenddi_truncate<mode>,
1372         *extendsi_truncate<mode>): Change type attribute to move_type
1373         with shift_shift.  Split out code handling exts from here ...
1374         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
1375         pattern.
1376         (*extendhi_truncateqi): Change type attribute to move_type with
1377         shift_shift.  Split out code handling exts from here ...
1378         (*extendhi_truncateqi_exts): ... to this new pattern.
1379
1380 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
1381
1382         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
1383         instead of "and" with inverted sign bit mask value.  Use
1384         "nonimmediate_operand" for operand 1 and operand 2 predicate.
1385         Allocate registers only for operand 4 and operand 5.
1386
1387 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
1388
1389         PR middle-end/40747
1390         * fold-const.c (fold_cond_expr_with_comparison): When folding
1391         < and <= to MIN, make sure the MIN uses the same type as the
1392         comparison's operands.
1393
1394 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
1395
1396         * arm.md (ior_xor): New code iterator.
1397         (split for ior/xor with shift and zero-extend): New split pattern.
1398         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
1399
1400 2009-07-15  Richard Guenther  <rguenther@suse.de>
1401
1402         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
1403         offset member.
1404
1405 2009-07-15  Richard Guenther  <rguenther@suse.de>
1406
1407         PR middle-end/40753
1408         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
1409
1410 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
1411
1412         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
1413         handle 2.6.30 kernel.
1414
1415 2009-07-15  DJ Delorie  <dj@redhat.com>
1416
1417         * config/mep/mep.md (sibcall_internal): Change register to allow
1418         for 24-bit addresses.
1419         (sibcall_value_internal): Likewise.
1420
1421 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
1422         
1423         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
1424         that are enabled/disabled by the flags introduced by a previous patch.
1425         
1426 2009-07-14  DJ Delorie  <dj@redhat.com>
1427
1428         * config/mep/mep.md (sibcall_internal): Include non-toggling
1429         non-jmp case.
1430         (sibcall_value_internal): Likewise.
1431
1432 2009-07-14  Taras Glek  <tglek@mozilla.com>
1433             Rafael Espindola  <espindola@google.com>
1434
1435         * doc/sourcebuild.texi: Document install-plugin target.
1436         * configure.ac: Added install-plugin target to language makefiles.
1437         * configure: Regenerate.
1438         * Makefile.in: (install-plugin): Install more headers,
1439         depend on lang.install-plugin.
1440
1441 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1442
1443         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
1444         translation.
1445         
1446 2009-07-14  DJ Delorie  <dj@redhat.com>
1447
1448         * config/mep/mep.c (mep_vliw_jmp_match): New function.
1449         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
1450         * config/mep/mep.md (sibcall_internal): Change test from
1451         mep_vliw_mode_match to mep_vliw_jmp_match.
1452         (sibcall_value_internal): Likewise.
1453
1454 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
1455
1456         * config/i386/sse.md (copysign<mode>3): New expander.
1457         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
1458         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
1459         Use ix86_build_const_vector.
1460         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
1461         IX86_BUILTIN_CPYSGNPD.
1462         (builtin_description): Add __builtin_ia32_copysignps and
1463         __builtin_ia32_copysignpd.
1464         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
1465         and BUILT_IN_COPYSIGNF.
1466
1467 2009-07-13  Jason Merrill  <jason@redhat.com>
1468
1469         * builtins.c (can_trust_pointer_alignment): New fn.
1470         (get_pointer_alignment): Factor it out from here.
1471         * tree.h: Declare it.
1472
1473 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
1474
1475         * config/rs6000/predicates.md (offsettable_mem_operand): Test
1476         RTX_AUTOINC class.
1477
1478 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
1479
1480         PR debug/40705
1481         PR c++/403057
1482         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
1483
1484 2009-07-14  Richard Guenther  <rguenther@suse.de>
1485             Andrey Belevantsev <abel@ispras.ru>
1486
1487         PR middle-end/40745
1488         * cfgexpand.c (partition_stack_vars): Do not bother to update
1489         alias information when not optimizing.
1490
1491 2009-07-14  Richard Guenther  <rguenther@suse.de>
1492             Andrey Belevantsev <abel@ispras.ru>
1493
1494         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
1495         (pt_solution_set): Likewise.
1496         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
1497         * tree-ssa-structalias.c (pt_solution_set): New function.
1498         * final.c (rest_of_clean_state): Free SSA data structures.
1499         * print-rtl.c (print_decl_name): Remove.
1500         (print_mem_expr): Implement in terms of print_generic_expr.
1501         * alias.c (ao_ref_from_mem): New function.
1502         (rtx_refs_may_alias_p): Likewise.
1503         (true_dependence): Query alias-export info.
1504         (canon_true_dependence): Likewise.
1505         (write_dependence_p): Likewise.
1506         * tree-dfa.c (get_ref_base_and_extent): For void types leave
1507         size unknown.
1508         * emit-rtl.c (component_ref_for_mem_expr): Remove.
1509         (mem_expr_equal_p): Use operand_equal_p.
1510         (set_mem_attributes_minus_bitpos): Do not use
1511         component_ref_for_mem_expr.
1512         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
1513         (update_alias_info_with_stack_vars): Likewise.
1514         (partition_stack_vars): Call update_alias_info_with_stack_vars.
1515         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
1516         explicitly nor clear stmt operands.
1517         Free the decl-to-pointer map.
1518         * tree-optimize.c (execute_free_datastructures): Do not free
1519         SSA data structures here.
1520         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
1521         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
1522         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
1523         dependencies.
1524         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
1525
1526 2009-07-13  DJ Delorie  <dj@redhat.com>
1527
1528         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
1529         unrolling at the right iteration count.
1530
1531         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
1532         calculations.
1533
1534 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
1535         
1536         * haifa-sched.c (rank_for_schedule): Introduced flags to
1537         enable/disable individual scheduling heuristics.
1538         * common.opt: Introduced flags to enable/disable individual
1539         heuristics in the scheduler.    
1540         * doc/invoke.texi: Introduced flags to enable/disable individual
1541         heuristics in the scheduler.
1542         
1543 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
1544
1545         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
1546         config/i386/mingw-tls.c.
1547         * config/i386/mingw-tls.c: Removed.
1548
1549 2009-07-13  Ira Rosen  <irar@il.ibm.com>
1550
1551         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the 
1552         checks access only relevant statements.
1553         (vectorizable_reduction): Likewise.
1554
1555 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
1556
1557         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
1558         just for 32-bit case.
1559
1560 2009-07-12  Jan Hubicka  <jh@suse.cz>
1561
1562         PR tree-optimization/40585
1563         * except.c (expand_resx_expr): When there already is resume
1564         instruction, produce linked list.
1565         (build_post_landing_pads): Assert that resume is empty.
1566         (connect_post_landing_pads): Handle resume lists.
1567         (dump_eh_tree): Dump resume list.
1568
1569 2009-07-12  Ira Rosen  <irar@il.ibm.com>
1570
1571         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
1572         with additional argument.
1573         * tree-vectorizer.h (enum vect_def_type): Add
1574         vect_double_reduction_def.
1575         (vect_is_simple_reduction): Add argument.
1576         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
1577         indentation.
1578         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
1579         vect_is_simple_reduction with additional argument.
1580         (vect_analyze_loop_operations): Handle exit phi nodes in case of
1581         double reduction.
1582         (reduction_code_for_scalar_code): Handle additional codes by
1583         returning ERROR_MARK for them. Fix comment and indentation.
1584         (vect_is_simple_reduction): Fix comment, add argument to specify
1585         double reduction. Detect double reduction.
1586         (get_initial_def_for_induction): Fix indentation.
1587         (get_initial_def_for_reduction): Fix comment and indentation.
1588         Handle double reduction. Create initial definitions that do not
1589         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
1590         (vect_create_epilog_for_reduction): Fix comment, add argument to
1591         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
1592         epilogue result extraction. Create double reduction phi node and
1593         replace relevant uses.
1594         (vectorizable_reduction): Call vect_is_simple_reduction with
1595         additional argument. Fix indentation. Update epilogue code treatment
1596         according to the changes in reduction_code_for_scalar_code. Check
1597         for double reduction. Call vect_create_epilog_for_reduction with
1598         additional argument.
1599         * tree-vect-stmts.c (process_use): Handle double reduction, update
1600         documentation.
1601         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
1602         (vect_get_vec_def_for_operand): Likewise.
1603
1604 2009-07-12  Danny Smith  <dansmister@gmail.com>
1605
1606         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
1607         dllexport if !TREE_PUBLIC.
1608         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
1609
1610 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
1611
1612         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
1613         (avr_extra_arch_macro) Remove declatation.
1614         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
1615         (avr_extra_arch_macro) Declare as static.
1616         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
1617
1618 2009-07-11  Jan Hubicka  <jh@suse.cz>
1619
1620         PR middle-end/48388
1621         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
1622
1623 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
1624
1625         PR debug/40713
1626         * dwarf2out.c (dw_fde_struct): Add in_std_section and
1627         cold_in_std_section bits.
1628         (dwarf2out_begin_prologue): Initialize them.
1629         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
1630         if already covered by text_section or cold_text_section range.
1631
1632         PR rtl-optimization/40667
1633         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
1634         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
1635         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
1636         * config/i386/i386.c (ix86_minimum_alignment): New function.
1637         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
1638         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
1639         * emit-rtl.c (gen_reg_rtx): Likewise.
1640         * function.c (assign_parms): Likewise.  If nominal_type needs
1641         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
1642         rather than passed_type's alignment.
1643
1644         PR target/40668
1645         * function.c (assign_parm_setup_stack): Adjust
1646         MEM_OFFSET (data->stack_parm) if promoted_mode is different
1647         from nominal_mode on big endian.
1648
1649 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
1650
1651         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
1652
1653 2009-07-10  DJ Delorie  <dj@redhat.com>
1654
1655         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
1656
1657 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
1658
1659         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
1660         attribute.
1661         (thumb2_cbnz): Likewise.
1662
1663 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
1664
1665         PR target/39079
1666         * config.gcc (supported_defaults): Add synci.
1667         (with_synci): Add validation.
1668         (all_defaults): Add synci.
1669         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
1670         ISA_HAS_SYNCI.
1671         (synci): Same.
1672         * config/mips/mips.opt (msynci): New option.
1673         * config/mips/mips.c (mips_override_options): Warn on use of
1674         -msynci for targets that do now support it.
1675         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
1676         msynci.
1677         * gcc/doc/invoke.texi (-msynci): Document the new option.
1678         * doc/install.texi (--with-synci): Document the new option.
1679
1680 2009-07-10  Richard Guenther  <rguenther@suse.de>
1681
1682         PR tree-optimization/40496
1683         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
1684         the PHI result with a compatible type.
1685
1686 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1687
1688         PR 25509
1689         PR 40614
1690         * c.opt (Wunused-result): New.
1691         * doc/invoke.texi: Document it.
1692         * c-common.c (c_warn_unused_result): Use it.
1693
1694 2009-07-09  DJ Delorie  <dj@redhat.com>
1695
1696         * targhooks.c (default_target_can_inline_p): Rename from
1697         default_target_option_can_inline_p.
1698         * targhooks.h (default_target_can_inline_p): Likewise.
1699         * target-def.h (TARGET_CAN_INLINE_P): Rename from
1700         TARGET_OPTION_CAN_INLINE_P.
1701         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
1702         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
1703         (mep_target_can_inline_p): Rename from
1704         mep_target_option_can_inline_p.
1705
1706         PR target/40626
1707         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
1708         registers used to pass vectors.
1709
1710         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
1711
1712 2009-07-09  Tom Tromey  <tromey@redhat.com>
1713
1714         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
1715         * config/mmix/mmix.c: Include dwarf2.h.
1716         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
1717         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
1718         * config/sh/sh.c: Include dwarf2.h.
1719         * config/i386/i386.c: Include dwarf2.h.
1720         * Makefile.in (DWARF2_H): Remove 'elf'.
1721         * except.c: Include dwarf2.h.
1722         * unwind-dw2.c: Include dwarf2.h.
1723         * dwarf2out.c: Include dwarf2.h.
1724         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
1725         * unwind-dw2-fde.c: Include dwarf2.h.
1726         * dwarf2asm.c: Include dwarf2.h.
1727
1728 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
1729
1730         * haifa-sched.c (insn_finishes_cycle_p): New static function.
1731         (max_issue): Use it.
1732         * sched-int.h (struct sched_info: insn_finishes_block_p): New
1733         scheduler hook.
1734         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
1735         (region_sched_info): Update.
1736         * sched-ebb.c (ebb_sched_info): Update.
1737         * modulo-sched.c (sms_sched_info): Update.
1738         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
1739
1740 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
1741
1742         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
1743
1744 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
1745
1746         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen. 
1747
1748 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
1749
1750         PR middle-end/40692
1751         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
1752         arg1 with arg01 if arg1 is already INTEGER_CST.
1753
1754 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
1755
1756         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
1757         Transform (and (truncate)) into (truncate (and)).
1758
1759 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
1760
1761         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
1762         creating LHS paradoxical subregs.  Fix surrounding returns to
1763         use NULL_RTX rather than 0.
1764
1765 2009-07-08  DJ Delorie  <dj@redhat.com>
1766
1767         * config/mep/mep.c: (mep_option_can_inline_p): New.
1768         (TARGET_OPTION_CAN_INLINE_P): Define.
1769
1770 2009-07-08  Mark Wielaard  <mjw@redhat.com>
1771
1772         PR debug/40659
1773         * dwarf2out.c (add_data_member_location_attribute): When we have
1774         only a constant offset don't emit a new location description using
1775         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
1776         dwarf_version > 2.
1777
1778 2009-07-08  Richard Henderson  <rth@redhat.com>
1779
1780         PR target/38900
1781         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
1782         (enum reg_class): Add CLOBBERED_REGS.
1783         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
1784         * config/i386/i386.c (ix86_conditional_register_usage): Moved
1785         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
1786         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
1787         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
1788         force 64-bit sibcalls into R11.
1789         * config/i386/constraints.md (U): New constraint.
1790         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
1791         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
1792         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
1793
1794 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
1795
1796         * basic-block.h (dump_regset, debug_regset): Remove duplicate
1797         prototypes.
1798         * c-objc-common.h (c_initialize_diagnostics): Ditto.
1799         * ebitmap.h (dump_ebitmap): Ditto.
1800         * optabs.h (optab_libfunc): Ditto.
1801         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
1802         * tree-flow.h (vect_can_force_dr_alignment_p,
1803         get_vectype_for_scalar_type): Ditto.
1804         (vectorize_loops): Move prototype to ...
1805         * tree-vectorizer.h: ... here. Also, adjust comment.
1806         (vect_set_verbosity_level): Remove duplicate prototype.
1807         * tree-ssa-loop.c: Include tree-vectorizer.h.
1808         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
1809
1810 2009-07-08  Nick Clifton  <nickc@redhat.com>
1811
1812         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
1813         forward slash.
1814
1815 2009-07-08  DJ Delorie  <dj@redhat.com>
1816
1817         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
1818         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
1819         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
1820         written to.
1821         * config/mep/intrinsics.md: Regenerated.
1822         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
1823         registers when asm() or calls are detected.
1824
1825 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1826
1827         PR c++/31246
1828         * gimplify.c (gimplify_expr): Propagate no_warning flag when
1829         gimplifying.
1830         * gimple (gimple_build_call_from_tree): Likewise.
1831         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
1832         no_warning flag before warning.
1833
1834 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1835
1836         * tree.c (set_expr_locus): Remove.
1837         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
1838         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
1839         EXPR_LOCATION.
1840         * gimplify.c (internal_get_tmp_var): Likewise.
1841         (gimplify_call_expr): Likewise.
1842         (gimplify_one_sizepos): Likewise.
1843
1844 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
1845
1846         PR debug/40666
1847         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
1848         to variables for debugging purposes.
1849
1850 2009-06-23  Mark Loeser  <mark@halcy0n.com>
1851
1852         PR build/40010
1853         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
1854
1855 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1856
1857         * pretty-print.c (pp_base_format): Remove %J.
1858         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
1859         gcc_cxxdiag_char_table): Likewise.
1860         (init_dynamic_diag_info): Likewise.
1861
1862 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1863
1864         * pretty-print.c (pp_base_format): Remove %H.
1865         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
1866         gcc_cxxdiag_char_table): Likewise.
1867         (init_dynamic_diag_info): Likewise.
1868         * config/mep/mep.c (mep_select_section): Likewise.
1869
1870 2009-07-07  Duncan Sands  <baldrick@free.fr>
1871
1872         * final.c (pass_clean_state): Give the pass a name.
1873         * passes.c (pass_rest_of_compilation): Likewise.
1874         * tree-optimize.c (pass_all_optimizations): Likewise.
1875
1876 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
1877
1878         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
1879         an extra 'decl' for error_at.
1880
1881 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
1882
1883         PR middle-end/40669
1884         * tree-tailcall.c (adjust_return_value_with_ops,
1885         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
1886         if it has complex or vector type.
1887
1888 2009-07-07  Olivier Hainque  <hainque@adacore.com>
1889
1890         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
1891         pthread symbols.
1892
1893 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
1894
1895         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
1896
1897 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1898
1899         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
1900         * c-decl.c: Likewise.
1901         * function.c: Likewise.
1902         * varasm.c: Likewise.
1903         * tree-ssa.c: Likewise.
1904         * c-common.c: Likewise.
1905         * tree-cfg.c: Likewise.
1906         * config/spu/spu.c: Likewise.
1907         * config/ia64/ia64.c: Likewise.
1908         * config/v850/v850.c: Likewise.
1909
1910 2009-07-06  DJ Delorie  <dj@redhat.com>
1911
1912         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
1913         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
1914         unspecified accesses to control registers.
1915         * config/mep/intrinsics.md: Regenerate.
1916         * config/mep/intrinsics.h: Regenerate.
1917         * config/mep/mep-intrin.h: Regenerate.
1918
1919 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1920
1921         * c-lex.c: Replace %H by an explicit location. Update all calls.
1922         * c-common.c: Likewise.
1923         * c-decl.c: Likewise.
1924         * c-typeck.c: Likewise.
1925         * fold-const.c: Likewise.
1926         * gimplify.c: Likewise.
1927         * stmt.c: Likewise.
1928         * tree-cfg.c: Likewise.
1929         * tree-ssa-loop-niter.c: Likewise.
1930         * tree-vrp.c: Likewise.
1931         * value-prof.c: Likewise.
1932
1933 2009-07-06  Diego Novillo  <dnovillo@google.com>
1934
1935         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
1936         if it has one.  Handle cases where VAR does not have an
1937         annotation or cfun is NULL.
1938
1939 2009-07-06  Diego Novillo  <dnovillo@google.com>
1940
1941         * tree.c: Include debug.h.
1942         (initialize_tree_contains_struct): New.
1943         (init_ttree): Call it.
1944         (tree_node_structure_for_code): Factor out of ...
1945         (tree_node_structure): ... here.
1946         * treestruct.def (TS_PHI_NODE): Remove.
1947         (TS_GIMPLE_STATEMENT): Remove.
1948
1949 2009-07-06  Diego Novillo  <dnovillo@google.com>
1950
1951         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
1952         (debug_tree_chain): Handle cycles.
1953
1954 2009-07-06  Nick Clifton  <nickc@redhat.com>
1955             DJ Delorie  <dj@redhat.com>
1956
1957         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
1958         __FMOVD_ENABLED__ is defined.
1959         * config/sh/sh.h
1960         (TARGET_FMOVD): Provide a default definition.
1961         (MASK_FMOVD): Likewise.
1962         (TARGET_CPU_CPP_BUILTINS): Define
1963         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
1964         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
1965         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
1966         (split for DF load from memory into register): Also handle
1967         MEMs which consist of REG+DISP addressing.
1968         (split for DF store from register to memory): Likewise.
1969         (movsf_ie): Always use single fp_mode.
1970         * config/sh/sh.c (sh_override_options): Do not automatically
1971         enable TARGET_MOVD for the SH2A when supporting doubles - leave
1972         that to the -mfmovd command line switch.
1973         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
1974         (fldi_ok): Always allow.
1975         * config/sh/sh.opt (mfmovd): Remove this switch.
1976         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
1977
1978 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
1979             Kaz Kojima  <kkojima@gcc.gnu.org>
1980
1981         PR rtl-optimization/30807
1982         * postreload.c (reload_combine): For every new use of REG_SUM,
1983         record the use of BASE.
1984
1985 2009-07-06  Jan Hubicka  <jh@suse.cz>
1986
1987         * params.def: Revert my accidental commit at 2009-06-30.
1988
1989 2009-07-04  Ian Lance Taylor  <iant@google.com>
1990
1991         PR target/40636
1992         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
1993         EXPORTED_CONST.
1994         (mingw_format_attribute_overrides): Likewise.
1995
1996 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
1997
1998         PR debug/40596
1999         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
2000         don't check cfa.reg.  Instead of cfa.indirect use
2001         fde && fde->drap_reg != INVALID_REGNUM test.
2002
2003 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
2004
2005         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
2006
2007 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
2008
2009         PR target/40587
2010         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
2011
2012 2009-07-03  Richard Guenther  <rguenther@suse.de>
2013
2014         PR tree-optimization/40640
2015         * tree-switch-conversion.c (build_arrays): Perform arithmetic
2016         in original type.
2017
2018 2009-07-03  Jan Hubicka  <jh@suse.cz>
2019
2020         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
2021         for size, reduce amount of inlining.
2022
2023 2009-07-03  Richard Guenther  <rguenther@suse.de>
2024
2025         PR middle-end/34163
2026         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
2027         if t +- x is known to not overflow and the conversion widens the
2028         operation.
2029         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
2030
2031 2009-07-03  Jan Hubicka  <jh@suse.cz>
2032
2033         * ipa-pure-const.c (analyze): Update loop optimizer init.
2034         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
2035         try_remove_empty_loop, remove_empty_loops): Remove.
2036         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
2037         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
2038         to mark regular loops as neccesary.
2039         (degenerate_phi_p): New function.
2040         (propagate_necessity, remove_dead_phis): Use it.
2041         (forward_edge_to_pdom): Likewise.
2042         (eliminate_unnecessary_stmts): Take care to remove uses of results of
2043         virtual PHI nodes that became unreachable.
2044         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
2045         * tree-flow.h (remove_empty_loops): Remove.
2046         * passes.c (init_optimization_passes): Remove.
2047
2048 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
2049
2050         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
2051         can_create_pseudo_p.
2052         (*fix_trunc<mode>_i387_1): Ditto.
2053         (*floathi<mode>2_1): Ditto.
2054         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
2055         (*fistdi2_1): Ditto.
2056         (*fist<mode>2_1): Ditto.
2057         (frndintxf2_floor): Ditto.
2058         (*fist<mode>2_floor_1): Ditto.
2059         (frndintxf2_ceil): Ditto.
2060         (*fist<mode>2_ceil_1): Ditto.
2061         (frndintxf2_trunc): Ditto.
2062         (frndintxf2_mask_pm): Ditto.
2063         (fxam<mode>2_i387_with_temp): Ditto.
2064         * config/i386/sse.md (mulv16qi3): Ditto.
2065         (*sse2_mulv4si3): Ditto.
2066         (mulv2di3): Ditto.
2067         (sse4_2_pcmpestr): Ditto.
2068         (sse4_2_pcmpistr): Ditto.
2069
2070 2009-07-03  Jan Hubicka  <jh@suse.cz>
2071
2072         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
2073         (mark_stmt_necessary): Set it.
2074         (mark_operand_necessary): Set it.
2075         (mark_control_dependent_edges_necessary): Set it.
2076         (mark_virtual_phi_result_for_renaming): New function.
2077         (get_live_post_dom): New function.
2078         (forward_edge_to_pdom): New function.
2079         (remove_dead_stmt): Fix handling of control dependences.
2080         (tree_dce_init): Init new bitmap.
2081         (tree_dce_done): Free it.
2082
2083 2009-07-02  Richard Guenther  <rguenther@suse.de>
2084
2085         PR bootstrap/40617
2086         * tree-ssa-structalias.c (new_var_info): Initialize
2087         is_restrict_var.
2088
2089 2009-07-02  Jan Hubicka  <jh@suse.cz>
2090
2091         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
2092         local.
2093
2094 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
2095
2096         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
2097         instead of recomputing it.  Adjust calls.
2098         (emit_store_flag): Adjust recursive calls.
2099
2100 2009-07-02  Richard Guenther  <rguenther@suse.de>
2101
2102         * tree-ssa-live.c (remove_unused_locals): Do not remove
2103         heap variables.
2104         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
2105         of DECL_EXTERNAL for HEAP variables.
2106         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
2107         HEAP variables.  Do not adjust RESTRICT vars.
2108         (find_what_var_points_to): Nobody cares if something
2109         points to READONLY.
2110
2111 2009-07-02  Ben Elliston  <bje@au.ibm.com>
2112
2113         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
2114         pc_low and pc_high declarations to the top of the function.
2115
2116 2009-07-01  DJ Delorie  <dj@redhat.com>
2117
2118         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
2119         registers as fixed.
2120         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
2121         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
2122         unspecified accesses to control registers.
2123         * config/mep/intrinsics.md: Regenerate.
2124         * config/mep/intrinsics.h: Regenerate.
2125         * config/mep/mep-intrin.h: Regenerate.
2126
2127 2009-07-01  Anthony Green  <green@moxielogic.com>
2128
2129         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
2130         instruction when possible.
2131         (moxie_expand_prologue): Ditto.  Also, save an instruction and
2132         some complexity by popping off of $r12 instead of $sp.
2133         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
2134         operands.
2135
2136 2009-07-01  Richard Henderson  <rth@redhat.com>
2137
2138         PR bootstrap/40347
2139         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
2140         contained no insns, reposition note before last insn.
2141
2142 2009-07-01  Richard Henderson  <rth@redhat.com>
2143
2144         PR debug/40431
2145         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
2146         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
2147
2148 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
2149
2150         PR bootstrap/40558
2151         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
2152         darwin9 for printing reg addresses with %y.
2153
2154 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
2155
2156         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
2157         truncation from operands in binary operations.
2158
2159 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
2160
2161         Revert:
2162         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
2163         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
2164         subreg of op0 to the original op0.
2165
2166         * expmed.c (store_bit_field_1): Use a temporary as the destination
2167         instead of a paradoxical subreg when we need to truncate the result.
2168
2169 2009-07-01  DJ Delorie  <dj@redhat.com>
2170
2171         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
2172         names to VLIW variants.
2173         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
2174         * config/mep/intrinsics.md: Regenerate.
2175         * config/mep/intrinsics.h: Regenerate.
2176         * config/mep/mep-intrin.h: Regenerate.
2177
2178 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
2179
2180         PR debug/40462
2181         * jump.c (returnjump_p): Revert last patch.
2182         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
2183
2184 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2185
2186         PR target/40575
2187         * pa.md (casesi32p): Use jump table label to determine the offset
2188         of the jump table.
2189         (casesi64p): Likewise.
2190
2191         * pa.c (forward_branch_p): Return bool type.  Use instruction
2192         addresses when available.  Assert that INSN has a jump label.
2193         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
2194         have a jump label.
2195
2196 2009-07-01  Richard Guenther  <rguenther@suse.de>
2197
2198         PR tree-optimization/19831
2199         * tree-ssa-dce.c (propagate_necessity): Calls to functions
2200         that only act as barriers do not make any previous stores necessary.
2201         * tree-ssa-structalias.c (handle_lhs_call): Delay making
2202         HEAP variables global, do not add a constraint from nonlocal.
2203         (find_func_aliases): Handle escapes through return statements.
2204         (compute_points_to_sets): Make escaped HEAP variables global.
2205
2206 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
2207
2208         PR bootstrap/40597
2209         * expmed.c (emit_store_flag): Perform a conversion if necessary,
2210         after reducing a DImode cstore to SImode.
2211
2212 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
2213
2214         * expr.c (expand_expr_real_1): Reinstate fallthrough to
2215         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
2216
2217 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
2218
2219         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
2220         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
2221         to 0.
2222         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
2223         and umod_optab if TARGET_BSD_DIVMOD.
2224         * config/vax/lib1funcs.asm: New file.
2225         * config/vax/t-linux: New file.
2226         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
2227
2228 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
2229
2230         PR c++/40566
2231         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
2232         to type arguments that have void type.
2233
2234         PR debug/40573
2235         * dwarf2out.c (gen_formal_parameter_die): Call
2236         equate_decl_number_to_die if node is different from origin.
2237
2238 2009-06-30  Anthony Green  <green@moxielogic.com>
2239
2240         Clean up moxie port for --enable-build-with-cxx.
2241         * config/moxie/moxie.c (moxie_function_value): First two
2242         parameters are const_tree, not tree.
2243         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
2244         (REG_CLASS_NAMES): Ditto.
2245         (REGNO_REG_CLASS): Ditto.
2246         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
2247         (moxie_function_value): Fix constyness of arguments.
2248
2249 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
2250
2251         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
2252         finalize_size_functions before further processing.
2253         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
2254         (variable_size): Call self_referential_size on size expressions
2255         that contain a PLACEHOLDER_EXPR.
2256         (size_functions): New static variable.
2257         (copy_self_referential_tree_r): New static function.
2258         (self_referential_size): Likewise.
2259         (finalize_size_functions): New global function.
2260         * tree.c: Include tree-inline.h.
2261         (push_without_duplicates): New static function.
2262         (find_placeholder_in_expr): New global function.
2263         (substitute_in_expr) <tcc_declaration>: Return the replacement object
2264         on equality.
2265         <tcc_expression>: Likewise.
2266         <tcc_vl_exp>: If the replacement object is a constant, try to inline
2267         the call in the expression.
2268         * tree.h (finalize_size_functions): Declare.
2269         (find_placeholder_in_expr): Likewise.
2270         (FIND_PLACEHOLDER_IN_EXPR): New macro.
2271         (substitute_placeholder_in_expr): Update comment.
2272         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
2273         is true.
2274         (copy_tree_body_r): Likewise.
2275         (copy_tree_body): New static function.
2276         (maybe_inline_call_in_expr): New global function.
2277         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
2278         (maybe_inline_call_in_expr): Declare.
2279         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
2280         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
2281         GIMPLE_H.
2282
2283 2009-06-30  Richard Guenther  <rguenther@suse.de>
2284
2285         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
2286         continue walking.
2287         (propagate_necessity): Do not mark reaching defs of stores
2288         as necessary.
2289
2290 2009-06-30  Jan Hubicka  <jh@suse.cz>
2291
2292         * cfgloopanal.c (check_irred): Move into ...
2293         (mark_irreducible_loops): ... here; return true if ireducible
2294         loops was found.
2295         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
2296         (analyze_function): Try to prove loop finiteness.
2297         * cfgloop.h (mark_irreducible_loops): Update prototype.
2298         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
2299
2300 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
2301
2302         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
2303
2304 2009-06-30  Ira Rosen  <irar@il.ibm.com>
2305
2306         PR tree-optimization/40542
2307         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile 
2308         types.
2309
2310 2009-06-30  Martin Jambor  <mjambor@suse.cz>
2311
2312         PR tree-optimization/40582
2313         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
2314         than useless_type_conversion_p.
2315         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
2316         proper place.
2317
2318 2009-06-30  Martin Jambor  <mjambor@suse.cz>
2319
2320         PR middle-end/40554
2321         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
2322
2323 2009-06-30  Richard Guenther  <rguenther@suse.de>
2324
2325         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
2326         use ao_ref references.
2327         (walk_aliased_vdefs): Likewise.
2328         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
2329         * tree-ssa-dce.c (struct ref_data): Remove.
2330         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
2331         (mark_aliased_reaching_defs_necessary): Adjust.
2332         (mark_all_reaching_defs_necessary_1): Likewise.
2333
2334 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
2335
2336         PR boostrap/40597
2337         * expmed.c (emit_cstore): New name of emit_store_flag_1.
2338         (emit_store_flag_1): Extract from emit_store_flag, adjust
2339         calls to (what now is) emit_cstore.
2340         (emit_store_flag): Call emit_store_flag_1 and also use it
2341         for what used to be recursive calls.
2342
2343 2009-06-30  Wei Guozhi  <carrot@google.com>
2344
2345         PR/40416
2346         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
2347         if the target bb post dominates from bb.
2348         * config/i386/i386.c (memory_address_length): Check existence of base
2349         register before using it.
2350
2351 2009-06-30  Nick Clifton  <nickc@redhat.com>
2352             DJ Delorie  <dj@redhat.com>
2353
2354         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
2355         __FMOVD_ENABLED__ is defined.
2356         * config/sh/sh.h
2357         (TARGET_FMOVD): Provide a default definition.
2358         (MASK_FMOVD): Likewise.
2359         (TARGET_CPU_CPP_BUILTINS): Define
2360         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
2361         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
2362         two fmov instructions depending upon whether TARGET_FMOVD is
2363         enabled.
2364         (split for DF load from memory into register): Also handle
2365         MEMs which consist of REG+DISP addressing.
2366         (split for DF store from register to memory): Likewise.
2367         * config/sh/sh.opt (mfmovd): Remove this switch.
2368         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
2369         * config/sh/sh.c (sh_override_options): Do not automatically
2370         enable TARGET_MOVD for the SH2A when supporting doubles - leave
2371         that to the -mfmovd command line switch.
2372
2373         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
2374         the SH4 and SH4A.
2375         (fldi_ok): Always allow.
2376         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
2377
2378 2009-06-29  DJ Delorie  <dj@redhat.com>
2379
2380         * doc/install.texi (mep-x-elf): Correct chip's full name.
2381
2382 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
2383
2384         * doc/extend.texi: Fix typo.
2385
2386 2009-06-29  Tom Tromey  <tromey@redhat.com>
2387
2388         * dwarf2.h: Remove.
2389         * Makefile.in (DWARF2_H): New variable.
2390         (except.o): Use it.
2391         (dwarf2out.o): Likewise.
2392         (dwarf2asm.o): Likewise.
2393         * config/i386/t-i386: Use DWARF2_H.
2394         * except.c: Include elf/dwarf2.h.
2395         * unwind-dw2.c: Include elf/dwarf2.h.
2396         * dwarf2out.c: Include elf/dwarf2.h.
2397         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
2398         <dtprel>: New field.
2399         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
2400         (size_of_loc_descr): Likewise.
2401         (output_loc_operands_raw): Likewise.
2402         (output_loc_operands): Handle new dtprel field.
2403         (loc_checksum): Update.
2404         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
2405         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
2406         * unwind-dw2-fde.c: Include elf/dwarf2.h.
2407         * dwarf2asm.c: Include elf/dwarf2.h.
2408         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
2409         * config/mmix/mmix.c: Include elf/dwarf2.h.
2410         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
2411         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
2412         * config/sh/sh.c: Include elf/dwarf2.h.
2413         * config/i386/i386.c: Include elf/dwarf2.h.
2414
2415 2009-06-29  DJ Delorie  <dj@redhat.com>
2416
2417         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
2418
2419         * doc/extend.texi: Add MeP attributes and pragmas.
2420         * doc/invoke.text: Add MeP Options.
2421         * doc/contrib.texi: Add MeP contribution.
2422         * doc/md.texi: Add MeP constraints.
2423         * doc/install.texi: Add MeP target.
2424
2425 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
2426
2427         * target.h (struct gcc_target): Add frame_pointer_required field.
2428         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
2429         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
2430         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
2431         hook.
2432         * reload1.c (update_eliminables): (Ditto.).
2433         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
2434         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
2435         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
2436
2437         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
2438
2439         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
2440         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2441         (arm_frame_pointer_required): New function.
2442
2443         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
2444         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2445         (avr_frame_pointer_required_p): Declare as static.
2446         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
2447
2448         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
2449         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2450         (bfin_frame_pointer_required): Make as static, change return type
2451         to bool.
2452         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
2453
2454         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
2455         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2456         (cris_frame_pointer_required): New function.
2457         
2458         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
2459
2460         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
2461         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2462         (fr30_frame_pointer_required): New function.
2463         
2464         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
2465         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2466         (frv_frame_pointer_required): Make as static, change return type
2467         to bool.
2468         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
2469
2470         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
2471         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2472         (ix86_frame_pointer_required): Make as static, change return type to
2473         bool.
2474         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
2475
2476         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
2477         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2478
2479         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
2480
2481         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
2482         
2483         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
2484
2485         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
2486         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2487         (mips_frame_pointer_required): Make as static.
2488         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
2489         
2490         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
2491         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2492         (mmix_frame_pointer_required): Mew function.
2493
2494         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
2495         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2496
2497         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
2498
2499         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
2500
2501         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
2502
2503         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
2504         (CAN_ELIMINATE): Redefine.
2505         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
2506         (sparc_frame_pointer_required): New function.
2507         (sparc_can_eliminate): New function.
2508         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
2509
2510         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
2511         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2512
2513         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
2514         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
2515         (xtensa_frame_pointer_required): Make as static, change return type
2516         to bool.
2517         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
2518         Remove.
2519
2520 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
2521
2522         * doc/plugins.texi: Document PLUGIN_START_UNIT.
2523         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
2524         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
2525         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
2526         (register_callback): Handle PLUGIN_START_UNIT.
2527         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
2528
2529 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
2530
2531         * tree.c (process_call_operands): Propagate TREE_READONLY from the
2532         operands.
2533         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
2534         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
2535
2536 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
2537
2538         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
2539         move cost.
2540
2541 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
2542
2543         * doc/extend.texi (Additional Floating Types): __float128 is also
2544         supported on i386 targets.
2545
2546 2009-06-29  Richard Guenther  <rguenther@suse.de>
2547
2548         PR middle-end/14187
2549         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
2550         flag.
2551         (pt_solutions_same_restrict_base): Declare.
2552         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
2553         flag.
2554         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
2555         (make_constraint_from, make_copy_constraint): Move earlier.
2556         (make_constraint_from_heapvar): New function.
2557         (make_constraint_from_restrict): Likewise.
2558         (handle_lhs_call): Use it.
2559         (find_func_aliases): Use it to track conversions to restrict
2560         qualified pointers.
2561         (struct fieldoff): Add only_restrict_pointers flag.
2562         (push_fields_onto_fieldstack): Initialize it.
2563         (create_variable_info_for): Track global restrict qualified pointers.
2564         (intra_create_variable_infos): Use make_constraint_from_heapvar.
2565         Track restrict qualified pointer arguments.
2566         (set_uids_in_ptset): Use varinfo is_global_var flag.
2567         (find_what_var_points_to): Set the vars_contains_restrict flag.
2568         Always create the points-to solution for sets including restrict tags.
2569         (pt_solutions_same_restrict_base): New function.
2570         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
2571         qualified pointers use pt_solutions_same_restrict_base as
2572         additional source for disambiguation.
2573
2574 2009-06-29  Richard Guenther  <rguenther@suse.de>
2575
2576         PR middle-end/38212
2577         * alias.c (find_base_decl): Remove.
2578         (get_deref_alias_set_1): Remove restrict handling.
2579         * c-common.c (c_apply_type_quals_to_decl): Do not set
2580         DECL_POINTER_ALIAS_SET.
2581         * gimplify.c (find_single_pointer_decl_1): Remove.
2582         (find_single_pointer_decl): Likewise.
2583         (internal_get_tmp_var): Remove restrict handling.
2584         (gimple_regimplify_operands): Likewise.
2585         * omp-low.c (expand_omp_atomic_pipeline): Do not set
2586         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
2587         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
2588         * tree.c (restrict_base_for_decl): Remove.
2589         (init_ttree): Do not allocate it.
2590         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
2591         LABEL_DECL_UID for label decls.
2592         (copy_node_stat): Do not copy restrict information.
2593         (decl_restrict_base_lookup): Remove.
2594         (decl_restrict_base_insert): Likewise.
2595         (print_restrict_base_statistics): Likewise.
2596         (dump_tree_statistics): Do not call print_restrict_base_statistics.
2597         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
2598         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
2599         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
2600         (LABEL_DECL_UID): Adjust.
2601         (DECL_BASED_ON_RESTRICT_P): Remove.
2602         (DECL_GET_RESTRICT_BASE): Likewise.
2603         (SET_DECL_RESTRICT_BASE): Likewise.
2604         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
2605
2606         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
2607         instead of DECL_POINTER_ALIAS_SET.
2608         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
2609         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
2610         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
2611
2612 2009-06-29  Richard Guenther  <rguenther@suse.de>
2613
2614         PR tree-optimization/40579
2615         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
2616         the IL to simplify has constants that overflowed.
2617
2618 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
2619
2620         PR tree-optimization/40550
2621         * tree-vect-generic.c (expand_vector_operations_1): Compute in
2622         vector_compute_type only when the size of vector_compute_type is
2623         less than the size of type.
2624
2625 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
2626
2627         * fold-const.c (contains_label_1): Fix comments.
2628         (contains_label_p): Do not walk trees multiple time.
2629
2630 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2631
2632         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
2633         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
2634         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
2635         ix86_fp_comparison_operator.
2636         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
2637         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
2638         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
2639         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
2640         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
2641         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
2642         (related splits): Change predicate to ix86_fp_comparison_operator.
2643         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
2644         instead of ix86_fp_comparison_codes.
2645         (ix86_trivial_fp_comparison_operator,
2646         ix86_fp_comparison_operator): New.
2647         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
2648         (ix86_expand_compare): Eliminate last two parameters.
2649         (ix86_fp_jump_nontrivial_p): Kill.
2650         * config/i386/i386.c (put_condition_code): Eliminate call to
2651         ix86_fp_comparison_codes and subsequent assertion.
2652         (ix86_fp_comparison_codes): Eliminate.
2653         (ix86_fp_swap_condition): New.
2654         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
2655         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
2656         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
2657         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
2658         and ix86_fp_swap_condition.
2659         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
2660         Use ix86_fp_comparison_strategy.
2661         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
2662         (ix86_fp_jump_nontrivial_p): Eliminate.
2663         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
2664         call to ix86_expand_compare.
2665         (ix86_split_fp_branch, ix86_expand_setcc,
2666         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
2667         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
2668
2669 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2670
2671         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
2672         related to jump_clobbers.
2673         * config/arm/arm.md (conds): Remove jump_clob case.
2674         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
2675         splits): Change comparison_operator to arm_comparison_operator.
2676         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
2677         Eliminate.
2678
2679 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2680
2681         * dojump.c (do_compare_rtx_and_jump): Try swapping the
2682         condition for floating point modes.
2683         * expmed.c (emit_store_flag_1): Move here a bigger part
2684         of emit_store_flag.
2685         (emit_store_flag): Try swapping the condition for floating point
2686         modes.
2687         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
2688
2689 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2690
2691         * expr.c (expand_expr_real_1): Just use do_store_flag.
2692         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
2693         emit_store_flag_force.
2694         * expmed.c (emit_store_flag_force): Copy here trick
2695         previously in expand_expr_real_1.  Try reversing the comparison.
2696         (emit_store_flag_1): Work if target is NULL.
2697         (emit_store_flag): Work if target is NULL, using the result mode
2698         from the comparison.  Use split_comparison, restructure final part
2699         to simplify conditionals.
2700
2701 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
2702
2703         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
2704         * dojump.c (do_jump): Change handling of floating-point
2705         ops to use just do_compare_and_jump.
2706         (split_comparison): New.
2707         (do_compare_rtx_and_jump): Add here logic coming previously
2708         in do_jump, using split_comparison.
2709
2710 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
2711
2712         PR target/40489
2713         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
2714
2715 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2716
2717         * tree-ssa-alias.c: Fix unintentional commit.
2718
2719 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2720
2721         * passes.c (execute_one_pass): Fix unintentional commit.
2722
2723 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2724
2725         * df-problems.c (df_set_seen, df_unset_seen): Delete.
2726         (df_rd_local_compute, df_md_local_compute): Inline them.
2727
2728         (df_md_scratch): New.
2729         (df_md_alloc, df_md_free): Allocate/free it.
2730         (df_md_local_compute): Only include live registers in init.
2731         (df_md_transfer_function): Prune the in-set computed by
2732         the confluence function, and the gen-set too.
2733
2734 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2735
2736         PR rtl-optimization/26854
2737         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
2738         * df-problems.c (df_rd_add_problem): Fix comment.
2739         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
2740         df_md_simulate_artificial_defs_at_top,
2741         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
2742         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
2743         df_md_transfer_function, df_md_init, df_md_confluence_0,
2744         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
2745         problem_MD, df_md_add_problem): New.
2746         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
2747         df_md_get_bb_info): New.
2748         (DF_LAST_PROBLEM_PLUS1): Adjust.
2749
2750         * Makefile.in (fwprop.o): Include domwalk.h.
2751         * fwprop.c: Include domwalk.h.
2752         (reg_defs, reg_defs_stack): New.
2753         (bitmap_only_bit_between): Remove.
2754         (process_defs): New.
2755         (process_uses): Use reg_defs and local_md instead of
2756         bitmap_only_bit_between and local_rd.
2757         (single_def_use_enter_block): New, from build_single_def_use_links.
2758         (single_def_use_leave_block): New.
2759         (build_single_def_use_links): Remove code moved to
2760         single_def_use_enter_block, invoke domwalk.
2761         (use_killed_between): Adjust comment.
2762
2763 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2764
2765         * bitmap.h (bitmap_ior_and_into): New.
2766         * bitmap.c (bitmap_ior_and_into): New.
2767
2768 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2769
2770         * domwalk.h (struct dom_walk_data): Remove all callbacks except
2771         before_dom_children_before_stmts and after_dom_children_after_stmts.
2772         Rename the two remaining callbacks to just before_dom_children and 
2773         after_dom_children. Remove other GIMPLE statement walking bits.
2774         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
2775         * graphite.c: Do not include domwalk.h.
2776         * tree-into-ssa.c (interesting_blocks): New global.
2777         (struct mark_def_sites_global_data): Remove it and names_to_rename.
2778         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
2779         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
2780         now that they're not domwalk callbacks.
2781         (rewrite_initialize_block): Rename to...
2782         (rewrite_enter_block): ... this, place after called functions.  Test
2783         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
2784         (rewrite_finalize_block): Rename to...
2785         (rewrite_leave_block): ... this, place after called functions.
2786         (rewrite_update_init_block): Rename to...
2787         (rewrite_update_enter_block): ... this, place after called functions.
2788         Test interesting_blocks, call rewrite_update_stmt and 
2789         rewrite_update_phi_arguments.
2790         (rewrite_update_fini_block): Rename to...
2791         (rewrite_leave_block): ... this, place after called functions.
2792         (rewrite_blocks): Remove last argument, simplify initialization of
2793         walk_data.
2794         (mark_def_sites_initialize_block): Rename to...
2795         (mark_def_sites_block): ... this, call mark_def_sites.
2796         (mark_def_sites_blocks): Remove argument, simplify initialization of
2797         walk_data.
2798         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
2799         (update_ssa): Likewise.
2800         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
2801         callback.
2802         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
2803         (dom_opt_initialize_block): Rename to...
2804         (dom_opt_enter_block): ... this, place after called functions.  Walk
2805         statements here, inline propagate_to_outgoing_edges.
2806         (dom_opt_finalize_block): Rename to...
2807         (dom_opt_leave_block): ... this, place after called functions.
2808         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
2809         domwalk callback.
2810         (dse_enter_block, dse_record_phi): New.
2811         (dse_record_phis): Delete.
2812         (dse_finalize_block): Rename to...
2813         (dse_leave_block): ... this.
2814         (tree_ssa_dse): Simplify initialization of walk_data.
2815         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
2816         Adjust initialization of walk_data.
2817         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
2818         * tree-ssa-loop-phiopt.c (get_non_trapping):
2819         Adjust initialization of walk_data.
2820         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
2821         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
2822         it's not a domwalk callback.
2823         (uncprop_initialize_block): Rename to...
2824         (dse_enter_block): ... this, call uncprop_into_successor_phis.
2825         (dse_finalize_block): Rename to...
2826         (dse_leave_block): ... this.
2827         (tree_ssa_uncprop): Simplify initialization of walk_data.
2828         * Makefile.in: Adjust dependencies.
2829
2830 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
2831
2832         * arm.md (casesi): Fix test for Thumb1.
2833         (thumb1_casesi_internal_pic): Likewise.
2834         (thumb1_casesi_dispatch): Likewise.
2835
2836 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
2837
2838         * config/arm/arm-cores.def: Added core cortex-m0.
2839         * config/arm/arm-tune.md: Regenerated.
2840         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
2841
2842 2009-06-26  DJ Delorie  <dj@redhat.com>
2843
2844         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
2845
2846         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
2847         the scheduler doesn't tag jump insns.
2848
2849 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
2850
2851         * c-decl.c (merge_decls): Re-indent.
2852
2853 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
2854
2855         PR c/39902
2856         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
2857         Special-case decimal float constants.
2858
2859 2009-06-26  Richard Henderson  <rth@redhat.com>
2860
2861         * function.h (struct function): Add cannot_be_copied_reason,
2862         and cannot_be_copied_set.
2863         * tree-inline.c (has_label_address_in_static_1): Rename from
2864         inline_forbidden_p_2; don't set inline_forbidden_reason here.
2865         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
2866         don't set inline_forbidden_reason.
2867         (copy_forbidden): New function, split out of inline_forbidden_p.
2868         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
2869         (inline_forbidden_p): Use copy_forbidden.
2870         (tree_versionable_function_p): Likewise.
2871         (inlinable_function_p): Merge into tree_inlinable_function_p.
2872         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
2873         * ipa-cp.c (ipcp_versionable_function_p): New function.
2874         (ipcp_cloning_candidate_p): Use it.
2875         (ipcp_node_modifiable_p): Likewise.
2876
2877 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
2878
2879         * builtins.c (expand_builtin_alloca): Handle builtin alloca
2880         that is marked not to be inlined. Remove flag_mudflap use.
2881         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
2882         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
2883
2884 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
2885
2886         PR bootstrap/40338
2887         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
2888         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
2889
2890 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
2891
2892         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
2893         shared libgcc.
2894         (__mingwthr_remove_key_dtor): Likewise.
2895
2896 2009-06-26  Richard Guenther  <rguenther@suse.de>
2897
2898         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
2899
2900 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
2901
2902         PR middle-end/40525
2903         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
2904         try the non-cond_exec path also.
2905
2906 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2907
2908         PR target/40468
2909         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
2910         (output_cbranch): Use new functions.
2911         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
2912         Likewise.
2913
2914 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
2915             Pat Haugen  <pthaugen@us.ibm.com>
2916             Revital Eres <ERES@il.ibm.com>
2917
2918         * config/rs6000/rs6000.c (print_operand): Correct lossage message
2919         for %c error.  Add %x support to print VSX registers as a unified
2920         register set, instead of separate float and altivec registers.
2921         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
2922         %y case, and add support for VSX pre-modify addresses.
2923         (output_toc): Add assert for CONST containing an integer constant
2924         in the PLUS case.
2925         (rs6000_adjust_cost): Add POWER7 support.
2926         (insn_must_be_first_in_group): Ditto.
2927         (insn_must_be_last_in_group): Ditto.
2928         (rs6000_emit_popcount): Ditto.
2929         (rs6000_vector_mode_supported_p): Ditto.
2930
2931         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
2932         Change some of the functions called by macros to being called
2933         through a pointer, so debug functions can be inserted if
2934         -mdebug=addr or -mdebug=cost. 
2935         (rs6000_preferred_reload_class_ptr): Ditto.
2936         (rs6000_secondary_reload_class_ptr): Ditto.
2937         (rs6000_secondary_memory_needed_ptr): Ditto.
2938         (rs6000_cannot_change_mode_class_ptr): Ditto.
2939         (rs6000_secondary_reload_inner): Ditto.
2940         (rs6000_legitimize_reload_address): Ditto.
2941         (rs6000_legitimize_reload_address_ptr): Ditto.
2942         (rs6000_mode_dependent_address): Ditto.
2943         (rs6000_mode_dependent_address_ptr): Ditto.
2944
2945         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
2946         function to return true if the mode allows reg + integer
2947         addresses.
2948         (virtual_stack_registers_memory_p): New function to return true if
2949         the address refers to a virtual stack register.
2950         (rs6000_legitimate_offset_address_p): Move code to say whether a
2951         mode supports reg+int addressing to reg_offset_addressing_ok_p and
2952         call it.
2953         (rs6000_legitimate_address_p): Add checks for modes that only can
2954         do reg+reg addressing.  Start adding VSX support.
2955         (rs6000_legitimize_reload_address): Ditto.
2956         (rs6000_legitimize_address): Ditto.
2957         (rs6000_debug_legitimate_address_p): New debug functions for
2958         -mdebug=addr and -mdebug=cost.
2959         (rs6000_debug_rtx_costs): Ditto.
2960         (rs6000_debug_address_costs): Ditto.
2961         (rs6000_debug_adjust_cost): Ditto.
2962         (rs6000_debug_legitimize_address): Ditto.
2963         (rs6000_legitimize_reload_address_ptr): Point to call normal
2964         function or debug function.  Make functions called via pointer
2965         static.
2966         (rs6000_mode_dependent_address_ptr): Ditto.
2967         (rs6000_secondary_reload_class_ptr): Ditto.
2968         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
2969         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
2970         into a friendlier error.
2971         (rs6000_init_builtins): Add initial VSX support.
2972         (rs6000_adjust_cost): Fix some spacing issues.
2973
2974         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
2975         (REG_CLASS_NAMES): Ditto.
2976         (REG_CLASS_CONTENTS): Ditto.
2977         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
2978         pointer, to add -mdebug=addr support.
2979         (CANNOT_CHANGE_MODE_CLASS): Ditto.
2980         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
2981         -mdebug=addr support.
2982         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
2983         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
2984         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
2985
2986         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
2987         16-bit values.
2988         (bswapsi*): Set attribute types for load/store.  Add combiner
2989         patterns to eliminate zero extend on 64-bit.
2990         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
2991         stdbrx if the hardware supports those instructions.
2992
2993 2009-06-25  Ian Lance Taylor  <iant@google.com>
2994
2995         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
2996         (Link Options): Document -static-libstdc++.
2997
2998 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2999
3000         PR target/38731
3001         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
3002         DATA_ALIGNMENT instead.
3003
3004 2009-06-25  Richard Guenther  <rguenther@suse.de>
3005
3006         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
3007         indirect references against the callused/escaped solutions.
3008         (call_may_clobber_ref_p_1): Likewise.
3009
3010 2009-06-25  Martin Jambor  <mjambor@suse.cz>
3011
3012         PR tree-optimization/40493
3013         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
3014         (enum unscalarized_data_handling): New type.
3015         (handle_unscalarized_data_in_subtree): Return what has been done.
3016         (load_assign_lhs_subreplacements): Handle left flushes differently.
3017         (sra_modify_assign): Use unscalarized_data_handling, simplified
3018         condition determining whether to remove the statement.
3019
3020 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
3021
3022         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
3023         excerpt - @ should be doubled for texinfo.
3024
3025 2009-06-24  Ian Lance Taylor  <iant@google.com>
3026
3027         * config/arc/arc.c: Include "df.h".
3028         (arc_attribute_table): Make static.  Move higher in file.
3029         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
3030         (output_shift): Initialize n later to avoid warning.
3031         * config/arm/arm.c (arm_attribute_table): Make static.  Move
3032         higher in file.
3033         * config/avr/avr.c (avr_attribute_table): Make static.  Move
3034         higher in file.
3035         (reg_class_tab): Change array type from int to enum reg_class.
3036         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
3037         LABEL_REF.
3038         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
3039         (lshrhi3_out): Likewise.
3040         (class_likely_spilled_p): Change return type to bool.
3041         (avr_rtx_costs): Use local code variable with enum type.
3042         * config/avr/avr.md (movmemhi): Use add_reg_note.
3043         (andhi3, andsi3): Don't use AS2 with "and".
3044         (iorhi3, iorsi3): Don't use AS2 with "or".
3045         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
3046         * config/crx/crx.c: Include "df.h".
3047         (crx_attribute_table): Make static.
3048         * config/m32r/m32r.c: Include "df.h".
3049         (m32r_attribute_table): Make static.  Move higher in file.
3050         (pop): Use add_reg_note.
3051         (block_move_call): Change 0 to LCT_NORMAL in function call.
3052         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
3053         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
3054         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
3055         declare, not just when TREE_CODE is defined.
3056         * config/m68hc11/m68hc11.c: Include "expr.h".
3057         (m68hc11_attribute_table): Make static.  Move higher in file.
3058         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
3059         function call.
3060         (m68hc11_register_indirect_p): Likewise.
3061         (m68hc11_function_arg_padding): Change return type to enum
3062         direction.
3063         (emit_move_after_reload): Use add_reg_note.
3064         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
3065         (m68hc11_split_logical): Likewise.
3066         (m68hc11_rtx_costs): Add local code_and outer_code variables with
3067         enum type.
3068         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
3069         to VOIDmode in function call.
3070         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
3071         tree is defined.
3072         (m68hc11_split_logical): Update declaration.
3073         (m68hc11_function_arg_padding): Update declaration.
3074         * config/mcore/mcore.c (regno_reg_class): Change form array of int
3075         to array of enum reg_class.
3076         (mcore_attribute_table): Make static.  Move higher in file.
3077         (mcore_rtx_costs): Add cast to enum type.
3078         * config/mcore/mcore.h (regno_reg_class): Update declaration.
3079         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
3080         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
3081         in file.
3082         * config/sh/predicates.md (trapping_target_operand): Rename and to
3083         and_expr.
3084         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
3085         higher in file.
3086         * config/spu/spu.c (spu_attribute_table): Make static.  Move
3087         higher in file.
3088         * config/v850/v850.c (v850_attribute_table): Make static.  Move
3089         higher in file.
3090         (v850_rtx_costs): Use local code with enum type.
3091         (expand_epilogue): Add cast.
3092         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
3093
3094 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
3095
3096         PR target/40515
3097         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
3098         -m2a-single-only and -m2a-nofpu.
3099         * config/sh/sh.opt: Document m2a generates FPU code.  
3100
3101 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
3102
3103         * defaults.h (CAN_ELIMINATE): Provide default.
3104         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
3105         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
3106         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
3107         * config/spu/spu.h (CAN_ELIMINATE): Delete.
3108         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
3109         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
3110         * config/cris/cris.h (CAN_ELIMINATE): Delete.
3111         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
3112         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
3113         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
3114
3115 2009-06-24  DJ Delorie  <dj@redhat.com>
3116
3117         * mep-ext-cop.cpu: Fix copyright notice.
3118         * mep-default: Fix copyright notice.
3119         * mep-core: Fix copyright notice.
3120         * mep: Fix copyright notice.
3121         * mep-ivc2: Fix copyright notice.
3122         * mep-c5: Fix copyright notice.
3123
3124 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
3125
3126         * doc/contrib.texi (Contributors): 
3127
3128 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3129         
3130         PR middle-end/40501
3131         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
3132         src and dst operands if necessary.
3133
3134 2009-06-23  DJ Delorie  <dj@redhat.com>
3135
3136         Add MeP port.
3137         * config.gcc: Add mep support.
3138         * recog.c: Resurrect validate_replace_rtx_subexp().
3139         * recog.h: Likewise.
3140         * config/mep/: Add new port:
3141         * config/mep/constraints.md: New file.
3142         * config/mep/default.h: New file.
3143         * config/mep/intrinsics.h: New file.
3144         * config/mep/intrinsics.md: New file.
3145         * config/mep/ivc2-template.h: New file.
3146         * config/mep/mep-c5.cpu: New file.
3147         * config/mep/mep-core.cpu: New file.
3148         * config/mep/mep-default.cpu: New file.
3149         * config/mep/mep-ext-cop.cpu: New file.
3150         * config/mep/mep-intrin.h: New file.
3151         * config/mep/mep-ivc2.cpu: New file.
3152         * config/mep/mep-lib1.asm: New file.
3153         * config/mep/mep-lib2.c: New file.
3154         * config/mep/mep-pragma.c: New file.
3155         * config/mep/mep-protos.h: New file.
3156         * config/mep/mep-tramp.c: New file.
3157         * config/mep/mep.c: New file.
3158         * config/mep/mep.cpu: New file.
3159         * config/mep/mep.h: New file.
3160         * config/mep/mep.md: New file.
3161         * config/mep/mep.opt: New file.
3162         * config/mep/predicates.md: New file.
3163         * config/mep/t-mep: New file.
3164
3165 2009-06-23  Ian Lance Taylor  <iant@google.com>
3166
3167         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
3168         from loose_warn into c_loose_warn and from strict_warn into
3169         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
3170         --enable-build-with-cxx.  Set and substitute
3171         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
3172         * Makefile.in (CXXFLAGS): New variable.
3173         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
3174         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
3175         the default is the same as $(STRICT_WARN).
3176         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
3177         (CXX): New variable.
3178         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
3179         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
3180         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
3181         (HOST_LIBS): New variable.
3182         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
3183         (ALL_CXXFLAGS): New variable.
3184         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
3185         * doc/install.texi (Configuration): Document
3186         --enable-build-with-cxx, --with-stage1-ldflags,
3187         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
3188         * configure: Rebuild.
3189
3190 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3191
3192         * config/arm/arm.c (arm_override_options): Fix braces and formatting
3193         from previous commit.
3194
3195 2009-06-23  Ian Lance Taylor  <iant@google.com>
3196
3197         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
3198
3199 2009-06-23  Ian Lance Taylor  <iant@google.com>
3200
3201         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
3202         with ATTRIBUTE_UNUSED.
3203
3204 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
3205             Pat Haugen  <pthaugen@us.ibm.com>
3206             Revital Eres  <eres@il.ibm.com>
3207
3208         * config.in (HAVE_AS_POPCNTD): Add default definition.
3209         (HAVE_AS_LWSYNC): Ditto.
3210
3211         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
3212         release number.
3213         (gcc_cv_as_powerpc_cmpb): Ditto.
3214         (gcc_cv_as_powerpc_dfp): Ditto.
3215         (gcc_cv_as_powerpc_vsx): Ditto.
3216         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
3217         supporting the popcntd/lwsync instructions.
3218         (gcc_cv_as_powerpc_lwsync): Ditto.
3219         * configure: Regenerate.
3220
3221         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
3222         -mcpu=native and -mcpu=power7.
3223         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
3224
3225         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
3226         a variable instead of a mask to reduce the number of mask bits.
3227         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
3228         (-mbit-word): Ditto.
3229         (-mregnames): Ditto.
3230         * config/rs6000/rs6000.opt (-mupdate): Ditto.
3231         (-mfused-madd): Ditto.
3232
3233         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
3234         2.06 instructions.
3235         (-mvsx): New switch for VSX instructions.
3236         (-misel): Move from a variable to a mask to allow it to be set by
3237         -mcpu=.
3238
3239         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
3240         function declaration to an array declaration.
3241         (rs6000_hard_regno_nregs): New external array declaration.
3242
3243         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
3244         files included by rs6000.md.
3245
3246         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
3247         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
3248
3249         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
3250         a target mask.
3251         (rs6000_debug_reg): New -mdebug= variables.
3252         (rs6000_debug_addr): Ditto.
3253         (rs6000_debug_cost): Ditto.
3254         (rs6000_pmode): New variable to hold Pmode.
3255         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
3256         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
3257         calculated at compiler start.
3258         (rs6000_hard_regno_nregs): Change function to an array which holds
3259         HARD_REGNO_NREGS calculated at compiler start.
3260         (rs6000_explicit_options): Delete isel field.
3261         (rs6000_vector_unit): New array to hold which vector unit
3262         supports arithmetic options for a given type.
3263         (rs6000_vector_mem): New array to hold which vector unit supports
3264         memory reference operations for a given type.
3265         (rs6000_vector_align): New array to given the alignment of each
3266         vector type.
3267         (power7_cost): New basic costs for power7.
3268         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
3269         (rs6000_hard_regno_nregs_internal): New function, moved from
3270         HARD_REGNO_NREGS, to calculate the number of registers each hard
3271         register takes for each type.
3272         (rs6000_debug_reg_print): New function for -mdebug=reg support.
3273         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
3274         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
3275         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
3276         unit information here so it is calculated once at compiler startup
3277         time.
3278         (rs6000_override_options): Make -misel a target mask.  Add more
3279         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
3280         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
3281         -mdebug=cost.
3282         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
3283         (rs6000_handle_option): Move -misel from variable to target mask.
3284         (rs6000_builtin_mask_for_load): Add VSX support.
3285         (rs6000_conditional_register_usage): Ditto.
3286         (USE_ALTIVEC_FOR_ARG_P): Ditto.
3287         (function_arg_boundary): Ditto.
3288         (rs6000_expand_builtin): Ditto.
3289         (def_builtin): Make abort message a little friendlier.
3290         (rs6000_emit_int_cmove): Add support for 64-bit isel.
3291
3292         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
3293         assembler support the popcntd instruction instead of a vsx
3294         instruction to enable power7 support.
3295         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
3296         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
3297         option to the assembler if -mcpu=native.
3298         (ASM_CPU_NATIVE_SPEC): Ditto.
3299         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
3300         ISA 2.06 features.
3301         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
3302         the lwsync instruction.
3303         (enum processor_type): Add PROCESSOR_POWER7.
3304         (rs6000_debug_reg): New -mdebug= options.
3305         (rs6000_debug_addr): Ditto.
3306         (rs6000_debug_cost): Ditto.
3307         (rs6000_isel): Delete.
3308         (enum rs6000_vector): New enum to say what vector unit we have.
3309         (VECTOR_UNIT_*): New macros to say which vector unit has
3310         arithmetic operations for a given type.
3311         (VECTOR_MEM_*): New macros to say which vector unit has memory
3312         operations for a given type.
3313         (TARGET_LDBRX): Whether the machine supports the ldbrx
3314         instruction.
3315         (TARGET_ISEL): Delete, -misel moved to be a mask.
3316         (TARGET_ISEL64): New macro for 64-bit isel support.
3317         (UNITS_PER_VSX_WORD): New macro.
3318         (POINTER_SIZE): Move to be an external variable, rather than
3319         calculating whether we are generating 32 ot 64-bit code.
3320         (Pmode): Ditto.
3321         (STACK_BOUNDARY): Add VSX support.
3322         (LOCAL_ALIGNMENT): Ditto.
3323         (SLOW_UNALIGNED_ACCESS): Ditto.
3324         (VSX_REGNO_P): New macro for VSX support.
3325         (VFLOAT_REGNO_P): Ditto.
3326         (VINT_REGNO_P): Ditto.
3327         (VLOGICAL_REGNO_P): Ditto.
3328         (VSX_VECTOR_MODE): Ditto.
3329         (VSX_SCALAR_MODE): Ditto.
3330         (VSX_MODE): Ditto.
3331         (VSX_MOVE_MODE): Ditto.
3332         (VSX_REG_CLASS_P): Ditto.
3333         (HARD_REGNO_NREGS): Instead of calling a function, use an array
3334         lookup.
3335         (UNITS_PER_SIMD_WORD): Add VSX support.
3336         (MODES_TIEABLE_P): Ditto.
3337         (STARTING_FRAME_OFFSET): Ditto.
3338         (STACK_DYNAMIC_OFFSET): Ditto.
3339         (EPILOGUE_USES): Ditto.
3340         (REGNO_REG_CLASS): Move to array lookup.
3341         (CLASS_MAX_NREGS): Ditto.
3342         (rs6000_vector_reg_class): Add declaration.
3343         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
3344         overlap with the floating point and Altivec registers.
3345
3346         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
3347
3348         * config/rs6000/driver-rs6000.c (asm_names): New static array to
3349         give the appropriate asm switches if -mcpu=native.
3350         (host_detect_local_cpu): Add support for "asm".
3351         (host_detect_local_cpu): Follow GNU code guidelines for name.
3352
3353         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
3354         -mbit-word to a variable instead of being a target mask.
3355
3356         * config/rs6000/sync.md (lwsync): If the assembler supports it,
3357         emit the lwsync instruction instead of emitting the instruction as
3358         an integer constant.
3359
3360         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
3361         fixuns_trundfsi2, move expander into rs6000.md.
3362
3363         * config/rs6000/rs6000.md (cpu): Add power7.
3364         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
3365         (logical predicate patterns): Change the single instruction
3366         primitives that set CR0 to be fast_compare instead of compare.
3367         (norsi*): Ditto.
3368         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
3369         (popcntddi2): Ditto.
3370         (popcount<mode>): Ditto.
3371         (floating multiply/add insns): Name the floating point
3372         multiply/add insns.
3373         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
3374         (isel_unsigned_<mode>): Ditto.
3375         (fixuns_trundfsi2): Move expander here from spe.md.
3376         (smindi3): Define if we have -misel on 64-bit systems.
3377         (smaxdi3): Ditto.
3378         (umindi3): Ditto.
3379         (umaxdi3): Ditto.
3380
3381 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
3382
3383         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
3384         extra_objs.
3385         * config/avr/avr.c (avr_current_device): New variable.
3386         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
3387         (avr_arch, mcu_type_s): Move to avr.h.
3388         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
3389         default_data_section_start fields.
3390         (avr_arch): Moved from avr.c.
3391         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
3392         library_name fields.
3393         (avr_current_device, avr_mcu_types, avr_arch_types,
3394         avr_device_to_arch, avr_device_to_data_start,
3395         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
3396         (EXTRA_SPEC_FUNCTIONS): Define.
3397         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
3398         options mapping. Use device_to_arch and device_to_data_start insted.
3399         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
3400         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
3401         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
3402         * config/avr/driver-avr.c: New file.
3403         * config/avr/avr-devices.c: New file.
3404
3405 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
3406
3407         * var-tracking.c (unshare_variable): Force initialized to
3408         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
3409         (set_variable_part): Likewise.
3410         (struct variable_union_info): Remove pos_src field.
3411         (vui_vec, vui_allocated): New variables.
3412         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
3413         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
3414         == 1 use a simpler sorting algorithm.  Compute pos field right
3415         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
3416         Avoid quadratic comparison if !flag_var_tracking_uninit.
3417         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
3418         unshare_variable unconditionally.   
3419         (dataflow_set_different_2): Removed.
3420         (dataflow_set_different): Don't traverse second hash table.
3421         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
3422         unconditionally to var_reg_set or var_mem_set.
3423         (emit_notes_in_bb): Likewise.
3424         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
3425         unshare_variable.
3426         (emit_note_insn_var_location): Don't set initialized to
3427         VAR_INIT_STATUS_INITIALIZED early.
3428         (vt_finalize): Free vui_vec if needed, clear vui_vec and
3429         vui_allocated.
3430         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
3431
3432         * tree-object-size.c (addr_object_size): Instead of checking
3433         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
3434         are no FIELD_DECLs following it.
3435
3436 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
3437
3438         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
3439         order to match bswaps with signed source operands.
3440
3441 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3442
3443         * sdbout.c (sdbout_one_type): Fix braces in switch.
3444
3445 2009-06-23  Richard Guenther  <rguenther@suse.de>
3446
3447         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
3448         member.
3449         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
3450         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
3451         var_callused, callused_tree, var_storedanything, storedanything_tree,
3452         var_integer, integer_tree): Remove global variables.
3453         (new_var_info): Do not pass new id, append the new var to the
3454         global variable vector.
3455         (do_ds_constraint): Use is_global_var member of the variable-info.
3456         (new_scalar_tmp_constraint_exp): Adjust.
3457         (create_function_info_for): Likewise.
3458         (create_variable_info_for): Likewise.
3459         (find_what_var_points_to): Remove dead code.
3460         (init_base_vars): Simplify.
3461         (compute_points_to_sets): Adjust.
3462
3463 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
3464
3465         * combine.c (try_combine): Dump information about the insns we're
3466         combining.
3467
3468 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
3469
3470         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
3471         check when calling force_to_mode on TRUNCATE's operand.
3472
3473 2009-06-22  Ian Lance Taylor  <iant@google.com>
3474
3475         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
3476
3477 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
3478
3479         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
3480
3481 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3482
3483         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
3484         override library linkage flags such as -static-libgcc or
3485         -shared-libgcc.
3486
3487 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
3488
3489         * config/m68k/m68k-devices.def: Add line for MCF5221x.
3490
3491 2009-06-22  Ian Lance Taylor  <iant@google.com>
3492
3493         * config/linux.opt: Put mglibc ahead of muclibc.
3494
3495         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
3496         for duplicate decls.
3497
3498 2009-06-22  Matthias Klose  <doko@ubuntu.com>
3499
3500         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
3501
3502 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
3503
3504         PR objc/28050
3505         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
3506         instead of NULL if a parser error occurs.
3507
3508 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3509
3510         * dwarf2out.c (dwarf2_debug_hooks): Initialize
3511         non-DWARF2_DEBUGGING_INFO version.
3512
3513 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
3514
3515         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
3516         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
3517
3518         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
3519         (LIBGCC2_TF_CEXT): Define.
3520         (TF_SIZE): Define.
3521
3522 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3523
3524         PR target/40463
3525         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
3526
3527 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3528
3529         * config/arm/arm.c (arm_override_options): Disable
3530         -mcaller-super-interworking and -mcallee-super-interworking.
3531         * doc/invoke.texi (ARM Options): Document this.
3532
3533 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
3534
3535         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
3536         * config/arm/constraints.md (j): New constraint for movw operands.
3537         (N): Remove thumb2 meaning.
3538         * config/arm/arm.md (*arm_movw): Delete.
3539         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
3540         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
3541         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
3542
3543 2009-06-22  Martin Jambor  <mjambor@suse.cz>
3544
3545         PR tree-optimization/40492
3546         * tree-sra.c (sra_modify_assign): Pass zero offsets to
3547         build_ref_for_offset.
3548
3549 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
3550
3551         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
3552         JUMP_TABLE_DATA_P predicates where applicable.
3553         * auto-inc-dec.c: Ditto.
3554         * builtins.c: Ditto.
3555         * caller-save.c: Ditto.
3556         * calls.c: Ditto.
3557         * cfgcleanup.c: Ditto.
3558         * cfglayout.c: Ditto.
3559         * cfgrtl.c: Ditto.
3560         * combine.c: Ditto.
3561         * combine-stack-adj.c: Ditto.
3562         * cse.c: Ditto.
3563         * cselib.c: Ditto.
3564         * dbxout.c: Ditto.
3565         * df-scan.c: Ditto.
3566         * dse.c: Ditto.
3567         * dwarf2asm.c: Ditto.
3568         * dwarf2out.c: Ditto.
3569         * emit-rtl.c: Ditto.
3570         * except.c: Ditto.
3571         * explow.c: Ditto.
3572         * expmed.c: Ditto.
3573         * expr.c: Ditto.
3574         * final.c: Ditto.
3575         * function.c: Ditto.
3576         * fwprop.c: Ditto.
3577         * gcse.c: Ditto.
3578         * genpreds.c: Ditto.
3579         * genrecog.c: Ditto.
3580         * ifcvt.c: Ditto.
3581         * ira-costs.c: Ditto.
3582         * ira-lives.c: Ditto.
3583         * jump.c: Ditto.
3584         * loop-iv.c: Ditto.
3585         * lower-subreg.c: Ditto.
3586         * modulo-sched.c: Ditto.
3587         * optabs.c: Ditto.
3588         * postreload.c: Ditto.
3589         * print-rtl.c: Ditto.
3590         * recog.c: Ditto.
3591         * reginfo.c: Ditto.
3592         * regmove.c: Ditto.
3593         * reload1.c: Ditto.
3594         * reload.c: Ditto.
3595         * reorg.c: Ditto.
3596         * rtlanal.c: Ditto.
3597         * rtl.c: Ditto.
3598         * sched-vis.c: Ditto.
3599         * sdbout.c: Ditto.
3600         * sel-sched-ir.c: Ditto.
3601         * simplify-rtx.c: Ditto.
3602         * targhooks.c: Ditto.
3603         * var-tracking.c: Ditto.
3604         * vmsdbgout.c: Ditto.
3605
3606 2009-06-22  Matthias Klose  <doko@ubuntu.com>
3607
3608         * Makefile.in (install-plugin): Always use DESTDIR.
3609
3610 2009-06-22  Olivier Hainque  <hainque@adacore.com>
3611         
3612         * config/pa/pa.c (output_call): Don't optimize post call jumps
3613         into return address adjustments if the call may throw.
3614
3615 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
3616
3617         * arm.c (thumb1_output_casesi): New function.
3618         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
3619         optimizing for size or PIC.
3620         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
3621         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
3622         (casesi): Handle Thumb-1 when optimizing for size or PIC.
3623         (thumb1_casesi_internal_pic): New expand rule.
3624         (thumb1_casesi_dispatch): New pattern.
3625         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
3626         thumb-1 mode.
3627         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
3628         in the text seciton when PIC or optimizing for size.
3629         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
3630         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
3631         preservation properties of code.
3632         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
3633         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
3634         (__gnu_thumb1_case_si): New function.
3635         * t-arm (LIB1ASMSRC): Define here.
3636         (LIB1ASMFUNCS): Add some common functions.
3637         * t-arm-elf (LIB1ASMSRC): Delete.
3638         (LIB1ASMFUNCS): Append to existing set.
3639         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3640         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3641         * t-symbian (LIB1ASMFUNCS): Likewise.
3642         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3643         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
3644
3645 2009-06-21  Richard Guenther  <rguenther@suse.de>
3646
3647         PR tree-optimization/38729
3648         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
3649         to loops with a single exit if -fno-expensive-optimizations.
3650
3651 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
3652
3653         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
3654         (dataflow_set): Change vars type from htab_t to shared_hash.
3655         (shared_hash_pool, empty_shared_hash): New variables.
3656         (vars_clear): Removed.
3657         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
3658         shared_hash_find_slot_unshare, shared_hash_find_slot,
3659         shared_hash_find_slot_noinsert, shared_hash_find): New
3660         static inlines.
3661         (shared_hash_unshare, shared_hash_destroy): New functions.
3662         (unshare_variable): Unshare set->vars if shared, use
3663         shared_hash_htab.
3664         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
3665         (get_init_value, find_src_set_src, dump_dataflow_set,
3666         clobber_variable_part, emit_notes_for_differences): Use
3667         shared_hash_htab.
3668         (dataflow_set_init): Remove second argument, set vars to
3669         empty_shared_hash instead of creating a new htab.
3670         (dataflow_set_clear): Call shared_hash_destroy and set vars
3671         to empty_shared_hash instead of calling vars_clear.
3672         (dataflow_set_copy): Don't call vars_copy, instead just share
3673         the src htab with dst.
3674         (variable_union): Use shared_hash_*, use initially NO_INSERT
3675         lookup if set->vars is shared.  Don't keep slot cleared before
3676         calling unshare_variable.  Unshare set->vars if needed.
3677         Even ->refcount == 1 vars must be unshared if set->vars is shared
3678         and var needs to be modified.
3679         (variable_canonicalize): New function.
3680         (dataflow_set_union): If dst->vars is empty, just share src->vars
3681         with dst->vars and traverse with variable_canonicalize to canonicalize
3682         and unshare what is needed.
3683         (dataflow_set_different): If old_set and new_set use the same shared
3684         htab, they aren't different.  If number of htab elements is different,
3685         htabs are different.  Use shared_hash_*.
3686         (dataflow_set_destroy): Call shared_hash_destroy instead of
3687         htab_delete.
3688         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
3689         second argument to dataflow_set_init.
3690         (vt_initialize): Likewise.  Initialize shared_hash_pool and
3691         empty_shared_hash, move bb in/out initialization afterwards.
3692         Use variable_htab_free instead of NULL as changed_variables del hook.
3693         (variable_was_changed): Change type of second argument to pointer to
3694         dataflow_set.  When inserting var into changed_variables, bump
3695         refcount.  Unshare set->vars if set is shared htab and slot needs to
3696         be cleared.
3697         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
3698         lookup if set->vars is shared.  Unshare set->vars if needed.
3699         Even ->refcount == 1 vars must be unshared if set->vars is shared
3700         and var needs to be modified.  Adjust variable_was_changed caller.
3701         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
3702         vars must be unshared if set->vars is shared and var needs to be
3703         modified.  Adjust variable_was_changed caller.
3704         (emit_note_insn_var_location): Don't pool_free var.
3705         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
3706         instead of 1.
3707         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
3708         free_alloc_pool on shared_hash_pool.
3709
3710 2009-06-20  Anthony Green  <green@moxielogic.com>
3711
3712         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
3713         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
3714
3715 2009-06-20  Richard Guenther  <rguenther@suse.de>
3716
3717         * tree-ssa-structalias.c (find_func_aliases): For memset use
3718         a constraint from NULL if we memset to zero.
3719         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
3720         we explicitly handle that do not read from memory.
3721         (call_may_clobber_ref_p_1): Properly handle builtins that may
3722         set errno.
3723
3724 2009-06-20  Richard Guenther  <rguenther@suse.de>
3725
3726         PR tree-optimization/40495
3727         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
3728         (new_scalar_tmp_constraint_exp): New function.
3729         (process_constraint): Do not create temporary decls.
3730         (process_all_all_constraints): Likewise.
3731         (handle_const_call): Likewise.
3732         (create_function_info_for): Do not set decl.
3733
3734 2009-06-19  Ian Lance Taylor  <iant@google.com>
3735
3736         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
3737         (rs6000_attribute_table): Make static; move before use.
3738
3739 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
3740
3741         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
3742         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
3743         Propagate the TREE_READONLY flag without overwriting it.
3744         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
3745         Propagate the TREE_READONLY flag onto the result.
3746         (process_call_operands): Move around.  Use correct constant value.
3747
3748 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3749
3750         PR target/40482
3751         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
3752         * config/arm/arm.md: Likewise.
3753
3754 2009-06-19  Ian Lance Taylor  <iant@google.com>
3755
3756         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
3757         to GIMPLE_ERROR_MARK.
3758
3759         * c-typeck.c (build_conditional_expr): Add op1_original_type and
3760         op2_original_type parameters.  Warn about using different enum types.
3761         * c-parser.c (c_parser_conditional_expression): Pass original
3762         types to build_conditional_expr.
3763         * c-tree.h (build_conditional_expr): Update declaration.
3764
3765 2009-06-19  Ian Lance Taylor  <iant@google.com>
3766
3767         * config/i386/i386.c (ix86_function_specific_save): Test that
3768         fields match values, rather than testing the values are in a
3769         certain range.
3770
3771 2009-06-19  Richard Guenther  <rguenther@suse.de>
3772
3773         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
3774         ADDR_EXPR pointers.
3775         (ptr_derefs_may_alias_p): Likewise.
3776         (ptr_deref_may_alias_ref_p_1): New function.
3777         (ptr_deref_may_alias_ref_p): Likewise.
3778         (ref_maybe_used_by_call_p_1): Handle builtins that are not
3779         covered by looking at the ESCAPED solution.
3780         (call_may_clobber_ref_p_1): Likewise.
3781         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
3782         Handle NULL_TREE offset.  Do not produce redundant constraints.
3783         (process_all_all_constraints): New helper function.
3784         (do_structure_copy): Use it.
3785         (handle_lhs_call): Likewise.
3786         (find_func_aliases): Handle some builtins with pointer arguments
3787         and/or return values explicitly.
3788
3789 2009-06-19  Ian Lance Taylor  <iant@google.com>
3790
3791         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
3792
3793 2009-06-19  Ian Lance Taylor  <iant@google.com>
3794
3795         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
3796
3797 2009-06-19  Ian Lance Taylor  <iant@google.com>
3798
3799         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
3800         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
3801         version.
3802
3803         * c-decl.c (finish_decl): If -Wc++-compat, warn about
3804         uninitialized const.
3805
3806 2009-06-19  Ian Lance Taylor  <iant@google.com>
3807
3808         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
3809         all uses.
3810
3811         * c-decl.c (in_struct, struct_types): Remove.
3812         (struct c_binding): Add in_struct field.
3813         (c_binding_ptr): Define type, along with VEC.
3814         (struct c_struct_parse_info): Define.
3815         (struct_parse_info): New static variable.
3816         (bind): Initialize in_struct field.
3817         (start_struct): Remove enclosing_in_struct and
3818         enclosing_struct_types parameters.  Add
3819         enclosing_struct_parse_info parameter.  Change all callers.  Set
3820         struct_parse_info rather than in_struct and struct_types.
3821         (grokfield): If -Wc++-compat and there is a symbol binding for the
3822         field name, set the in_struct flag and push it on the
3823         struct_parse_info->fields vector.
3824         (warn_cxx_compat_finish_struct): New static function.
3825         (finish_struct): Remove enclosing_in_struct and
3826         enclosing_struct_types parameters.  Add
3827         enclosing_struct_parse_info parameter.  Change all callers.  Don't
3828         set C_TYPE_DEFINED_IN_STRUCT here.  Call
3829         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
3830         parameter.  Only push on struct_types if warn_cxx_compat.
3831         (finish_enum): Only push on struct_types if warn_cxx_compat.
3832         (declspecs_add_type): Add loc parameter.  Change all callers.
3833         Change all error calls to error_at.  Pass loc, not input_location,
3834         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
3835         defined in a struct.  If -Wc++-compat and parsing a struct, record
3836         that a typedef name was used.
3837         * c-parser.c (c_parser_declspecs): Get location to pass to
3838         declspecs_add_type.
3839         (c_parser_struct_or_union_specifier): Update calls to start_struct
3840         and finish_struct.
3841         * c-tree.h (struct c_struct_parse_info): Declare.
3842         (finish_struct, start_struct): Update declarations.
3843         (declspecs_add_type): Update declaration.
3844
3845 2009-06-19  Ian Lance Taylor  <iant@google.com>
3846
3847         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
3848         variable with an anonymous type.
3849
3850 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
3851
3852         * see.c: Remove for real.
3853
3854 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
3855
3856         * optabs.h (enum optab_index): Add new OTI_significand.
3857         (significand_optab): Define corresponding macro.
3858         * optabs.c (init_optabs): Initialize significand_optab.
3859         * genopinit.c (optabs): Implement significand_optab using
3860         significand?f2 patterns.
3861         * builtins.c (expand_builtin_mathfn): Handle
3862         BUILT_IN_SIGNIFICAND{,F,L}.
3863         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
3864         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
3865
3866         * config/i386/i386.md (significandxf2, significand<mode>2): New
3867         expanders to implement significandf, significand and significandl
3868         built-ins as inline x87 intrinsics.
3869
3870 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
3871
3872         * config/avr/avr.c (avr_override_options): Remove setting value of
3873         PARAM_INLINE_CALL_COST.
3874
3875 2009-06-18  Richard Henderson  <rth@redhat.com>
3876
3877         PR 40488
3878         * tree-pass.h (TDF_ASMNAME): New.
3879         * tree-dump.c (dump_options): Add asmname.
3880         * doc/invoke.texi: Document it.
3881
3882         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
3883         (dump_decl_name): ...here.
3884         (dump_function_name): New flags arg; mind TDF_ASMNAME.
3885         (dump_generic_node): Update dump_function_name calls.
3886         (print_call_name): New flags arg; update all dump calls.
3887         * diagnostic.h (print_call_name): Update.
3888         * gimple-pretty-print.c (dump_gimple_call): Update.
3889
3890 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
3891
3892         PR target/40470
3893         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
3894
3895 2009-06-18  Diego Novillo  <dnovillo@google.com>
3896
3897         * doc/plugins.texi: Document plugin_is_GPL_compatible.
3898         * plugin.c (str_license): Declare.
3899         (try_init_one_plugin): Assert that the symbol
3900         'plugin_is_GPL_compatible' exists.
3901
3902 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
3903
3904         * see.c: Remove.
3905         * Makefile.in (OBJS-common): Remove see.o.
3906         (see.o): Remove.
3907         * common.opt (fsee): Mark as preserved for backward compatibility.
3908         * opts.c (common_handle_option): Add OPT_fsee to the backward 
3909         compatibility section.
3910         * passes.c (init_optimization_passes, pass_see): Remove pass.
3911         * timevar.def (TV_SEE): Remove.
3912         * tree-pass.h (pass_see): Remove declaration.
3913         * doc/invoke.texi (-fsee): Remove documentation.
3914         
3915 2009-06-18  Martin Jambor  <mjambor@suse.cz>
3916
3917         * tree-sra.c: Include statistics.h
3918         (sra_stats): New variable.
3919         (sra_initialize): Clear sra_stats.
3920         (create_access_replacement): Increment sra_stats.replacements.
3921         (get_access_replacement): Do not return twice.
3922         (analyze_all_variable_accesses): Increment statistics counter by the
3923         number of scalarized aggregates.
3924         (generate_subtree_copies): Increment sra_stats.subtree_copies.
3925         (sra_modify_expr): Increment sra_stats.exprs.
3926         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
3927         (sra_modify_assign): Increment sra_stats.exprs,
3928         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
3929         (perform_intra_sra): Update statistics counters.
3930         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
3931
3932 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
3933
3934         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
3935         (arm_scalar_mode_supported_p): New function.
3936
3937 2009-06-18  Paul Brook  <paul@codesourcery.com>
3938             Sandra Loosemore  <sandra@codesourcery.com>
3939
3940         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
3941         (__extendhfsf2, __truncsfhf2): Define.
3942         * config/arm/fp16.c: New file.
3943         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
3944         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
3945
3946 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
3947
3948         * doc/extend.texi (Half-Precision): New section.
3949         * doc/invoke.texi (Option Summary): List -mfp16-format.
3950         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
3951         * config/arm/arm.opt (mfp16-format=): New.
3952         * config/arm/arm.c: Include intl.h.
3953         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
3954         (TARGET_INVALID_RETURN_TYPE): Redefine.
3955         (TARGET_PROMOTED_TYPE): Redefine.
3956         (TARGET_CONVERT_TO_TYPE): Redefine.
3957         (arm_fp16_format): Define.
3958         (all_fpus): Add entry for neon-fp16.
3959         (fp_model_for_fpu): Likewise.
3960         (struct fp16_format): Declare.
3961         (all_fp16_formats): Define.
3962         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
3963         functions.
3964         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
3965         and no ldrh.
3966         (arm_legitimate_index_p): Treat HFmode like HImode.
3967         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
3968         (coproc_secondary_reload_class): Special-case HFmode.
3969         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
3970         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
3971         (arm_init_fp16_builtins): New.
3972         (arm_init_builtins): Call it.
3973         (arm_invalid_parameter_type): New.
3974         (arm_invalid_return_type): New.
3975         (arm_promoted_type): New.
3976         (arm_convert_to_type).
3977         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
3978         format.
3979         (arm_emit_fp16_const): New function.
3980         (arm_mangle_type): Mangle __fp16 as "Dh".
3981         * config/arm/arm.h (TARGET_VFPD32): Make it know about
3982         FPUTYPE_NEON_FP16.
3983         (TARGET_NEON_FP16): New.
3984         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
3985         (enum fputype): Add FPUTYPE_NEON_FP16.
3986         (enum arm_fp16_format_type): Declare.
3987         (arm_fp16_format): Declare.
3988         (LARGEST_EXPONENT_IS_NORMAL): Define.
3989         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
3990         * config/arm/arm-modes.def (HFmode): Define.
3991         * config/arm/vfp.md: (*movhf_vfp): New.
3992         (extendhfsf2): New.
3993         (truncsfhf2): New.
3994         * config/arm/arm.md: (fpu): Add neon_fp16.
3995         (floatsihf2, floatdihf2): New.
3996         (fix_trunchfsi2, fix_trunchfdi2): New.
3997         (truncdfhf2): New.
3998         (extendhfdf2): New.
3999         (movhf): New.
4000         (*arm32_movhf): New.
4001         (*thumb1_movhf): New.
4002         (consttable_2): Add check for HFmode constants.
4003         (consttable_4): Handle HFmode constants.
4004
4005 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
4006
4007         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
4008
4009 2009-06-17  Olivier Hainque  <hainque@adacore.com>
4010
4011         * collect2.c (main): Use CONST_CAST2 to perform char ** to
4012         const char ** conversion in AIX specific section.
4013         
4014 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
4015
4016         * config/i386/i386.c (ix86_special_builtin_type): Remove
4017         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
4018         (bdesc_special_args): Updated.
4019         (ix86_init_mmx_sse_builtins): Likewise.
4020         (ix86_expand_special_args_builtin): Likewise.
4021
4022 2009-06-17  Richard Henderson  <rth@redhat.com>
4023
4024         * tree-pretty-print.c (maybe_dump_asm_name): New.
4025         (dump_decl_name): Use it.
4026         (PRINT_FUNCTION_NAME): Merge into...
4027         (dump_function_name): ... here.  Use maybe_dump_asm_name.
4028
4029 2009-06-17  Cary Coutant  <ccoutant@google.com>
4030
4031         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
4032         Change caller.
4033         * debug.c (struct gcc_debug_hooks): Change placeholder for
4034         source_line hook.
4035         (debug_nothing_int_charstar_int): Replaced by...
4036         (debug_nothing_int_charstar_int_bool): ...this.
4037         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
4038         source_line prototype.
4039         (debug_nothing_int_charstar_int): Replaced by...
4040         (debug_nothing_int_charstar_int_bool): ...this.
4041         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
4042         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
4043         Output is_stmt operand when necessary.
4044         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
4045         (notice_source_line): Add is_stmt parameter.
4046         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
4047         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
4048         Change callers.
4049         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
4050         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
4051
4052 2009-06-17  Ian Lance Taylor  <iant@google.com>
4053
4054         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
4055         Change all uses.
4056         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
4057         call uses.
4058
4059 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
4060
4061         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
4062         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
4063         tree_strip_sign_nop_conversions and
4064         tree_ssa_strip_useless_type_conversions rather than stripping
4065         the operations here.
4066         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
4067         Declare them.
4068         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
4069         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
4070         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
4071         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
4072         functions.
4073
4074 2009-06-17  Michael Eager  <eager@eagercon.com>
4075
4076         * config/rs6000/constraints.md (register_constraint "d"): New.
4077         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
4078         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
4079         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
4080         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
4081         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
4082         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
4083         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
4084         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
4085         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
4086         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
4087         __fctiwz): Same.
4088         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
4089         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
4090         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
4091         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
4092         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
4093         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
4094         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
4095         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
4096         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
4097         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
4098         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
4099         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
4100         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
4101         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
4102
4103 2009-06-16  Ian Lance Taylor  <iant@google.com>
4104
4105         * profile.c (total_num_never_executed): Don't define.
4106         (compute_branch_probabilities): Don't count or print
4107         num_never_executed.
4108         (init_branch_prob): Don't set total_num_never_executed.
4109         (end_branch_prob): Don't print total_num_never_executed.
4110
4111 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
4112
4113         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
4114
4115 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
4116
4117         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
4118         (nabstd2_fpr): Same.
4119
4120 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
4121
4122         * expr.c (expand_assignment): Change complex type check.
4123
4124 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
4125
4126         * doc/plugins.texi (Building GCC plugins): Added new section. 
4127
4128 2009-06-17  Ian Lance Taylor  <iant@google.com>
4129
4130         * c-pch.c (get_ident): Don't set size of templ array.
4131         (pch_init): Don't set size of partial_pch array.
4132
4133         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
4134         string constant to intialize an array whose size is the length of
4135         the string.
4136
4137 2009-06-17  Richard Guenther  <rguenther@suse.de>
4138
4139         PR tree-optimization/40389
4140         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
4141         to addressable types.
4142         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
4143
4144 2009-06-17  Richard Guenther  <rguenther@suse.de>
4145
4146         PR middle-end/40460
4147         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
4148         if there is no evolution of left in the loop bail out.
4149         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
4150         chrec_fold_multiply.
4151
4152 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
4153             Janis Johnson  <janis187@us.ibm.com>
4154
4155         PR target/39254
4156         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
4157         for the symbol ref of a constant that is the source of a move
4158         - nor for any other not-obvious-label-ref constants.
4159
4160 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
4161
4162         * plugin.c (position_pass): Skip newly inserted pass during list
4163         traversal to avoid repeated insertion.
4164
4165 2009-06-16  Ian Lance Taylor  <iant@google.com>
4166
4167         * vec.h (VEC_stack_alloc): Define different version if
4168         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
4169         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
4170         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
4171         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
4172
4173 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
4174
4175         * config.gcc (extra_headers): Add ia32intrin.h for x86.
4176
4177         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
4178         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
4179         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
4180         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
4181         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
4182         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
4183         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
4184         (bdesc_special_args): Add __builtin_ia32_rdtsc and
4185         __builtin_ia32_rdtscp.
4186         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
4187         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
4188         and __builtin_ia32_rorhi.
4189         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
4190         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
4191         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
4192         (ix86_expand_args_builtin): Likewise.
4193         (ix86_expand_special_args_builtin): Likewise.
4194
4195         * config/i386/i386.md (UNSPECV_RDTSCP): New.
4196         (UNSPECV_RDTSC): Likewise.
4197         (UNSPECV_RDPMC): Likewise.
4198         (*bsr): Renamed to ...
4199         (bsr): This
4200         (*bsr_rex64): Renamed to ...
4201         (bsr_rex64): This.
4202         (rdpmc): New.
4203         (*rdpmc): Likewise.
4204         (*rdpmc_rex64): Likewise.
4205         (rdtsc): Likewise.
4206         (*rdtsc): Likewise.
4207         (*rdtsc_rex64): Likewise.
4208         (rdtscp): Likewise.
4209         (*rdtscp): Likewise.
4210         (*rdtscp_rex64): Likewise.
4211
4212         * config/i386/ia32intrin.h: New.
4213
4214         * config/i386/x86intrin.h: Include <ia32intrin.h>.
4215
4216 2009-06-16  Ian Lance Taylor  <iant@google.com>
4217
4218         * ira-build.c (copy_info_to_removed_store_destinations):
4219         Initialize parent_a.
4220
4221 2009-06-16  Ian Lance Taylor  <iant@google.com>
4222
4223         * c-decl.c (grokdeclarator): Change size_varies to bool.
4224
4225 2009-06-16  Ian Lance Taylor  <iant@google.com>
4226
4227         * sel-sched.c: Make forward declarations of move_op_hooks and
4228         fur_hooks explicitly extern.
4229
4230 2009-06-16  Ian Lance Taylor  <iant@google.com>
4231
4232         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
4233         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
4234
4235 2009-06-16  Ian Lance Taylor  <iant@google.com>
4236
4237         * resource.c (mark_referenced_resources): Change
4238         include_delayed_effects parameter to bool.  Change all callers.
4239         (mark_end_of_function_resources): Likewise.
4240         * reorg.c (insn_references_resource_p): Likewise.
4241         (insn_sets_resource_p): Likewise.
4242         * resource.h (mark_referenced_resources): Update declaration.
4243         (mark_end_of_function_resources): Update declaration.
4244
4245 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
4246
4247         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
4248
4249 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
4250
4251         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
4252         GCC can bootstrap on AIX with GNU Binutils 2.20.
4253
4254 2009-06-16  Ian Lance Taylor  <iant@google.com>
4255
4256         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
4257
4258 2009-06-16  Ian Lance Taylor  <iant@google.com>
4259
4260         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
4261         inline, not extern inline.
4262         (exact_log2): Likewise.
4263         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
4264         test CLZ_HWI.
4265         (exact_log2): Likewise, but don't test CTZ_HWI.
4266
4267 2009-06-16  Ian Lance Taylor  <iant@google.com>
4268
4269         * bitmap.c (bitmap_clear): Don't declare as inline.
4270         * gimple.c (gimplify_assign): Likewise.
4271         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
4272         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
4273         (sched_scan_info): Remove duplicate definition.
4274
4275 2009-06-16  Ian Lance Taylor  <iant@google.com>
4276
4277         * c-common.c (skip_evaluation): Don't define.
4278         (c_inhibit_evaluation_warnings): Define global variable.
4279         (overflow_warning): Check c_inhibit_evaluation_warnings rather
4280         than skip_evaluation.
4281         (convert_and_check, warn_for_div_by_zero): Likewise.
4282         * c-common.h (skip_evaluation): Don't declare.
4283         (c_inhibit_evaluation_warnings): Declare.
4284         * c-parser.c (c_parser_typeof_specifier): Set
4285         c_inhibit_evaluation_warnings rather than skip_evaluation.
4286         (c_parser_conditional_expression): Likewise.
4287         (c_parser_binary_expression): Likewise.
4288         (c_parser_sizeof_expression): Likewise.
4289         (c_parser_alignof_expression): Likewise.
4290         * c-typeck.c (build_indirect_ref): Check
4291         c_inhibit_evaluation_warnings rather than skip_evaluation.
4292         (build_conditional_expr, build_binary_op): Likewise.
4293
4294 2009-06-16  Richard Guenther  <rguenther@suse.de>
4295
4296         * tree-ssa-alias.c (is_escape_site): Remove.
4297         * tree-ssa-alias.h (enum escape_type): Remove.
4298         (is_escape_site): Likewise.
4299         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
4300         via casts and asms without deferring to is_escape_site.
4301
4302 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
4303
4304         PR middle-end/40446
4305         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
4306         use gen_lowpart if op0 has complex mode.
4307
4308 2009-06-16  Richard Guenther  <rguenther@suse.de>
4309
4310         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
4311         variables add them to ESCAPED.
4312         (find_func_aliases): Do not make all indirectly stored values escaped.
4313
4314 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
4315
4316         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
4317         make_decl_one_only.
4318
4319 2009-06-16  Martin Jambor  <mjambor@suse.cz>
4320
4321         PR tree-optimization/40432
4322         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
4323         check whether we need to force gimple register operand.
4324
4325 2009-06-16  Martin Jambor  <mjambor@suse.cz>
4326
4327         PR tree-optimization/40413
4328         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
4329         build_ref_for_offset.
4330         (propagate_subacesses_accross_link): Fix a typo in a comment.
4331
4332 2009-06-16  Ira Rosen  <irar@il.ibm.com>
4333
4334         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
4335         with additional parameter.
4336         * tree-vectorizer.h (enum vect_def_type): Add new value
4337         vect_nested_cycle.
4338         (enum vect_relevant): Add comments.
4339         (vect_is_simple_reduction): Add new argument.
4340         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
4341         Detect nested cycles.
4342         (vect_is_simple_reduction): Update documentation, add an argument to
4343         distinguish inner-loop reduction from nested cycle, detect nested
4344         cycles, fix printings and indentation, don't swap operands in case
4345         of nested cycle.
4346         (get_initial_def_for_reduction): Handle subtraction.
4347         (vect_create_epilog_for_reduction): Add new argument to specify
4348         reduction variable.
4349         (vect_finalize_reduction): Handle subtraction, fix comments.
4350         (vectorizable_reduction): Handle nested cycles. In case of nested
4351         cycle keep track of the reduction variable position. Call 
4352         vect_is_simple_reduction with additional parameter. Use original
4353         statement code in reduction epilogue for nested cycle. Call
4354         vect_create_epilog_for_reduction with additional parameter.
4355         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
4356         inner-loop vectorization.
4357         (vect_recog_widen_sum_pattern): Likewise.
4358         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
4359         and reductions.
4360         (vect_mark_stmts_to_be_vectorized): Likewise.
4361         (vect_get_vec_def_for_operand): Handle nested cycles.
4362
4363 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4364
4365         * doc/invoke.texi (Debugging Options): Fix option index entries
4366         for -fdump-statistics, -frandom-seed add entries for
4367         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
4368         (FRV Options): Fix entries for -mTLS, -mtls.
4369         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
4370         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
4371         (M68hc1x Options): Fix @itemx for -mnominmax.
4372         (MCore Options): Fix entry for -mno-lsim.
4373         (MMIX Options): Fix entry for -mabi=mmixware.
4374         (PDP-11 Options): Fix entry for -mbcopy-builtin.
4375
4376 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
4377
4378         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
4379         Mention the plugin mode of gengtype.
4380         * doc/gty.texi (Source Files Containing Type Information): Likewise.
4381         * gengtype.c: Updated copyright.
4382         (plugin_files, nb_plugin_files) Added new static variables.
4383         (measure_input_list) Care about plugin_files.
4384         (write_rtx_next): Added early return in plugin mode.
4385         (create_file): Updated copyright year in generated file. Added
4386         asserts.
4387         (oprintf): Added early return if NULL outf.
4388         (get_output_file_with_visibility): Care of plugin_files.
4389         (get_output_file_name): May return null.
4390         (write_local): Added early return.
4391         (put_mangled_filename): Ditto.
4392         (finish_root_table): Added check for base_files.
4393         (write_roots): Care about null when plugins.
4394         (main): Added plugin mode.
4395
4396 2009-06-15  Ian Lance Taylor  <iant@google.com>
4397
4398         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
4399         * gcov.c (read_count_file): Add braces around variables declared
4400         before label.
4401
4402         * c.opt (Wjump-misses-init): New warning.
4403         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
4404         -Wall and -Wc++-compat if not already set.
4405         (c_common_post_options): Clear warn_jump_misses_init if it was not
4406         set.
4407         * c-decl.c (struct c_binding): Change type field to a union with
4408         new label field.  Make it the first field in the struct.  Update
4409         references to type to use u.type instead.
4410         (struct c_spot_bindings): Define.
4411         (struct c_goto_bindings): Define.
4412         (c_goto_bindings_p): Define, along with VECs.
4413         (struct c_label_vars): Define.
4414         (struct c_scope): Add has_label_bindings field.
4415         (bind_label, set_spot_bindings): New static functions.
4416         (decl_jump_unsafe, update_spot_bindings): New static functions.
4417         (update_label_decls): New static function.
4418         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
4419         Update binding u.label field to shadowed field.
4420         (c_binding_start_stmt_expr): New function.
4421         (c_binding_end_stmt_expr): New function.
4422         (pushdecl): Don't call c_begin_vm_scope.
4423         (make_label): Add defining and p_label_vars parameters.  Change
4424         all callers.
4425         (lookup_label): Correct test for whether a label has not yet been
4426         defined.  Call bind_label rather than bind.
4427         (warn_about_goto): New static function.
4428         (lookup_label_for_goto): New function.
4429         (declare_label): Call bind_label rather than bind.
4430         (check_earlier_gotos): New static function.
4431         (define_label): Don't give errors about jumping into statement
4432         expressions or scopes of variably modified types.  Call
4433         set_spot_bindings and check_earlier_gotos.  Call bind_label
4434         instead of bind.  Don't set label_context_stack_se or
4435         label_context_stack_vm.
4436         (c_get_switch_bindings): New function.
4437         (c_release_switch_bindings): New function.
4438         (c_check_switch_jump_warnings): New function.
4439         (start_function): Don't set label_context_stack_se or
4440         label_context_stack_vm.
4441         (finish_function): Likewise.
4442         * c-typeck.c (label_context_stack_se): Don't define.
4443         (label_context_stack_vm): Don't define.
4444         (c_finish_goto_label): Call lookup_label_for_goto rather than
4445         lookup_label.  Don't give errors about jumping into a statement
4446         expression or the scope of a variably modified type.  Don't set
4447         label_context_stack_se or label_context_stack_vm.
4448         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
4449         fields.  Add bindings field.
4450         (c_start_case): Don't set deleted fields.  Set bindings field.
4451         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
4452         or blocked_vm.  Call c_check_switch_jump_warnings.
4453         (c_finish_case): Don't test blocked_stmt_expr field.  Call
4454         c_release_switch_bindings.
4455         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
4456         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
4457         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
4458         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
4459         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
4460         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
4461         (c_begin_vm_scope, c_end_vm_scope): Don't define.
4462         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
4463         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
4464         (C_DECL_UNJUMPABLE_VM): Don't define.
4465         (C_DECL_UNDEFINABLE_VM): Don't define.
4466         (struct c_label_list): Don't define.
4467         (struct c_label_context_se): Don't define.
4468         (struct c_label_context_vm): Don't define.
4469         (struct c_spot_bindings): Declare.
4470         (c_bindings_start_stmt_expr): Declare.
4471         (c_bindings_end_stmt_expr): Declare.
4472         (lookup_label_for_goto): Declare.
4473         (c_get_switch_bindings, c_release_switch_bindings): Declare.
4474         (c_check_switch_jump_warnings): Declare.
4475         (label_context_stack_se, label_context_stack_vm): Don't declare.
4476         (c_finish_goto_label): Update declaration.
4477         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
4478         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
4479         (Warning Options): Document -Wjump-misses-init.
4480
4481 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
4482
4483         * tree-object-size.c (addr_object_size): Fix a pasto in the last
4484         change.
4485
4486 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
4487
4488         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
4489
4490 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
4491
4492         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
4493
4494 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
4495
4496         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
4497
4498 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
4499
4500         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
4501         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
4502         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
4503         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
4504         * dwarf2asm.c (dw2_force_const_mem): Update call to
4505         make_decl_one_only.
4506         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
4507         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
4508         * langhooks.c (lhd_comdat_group): Remove.
4509         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
4510         * tree.h (DECL_COMDAT_GROUP): New.
4511         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
4512         (tree_decl_with_vis): Add comdat_group. Remove one_only.
4513         (make_decl_one_only): Change signature.
4514         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
4515         make_decl_one_only.
4516         (make_decl_one_only): Change signature.
4517         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
4518
4519 2009-06-15  Richard Guenther  <rguenther@suse.de>
4520
4521         PR middle-end/40439
4522         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
4523
4524 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4525
4526         * tree-ssa-math-opts.c: Remove extra divide.
4527
4528 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4529
4530         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
4531
4532 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4533
4534         * passes.c: Add bswap pass.
4535         * tree-pass.h: Add pass_optimize_bswap declaration.
4536         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
4537         Include rtl.h, expr.h and optabs.h for optab_handler check.
4538         (struct symbolic_number, pass_optimize_bswap): New definition.
4539         (do_shift_rotate, verify_symbolic_number_p): New functions.
4540         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
4541         (gate_optimize_bswap): New function.
4542         * tree.c (widest_int_cst_value): New function.
4543         * tree.h (widest_int_cst_value): Prototype added.
4544
4545 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
4546
4547         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
4548         REG_EQUAL/REG_EQUIV notes.
4549
4550 2009-06-14  Richard Guenther  <rguenther@suse.de>
4551
4552         PR middle-end/40389
4553         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
4554         has its address taken if NRV was applied and it is addressable.
4555         * tree-ssa-structalias.c (get_constraint_for_address_of): New
4556         function split out from ...
4557         (get_constraint_for_1): ... here.
4558         (handle_rhs_call): Use it to mark the return slot escaped if
4559         it is addressable and NRV was applied.
4560
4561 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
4562
4563         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
4564         Change first argument type to location_t.
4565         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
4566         Do not set input_location.
4567         Use loc instead of input_location throughout.
4568
4569 2009-06-13  Richard Guenther  <rguenther@suse.de>
4570
4571         PR tree-optimization/40421
4572         * tree-predcom.c (should_unroll_loop_p): Remove.
4573         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
4574
4575 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
4576
4577         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4578         Add location argument.
4579
4580 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
4581
4582         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
4583         build_decl.
4584         * config/s390/s390.c (s390_build_builtin_va_list): Same.
4585         (s390_gimplify_va_arg): Pass location to create_artificial_label.
4586         * config/spu/spu-protos.h: Add location to
4587         spu_resolve_overloaded_builtin.
4588         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
4589         spu_build_builtin_va_list.
4590         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
4591         argument.  Pass location to build_function_call_vec.
4592         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
4593         build_decl.
4594         (emit_fpu_switch): Same.
4595         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
4596         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
4597         to build_decl and create_artificial_label.
4598         (xtensa_gimplify_va_arg_expr): Same.
4599         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
4600         (xstormy16_gimplify_va_arg_expr): Same.
4601         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
4602         * config/arm/arm.c (arm_build_builtin_va_list): Same.
4603         * config/mips/mips.c (mips_build_builtin_va_list): Same.
4604         (mips16_build_function_stub): Same.
4605         (mips16_build_call_stub): Same.
4606
4607 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
4608
4609         PR target/40327
4610         * arm/constraints.md (Pa, Pb): New constraints.
4611         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
4612         split pattern to deal with them.
4613
4614 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
4615
4616         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
4617         fix index entry for -Xpreprocessor.
4618
4619 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
4620
4621         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4622         Add location argument to build_decl call.
4623         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
4624         (rs6000_init_builtins): Same.
4625         (spe_init_builtins): Same.
4626         (rs6000_gimplify_va_arg): Add location argument to
4627         create_artificial_label call.
4628
4629 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
4630
4631         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
4632         * combine-stack-adj.c (pass_stack_adjustments): Use it.
4633         * Makefile.in: Fix GGC dependency for gcse.o.
4634
4635 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
4636
4637         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
4638         * gimple-pretty-print.c (dump_gimple_stmt): Same.
4639         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
4640         created.
4641         * c-parser.c (c_parser_binary_expression): Use current column while
4642         building binary operations.
4643         * common.opt (fshow-column): Enable by default.
4644         * tree-vrp.c (check_array_ref): Use warning_at.
4645         (check_array_bounds): Use location from call back if expr has no
4646         location.
4647         * tree.h: Add location argument to maybe_fold_*.
4648         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
4649         (maybe_fold_offset_to_array_ref): Add location argument and use it.
4650         (maybe_fold_offset_to_component_ref): Same.
4651         (maybe_fold_offset_to_reference): Same.
4652         (maybe_fold_offset_to_address): Same.
4653         (maybe_fold_stmt_indirect): Same.
4654         (maybe_fold_stmt_addition): Same.
4655         (fold_stmt_r): Pass location to maybe_fold_*.
4656         (fold_gimple_assign): Same.
4657         * c-tree.h: Add location argument to finish_decl,
4658         default_function_array_conversion, store_init_value.
4659         * c-decl.c (define_label): Use error_at.
4660         (c_make_fname_decl): Pass location to finish_decl.
4661         (finish_decl): New location argument.
4662         (build_compound_literal): Pass location to store_init_value.
4663         (grokdeclarator): Pass location to finish_decl.
4664         (grokfield): Same.
4665         * c-typeck.c (array_to_pointer_conversion): New location argument.
4666         (function_to_pointer_conversion): Same.
4667         (default_function_array_conversion): Same.
4668         (parser_build_unary_op): Pass location to overflow_warning.
4669         (parser_build_binary_op): Same.  Use warning_at.
4670         (build_unary_op): Pass location to array_to_pointer_conversion.
4671         (build_c_cast): Pass location to digest_init.
4672         (build_modify_expr): New location argument.
4673         (convert_for_assignment): Same.
4674         (store_init_value): Same.
4675         (digest_init): Same.
4676         (output_init_element): Pass location to digest_init and
4677         array_to_pointer_conversion.
4678         (c_finish_return): Pass location to convert_for_assignment.
4679         * gimplify.c (gimplify_conversion): Pass location to
4680         maybe_fold_offset_to_address.
4681         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
4682         to maybe_fold_stmt_addition.
4683         * c-omp.c (c_finish_omp_atomic): Pass new location to
4684         build_modify_expr.
4685         (c_finish_omp_for): Same.
4686         * c-common.c (overflow_warning): New argument.
4687         * c-common.h: New argument to build_modify_expr, overflow_warning.
4688         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
4689         finish_decl.
4690         (c_parser_initializer): Pass location to
4691         default_function_array_conversion.
4692         (c_parser_initelt): Same.
4693         (c_parser_initval): Same.
4694         (c_parser_asm_operands): Same.
4695         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
4696         (c_parser_conditional_expression): Same.
4697         (c_parser_binary_expression): Add location info to stack.  Use it.
4698         (c_parser_unary_expression): Pass location to
4699         default_function_array_conversion, parser_build_unary_op,
4700         build_indirect_ref, c_parser_postfix_expression_after_primary.
4701         (c_parser_postfix_expression_after_primary): New location argument.
4702         Use it.
4703         (c_parser_expression_conv): Pass location to
4704         default_function_array_conversion.
4705         (c_parser_expr_list): Same.
4706         (c_parser_omp_atomic): Same.
4707         (c_parser_omp_for_loop): Same.
4708         * c-tree.h: (struct c_declarator): Add comment to id_loc.
4709         (build_array_declarator): New argument.
4710         * c-decl.c (build_array_declarator): Add location argument.
4711         (grokdeclarator): Set id_loc for cdk_array.
4712         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
4713         build_array_declarator.
4714         * tree.c (build_omp_clause): Add location argument.
4715         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
4716         (OMP_CLAUSE_LOCATION): New macro.
4717         (struct tree_omp_clause): Add location field.
4718         (build_omp_clause): Add argument.
4719         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
4720         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
4721         build_omp_clause.
4722         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
4723         (cp_parser_omp_clause_collapse): Same.
4724         (cp_parser_omp_clause_default): Same.
4725         (cp_parser_omp_clause_if): Same.
4726         (cp_parser_omp_clause_nowait): Same.
4727         (cp_parser_omp_clause_num_threads): Same.
4728         (cp_parser_omp_clause_ordered): Same.
4729         (cp_parser_omp_clause_schedule): Same.
4730         (cp_parser_omp_clause_untied): Same.
4731         (cp_parser_omp_for_loop): Same.
4732         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
4733         * c-tree.h (c_start_case): Add location argument.
4734         (c_process_expr_stmt): Same.
4735         (c_finish_goto_*): Same.
4736         * tree-parloops.c (initialize_reductions): Pass location to
4737         build_omp_clause.
4738         (create_parallel_loop): Same.
4739         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
4740         (gfc_trans_omp_reduction_list): Same.
4741         (gfc_trans_omp_clauses): Same.
4742         (gfc_trans_omp_do): Same.
4743         * c-typeck.c (c_finish_goto_label): Same.
4744         (c_finish_goto_ptr): New location argument.
4745         (c_start_case): Same.
4746         (emit_side_effect_warnings): Same.
4747         (c_process_expr_stmt): Same.
4748         (c_finish_stmt_expr): Same.
4749         (c_finish_omp_clauses): Use error_at instead of error.
4750         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
4751         build_omp_clause.
4752         * c-omp.c (c_split_parallel_clauses): New location argument.
4753         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
4754         to build_omp_clause.
4755         (convert_local_reference_stmt): Same.
4756         (convert_gimple_call): Same.
4757         * c-common.h (c_split_parallel_clauses): New argument.
4758         * c-parser.c (c_parser_statement_after_labels): Pass location to
4759         c_finish_goto_label.
4760         (c_parser_switch_statement): Pass location to c_start_case.
4761         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
4762         and c_process_expr_stmt.
4763         (c_parser_omp_variable_list): Add location argument.
4764         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
4765         (c_parser_omp_clause_default): Same.
4766         (c_parser_omp_clause_if): Same.
4767         (c_parser_omp_clause_num_threads): Same.
4768         (-c_parser_omp_clause_ordered): Same.
4769         (c_parser_omp_clause_reduction): Pass location to
4770         c_parser_omp_variable_list.
4771         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
4772         (c_parser_omp_clause_untied): Same.
4773         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
4774         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
4775
4776         * c-tree.h (check_for_loop_decls, undeclared_variable,
4777         build_component_ref, build_array_ref, build_external_ref,
4778         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
4779         build_conditional_expr, build_compound_expr, c_cast_expr,
4780         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
4781         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
4782         argument.
4783         * c-semantics.c (build_stmt): Same.
4784         (build_case_label): Same.
4785         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
4786         (undeclared_variable): New argument.
4787         (make_label): Same.
4788         (lookup_label): Pass location on down.
4789         (define_label): Same.
4790         (finish_decl): Same.
4791         (build_compound_literal): Same.
4792         (finish_struct): Same.
4793         (finish_function): Do not set location here.
4794         (check_for_loop_decls): New argument.
4795         * tree.c (save_expr): Set location.
4796         (build_empty_stmt): New argument.
4797         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
4798         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
4799         * builtins.c (gimplify_va_arg_expr): Use locations.
4800         (expand_builtin_sync_operation): Same.
4801         * c-typeck.c (build_component_ref): New argument.
4802         (build_array_ref): Same.
4803         (build_external_ref): Same.
4804         (c_expr_sizeof_expr): Same.
4805         (c_expr_sizeof_type): Same.
4806         (parser_build_unary_op): Same.
4807         (build_conditional_expr): Same.
4808         (build_compound_expr): Pass location on down.
4809         (build_compound_expr): New argument.
4810         (build_c_cast): Same.
4811         (c_cast_expr): Same.
4812         (build_asm_expr): Same.
4813         (c_finish_return): Same.
4814         (c_process_expr_stmt): Pass location on down.
4815         (c_finish_stmt_expr): New argument.
4816         (push_clenaup): Same.
4817         (c_finish_omp_parallel): Same.
4818         (c_finish_omp_task): Same.
4819         * gimplify.c (gimplify_call_expr): Pass location on down.
4820         * c-omp.c (c_finish_omp_master): New argument.
4821         (c_finish_omp_critical): Same.
4822         (c_finish_omp_ordered): Same.
4823         (c_finish_omp_barrier): Same.
4824         (-c_finish_omp_taskwait): Same.
4825         (c_finish_omp_atomic): Same.
4826         (c_finish_omp_flush): Same.
4827         * tree-inline.c (copy_tree_body_r): Pass location on down.
4828         (inline_forbidden_p): Remove use of input_location.
4829         * c-gimplify.c (c_build_bind_expr): New argument.
4830         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
4831         (c_sizeof_or_alignof_type): New argument.
4832         (c_alignof_expr): Same.
4833         (build_va_arg): Same.
4834         (c_add_case_label): Same.
4835         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
4836         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
4837         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
4838         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
4839         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
4840         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
4841         New argument.
4842         * stub-objc.c (objc_build_selector_expr): Same.
4843         (objc_build_throw_stmt): Same.
4844         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
4845         (c_parser_initelt): Same.
4846         (c_parser_compound_statement): Same.
4847         (c_parser_compound_statement_nostart): Same.
4848         (c_parser_label): Same.
4849         (c_parser_statement_after_labels): Same.
4850         (c_parser_if_body): Same.
4851         (c_parser_else_body): Same.
4852         (c_parser_if_statement): Same.
4853         (c_parser_switch_statement): Same.
4854         (c_parser_while_statement): Same.
4855         (c_parser_do_statement): Same.
4856         (c_parser_for_statement): Same.
4857         (c_parser_asm_statement): Same.
4858         (c_parser_conditional_expression): Same.
4859         (c_parser_binary_expression): Same.
4860         (c_parser_cast_expression): Same.
4861         (c_parser_unary_expression): Same.
4862         (c_parser_sizeof_expression): Same.
4863         (c_parser_alignof_expression): Same.
4864         (c_parser_postfix_expression): Same.
4865         (c_parser_expression): Same.
4866         (c_parser_objc_receiver): Same.
4867         (c_parser_omp_variable_list): Same.
4868         (c_parser_omp_structured_block): Same.
4869         (c_parser_omp_atomic): New argument.
4870         (c_parser_omp_barrier): Same.
4871         (c_parser_omp_critical): Same.
4872         (c_parser_omp_flush): Pass location on down.
4873         (c_parser_omp_for_loop): New argument.
4874         (c_parser_omp_for): Same.
4875         (c_parser_omp_master): Same.
4876         (c_parser_omp_ordered): Same.
4877         (c_parser_omp_sections_scope): Same.
4878         (c_parser_omp_sections): Same.
4879         (c_parser_omp_parallel): Same.
4880         (c_parser_omp_single): Same.
4881         (c_parser_omp_task): Same.
4882         (c_parser_omp_taskwait): Pass location on down.
4883         (c_parser_omp_construct): Same.
4884         (c_parser_omp_threadprivate): Same.
4885         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
4886         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
4887         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
4888         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
4889         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
4890         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
4891         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
4892         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
4893         config/i386/i386.c, stmt.c:
4894         Add location argument to the following function definitions and/or
4895         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
4896         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
4897         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
4898         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
4899         do_case, c_finish_bc_stmt, build_compound_literal,
4900         build_function_call.
4901         * c-decl.c (build_compound_literal): Add location argument.
4902         Make all diagnostic calls use location.
4903         (start_struct): Same.
4904         (finish_struct): Same.
4905         (start_enum): Same.
4906         (build_enumerator): Same.
4907         (start_function): Same.
4908         (grokdeclarator): Make all diagnostic calls use location.
4909         (store_parm_decls_oldstyle): Same.
4910         * c-typeck.c (build_function_call): Add location argument.
4911         Make all diagnostic calls use location.
4912         (do_case): Same.
4913         (c_finish_bc_stmt): Same.
4914         * tree-nested.c (get_trampoline_type): Add argument.
4915         Pass location to build_decl.
4916         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
4917         * rtl.h (RTL_LOCATION): New.
4918         * c-common.c (c_add_case_label): Add location argument.
4919         Make all diagnostic calls use location.
4920         * c-common.h: Add location argument to make_fname_decl, do_case,
4921         c_add_case_label, build_function_call, resolve_overloaded_builtin.
4922         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
4923         Set it appropriately for every case.  Pass enum_loc to start_enum
4924         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
4925         parser_xref_tag.
4926         (c_parser_struct_or_union_specifier): Save location.  Use it for
4927         start_struct, finish_struct, and parser_xref_tag.
4928
4929 2009-06-12  Ian Lance Taylor  <iant@google.com>
4930
4931         * fold-const.c (fold_unary): Rename local variable and to and_expr.
4932
4933         * c-opts.c (c_common_handle_option): For -Wc++-compat set
4934         cpp_opts->warn_cxx_operator_names.
4935
4936 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4937
4938         PR tree-opt/38865
4939         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
4940         is returns NULL and OP is a VCE, look through the VCE.
4941
4942 2009-06-12  Ian Lance Taylor  <iant@google.com>
4943
4944         PR bootstrap/40430
4945         * collect2.c (main): Use CONST_CAST2 in code inside #if
4946         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
4947
4948 2009-06-12  Joey Ye  <joey.ye@intel.com>
4949
4950         PR middle-end/39146
4951         * cfgexpand.c (get_decl_align_unit): Update
4952         max_used_stack_slot_alignment with align instead of
4953         stack_alignment_needed.
4954
4955         * function.c (assign_stack_local_1): Update
4956         max_used_stack_slot_alignment with alignment_in_bits instead
4957         of stack_alignment_needed.
4958         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
4959         here.
4960
4961 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
4962
4963         * dwarf2out.c (last_var_location_insn): New variable.
4964         (dwarf2out_end_epilogue): Clear last_var_location_insn.
4965         (dwarf2out_var_location): Don't record anything after last real
4966         insn.  Only change labels if there were any real instructions
4967         in between last note and this one, or if changed sections.
4968
4969 2009-06-11  Richard Henderson  <rth@redhat.com>
4970
4971         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
4972         note when storing the frame pointer in a register.
4973         (FRP): Don't redefine to nothing for epilogue.
4974         (alpha_expand_epilogue): Mark register and sp restores.
4975         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
4976
4977         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
4978         when gen_lowpart is needed.
4979
4980 2009-06-11  Richard Henderson  <rth@redhat.com>
4981
4982         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
4983
4984         * dwarf2out.c (need_data_align_sf_opcode): New.
4985         (div_data_align): Move earlier.
4986         (def_cfa_1, reg_save): Use it.
4987
4988 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
4989
4990         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
4991         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
4992         (ix86_handle_option): Handle OPT_mcrc32.
4993         (ix86_target_string): Add -mcrc32.
4994         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
4995
4996         * config/i386/i386.h (TARGET_CRC32): New.
4997
4998         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
4999         (sse4_2_crc32di): Likewise.
5000
5001         * config/i386/i386.opt (mcrc32): New.
5002
5003         * doc/invoke.texi: Document -mcrc32.
5004
5005 2009-06-11  Richard Henderson  <rth@redhat.com>
5006
5007         * common.opt (gdwarf-): Accept a version number.
5008         * doc/invoke.texi (gdwarf-): Update docs.
5009         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
5010         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
5011         version level, and record it.
5012
5013         * dwarf2.h (DW_CIE_VERSION): Remove.
5014         * dwarf2out.c (DWARF_VERSION): Remove.
5015         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
5016         (output_call_frame_info): Use CIE version 3 for dwarf3,
5017         or if the return register column is out of range for version 1.
5018         (dwarf_stack_op_name): Add all dwarf3 values.
5019         (DEBUG_PUBTYPES_SECTION): New.
5020         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
5021         encoding change for dwarf3.
5022         (output_die) [dw_val_class_die_ref]: Likewise.
5023         (output_compilation_unit_header): Emit correct version for dwarf3.
5024         (output_line_info): Likewise.
5025         (output_pubnames): Update for DWARF_VERSION removal.
5026         (output_aranges): Likewise.
5027         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
5028         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
5029         (dwarf2out_finish): Likewise.
5030
5031 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
5032
5033         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
5034         in r148403.
5035
5036 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
5037
5038         PR c/39252
5039         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
5040         * builtins.c (expand_builtin_unreachable): New function.
5041         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
5042         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
5043         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
5044         successors.
5045         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
5046         searching for missing barriers.
5047
5048 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5049
5050         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
5051         when -fprofile-generate* was passed.
5052         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
5053
5054 2009-06-11  Anthony Green  <green@moxielogic.com>
5055
5056         * config/moxie/moxie.md: Define length attribute for all instructions.
5057         (rCC): Define.
5058         (*b<cond:code>): Support limited branch ranges for new PC-relative
5059         branch instructions.
5060         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
5061
5062 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
5063
5064         * config/i386/i386.c (min_insn_size): Use get_attr_length
5065         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
5066         For __asm return 0.
5067
5068         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
5069         instead of emit_insn_before.
5070
5071 2009-06-10  Ian Lance Taylor  <iant@google.com>
5072
5073         PR bootstrap/40408
5074         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
5075         GIMPLE_SWITCH.
5076
5077 2009-06-10  Revital Eres  <eres@il.ibm.com>
5078
5079         * passes.c (init_optimization_passes): Reschedule
5080         predictive-commoning pass before complete unroll pass.
5081
5082 2009-06-10  Martin Jambor  <mjambor@suse.cz>
5083
5084         * cgraph.c (cgraph_node_can_be_local_p): New function.
5085         (cgraph_make_node_local): New function.
5086         * cgraph.h (cgraph_node_can_be_local_p): Declare.
5087         (cgraph_make_node_local): Declare.
5088
5089 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
5090
5091         * tree.h (tree_base): Add packed_flag and user_align fields.
5092         Decrease size of spare field.
5093         (TYPE_USER_ALIGN): Use user_align from tree_base.
5094         (DECL_USER_ALIGN): Likewise.
5095         (TYPE_PACKED): Use packed_flag from tree_base.
5096         (DECL_PACKED): Likewise.
5097         (tree_type): Delete packed_flag and user_align fields.  Widen
5098         precision field.  Widen mode field and shuffle fields to align
5099         mode on an 8-bit boundary.
5100         (tree_decl_common): Delete decl_flag_1 and user_align fields.
5101         Renumber decl_flag_* fields.  Fix comments.  Widen
5102         decl_common_unused field.
5103         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
5104         (DECL_EXTERNAL): Likewise.
5105         (DECL_BIT_FIELD): Likewise.
5106         (DECL_NONADDRESSABLE_P): Likewise.
5107         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
5108         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
5109
5110 2009-06-10  Ian Lance Taylor  <iant@google.com>
5111
5112         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
5113         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
5114         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
5115         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
5116         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
5117         DEF_VEC_ALLOC_FUNC_P.
5118         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
5119         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
5120         DEF_VEC_ALLOC_FUNC_O.
5121         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
5122         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
5123         DEF_VEC_ALLOC_FUNC_I.
5124         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
5125         (vec_stack_p_reserve_exact_1): Declare.
5126         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
5127         (vec_stack_free): Declare.
5128         (VEC_stack_alloc): Define.
5129         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
5130         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
5131         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
5132         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
5133         for void_p.
5134         (stack_vecs): New static variable.
5135         (vec_stack_p_reserve_exact_1): New function.
5136         (vec_stack_o_reserve_1): New static function.
5137         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
5138         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
5139         (vec_stack_free): New function.
5140         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
5141         (VEC_df_ref_stack_alloc): Define.
5142         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
5143         DEF_VEC_ALLOC_P_STACK.
5144         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
5145         (struct df_collection_rec): Change _vec fields to VEC.  Remove
5146         _use fields.
5147         (df_free_collection_rec): Adjust for new fields.
5148         (df_insn_rescan): Use new df_collection_rec fields.
5149         (df_notes_rescan, df_canonize_collection_rec): Likewise.
5150         (df_ref_create_structure, df_ref_record): Likewise.
5151         (df_get_conditional_uses, df_get_call_refs): Likewise.
5152         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
5153         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
5154         (df_record_exit_block_uses, df_bb_verify): Likewise.
5155         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
5156         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
5157         Remove count parameter.  Change return type to void.  Change all
5158         callers.
5159         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
5160         Remove count parameter.  Change return type to void.  Change all
5161         callers.
5162         (df_install_refs): Change old_vec parameter to VEC.  Remove count
5163         parameter.  Change all callers.
5164         (df_install_mws): Change old_vec parameter to VEC.  Remove count
5165         parameter.  Change all callers.
5166         (df_refs_verify): Change new_rec parameter to VEC.  Change call
5167         callers.
5168         (df_mws_verify): Likewise.
5169
5170 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
5171
5172         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
5173
5174 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
5175
5176         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
5177
5178 2009-06-10  Anthony Green  <green@moxielogic.com>
5179
5180         * config/moxie/crti.asm: New file.
5181         * config/moxie/crtn.asm: New file.
5182         * config/moxie/moxie.c: New file.
5183         * config/moxie/moxie.h: New file.
5184         * config/moxie/sfp-machine.h: New file.
5185         * config/moxie/moxie-protos.h: New file.
5186         * config/moxie/t-moxie: Created.
5187         * config/moxie/t-moxie-softfp: Created.
5188         * config/moxie/moxie.md: Created.
5189         * config/moxie/constraints.md: Created.
5190         * config.gcc: Add moxie support.
5191         * doc/md.texi (Machine Constraints): Add moxie constraints.
5192         * doc/contrib.texi (Contributors): Mention moxie port.
5193         * doc/install.texi (Specific): Mention the moxie port.
5194
5195 2009-06-09  Ian Lance Taylor  <iant@google.com>
5196
5197         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
5198         compiling with C++.
5199         * optabs.c (optab_table): Only use designated initializers if
5200         HAVE_DESIGNATED_INITIALIZERS is defined.
5201         (convert_optab_table): Likewise.
5202         (init_optabs): Always call init_insn_codes if
5203         HAVE_DESIGNATED_INITIALIZERS is not defined.
5204
5205 2009-06-09  Ian Lance Taylor  <iant@google.com>
5206
5207         * targhooks.c (default_builtin_vectorized_function): Change fn
5208         parameter to unsigned int.
5209         (default_builtin_vectorized_conversion): Change code parameter to
5210         unsigned int.
5211         (default_builtin_reciprocal): Change fn parameter to unsigned int.
5212         * targhooks.h: Update declarations.
5213         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
5214         parameter to unsigned int.
5215
5216         * c-typeck.c (comptypes_check_enum_int): New static function.
5217         (comptypes_internal): Add enum_and_int_p parameter.  Change all
5218         callers.
5219         (comp_target_types): Add location parameter.  Change all callers.
5220         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
5221         Change all callers.
5222         (function_types_compatible_p, type_lists_compatible_p): Likewise.
5223         (build_conditional_expr): Add colon_loc parameter.  Change all
5224         callers.
5225         (convert_for_assignment): Add location parameter.  Change all callers.
5226         * c-parser.c (c_parser_conditional_expression): Pass location of
5227         colon to build_conditional_expr.
5228         * c-tree.h (build_conditional_expr): Update declaration.
5229
5230 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
5231
5232         * graphite.c: Revert previous patch.
5233
5234 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
5235
5236         PR bootstrap/40103
5237         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
5238
5239 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
5240
5241         * tree-ssa-loop-prefetch.c
5242         (loop_prefetch_arrays): Fixed a portability problem in printf format
5243         string.
5244
5245 2009-06-09  Martin Jambor  <mjambor@suse.cz>
5246
5247         PR tree-optimization/40351
5248         * tree-sra.c (propagate_subacesses_accross_link): Check that a
5249         refrence to a potential artifical subaccess can be constructed.
5250
5251 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
5252
5253         * config/sh/sh-protos.h (sh_optimization_options): Declare.
5254         (sh_override_options): Likewise.
5255         * config/sh/sh.c: Include params.h.
5256         (sh_optimization_options): New.
5257         (sh_override_options): Likewise.
5258         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
5259         (OVERRIDE_OPTIONS): Use sh_override_options.
5260
5261 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
5262
5263         * dwarf2out.c (emit_cfa_remember): New variable.
5264         (add_fde_cfi): If emit_cfa_remember, recurse to add
5265         DW_CFA_remember_state first.
5266         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
5267         instead just set emit_cfa_remember.
5268
5269 2009-06-08  Jan Hubicka  <jh@suse.cz>
5270
5271         PR debug/40126
5272         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
5273
5274 2009-06-08  Jan Hubicka  <jh@suse.cz>
5275
5276         PR middle-end/39834
5277         * cgraphunit.c (save_inline_function_body): Do not copy transform
5278         hooks for saved inline bodies.
5279         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
5280         for given function.
5281
5282 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
5283
5284         * jump.c (returnjump_p): Handle delayed branches.  Add missing
5285         function comment.
5286
5287 2009-06-08  Jan Hubicka  <jh@suse.cz>
5288
5289         PR middle-end/40102
5290         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
5291         original node might've been modified.
5292         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
5293
5294 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
5295
5296         * tree-object-size.c (addr_object_size): Add OSI argument.
5297         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
5298         (compute_builtin_object_size, expr_object_size): Adjust callers.
5299         (plus_stmt_object_size): Call addr_object_size instead of
5300         compute_builtin_object_size.
5301
5302 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
5303             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5304         
5305         * tree-ssa-loop-prefetch.c 
5306         (gather_memory_references): Introduced a counter for the number of 
5307         memory references.
5308         (anything_to_prefetch_p): Introduced a counter for the number of 
5309         prefetches.
5310         (is_loop_prefetching_profitable): New function with a cost model 
5311         for prefetching.
5312         (loop_prefetch_arrays): Use the new cost model to determine if 
5313         prefetching is profitable.
5314         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
5315         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
5316         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
5317         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
5318         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
5319         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
5320         
5321 2009-06-08  Michael Matz  <matz@suse.de>
5322
5323         PR debug/40012
5324         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
5325         partitions use the same.
5326         (expand_one_var): Deal with DECL_RTL sometimes begin set also
5327         for basevars of SSA_NAMEs.
5328         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
5329         to not expand them twice.
5330         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
5331         multiple places.
5332
5333 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
5334
5335         * common.opt (fcompare-debug=, fcompare-debug-second): New.
5336         (fdump-final-insns=, gtoggle): New.
5337         * doc/invoke.texi: Document them.
5338         * final.c (rest_of_clean_state): Dump final insn stream.
5339         * gcc.c (invoke_as): Hook in -fcompare-debug.
5340         (static_spec_functions): Add compare-debug-dump-opt,
5341         compare-debug-self-opt and compare-debug-auxbase-opt.
5342         (compare_debug, compare_debug_second, compare_debug_opt): New.
5343         (switches_debug_check, n_switches_debug_check): New.
5344         (debug_auxbase_opt, debug_check_temp_file): New.
5345         (process_command): Handle -fno-compare-debug, -fcompare-debug and
5346         -fcompare-debug=*.
5347         (do_self_spec): Handle arguments after switches.
5348         (do_spec_1): Add .gk extension to temp file basenames for compare.
5349         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
5350         (cc1_options): Use it instead of normal auxbase computation for
5351         the second compare-debug compilation.
5352         (compare_files): New.
5353         (main): Set up and implement compare debug mode.
5354         (compare_debug_dump_opt_spec_function): New.
5355         (compare_debug_self_opt_spec_function): New.
5356         (compare_debug_auxbase_opt_spec_function): New.
5357         * toplev.c (process_options): Handle flag_gtoggle,
5358         flag_dump_final_insns.
5359         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
5360         during -fcompare-debug-second compilation.
5361
5362 2009-06-07  Ian Lance Taylor  <iant@google.com>
5363
5364         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
5365         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
5366
5367         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
5368         with no default node.  Change warning with %H to warning_at.
5369         Don't clear warn_switch around case checking.
5370         * doc/invoke.texi (Warning Options): Clarify distinction between
5371         -Wswitch and -Wswitch-enum.
5372
5373 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5374
5375         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
5376
5377 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5378
5379         * gbl-ctors.h: Add header guard.
5380
5381 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5382
5383         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
5384         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
5385         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
5386         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
5387         prototypes for removed functions.
5388         (expressions_equal_p): Move to ...
5389         * tree-ssa-sccvn.h: ... here and ...
5390         * matrix-reorg.c: ... adjust includes.
5391
5392 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5393
5394         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
5395
5396 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5397
5398         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
5399         (finish_function): Remove erroneous whitespace.
5400
5401 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5402
5403         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
5404         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
5405
5406 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5407
5408         * errors.c (internal_error): Commentary typo fix.
5409         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
5410         * tree-ssa-pre.c: Ditto.
5411
5412 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5413
5414         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
5415         them is supposed to hold actual statements.
5416
5417 2009-06-06  Ian Lance Taylor  <iant@google.com>
5418
5419         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
5420         empty statements can now have attributes.
5421
5422 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
5423
5424         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
5425         * config/mips/mips.md: Ditto.
5426
5427 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
5428
5429         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
5430         _RELOCATABLE.
5431         (__eabi_uconvert): Likewise.
5432
5433 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
5434
5435         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
5436         CFI_* definitions with IN_GCC.
5437
5438 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
5439
5440         * xcoffout.h (xcoffout_source_line): Update prototype.
5441
5442 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5443
5444         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
5445         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
5446
5447 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
5448
5449         PR middle-end/40340
5450         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
5451         inlined_function_outer_scope_p blocks for artificial inlines
5452         even at -g0/-g1.
5453         * tree.c (tree_nonartificial_location): Rewrite using
5454         block_nonartificial_location.
5455
5456 2009-06-05  Revital Eres  <eres@il.ibm.com>
5457             Leehod Baruch  <leehod@il.ibm.com>
5458
5459         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
5460         (expand_expr_real_1): Remove comment.
5461         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
5462         Vectorize misaligned access when the target supports it.
5463         (vect_supportable_dr_alignment): Check for unaligned access support.
5464         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
5465         and remove asset.
5466
5467 2009-06-05  Julian Brown  <julian@codesourcery.com>
5468
5469         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
5470         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
5471
5472 2009-06-05  Richard Guenther  <rguenther@suse.de>
5473
5474         PR bootstrap/40350
5475         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
5476         as possibly unused.
5477
5478 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
5479
5480         * config/s390/s390.c (global_not_special_regno_p): New static inline.
5481         (save_gprs): Don't tell unwinder when a global register is saved.
5482         (s390_emit_epilogue): Emit needed epilogue unwind info.
5483
5484 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
5485
5486         * dwarf2out.c (deferred_asm_name): New.
5487         (add_name_and_src_coords_attributes): Defer creation of
5488         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
5489         computed yet.
5490         (move_linkage_attr): New.
5491         (dwarf2out_finish): Revisit deferrals and emit attributes at the
5492         right place.
5493
5494 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
5495
5496         * tree-nested.c (finalize_nesting_tree_1): Declare the
5497         frame_decl in the binding tree.
5498
5499 2009-06-04  Cary Coutant  <ccoutant@google.com>
5500
5501         * basic-block.h (struct basic_block_def): Add discriminator field.
5502         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
5503         callers.
5504         * debug.c (do_nothing_debug_hooks): Add additional entry.
5505         (debug_nothing_int_charstar_int): New function.
5506         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
5507         (debug_nothing_int_charstar_int): New declaration.
5508         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
5509         discriminator value in .loc directive.
5510         * final.c (last_discriminator): New variable.
5511         (discriminator): New variable.
5512         (final_start_function): Initialize above variables, pass current
5513         discriminator to debug hook.
5514         (notice_source_line): Check for discriminator change.
5515         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
5516         * sdbout.c (sdbout_source_line): New parameter.
5517         * tree-cfg.c (struct locus_discrim_map): New structure type.
5518         (discriminator_per_locus): New hash table.
5519         (build_gimple_cfg): Allocate and free discriminator hash table.
5520         (make_edges): Call assign_discriminator.
5521         (locus_map_hash): New function.
5522         (locus_map_eq): New function.
5523         (next_discriminator_for_locus): New function.
5524         (same_line_p): New function.
5525         (assign_discriminator): New function.
5526         (make_cond_expr_edges): Call assign_discriminator.
5527         (make_gimple_switch_edges): Likewise.
5528         (first_non_label_stmt): New function.
5529         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
5530         all callers.
5531         * xcoffout.c (xcoffout_source_line): Add new parameter.
5532
5533         * configure.ac (gcc_cv_as_discriminator): New configury check for
5534         gas support for discriminator.
5535         * configure: Regenerate.
5536         * config.in: Regenerate.
5537
5538 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5539
5540         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
5541         val after checking for integers.
5542
5543 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
5544
5545         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
5546         X64_REGPARM_MAX.
5547         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
5548         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
5549         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
5550         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
5551         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
5552         X64_SSE_REGPARM_MAX.
5553         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
5554         X64_SSE_REGPARM_MAX.
5555
5556 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
5557
5558         * gcc.c (report_times_to_file): New.
5559         (execute): Implement it.
5560         (process_command): Support -time=.
5561         * doc/invoke.texi: Document it.
5562
5563 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
5564
5565         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
5566         that have value exprs.
5567
5568 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
5569
5570         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
5571         declarations for constants until...
5572         (dw2_output_indirect_constant_1): ... this point.
5573
5574 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
5575
5576         PR target/10242
5577         * arm.md (arm_addsi3): Don't try to split an add with an
5578         eliminable register until after reload has completed.
5579
5580 2009-06-03  Ian Lance Taylor  <iant@google.com>
5581
5582         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
5583         * genattrtab.c (write_length_unit_log): Likewise.
5584         * genchecksum.c (dosum): Likewise.
5585         * gengtype.c (write_rtx_next): Likewise.
5586         (finish_root_table, write_roots): Likewise.
5587         * gimple.c (gimple_ops_offset_): Likewise.
5588         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
5589         * config/arc/arc.c (arc_attribute_table): Likewise.
5590         * config/arm/arm.c (arm_attribute_table): Likewise.
5591         * config/avr/avr.c (avr_attribute_table): Likewise.
5592         * config/crx/crx.c (crx_attribute_table): Likewise.
5593         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
5594         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
5595         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
5596         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
5597         * config/sh/sh.c (sh_attribute_table): Likewise.
5598         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
5599         * config/spu/spu.c (spu_attribute_table): Likewise.
5600         * config/v850/v850.c (v850_attribute_table): Likewise.
5601
5602         * config/alpha/alpha.c (vms_attribute_table): Make static.
5603         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
5604         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
5605         * config/mips/mips.c (mips_attribute_table): Likewise.
5606
5607         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
5608         $(SYSTEM_H).
5609         (cc1-checksum.o): Likewise.
5610
5611 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
5612
5613         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
5614
5615 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
5616
5617         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
5618         insn if it is changing sp.  Use gen_add3_insn instead of
5619         conditionally gen_addsi3 and gen_adddi3.
5620         (offset_below_red_zone_p): New static inline function.
5621         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
5622         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
5623         * config/rs6000/ppc-asm.h: Include auto-host.h.
5624         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
5625         CFI_RESTORE): Define.
5626         * config/rs6000/crtresxgpr.asm: Add unwind info.
5627         * config/rs6000/crtresxfpr.asm: Likewise.
5628         * config/rs6000/crtresgpr.asm: Likewise.
5629         * config/rs6000/crtresfpr.asm: Likewise.
5630         * config/rs6000/crtsavgpr.asm: Likewise.
5631         * config/rs6000/crtsavfpr.asm: Likewise.
5632
5633         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
5634         argument of DWARF2_FRAME_REG_OUT macros.
5635
5636 2009-06-03  Julian Brown  <julian@codesourcery.com>
5637
5638         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
5639         words or less (including TImode) in core registers.
5640
5641 2009-06-03  Richard Guenther  <rguenther@suse.de>
5642
5643         PR middle-end/40328
5644         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
5645
5646 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
5647
5648         * statistics.c (statistics_counter_event): Do not record event 
5649         in pass dump if its number == -1.
5650         (curr_statistics_hash): Add assert that we never get passes 
5651         with static number == -1.
5652
5653 2009-06-03  Richard Guenther  <rguenther@suse.de>
5654             Andrey Belevantsev  <abel@ispras.ru>
5655
5656         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
5657         non-BLKmode arrays addressable.
5658
5659 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
5660
5661         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
5662         * config/m68k/m68k.h: ... here.
5663         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
5664         m68k and fido.
5665
5666 2009-06-03  Martin Jambor  <mjambor@suse.cz>
5667
5668         PR tree-optimization/40323
5669         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
5670         assignment.
5671
5672 2009-06-03  Richard Guenther  <rguenther@suse.de>
5673
5674         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
5675         consistently.
5676
5677 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
5678
5679         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
5680         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
5681         JUMP_TABLE_DATA_P where applicable.
5682         * config/sh/sh.c: Ditto.
5683         * config/sh/sh.h: Ditto.
5684         * config/sh/sh.md: Ditto.
5685         * config/sh/symbian.c: Ditto.
5686
5687 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
5688
5689         * config/i386/driver-i386.c (describe_cache): Optimize
5690         concatenation of strings.  Use snprintf instead of sprintf.
5691         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
5692         target when not compiling with GCC.
5693
5694 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
5695
5696         * config/sh/sh.c: Revert last change.
5697         (sh_expand_epilogue): Emit a blockage insn before the frame
5698         pointer adjustment unconditionally.
5699
5700 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5701
5702         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
5703         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
5704         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
5705         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
5706         to COLLECT_GCC_OPTIONS.
5707
5708 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5709
5710         * collect2.c (target_system_root): New variable.
5711         (main): Handle --sysroot=.
5712         (ignore_library): Strip the sysroot from the library path.
5713
5714 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5715
5716         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
5717         (collect2.o): Depend on collect2-aix.h.
5718         (collect2-aix.o): New rule.
5719         * collect2-aix.h: New file.
5720         * collect2-aix.c: Likewise.
5721         * collect2.c: Include collect2-aix.h.  Don't undefine
5722         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
5723         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
5724         Use TARGET_AIX_VERSION instead of _AIX51.
5725         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
5726         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
5727         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
5728         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
5729         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
5730
5731 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5732
5733         * collect2.c (ignore_library): Avoid premature post-increment
5734         and null deference.
5735
5736 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
5737
5738         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
5739         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
5740         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
5741         CROSS_DIRECTORY_STRUCTURE too.
5742         (LINK_LIBG_SPEC): Likewise.
5743         (LIB_SPEC): Add %R to sysroot paths.
5744         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
5745         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
5746         * config/rs6000/aix51.h: As for aix43.h.
5747         * config/rs6000/aix52.h: Likewise.
5748         * config/rs6000/aix53.h: Likewise.
5749         * config/rs6000/aix61.h: Likewise.
5750         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
5751         to the beginning of sysroot paths.
5752
5753 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5754
5755         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
5756         INSN_LISTs that are out of the REG_NOTE range.
5757
5758 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5759
5760         * loop-unroll.c (struct iv_to_split): Add pointer to next.
5761         (struct var_to_expand): Likewise.
5762         (struct opt_info): Add head and tail for linked lists of the above.
5763         (analyze_insn_to_expand_var): Initialize next.
5764         (analyze_iv_to_split_insn): Likewise.
5765         (analyze_insns_in_loop): Create linked lists.
5766         (allocate_basic_variable): Simplify for use without hash table.
5767         (insert_var_expansion_initialization): Likewise, make it type-safer.
5768         (combine_var_copies_in_loop_exit): Likewise.
5769         (apply_opt_in_copies): Walk lists rather than hash tables.
5770         (release_var_copies): Simplified and inlined by hand into...
5771         (free_opt_info): ... this function.
5772
5773 2009-06-02  Richard Guenther  <rguenther@suse.de>
5774
5775         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
5776         for field decls.
5777
5778 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5779
5780         * cfgexpand.c (gimple_expand_cfg): Discard the source location
5781         only for builtins that are not overridden.
5782
5783 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5784
5785         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
5786         label string.
5787
5788 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5789
5790         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
5791
5792 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5793
5794         * combine.c (move_deaths): Compare LUIDs within the same BB only.
5795
5796 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
5797
5798         * common.opt (fdump-unnumbered-links): New.
5799         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
5800         * print-rtl.c (flag_dump_unnumbered_links): New.
5801         (print_rtx): Test it.
5802
5803 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
5804
5805         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
5806         push/pop multiple to 8-byte alignment.
5807
5808 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
5809
5810         * config/i386/i386.c (queued_cfa_restores): New static variable.
5811         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
5812         functions.
5813         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
5814         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
5815         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
5816         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
5817         note unconditionally.
5818         (ix86_emit_restore_regs_using_mov): Likewise.
5819         (ix86_emit_restore_sse_regs_using_mov): Likewise.
5820         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
5821         it through to ix86_emit_restore_reg_using_pop.
5822         (ix86_emit_leave): Add RED_OFFSET argument.  Call
5823         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
5824         instead of adding REG_CFA_OFFSET note unconditionally.
5825         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
5826         the above functions.  Call ix86_add_queued_cfa_restore_notes when
5827         needed.
5828
5829         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
5830         force output of the label even for dwarf2out_do_cfi_asm.
5831         (add_fde_cfi): If -g2 and above and cfi might change CFA,
5832         force creation of CFI label and chain DW_CFA_set_loc jumping to it
5833         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
5834         caller.
5835         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
5836         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
5837         dwarf2out_cfi_label callers.
5838         * tree.h (dwarf2out_cfi_label): Adjust prototype.
5839         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
5840         Adjust dwarf2out_cfi_label callers.
5841         * config/vax/vax.c (vax_output_function_prologue): Likewise.
5842
5843         * config/i386/i386.h (struct machine_cfa_state,
5844         struct machine_function): Guard with ifndef USED_FOR_TARGET
5845         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
5846
5847         PR other/40024
5848         * emutls.c (__emutls_get_address): Change arr->size to mean number
5849         of allocated arr->data entries instead of # of slots + 1.
5850
5851         PR middle-end/40316
5852         * recog.c (peep2_reinit_state): New function.
5853         (peephole2_init_state): Use it at the end of a basic block and also
5854         when seeing a RTX_FRAME_RELATED_P insn.
5855
5856 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
5857
5858         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
5859         fixuns_truncrfdi2): New.
5860         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
5861         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
5862         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
5863         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
5864         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
5865         *recip_approx): Remove.
5866         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
5867         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
5868         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
5869         move to div.md.
5870         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
5871         setf_exp_rf): New.
5872
5873 2009-06-01  Ian Lance Taylor  <iant@google.com>
5874
5875         * attribs.c (register_attribute): Use CONST_CAST.
5876         * collect2.c (main): Use CONST_CAST2.
5877         (scan_prog_file): Likewise.
5878         * gcc.c (process_command, main): Likewise.
5879         * toplev.c (toplev_main): Likewise.
5880
5881         * c-typeck.c (handle_warn_cast_qual): New static function,
5882         partially broken out of build_c_cast.
5883         (build_c_cast): Call handle_warn_cast_qual.
5884         * doc/invoke.texi (Warning Options): Document new effect of
5885         -Wcast-qual.
5886
5887 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
5888
5889         * diagnostic.c (diagnostic_build_prefix): Always print columns.
5890         (diagnostic_report_current_module): Print columns.
5891         * common.opt (flag_show_column): Enable by default.
5892
5893 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
5894
5895         * alias.c (find_base_term): Check for NULL term before returning.
5896
5897 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
5898
5899         Revert due to PR40320:
5900         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
5901         * calls.c (emit_library_call_value_1): Don't force_operand for move
5902         and push insns.
5903
5904 2009-06-01  Olivier Hainque  <hainque@adacore.com>
5905             Eric Botcazou  <ebotcazou@adacore.com>
5906
5907         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
5908         to be processed as a bitfield for constructor output purposes.
5909         * output.h (initializer_constant_valid_for_bitfield_p): Declare
5910         new function.
5911         * varasm.c (oc_local_state): New type, output_constructor
5912         local state to support communication with helpers.
5913         (oc_outer_state): New type, output_constructor outer state of
5914         relevance in recursive calls.
5915         (output_constructor_array_range): New output_constructor helper,
5916         extracted code for an array range element.
5917         (output_constructor_regular_field): New output_constructor helper,
5918         extracted code for an element that is not a bitfield.
5919         (output_constructor_bitfield): New output_constructor helper,
5920         extracted code for a bitfield element.  Accept an OUTER state
5921         argument for recursive processing.  Recurse on record or array
5922         CONSTRUCTOR values, possibly past noop conversions.
5923         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
5924         VALUE is a valid constant-valued expression for use in a static
5925         bit-field initializer.
5926         (output_constructor): Rework to use helpers.  Accept and honor an
5927         OUTER state argument for recursive calls.  Return total size.  Be
5928         prepared for nested constructors initializing bitfields.
5929         (output_constant): Feed OUTER in calls to output_constructor.
5930
5931 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
5932
5933         * calls.c (emit_library_call_value_1): Don't force_operand for move
5934         and push insns.
5935
5936 2009-06-01  Nick Clifton  <nickc@redhat.com>
5937
5938         * doc/invoke.texi (IA-64 Options): Fix typo.
5939
5940 2009-06-01  Ira Rosen  <irar@il.ibm.com>
5941
5942         PR tree-optimization/39129
5943         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
5944         printed message.
5945         (vect_do_peeling_for_loop_bound): Use
5946         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
5947         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
5948         (vect_loop_versioning): Likewise.
5949         (vect_create_cond_for_alias_checks): Fix indentation.
5950         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
5951         macros.
5952         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
5953         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
5954         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
5955         "control flow in loop".
5956         (vect_estimate_min_profitable_iters): Use
5957         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
5958         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
5959         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
5960         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
5961         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
5962         statement belongs to a group of strided accesses with the exact code
5963         check.
5964         (vectorizable_load): Likewise.
5965         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
5966         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
5967
5968 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
5969
5970         * config/freebsd-stdint.h: New file.
5971         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
5972         Add freebsd-stdint.h to tm_file.
5973
5974 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
5975
5976         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
5977         (thumb2_extendhidi2): Likewise.
5978
5979 2009-05-31  Ian Lance Taylor  <iant@google.com>
5980
5981         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
5982
5983 2009-05-31  Ian Lance Taylor  <iant@google.com>
5984
5985         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
5986         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
5987         (ipa-reference.o): Depend upon gt-ipa-reference.h.
5988
5989 2009-05-31  Jason Merrill  <jason@redhat.com>
5990
5991         * tree-pretty-print.c (print_call_name): Take the callee, not the
5992         call itself.  Make non-static.  Use dump_function_name for functions.
5993         (dump_generic_node): Adjust.
5994         * diagnostic.h: Declare print_call_name.
5995         * gimple-pretty-print.c (dump_gimple_call): Use it.
5996
5997 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
5998
5999         * config/sh/sh.md (ashldi3_std): New define_expand.
6000         (ashldi3): Use it.
6001
6002 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
6003
6004         PR target/40313
6005         * config/sh/sh.c: Include debug.h.
6006         (sh_expand_epilogue): Emit a blockage insn before the frame
6007         pointer adjustment also when dwarf2out_do_frame returns true.
6008
6009 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
6010
6011         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
6012         (thumb2_extendqidi2): New pattern.
6013
6014 2009-05-31  Ira Rosen  <irar@il.ibm.com>
6015
6016         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
6017         mark phis for renaming.
6018         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
6019         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
6020         Call mark_sym_for_renaming.
6021         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
6022         * tree-vect-loop.c (vect_transform_loop): Remove
6023         vect_memsyms_to_rename initialization and a call to
6024         mark_set_for_renaming.
6025
6026 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
6027
6028         PR middle-end/40304
6029         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
6030         frame related even if !set_cfa && style < 0.
6031
6032 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
6033
6034         * config/i386/mingw-tls.c: New file.
6035         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
6036         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
6037         defining _WIN32 but not __CYGWIN__.
6038
6039 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6040
6041         * configure.ac: Add MPC support.
6042         
6043         * config.in, configure: Regenerate.     
6044
6045 2009-05-29  Richard Henderson  <rth@redhat.com>
6046
6047         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
6048         NOTE_INSN_BASIC_BLOCK.
6049         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
6050         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
6051         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
6052         to be deleted.
6053         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
6054         add in_use field.
6055         (add_cfi): Disable check redefining cfa away from drap.
6056         (lookup_cfa_1): Add remember argument; handle remember/restore.
6057         (lookup_cfa): Pass remember argument.
6058         (cfa_remember): New.
6059         (compute_barrier_args_size_1): Remove sibcall check.
6060         (dwarf2out_frame_debug_def_cfa): New.
6061         (dwarf2out_frame_debug_adjust_cfa): New.
6062         (dwarf2out_frame_debug_cfa_offset): New.
6063         (dwarf2out_frame_debug_cfa_register): New.
6064         (dwarf2out_frame_debug_cfa_restore): New.
6065         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
6066         (dwarf2out_begin_epilogue): New.
6067         (dwarf2out_frame_debug_restore_state): New.
6068         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
6069         DW_CFA_restore_state.
6070         (output_cfi_directive): Likewise.
6071         (convert_cfa_to_fb_loc_list): Likewise.
6072         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
6073         * dwarf2out.h: Update.
6074         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
6075         (copy_insn_1): Early out for null.
6076         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
6077         and dwarf2out_frame_debug_restore_state.
6078         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
6079         (prologue_insn_hash, epilogue_insn_hash): New.
6080         (free_after_compilation): Adjust freeing accordingly.
6081         (record_insns): Create hash table if needed; push insns into
6082         hash instead of array.
6083         (maybe_copy_epilogue_insn): New.
6084         (contains): Search hash table instead of array.
6085         (sibcall_epilogue_contains): Remove.
6086         (thread_prologue_and_epilogue_insns): Split eh_return insns
6087         and mark them as epilogues.
6088         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
6089         scanning in terms of basic blocks.
6090         * insn-notes.def (CFA_RESTORE_STATE): New.
6091         * jump.c (returnjump_p_1): Accept EH_RETURN.
6092         (eh_returnjump_p_1, eh_returnjump_p): New.
6093         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
6094         CFA_REGISTER, CFA_RESTORE): New.
6095         * rtl.def (EH_RETURN): New.
6096         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
6097
6098         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
6099         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
6100
6101         * config/i386/i386.c (gen_push): Update cfa state.
6102         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
6103         add a CFA_ADJUST_CFA note.
6104         (ix86_dwarf_handle_frame_unspec): Remove.
6105         (ix86_expand_prologue): Update cfa state.
6106         (ix86_emit_restore_reg_using_pop): New.
6107         (ix86_emit_restore_regs_using_pop): New.
6108         (ix86_emit_leave): New.
6109         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
6110         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
6111         * config/i386/i386.h (struct machine_cfa_state): New.
6112         (ix86_cfa_state): New.
6113         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
6114         (eh_return_internal): Merge from eh_return_<mode>,
6115         use eh_return rtx, split w/ epilogue.
6116
6117 2009-05-29  Ian Lance Taylor  <iant@google.com>
6118
6119         * builtins.c (validate_gimple_arglist): Don't use va_arg with
6120         enum type.
6121         * calls.c (emit_library_call_value_1): Likewise.
6122
6123         * c-typeck.c (c_build_va_arg): New function.
6124         * c-tree.h (c_build_va_arg): Declare.
6125         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
6126         instead of build_va_arg.
6127
6128 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
6129
6130         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
6131         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
6132         (ptr_difference_cost): Use affine combinations to compute it.
6133         (difference_cost): Likewise.
6134         (get_computation_cost_at): Compute more accurate cost for addresses
6135         if the ratio is a multiplier allowed in addresses.
6136         For non-addresses, consider that an additional offset or symbol is
6137         added only once.
6138
6139 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
6140
6141         * config/i386/i386.c (ix86_decompose_address): Avoid useless
6142         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
6143
6144         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
6145         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
6146         (prefix_rex): For UNIT_MMX don't imply the prefix by default
6147         if MODE_DI.
6148         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
6149         to 1 for TYPE_SSE{IADD1,CVT1}.
6150         (prefix_vex_imm8): Removed.
6151         (length_vex): Only pass 1 as second argument to
6152         ix86_attr_length_vex_default if prefix_extra is 0.
6153         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
6154         (length): For prefix vex computation use length_immediate
6155         attribute instead of prefix_vex_imm8.
6156         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
6157         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
6158         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
6159         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
6160         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
6161         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
6162         a space in between the operands.
6163         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
6164         if one operand is 0xff and the other one si, di, bp or sp.
6165         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
6166         other one si, di, bp or sp.
6167         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
6168         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
6169         type and mode attributes.
6170         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
6171         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
6172         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
6173         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
6174         prefix_data16 attribute iff MODE_DF.
6175         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
6176         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
6177         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
6178         constm128_operand in length_immediate computation.
6179         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
6180         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
6181         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
6182         length_immediate attribute to 1.
6183         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
6184         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
6185         for certain alternatives.
6186         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
6187         prefix_data16 attribute if MODE_V1DF.
6188         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
6189         length_immediate to 1.
6190         (set_got_rex64, set_rip_rex64): Remove length attribute, set
6191         length_address to 4, set mode attribute to MODE_DI.
6192         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
6193         (fxam<mode>2_i387): Set length attribute to 4.
6194         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
6195         *prefetch_3dnow_rex): Override length_address attribute.
6196         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
6197         attributes.
6198         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
6199         (constm128_operand): Removed.
6200         * config/i386/i386.c (memory_address_length): For
6201         disp && !index && !base in 64-bit mode account for SIB byte if
6202         print_operand_address can't optimize disp32 into disp32(%rip)
6203         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
6204         for fs: or gs: segment.
6205         (ix86_attr_length_immediate_default): When checking if shortform
6206         is possible, truncate immediate to the length of the non-shortened
6207         immediate.
6208         (ix86_attr_length_address_default): Ignore MEM_P operands
6209         with X constraint.
6210         (ix86_attr_length_vex_default): Only check for DImode on
6211         GENERAL_REG_P operands.
6212         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
6213         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
6214         (sse_cvttps2pi): Clear prefix_rep attribute.
6215         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
6216         attribute.
6217         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
6218         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
6219         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
6220         iff operand 2 is const_int_operand.
6221         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
6222         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
6223         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
6224         instead of vex.
6225         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
6226         prefix_data16.
6227         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
6228         prefix_data16 attribute for movlpd and movhpd instructions.
6229         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
6230         length_immediate for shufpd instruction.
6231         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
6232         (avx_cmpp<avxmodesuffixf2c><mode>3,
6233         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
6234         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
6235         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
6236         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
6237         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
6238         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
6239         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
6240         prefix_data16 attribute for the first alternative to 1.
6241         (*avx_loadlps): Override length_immediate for the first alternative.
6242         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
6243         attributes for second alternative.
6244         (*vec_concatv2sf_sse4_1): Override length_immediate and
6245         prefix_data16 attributes for second alternative.
6246         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
6247         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
6248         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
6249         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
6250         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
6251         prefix_data16 and length_immediate to 1.
6252         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
6253         to 1.
6254         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
6255         prefix_extra attribute for variants that don't have 0f prefix alone.
6256         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
6257         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
6258         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
6259         *sse4_1_pextrd): Set length_immediate to 1.
6260         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
6261         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
6262         to 1.
6263         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
6264         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
6265         length_immediate to 1 for second alternative.
6266         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
6267         prefix_extra and length_immediate attributes for the first
6268         alternative.
6269         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
6270         first alternative.
6271         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
6272         to 1 for the first and third alternative.
6273         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
6274         alternative.
6275         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
6276         attribute.
6277         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
6278         attribute to 0.
6279         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
6280         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
6281         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
6282         *avx_psign<mode>3): Set prefix_extra attribute to 1.
6283         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
6284         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
6285         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
6286         ssse3_psign<mode>3): Override prefix_rex attribute.
6287         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
6288         (ssse3_palignrti): Override length_immediate to 1.
6289         (ssse3_palignrdi): Override length_immediate to 1, override
6290         prefix_rex attribute.
6291         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
6292         (sse4a_extrqi): Override length_immediate to 2.
6293         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
6294         (sse4a_insertq): Override prefix_data16 to 0.
6295         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
6296         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
6297         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
6298         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
6299         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
6300         and length_immediate to 1.
6301         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
6302         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
6303         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
6304         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
6305         and length_immediate to 1.
6306         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
6307         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
6308         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
6309         avx_ptest256): Override prefix_extra to 1.
6310         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
6311         Override prefix_data16 and length_immediate to 1.
6312         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
6313         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
6314         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
6315         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
6316         prefix_data16 to 0 and prefix_extra to 2.
6317         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
6318         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
6319         attribute.
6320         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
6321         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
6322         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
6323         and prefix_extra to 2.
6324         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
6325         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
6326         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
6327         avx_vpermilvar<mode>3,
6328         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
6329         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
6330         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
6331         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
6332         Override prefix_extra to 1.
6333         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
6334         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
6335         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
6336         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
6337         prefix_extra and length_immediate to 1.
6338         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
6339         modrm to 0.
6340         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
6341         to 1 for the first alternative.
6342         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
6343         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
6344         cases.
6345         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
6346         *movv2sf_internal_avx, *movv2sf_internal): Override
6347         prefix_rep attribute for certain alternatives.
6348         (*mov<mode>_internal): Override prefix_rep or prefix_data16
6349         attributes for certain alternatives.
6350         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
6351         attributes for certain alternatives.
6352         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
6353         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
6354         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
6355         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
6356         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
6357         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
6358         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
6359         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
6360         length_immediate to 1 if operand 2 is const_int_operand.
6361         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
6362         *vec_extractv2si_1): Set length_immediate attribute to 1.
6363         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
6364         using old 3DNOW insn rather than SSE/3DNOW_A.
6365         (mmx_emms, mmx_femms): Clear modrm attribute.
6366
6367 2009-05-29  Martin Jambor  <mjambor@suse.cz>
6368
6369         * tree-sra.c:  New implementation of SRA.
6370
6371         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
6372         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
6373         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
6374         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
6375         (SRA_MAX_STRUCTURE_COUNT): Removed.
6376         (SRA_FIELD_STRUCTURE_RATIO): Removed.
6377         * doc/invoke.texi (sra-max-structure-size): Removed.
6378         (sra-field-structure-ratio): Removed.
6379
6380 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
6381
6382         PR middle-end/40291
6383         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
6384         before expansion.
6385
6386 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
6387
6388         PR rtl-optimization/40101
6389         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
6390         seqno.  Adjust comment.
6391         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
6392         inserting bookkeeping before a jump, the jump is not scheduled.
6393         When no positive seqno found, provide a value.  Add comment.
6394
6395 2009-05-29  Richard Guenther  <rguenther@suse.de>
6396
6397         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
6398         short-cutting on the first component.
6399
6400 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
6401
6402         PR middle-end/39958
6403         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
6404         for trees other than decls/types.
6405
6406 2009-05-29  Richard Guenther  <rguenther@suse.de>
6407
6408         * tree-ssa-operands.c (get_expr_operands): Do not handle
6409         INDIRECT_REFs in the handled-component case.  Remove
6410         unused get_ref_base_and_extent case.
6411         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
6412         tree_low_cst and host_integerp where possible.
6413         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
6414         codes for equivalence.
6415         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
6416
6417 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
6418
6419         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
6420         to tmake_file for i[34567]86-*-cygwin*. 
6421
6422 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
6423
6424         PR target/40017
6425         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
6426         (altivec_categorize_keyword, init_vector_keywords,
6427         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
6428         similar to bool.
6429
6430 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
6431
6432         * tree.c (handle_dll_attribute): Check if node is
6433         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
6434
6435 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
6436
6437         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
6438         component.
6439         (thumb2_zero_extendqidi2): Likewise.
6440
6441 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
6442
6443         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
6444         instead of gen_movrt.
6445         * config/sh/sh.md (movrt): Remove.
6446
6447 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
6448
6449         * doc/invoke.texi (IA-64 Options):
6450         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
6451         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
6452         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
6453         -msched-prefer-non-control-spec-insns,
6454         -msched-stop-bits-after-every-cycle,
6455         -msched-count-spec-in-critical-path,
6456         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
6457         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
6458         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
6459         and -msched-spec-verbose.
6460
6461 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
6462
6463         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
6464         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
6465         error if used.
6466         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
6467
6468 2009-05-28  Richard Guenther  <rguenther@suse.de>
6469
6470         * tree-ssa-alias.c (ao_ref_init): New function.
6471         (ao_ref_base): Likewise.
6472         (ao_ref_base_alias_set): Likewise.
6473         (ao_ref_alias_set): Likewise.
6474         (refs_may_alias_p_1): Change signature.
6475         (refs_may_alias_p): Adjust.
6476         (refs_anti_dependent_p): Likewise.
6477         (refs_output_dependent_p): Likewise.
6478         (call_may_clobber_ref_p_1): Change signature.
6479         (call_may_clobber_ref_p): Adjust.
6480         (stmt_may_clobber_ref_p_1): New function split out from ...
6481         (stmt_may_clobber_ref_p): ... here.
6482         (maybe_skip_until): Adjust signature.
6483         (get_continuation_for_phi): Likewise.
6484         (walk_non_aliased_vuses): Likewise.
6485         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
6486         (ao_ref_init): Declare.
6487         (ao_ref_base): Likewise.
6488         (ao_ref_alias_set): Likewise.
6489         (stmt_may_clobber_ref_p_1): Likewise.
6490         (walk_non_aliased_vuses): Adjust.
6491         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
6492         (get_ref_from_reference_ops): remove.
6493         (vn_reference_lookup_2): Adjust signature.
6494         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
6495         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
6496         (vn_reference_lookup): Adjust.
6497         (vn_reference_insert): Likewise.
6498         (vn_reference_insert_pieces): Adjust signature.
6499         (visit_reference_op_call): Adjust.
6500         * tree-ssa-pre.c (get_expr_type): Simplify.
6501         (phi_translate_1): Adjust.
6502         (compute_avail): Likewise.
6503         (translate_vuse_through_block): Do not re-build trees.
6504         (value_dies_in_block_x): Likewise.
6505         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
6506         fields.
6507         (vn_reference_lookup_pieces): Adjust declaration.
6508         (vn_reference_insert_pieces): Likewise.
6509
6510 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
6511
6512         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
6513         with checking disabled.
6514
6515 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
6516
6517         PR target/37216
6518
6519         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
6520         macro definition for support of three-operand format aligned
6521         .comm directive in assembler on cygwin/pe/mingw target OS.
6522         * configure:  Regenerate.
6523         * config.h:  Regenerate.
6524
6525         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
6526         aligned form of .comm directive if -mpe-aligned-commons is in effect.
6527         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
6528
6529         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
6530         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
6531
6532 2009-05-28  Ira Rosen  <irar@il.ibm.com>
6533
6534         PR tree-optimization/40254
6535         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
6536         in analysis of basic blocks.
6537
6538 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
6539
6540         PR middle-end/33699
6541         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
6542         * target-def.h (TARGET_CONST_ANCHOR): New macro.
6543         (TARGET_INITIALIZER): Use it.
6544         * cse.c (CHEAPER): Move it up to the other macros.
6545         (insert): Rename this ...
6546         (insert_with_costs): ... to this.  Add cost parameters.  Update
6547         function comment.
6548         (insert): New function.  Call insert_with_costs.
6549         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
6550         find_reg_offset_for_const, try_const_anchors): New functions.
6551         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
6552         when using a const-anchor.  Call insert_const_anchors.
6553         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
6554         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
6555
6556 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
6557
6558         * tree-inline.c (remap_decls): Enable nonlocalized variables
6559         when not optimizing.
6560
6561 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
6562
6563         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
6564         Simplify other tests involving optimize.
6565
6566 2009-05-27  Tom Tromey  <tromey@redhat.com>
6567
6568         * unwind-dw2.c (_Unwind_DebugHook): New function.
6569         (uw_install_context): Call _Unwind_DebugHook.
6570
6571 2009-05-27  Tom Tromey  <tromey@redhat.com>
6572
6573         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
6574
6575 2009-05-27  Ian Lance Taylor  <iant@google.com>
6576
6577         * Makefile.in (LINKER, LINKER_FLAGS): Define.
6578         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
6579         (ALL_LINKERFLAGS): Define.
6580         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
6581         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
6582         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
6583         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
6584         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
6585         $(LINKER_FOR_BUILD).
6586         (build/gcov-iov$(build_exeext)): Likewise.
6587
6588 2009-05-27  Julian Brown  <julian@codesourcery.com>
6589
6590         * gcse.c (target.h): Include.
6591         (can_assign_to_reg_without_clobbers_p): Check that the target allows
6592         copy of argument to a pseudo register.
6593
6594 2009-05-27  Diego Novillo  <dnovillo@google.com>
6595
6596         * tree-ssa-live.c (dump_scope_block): Document arguments.
6597         (dump_scope_blocks): Document.
6598         (debug_scope_blocks): New.
6599         * tree-flow.h (debug_scope_blocks): Declare.
6600
6601 2009-05-21  Denis Chertykov  <denisc@overta.ru>
6602
6603         * doc/contrib.texi (Contributors): Add myself to the list.
6604
6605 2009-05-27  Olivier Hainque  <hainque@adacore.com>
6606
6607         * expr.c (target_align): New function.  Alignment the TARGET of an
6608         assignment may be assume to have.
6609         (highest_pow2_factor_for_target): Use it instead of relying on
6610         immediate tree attributes of TARGET, not necessarily honored when
6611         intermediate bitfields are involved.
6612         
6613 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
6614
6615         PR target/40266
6616         * config/i386/driver-i386.c (host_detect_local_cpu): Support
6617         AVX, SSE4, AES, PCLMUL and POPCNT.
6618
6619 2009-05-27  Diego Novillo  <dnovillo@google.com>
6620
6621         * tree-pretty-print.c (dump_location): New.
6622         (dump_generic_node): Call it.
6623         Factor code to handle BLOCK nodes ...
6624         (dump_block_node): ... here.
6625
6626 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
6627
6628         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
6629         with it.
6630         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
6631         included.
6632         * gcc-plugin.h: Include config.h and system.h.
6633         (IN_GCC): Define if not defined.
6634
6635 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
6636
6637         PR middle-end/40249
6638         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
6639         with -fno-inline.
6640
6641 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
6642
6643         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
6644         applicable.
6645         * config/m32r/m32r.h: Ditto.
6646         * config/m32r/m32r.md: Ditto.
6647         * config/m32r/predicates.md: Ditto.
6648
6649 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
6650
6651         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
6652
6653 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
6654
6655         * doc/plugins.texi
6656         (Loading plugins): typo.
6657         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
6658         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
6659         (Interacting with the GCC Garbage Collector): Added new section.
6660         (Giving information about a plugin): Added new section for
6661         PLUGIN_INFO.
6662         * ggc.h (ggc_register_root_tab): Added declaration.
6663         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
6664         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
6665         (register_callback): Improved comment in declaration.
6666         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
6667         (extra_root_vec) Added static variable for dynamic roots registration.
6668         (ggc_register_root_tab) Added new routine.
6669         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
6670         PLUGIN_GGC_MARKING event.
6671         * ggc-zone.c: Include plugin.h.
6672         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
6673         * ggc-page.c: Include plugin.h.
6674         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
6675         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
6676         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
6677         (register_callback): check lack of callbacks for
6678         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
6679         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
6680         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
6681         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
6682         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
6683         dependency on plugin.h.
6684         (plugin.o): Added dependency on ggc.h...
6685
6686 2009-05-26  Richard Guenther  <rguenther@suse.de>
6687
6688         PR middle-end/40248
6689         Revert
6690         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
6691         with mismatched comparison modes.
6692
6693         * expr.c (expand_expr_real_1): Expand the operand of a
6694         VIEW_CONVERT_EXPR in its natural mode.
6695
6696 2009-05-26  Ian Lance Taylor  <iant@google.com>
6697
6698         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
6699         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
6700         (ALL_COMPILERFLAGS): Define.
6701         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
6702         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
6703         (collect2$(exeext), collect2.o): Likewise.
6704         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
6705         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
6706         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
6707         (libbackend.o, intl.o, cppdefault.o): Likewise.
6708         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
6709         (build/%.o): Use $(COMPILER_FOR_BUILD).
6710         (build/gen%$(build_exeext)): Likewise.
6711         (build/gcov-iov$(build_exeext)): LIkewise.
6712         * config/t-darwin (darwin.o): Use $(COMPILER).
6713         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
6714         * config/t-sol2 (sol2-c.o): Likewise.
6715         (sol2.o): Likewise.
6716         * config/t-vxworks (vxworks.o): Likewise.
6717         * config/x-darwin (host-darwin.o): Likewise.
6718         * config/x-hpux (host-hpux.o): Likewise.
6719         * config/x-linux (host-linux.o): Likewise.
6720         * config/x-solaris (host-solaris.o): Likewise.
6721         * config/alpha/x-alpha (driver-alpha.o): Likewise.
6722         * config/arm/t-arm (arm-c.o): Likewise.
6723         * config/arm/t-pe (pe.o): Likewise.
6724         * config/arm/t-wince-pe (pe.o): Likewise.
6725         * config/i386/t-cygming (winnt.o): Likewise.
6726         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
6727         * config/i386/t-cygwin (cygwin1.o): Likewise.
6728         (cygwin2.o): Likewise.
6729         * config/i386/t-i386 (i386-c.o): Likewise.
6730         * config/i386/t-interix (winnt.o): Likewise.
6731         * config/i386/t-netware (netware.o): Likewise.
6732         * config/i386/t-nwld (nwld.o): Likewise.
6733         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
6734         * config/i386/x-i386 (driver-i386.o): Likewise.
6735         * config/i386/x-cygwin (host-cygwin.o): Likewise.
6736         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
6737         * config/ia64/t-ia64 (ia64-c.o): Likewise.
6738         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
6739         * config/mips/x-native (driver-native.o): Likewise.
6740         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
6741         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
6742         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
6743         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
6744         * config/score/t-score-elf (score7.o): Likewise.
6745         (score3.o): Likewise.
6746         * config/sh/t-sh (sh-c.o): Likewise.
6747         * config/sh/t-symbian (sh-c.o): Likewise.
6748         (symbian.o): Likewise.
6749         * config/spu/t-spu-elf (spu-c.o): Likewise.
6750         * config/v850/t-v850 (v850-c.o): Likewise.
6751         * config/v850/t-v850e (v850-c.o): Likewise.
6752
6753 2009-05-26  Richard Guenther  <rguenther@suse.de>
6754
6755         PR tree-optimization/40122
6756         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
6757         VECTOR_CSTs if possible.
6758         (fold_gimple_assign): Likewise.
6759
6760 2009-05-26  Richard Guenther  <rguenther@suse.de>
6761
6762         PR middle-end/40252
6763         * fold-const.c (fold_binary): Use the correct types for building
6764         rotates.
6765
6766 2009-05-26  Richard Guenther  <rguenther@suse.de>
6767
6768         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
6769         redundant calls to merge_alias_info.
6770         (bump_vector_ptr): Likewise.
6771         * tree-ssa-copy.c (merge_alias_info): Remove.
6772         (replace_exp_1): Remove call to merge_alias_info.
6773         (propagate_tree_value): Likewise.
6774         (fini_copy_prop): Propagate points-to info.
6775         * tree-flow.h (merge_alias_info): Remove.
6776
6777 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
6778
6779         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
6780
6781 2009-05-25  Jan Hubicka  <jh@suse.cz>
6782
6783         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
6784         * cgraph.h (struct inline_summary): New filed self_wize,
6785         size_inlining_benefit, self_time and time_inlining_benefit.
6786         (struct cgraph_global_info): Replace insns by time ans size fields.
6787         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
6788         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
6789         (ipcp_update_callgraph): Do not touch function bodies.
6790         * ipa-inline.c: Include except.h
6791         (MAX_TIME): New constant.
6792         (overall_insns): Remove.
6793         (leaf_node_p): New.
6794         (overall_size, max_benefit): New static variables.
6795         (cgraph_estimate_time_after_inlining): New function.
6796         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
6797         (cgraph_clone_inlined_nodes): Update size.
6798         (cgraph_mark_inline_edge): Update size.
6799         (cgraph_estimate_growth): Use size info.
6800         (cgraph_check_inline_limits): Check size.
6801         (cgraph_default_inline_p): Likewise.
6802         (cgraph_edge_badness): Compute badness based on benefit and size cost.
6803         (cgraph_decide_recursive_inlining): Check size.
6804         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
6805         and times.
6806         (cgraph_decide_inlining): Likewise.
6807         (cgraph_decide_inlining_incrementally): Likewise; honor
6808         PARAM_EARLY_INLINING_INSNS.
6809         (likely_eliminated_by_inlining_p): New predicate.
6810         (estimate_function_body_sizes): New function.
6811         (compute_inline_parameters): Use it.
6812         * except.c (must_not_throw_labels): New function.
6813         * except.h (must_not_throw_labels): Declare.
6814         * tree-inline.c (init_inline_once): Kill inlining_weigths
6815         * tree-ssa-structalias.c: Avoid uninitialized warning.
6816         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
6817         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
6818         (PARAM_INLINE_CALL_COST): Remove.
6819         (PARAM_EARLY_INLINING_INSNS): New.
6820
6821 2009-05-25  Richard Guenther  <rguenther@suse.de>
6822
6823         PR tree-optimization/36327
6824         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
6825         callback for reference translation or lookup at the point of may-defs.
6826         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
6827         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
6828         for union COMPONENT_REFs.
6829         (vn_reference_lookup_3): New callback.  Lookup from memset
6830         and CONSTRUCTOR assignment, translate through struct copies.
6831         (vn_reference_lookup_pieces): Make sure to not free the
6832         passed operands array.  Adjust walk_non_aliased_vuses call.
6833         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
6834         make sure we do not leak memory.
6835
6836 2009-05-25  Richard Guenther  <rguenther@suse.de>
6837
6838         * tree-ssa-alias.h (dump_points_to_solution): Declare.
6839         * tree-inline.c (expand_call_inline): Reset the escaped and
6840         callused solutions.
6841         * tree-ssa-structalias.c (pass_build_ealias): New.
6842         * tree-pass.h (pass_build_ealias): Declare.
6843         * passes.c (init_optimization_passes): Add PTA during 
6844         early optimizations.
6845         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
6846         and CALLUSED solutions.
6847         (dump_points_to_solution): New function, split out from ...
6848         (dump_points_to_info_for): ... here.
6849         * tree-parloops.c (parallelize_loops): Reset the escaped and
6850         callused solutions.
6851
6852 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6853
6854         PR bootstrap/40027
6855         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
6856         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
6857
6858 2009-05-25  Ira Rosen  <irar@il.ibm.com>
6859
6860         PR tree-optimization/40238
6861         * tree-vect-stmts.c (vect_init_vector): Insert initialization
6862         statements after basic block's labels.
6863         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
6864         to free the allocated memory.
6865
6866 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
6867
6868         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
6869         return address with a USE.
6870
6871 2009-05-24  Richard Guenther  <rguenther@suse.de>
6872
6873         PR middle-end/40233
6874         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
6875         array type from the main variant of the inner type.
6876
6877 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
6878
6879         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
6880         definition to bool (from int) to un-break build.
6881         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
6882
6883 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
6884
6885         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
6886         discard_stmt_changes): Delete.
6887         * tree-ssa-operands.c (scb_stack): Delete.
6888         (init_ssa_operands): Do not initialize it.
6889         (fini_ssa_operands): Do not free it.
6890         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
6891
6892         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
6893         update_stmt, remove the others.  Fix comments.
6894         * tree-dfa.c (optimize_stack_restore): Likewise.
6895         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
6896         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
6897         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
6898         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
6899         Likewise.
6900         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
6901         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
6902         (dom_opt_finalize_block): Likewise, adjusting access to
6903         stmts_to_rescan.
6904         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
6905         (stmts_to_rescan): Change item type to gimple.
6906         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
6907
6908 2009-05-24  Ira Rosen  <irar@il.ibm.com>
6909
6910         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
6911         * tree-pass.h (pass_slp_vectorize): New pass.
6912         * params.h (SLP_MAX_INSNS_IN_BB): Define.
6913         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
6914         * tree-vectorizer.c (timevar.h): Include.
6915         (user_vect_verbosity_level): Declare.
6916         (vect_location): Fix comment.
6917         (vect_set_verbosity_level): Update user_vect_verbosity_level
6918         instead of vect_verbosity_level.
6919         (vect_set_dump_settings): Add an argument. Ignore user defined
6920         verbosity if dump flags require higher level of verbosity. Print to
6921         stderr only for loop vectorization.
6922         (vectorize_loops): Update call to vect_set_dump_settings.
6923         (execute_vect_slp): New function.
6924         (gate_vect_slp): Likewise.
6925         (struct gimple_opt_pass pass_slp_vectorize): New.
6926         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
6927         access its members.
6928         (vec_info_for_bb): New function.
6929         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
6930         (VECTORIZATION_ENABLED): New macro.
6931         (SLP_ENABLED, SLP_DISABLED): Likewise.
6932         (vect_is_simple_use): Add bb_vec_info argument.
6933         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
6934         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
6935         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
6936         vect_schedule_slp, vect_analyze_slp): Likewise.
6937         (vect_analyze_stmt): Add slp_tree argument.
6938         (find_bb_location): Declare.
6939         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
6940         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
6941         (vect_analyze_loop_operations, vect_analyze_loop,
6942         get_initial_def_for_induction, vect_create_epilog_for_reduction,
6943         vect_finalize_reduction, vectorizable_reduction,
6944         vectorizable_live_operation, vect_transform_loop): Likewise.
6945         * tree-data-ref.c (dr_analyze_innermost): Update comment,
6946         skip evolution analysis if analyzing a basic block.
6947         (dr_analyze_indices): Likewise.
6948         (initialize_data_dependence_relation): Skip the test whether the
6949         object is invariant for basic blocks.
6950         (compute_all_dependences): Skip dependence analysis for data
6951         references in basic blocks.
6952         (find_data_references_in_stmt): Don't fail in case of invariant
6953         access in basic block.
6954         (find_data_references_in_bb): New function.
6955         (find_data_references_in_loop): Move code to
6956         find_data_references_in_bb and add a call to it.
6957         (compute_data_dependences_for_bb): New function.
6958         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
6959         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
6960         that STEP is 0.
6961         (vect_analyze_data_ref_dependence): Check for interleaving in case of
6962         unknown dependence in basic block and fail in case of dependence in
6963         basic block.
6964         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
6965         dependence instances from either loop or basic block vectorization
6966         info.
6967         (vect_compute_data_ref_alignment): Check if it is loop vectorization
6968         before calling nested_in_vect_loop_p.
6969         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
6970         dependence instances from either loop or basic block vectorization
6971         info.
6972         (vect_verify_datarefs_alignment): Likewise.
6973         (vect_enhance_data_refs_alignment): Adjust function calls.
6974         (vect_analyze_data_refs_alignment): Likewise.
6975         (vect_analyze_group_access): Fix printing. Skip different checks if
6976         DR_STEP is 0. Keep strided stores either in loop or basic block
6977         vectorization data structure. Fix indentation.
6978         (vect_analyze_data_ref_access): Fix comments, allow zero step in
6979         basic blocks.
6980         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
6981         dependence instances from either loop or basic block vectorization
6982         info.
6983         (vect_analyze_data_refs): Update comment. Call
6984         compute_data_dependences_for_bb to analyze basic blocks.
6985         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
6986         case of loop vectorization. In case of basic block vectorization use
6987         data-ref itself as a base.
6988         (vect_create_data_ref_ptr): In case of basic block vectorization:
6989         don't advance the pointer, add new statements before the current
6990         statement.  Adjust function calls.
6991         (vect_supportable_dr_alignment): Support only aligned accesses in
6992         basic block vectorization.
6993         * common.opt (ftree-slp-vectorize): New flag.
6994         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
6995         (vect_pattern_recog_1): Likewise.
6996         * tree-vect-stmts.c (process_use): Likewise.
6997         (vect_init_vector): Add new statements in the beginning of the basic
6998         block in case of basic block SLP.
6999         (vect_get_vec_def_for_operand): Adjust function calls.
7000         (vect_finish_stmt_generation): Likewise.
7001         (vectorizable_call): Add assert that it is loop vectorization, adjust
7002         function calls.
7003         (vectorizable_conversion, vectorizable_assignment): Likewise.
7004         (vectorizable_operation): In case of basic block SLP, take
7005         vectorization factor from statement's type and skip the relevance
7006         check. Adjust function calls.
7007         (vectorizable_type_demotion): Add assert that it is loop
7008         vectorization, adjust function calls.
7009         (vectorizable_type_promotion): Likewise.
7010         (vectorizable_store): Check for outer loop only in case of loop
7011         vectorization. Adjust function calls. For basic blocks, skip the
7012         relevance check and don't advance pointers.
7013         (vectorizable_load): Likewise.
7014         (vectorizable_condition): Add assert that it is loop vectorization,
7015         adjust function calls.
7016         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
7017         that it is not reduction, get vector type, call only supported
7018         functions, skip loop specific parts.
7019         (vect_transform_stmt): Check for outer loop only in case of loop
7020         vectorization.
7021         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
7022         (vect_is_simple_use): Fix comment, add new argument, fix conditions
7023         for external definition.
7024         * passes.c (pass_slp_vectorize): New pass.
7025         * tree-vect-slp.c (find_bb_location): New function.
7026         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
7027         check for patterns only in loops.
7028         (vect_build_slp_tree): Add argument, adjust function calls, fail in
7029         case of multiple types in basic block SLP.
7030         (vect_mark_slp_stmts_relevant): New function.
7031         (vect_supported_load_permutation_p): Fix comment.
7032         (vect_analyze_slp_instance): Add argument. In case of basic block
7033         SLP, take vectorization factor from statement's type, check that
7034         unrolling factor is 1. Adjust function call. Save SLP instance in
7035         either loop or basic block vectorization structure. Return FALSE,
7036         if SLP failed.
7037         (vect_analyze_slp): Add argument. Get strided stores groups from
7038         either loop or basic block vectorization structure. Return FALSE
7039         if basic block SLP failed.
7040         (new_bb_vec_info): New function.
7041         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
7042         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
7043         (vect_schedule_slp): Add argument. Get SLP instances from either
7044         loop or basic block vectorization structure. Set vectorization factor
7045         to be 1 for basic block SLP.
7046         (vect_slp_transform_bb): New function.
7047         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
7048
7049 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
7050
7051         * final.c (shorten_branches): Do not align labels for jump tables.
7052         (final_scan_insn): Use JUMP_TABLE_DATA_P.
7053
7054 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
7055
7056         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
7057         Remove outdated reference to flow.c and fix nits.
7058         * doc/gccint.texi: Tweak RTL description.
7059         * doc/rtl.texi: Likewise.
7060
7061 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
7062
7063         * config/avr/avr.c: Change my email address.
7064         * config/avr/avr.h: Likewise.
7065         * config/avr/avr.md: Likewise.
7066         * config/avr/avr-protos.h: Likewise.
7067         * config/avr/libgcc.S: Likewise.
7068
7069 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
7070
7071         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
7072         (spu_split_load, spu_split_store): Change return type to int.
7073         (spu_split_convert): Declare.
7074         * config/spu/predicates.md (spu_mem_operand): Remove.
7075         (spu_mov_operand): Update.
7076         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
7077         * config/spu/spu.c (regno_aligned_for_load): Remove.
7078         (reg_aligned_for_addr, spu_expand_load): Define.
7079         (spu_expand_extv): Reimplement and handle MEM.
7080         (spu_expand_insv): Handle MEM.
7081         (spu_sched_reorder): Handle insn's with length 0.
7082         (spu_legitimate_address_p): Reimplement.
7083         (store_with_one_insn_p): Return TRUE for any mode with size
7084         larger than 16 bytes.
7085         (address_needs_split): Define.
7086         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
7087         operands.
7088         (spu_convert_move): Define.
7089         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
7090         (spu_split_store): Change all MEM's to TImode.
7091         (spu_init_expanders): Preallocate registers that correspond to
7092         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
7093         mark_reg_pointer.
7094         (spu_split_convert): Define.
7095         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
7096         (_move<mode>, _movdi, _movti): Update predicate and condition.
7097         (load, store): Change to define_split.
7098         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
7099         extend<mode>ti2.
7100         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
7101         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
7102         define_insn_and_split of lshr<mode>3.
7103         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
7104         (<v>ashr<mode>3_imm): Define.
7105         (extv, extzv, insv): Allow MEM operands.
7106         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
7107         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
7108         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
7109         (_spu_convert2): Change to define_insn_and_split and remove the
7110         corresponding define_peephole2.
7111         (stack_protect_set, stack_protect_test, stack_protect_test_si):
7112         Change predicates to memory_operand.
7113
7114 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
7115
7116         * config/arm/thumb2.md: Add 16-bit multiply instructions.
7117
7118 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
7119
7120         PR tree-optimization/40219
7121         * tree.c (iterative_hash_expr): Make sure the builtin function is
7122         a normal builtin function and not a front end or back end builtin
7123         before indexing into the built_in_decls array.
7124
7125 2009-05-22  Richard Guenther  <rguenther@suse.de>
7126
7127         PR middle-end/38964
7128         * alias.c (write_dependence_p): Do not use TBAA for answering
7129         anti-dependence or output-dependence.
7130         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
7131         (emit_pointer_definition): Remove.
7132         (emit_alias_warning): Likewise.
7133         (find_what_var_points_to): Remove TBAA pruning code.
7134         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
7135         violations.
7136         (compute_points_to_sets): Remove code computing the set of
7137         dereferenced pointers.
7138         * tree-data-ref.c (dr_may_alias_p): Properly use the split
7139         oracle for querying anti and output dependencies.
7140         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
7141         if TBAA may be applied.
7142         (refs_anti_dependent_p): New function.
7143         (refs_output_dependent_p): Likewise.
7144         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
7145         (refs_output_dependent_p): Likewise.
7146         * doc/tree-ssa.texi (Memory model): New section.
7147         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
7148         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
7149         * cfgexpand.c (expand_gimple_basic_block): Do not handle
7150         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
7151         * expr.c (expand_expr_real_1): Likewise.
7152         * gimple-low.c (lower_stmt): Likewise.
7153         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
7154         (dump_gimple_cdt): Remove.
7155         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
7156         (gimple_size): Likewise.
7157         (walk_gimple_op): Likewise.
7158         (is_gimple_stmt): Likewise.
7159         (walk_stmt_load_store_addr_ops): Likewise.
7160         (gimple_build_cdt): Remove.
7161         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
7162         * gimple.h (gimple_cdt_new_type): Remove.
7163         (gimple_cdt_new_type_ptr): Likewise.
7164         (gimple_cdt_set_new_type): Likewise.
7165         (gimple_cdt_location): Likewise.
7166         (gimple_cdt_location_ptr): Likewise.
7167         (gimple_cdt_set_location): Likewise.
7168         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
7169         * tree-cfg.c (remove_useless_stmts_1): Do not handle
7170         GIMPLE_CHANGE_DYNAMIC_TYPE.
7171         (verify_types_in_gimple_stmt): Likewise.
7172         * tree-inline.c (estimate_num_insns): Likewise.
7173         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
7174         (copy_decl_to_var): Likewise.
7175         (copy_result_decl_to_var): Likewise.
7176         * tree-pretty-print.c (dump_generic_node): Do not handle
7177         CHANGE_DYNAMIC_TYPE_EXPR.
7178         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
7179         * tree-ssa-operands.c (get_expr_operands): Likewise.
7180         * tree-ssa-structalias.c (struct variable_info): Remove
7181         no_tbaa_pruning member.
7182         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
7183         (unify_nodes): Do not copy it.
7184         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
7185         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
7186         (set_uids_in_ptset): Do not check it.
7187         (find_what_var_points_to): Likewise.
7188         (compute_tbaa_pruning): Remove.
7189         (compute_points_to_sets): Do not call it.
7190         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
7191         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
7192         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
7193         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
7194         (DECL_NO_TBAA_P): Likewise.
7195         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
7196         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
7197         (expand_omp_atomic_pipeline): Do not set it.
7198         * print-tree.c (print_node): Do not dump it.
7199         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
7200         redundant check.
7201
7202 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
7203
7204         PR target/39856
7205         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
7206         for clobber.
7207
7208 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
7209
7210         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
7211         non-external.
7212
7213 2009-05-22  Ben Elliston  <bje@au.ibm.com>
7214
7215         * Makefile.in (bversion.h, s-bversion): New targets.
7216         (TOPLEV_H): Add bversion.h.
7217         * toplev.h: Include "bversion.h".
7218         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
7219         the __format__ attribute only if compiling with the same version
7220         of GCC as the sources (the "build version").
7221
7222 2009-05-22  Ben Elliston  <bje@au.ibm.com>
7223
7224         * c-format.c (handle_format_attribute): Fix comment typo.
7225
7226 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
7227
7228         PR target/37846
7229         * config/ia64/ia64.opt (mfused-madd): New.
7230         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
7231         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
7232         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
7233         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
7234         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
7235         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
7236         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
7237         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
7238         instruction if !TARGET_FUSED_MADD.
7239         (fpma, fpms): Remove colon from name.
7240
7241 2009-05-22  Richard Guenther  <rguenther@suse.de>
7242
7243         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
7244         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
7245         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
7246         TARGET_MEM_REF.
7247         (create_expression_by_pieces): Only convert if necessary.
7248         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
7249         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
7250
7251 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
7252
7253         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
7254         regular pattern from a template and rename it ...
7255         (*extzv_truncsi_exts): ... to this.
7256
7257 2009-05-21  Richard Guenther  <rguenther@suse.de>
7258
7259         * cgraph.h (struct cgraph_node): Remove inline_decl member.
7260         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
7261         (cgraph_default_inline_p): Likewise.
7262         (cgraph_decide_inlining_incrementally): Likewise.
7263
7264 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
7265             Uros Bizjak  <ubizjak@gmail.com>
7266
7267         * config/i386/cpuid.h (bit_MOVBE): New.
7268
7269         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
7270
7271         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
7272         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
7273         (ix86_handle_option): Handle OPT_mmovbe.
7274         (ix86_target_string): Add -mmovbe.
7275         (pta_flags): Add PTA_MOVBE.
7276         (processor_alias_table): Add PTA_MOVBE to "atom".
7277         (override_options): Handle PTA_MOVBE.
7278
7279         * config/i386/i386.h (TARGET_MOVBE): New.
7280
7281         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
7282         (*bswapsi_movbe): New.
7283         (*bswapdi_movbe): Likewise.
7284         (bswapdi2): Renamed to ...
7285         (*bswapdi_1): This.
7286         (bswapdi2): New expander.
7287
7288         * config/i386/i386.opt (mmovbe): New.
7289
7290         * doc/invoke.texi: Document -mmovbe.
7291
7292 2009-05-21  Taras Glek  <tglek@mozilla.com>
7293
7294         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
7295         * gcc-plugin.h (plugin_init): Updated signature.
7296         * gcc-plugin.h (plugin_name_args): Moved to this header.
7297         * doc/plugins.texi (plugin_init): Updated documention to reflect
7298         API change.
7299         * doc/plugins.texi (plugin_name_args): Added to documention.
7300
7301 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
7302
7303         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
7304         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
7305
7306 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
7307
7308         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
7309         JUMP_TABLE_DATA_P predicates where applicable.
7310         * config/i386/predicates.md: Ditto.
7311         * config/i386/sse.md: Ditto.
7312
7313 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
7314
7315         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
7316         operand2 -128 override length_immediate attribute to 1.
7317         * config/i386/predicates.md (constm128_operand): New predicate.
7318
7319         * config/i386/i386.c (memory_address_length): Handle %r12
7320         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
7321         also check REGNO.
7322         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
7323         mode look through optional ZERO_EXTEND and SUBREG.
7324         * config/i386/i386.md (R12_REG): New define_constant.
7325         (prefix_data16): For sse unit set also for MODE_TI insns.
7326         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
7327         insns set if operand 1 is ext_QIreg_operand.
7328         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
7329         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
7330         immediate.
7331         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
7332         mode from MODE_DI to MODE_SI.
7333         (movdi_1_rex64): Override modrm and length_immediate attributes
7334         only for movabs (TYPE_IMOV, alternative 2).
7335         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
7336         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
7337         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
7338         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
7339         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
7340         prefix_rex attribute if DImode.
7341         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
7342         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
7343         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
7344         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
7345         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
7346         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
7347         Likewise.  For TYPE_IMOV clear length_immediate attribute.
7348         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
7349         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
7350         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
7351         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
7352         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
7353         or one operand TYPE_ISHIFT.
7354         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
7355         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
7356         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
7357         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
7358         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
7359         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
7360         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
7361         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
7362         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
7363         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
7364         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
7365         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
7366         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
7367         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
7368         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
7369         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
7370         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
7371         set mode attribute, don't override length attribute.
7372         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
7373         to 1.
7374         (return_internal_long): Set length attribute to 2 instead of 1.
7375         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
7376         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
7377         prefix_rex attribute.
7378         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
7379         New predicates.
7380         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
7381
7382 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7383
7384         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
7385
7386 2009-05-20  Ian Lance Taylor  <iant@google.com>
7387
7388         * tree.c (build_tree_list_vec_stat): New function.
7389         (ctor_to_vec): New function.
7390         (build_nt_call_vec): New function.
7391         (build_call_array): Change args to be a const pointer.
7392         (build_call_vec): New function.
7393         * tree.h (build_nt_call_vec): Declare.
7394         (build_tree_list_vec_stat): Declare.
7395         (build_tree_list_vec): Define.
7396         (build_call_array): Update declaration.
7397         (build_call_vec): Declare.
7398         (ctor_to_vec): Declare.
7399         * c-common.c (tree_vector_cache): New static variable.
7400         (make_tree_vector): New function.
7401         (release_tree_vector): New function.
7402         (make_tree_vector_single): New function.
7403         (make_tree_vector_copy): New function.
7404         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
7405         (make_tree_vector_single, make_tree_vector_copy): Declare.
7406         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
7407         (c_parser_expr_list): Don't manage cache here, instead call
7408         make_tree_vector.
7409         (c_parser_release_expr_list): Remove static function.
7410         (c_parser_vec_to_tree_list): Remove static function.
7411         (c_parser_attributes): Call build_tree_list_vec instead of
7412         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
7413         c_parser_release_expr_list.
7414         (c_parser_postfix_expression_after_primary): Likewise.
7415         (c_parser_objc_keywordexpr): Likewise.
7416
7417 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
7418
7419         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
7420         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
7421         TARGET_CONVERT_TO_TYPE.
7422         * hooks.c (hook_tree_const_tree_null): Define.
7423         * hooks.h (hook_tree_const_tree_null): Declare.
7424         * target.h (struct gcc_target):  Add invalid_parameter_type,
7425         invalid_return_type, promoted_type, and convert_to_type fields.
7426         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
7427         (TARGET_INVALID_RETURN_TYPE): Define.
7428         (TARGET_PROMOTED_TYPE): Define.
7429         (TARGET_CONVERT_TO_TYPE): Define.
7430         (TARGET_INITIALIZER): Update for new fields.
7431         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
7432         (grokparms): Check targetm.invalid_parameter_type.
7433         * c-typeck.c (default_conversion): Check targetm.promoted_type.
7434         * c-convert.c (convert): Check targetm.convert_to_type.
7435
7436 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
7437
7438         * config/mips/mips.md (*extenddi_truncate<mode>,
7439         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
7440         defintions.
7441         (*extendhi_truncateqi): New define_insn_and_sptit.
7442
7443 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
7444
7445         PR middle-end/40204
7446         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
7447         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
7448
7449 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
7450
7451         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
7452         the operand of VIEW_CONVERT_EXPR.
7453
7454 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
7455
7456         * config/i386/driver-i386.c (host_detect_local_cpu): Check
7457         extended family and model for Intel processors.  Support Intel Atom.
7458
7459 2009-05-20  Olivier Hainque  <hainque@adacore.com>
7460
7461         * gstab.h (stab_code_type): Define, to be used instead of the
7462         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
7463         notice.
7464         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
7465         occurrences by stab_code_type.
7466         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
7467
7468 2009-05-20  Martin Jambor  <mjambor@suse.cz>
7469
7470         * tree-flow.h (insert_edge_copies_seq): Undeclare.
7471         (sra_insert_before): Likewise.
7472         (sra_insert_after): Likewise.
7473         (sra_init_cache): Likewise.
7474         (sra_type_can_be_decomposed_p): Likewise.
7475         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
7476         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
7477         (sra_insert_before): Likewise.
7478         (sra_insert_after): Likewise.
7479         (sra_init_cache): Likewise.
7480         (insert_edge_copies_seq): Made static and moved upwards.
7481
7482         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
7483         case.
7484
7485         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
7486
7487         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
7488         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
7489         simple copies.
7490
7491 2009-05-20  Richard Guenther  <rguenther@suse.de>
7492
7493         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
7494         with mismatched comparison modes.
7495
7496 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7497
7498         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
7499         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
7500         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
7501         with shifts for Thumb2.
7502         (orsi_notsi): New for orn.
7503         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
7504         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
7505         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
7506         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
7507         Don't invert remainder for IOR.
7508         
7509 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
7510
7511         PR tree-optimization/40087
7512         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
7513         number_of_iterations_ne): Rename never_infinite argument.
7514         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
7515         number_of_iterations_le): Handle pointer-type ivs when
7516         exit_must_be_taken is false.
7517         (number_of_iterations_cond):  Do not always assume that
7518         exit_must_be_taken if the control variable is a pointer.
7519
7520 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7521
7522         * c-typeck.c (build_binary_op): Allow % on integal vectors.
7523         * doc/extend.texi (Vector Extension): Document that % is allowed too.
7524
7525 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
7526
7527         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
7528         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
7529
7530 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7531
7532         PR c/40172
7533         * c.opt (Wlogical-op): Disabled by default.
7534         * c-opt (c_common_post_options): Do not enable Wlogical-op with
7535         Wextra.
7536         * doc/invoke.texi (Wlogical-op): Likewise.
7537         
7538 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
7539
7540         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
7541         into CASE_CONVERT.
7542         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
7543         Propagate the type of the first operand.
7544         <ASSERT_EXPR>: Simplify.
7545         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
7546         Rewrite using the RHS code as discriminant.
7547         <NOP_EXPR>: Turn into CASE_CONVERT.
7548         <PLUS_EXPR>: Propagate the type of the first operand.
7549
7550 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
7551
7552         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
7553         (ia64_dconst_0_375): New.
7554         * config/ia64/ia64.c (ia64_override_options): Remove
7555         -minline-sqrt-min-latency warning.
7556         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
7557         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
7558         * config/ia64/ia64.md (*sqrt_approx): Remove.
7559         (sqrtsf2): Remove #if 0.
7560         (sqrtsf2_internal_thr): Rewrite and move to div.md.
7561         (sqrtdf): Remove assert.
7562         (sqrtdf2_internal_thr): Rewrite and move to div.md.
7563         (sqrtxf2): Remove #if 0.
7564         (sqrtxf2_internal_thr): Rewrite and move to div.md.
7565         * div.md (sqrt_approx_rf): New.
7566         (sqrtsf2_internal_thr): New implementation.
7567         (sqrtsf2_internal_lat): New.
7568         (sqrtdf2_internal_thr: New implementation.
7569         (sqrtxf2_internal): New implementation.
7570
7571 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
7572             Hans-Peter Nilsson  <hp@axis.com>
7573
7574         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
7575         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
7576         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
7577         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
7578         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
7579         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
7580         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
7581         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
7582         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
7583         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
7584         * c-common.c: ...from here.
7585
7586 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7587
7588         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
7589
7590 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7591
7592         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
7593
7594 2009-05-19  Ben Elliston  <bje@au.ibm.com>
7595
7596         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
7597         assignments with memcpy calls.
7598         (add_fdes): Likewise.
7599         (binary_search_unencoded_fdes): Likewise.
7600         (linear_search_fdes): Eliminate type puns.
7601         
7602 2009-05-19  Richard Guenther  <rguenther@suse.de>
7603
7604         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
7605         not falsely claim to have propagated into all uses.
7606
7607 2009-05-19  Ben Elliston  <bje@au.ibm.com>
7608
7609         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
7610         version to v3.0.
7611
7612 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
7613
7614         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
7615         * config/sh/sh.c (sh_legitimate_address_p): Make static.
7616         (TARGET_LEGITIMATE_ADDRESS_P): New.
7617         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
7618         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
7619         
7620 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
7621
7622         PR debug/40109
7623         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
7624         child of the containing namespace's DIE.
7625
7626 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
7627
7628         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
7629         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
7630         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
7631         extend patterns.
7632
7633 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
7634
7635         PR target/39942
7636         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
7637         gen_align with gen_pad.
7638         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
7639         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
7640
7641         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
7642         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
7643
7644         * config/i386/i386.md (align): Renamed to ...
7645         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
7646         ASM_OUTPUT_MAX_SKIP_PAD.
7647
7648 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
7649
7650         * config.gcc: Fix variable syntax.
7651
7652         PR target/39531
7653         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
7654         before calling exact_log2.
7655         (output_iorsi3): Likewise.
7656         (output_xorsi3): Likewise.
7657
7658 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
7659
7660         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
7661         for the none zero constant operand except for EQ and NE
7662         comprisons even when the first operand is R0.
7663
7664 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
7665
7666         * config/s390/2064.md: Remove trailing whitespaces.
7667         * config/s390/2084.md: Likewise.
7668         * config/s390/constraints.md: Likewise.
7669         * config/s390/fixdfdi.h: Likewise.
7670         * config/s390/libgcc-glibc.ver: Likewise.
7671         * config/s390/s390-modes.def: Likewise.
7672         * config/s390/s390-protos.h: Likewise.
7673         * config/s390/s390.c: Likewise.
7674         * config/s390/s390.h: Likewise.
7675         * config/s390/s390.md: Likewise.
7676         * config/s390/tpf-unwind.h: Likewise.
7677
7678 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
7679
7680         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
7681
7682 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
7683
7684         M68K TLS support.
7685         * configure.ac (m68k-*-*): Check if binutils support TLS.
7686         * configure: Regenerate.
7687         * config/m68k/predicates.md (symbolic_operand): Extend comment.
7688         * config/m68k/constraints.md (Cu): New constraint.
7689         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
7690         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
7691         (movsi): Handle TLS symbols.
7692         (addsi3_5200): Handle XTLS symbols, indent.
7693         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
7694         (m68k_tls_reference_p): Declare.
7695         (m68k_legitimize_address): Declare.
7696         (m68k_unwrap_symbol): Declare.
7697         * config/m68k/m68k.opt (mxtls): New option.
7698         * config/m68k/m68k.c (ggc.h): Include.
7699         (m68k_output_dwarf_dtprel): Implement hook.
7700         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
7701         (m68k_expand_prologue): Load GOT pointer when function needs it.
7702         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
7703         (m68k_legitimate_constant_address_p): Same.
7704         (m68k_decompose_address): Handle TLS references.
7705         (m68k_get_gp): New static function.
7706         (enum m68k_reloc): New contants.
7707         (TLS_RELOC_P): New macro.
7708         (m68k_wrap_symbol): New static function.
7709         (m68k_unwrap_symbol): New function.
7710         (m68k_final_prescan_insn_1): New static function.
7711         (m68k_final_prescan_insn): New function.
7712         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
7713         functions.
7714         (legitimize_pic_address): Handle TLS references..
7715         (m68k_tls_get_addr, m68k_get_tls_get_addr)
7716         (m68k_libcall_value_in_a0_p)
7717         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
7718         (m68k_call_m68k_read_tp): Helper variables and functions for ...
7719         (m68k_legitimize_tls_address): Handle TLS references.
7720         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
7721         New functions.
7722         (m68k_legitimize_address): Handle TLS symbols.
7723         (m68k_get_reloc_decoration): New static function.
7724         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
7725         UNSPEC_RELOC32.
7726         (m68k_output_dwarf_dtprel): Implement hook.
7727         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
7728         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
7729         m68k_call_* routines.
7730         (sched_attr_op_type): Handle TLS symbols.
7731         (gt-m68k.h): Include.
7732         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
7733         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
7734
7735 2009-05-18  Martin Jambor  <mjambor@suse.cz>
7736
7737         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
7738         (visit_store_addr_for_mod_analysis): New function.
7739         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
7740         (determine_cst_member_ptr): Use gimple_assign_single_p.
7741         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
7742         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
7743         operands.  Don't check number of operands of a NOP_EXPR.
7744
7745 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
7746
7747         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
7748
7749 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7750
7751         PR c/40172
7752         * c-common.c (warn_logical_operator): Don't warn if one of
7753         expression isn't always true or false.
7754
7755 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
7756
7757         * config/i386/biarch32.h: New file.
7758         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
7759
7760 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
7761
7762         * config/mips/mips.md (*zero_extend<mode>_trunchi,
7763         *zero_extend<mode>_truncqi): Merge these into ...
7764         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
7765         Name the pattern following this as *zero_extendhi_truncqi.
7766
7767 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
7768
7769         PR middle-end/39301
7770         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
7771         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
7772         (output_info): Make field HOST_WIDEST_INT.
7773         (print_statistics): Use HOST_WIDEST_INT_PRINT.
7774         (dump_bitmat_statistics): Same.
7775
7776 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
7777
7778         * config.gcc (use_gcc_stdint):  Set to wrap.
7779         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
7780         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
7781         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
7782         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
7783         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
7784         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
7785         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
7786         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
7787
7788 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
7789
7790         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
7791         tune_64.
7792         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
7793         Move definitions earlier.
7794         (OPT_ARCH64, OPT_ARCH32): Define.
7795         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
7796         and tune_64.
7797
7798 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
7799
7800         PR target/40153
7801         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
7802         implies.
7803
7804 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
7805
7806         * arm.md (movdi2): Copy non-reg values to DImode registers.
7807
7808 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
7809
7810         PR target/39942
7811         * final.c (label_to_max_skip): New function.
7812         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
7813         CODE_LABEL_NUMBER <= max_labelno.
7814         * output.h (label_to_max_skip): New prototype.
7815         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
7816         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
7817         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
7818         Handle CODE_LABELs with >= 16 byte alignment or with
7819         max_skip == (1 << align) - 1.
7820         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
7821         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
7822
7823         PR target/39942
7824         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
7825         .p2align 3 if MAX_SKIP is smaller than 7.
7826         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7827
7828 2009-05-15  Ian Lance Taylor  <iant@google.com>
7829
7830         * alias.c (struct alias_set_entry_d): Rename from struct
7831         alias_set_entry.  Change all uses.
7832         * except.c (struct call_site_record_d): Rename from struct
7833         call_site_record.  Change all uses.
7834         * except.h (struct eh_region_d): Rename from struct eh_region.
7835         Change all uses.
7836         * gcse.c (struct hash_table_d): Rename from struct hash_table.
7837         Change all uses.
7838         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
7839         ivtype_map_elt.  Change all uses.
7840         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
7841         Change all uses.
7842         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
7843         * graphite.h (struct name_tree_d): Rename from struct name_tree.
7844         Change all uses.
7845         (struct sese_d): Rename from struct sese.  Change all uses.
7846         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
7847         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
7848         * optabs.h (struct optab_d): Rename from struct optab.  Change all
7849         uses.
7850         (struct convert_optab_d): Rename from struct convert_optab.
7851         Change all uses.
7852         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
7853         ipa_opt_pass.  Change all uses.
7854         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
7855         all uses.
7856
7857         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
7858         defined as a typedef.
7859         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
7860         defined as a tag.
7861
7862 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7863
7864         PR 16302
7865         * fold-const.c (make_range,build_range_check,merge_ranges): Move
7866         declaration to...
7867         (merge_ranges): Returns bool. 
7868         * tree.h (make_range): .. to here.
7869         (build_range_check): Likewise.
7870         (merge_ranges): Likewise. Renamed from merge_ranges.
7871         * c-typeck.c (parser_build_binary_op): Update calls to
7872         warn_logical_operator.
7873         * c-common.c (warn_logical_operator): Add new warning.
7874         * c-common.h (warn_logical_operator): Update declaration.
7875         
7876 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7877
7878         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
7879         
7880 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7881
7882         * doc/install.texi: Document MPC requirements, flags etc.
7883
7884         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
7885         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
7886         Evaluate constant arguments.
7887         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
7888         (fold_builtin_1): Likewise, also evaluate constant arguments.
7889         Remove superfluous break.
7890         (do_mpc_ckconv): New.
7891         * real.h: Include mpc.h.
7892         * toplev.c (print_version): Output MPC version info if available.
7893
7894 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
7895
7896         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
7897
7898 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
7899
7900         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
7901         only once.
7902
7903 2009-05-15  Jan Hubicka  <jh@suse.cz>
7904
7905         * doc/invoke.texi (max-early-inliner-iterations): New flag.
7906         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
7907         (try_inline): Fix return value.
7908         (cgraph_decide_inlining_incrementally): Honor new value.
7909         (cgraph_early_inlining): Handle indirect inlining.
7910         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
7911
7912 2009-05-15  Jan Hubicka  <jh@suse.cz>
7913
7914         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
7915         * cgraphunit.c (cgraph_finalize_function): Set it.
7916         (cgraph_expand_function): Use it.
7917
7918 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
7919
7920         * real.c (encode_ieee_half): Define.
7921         (decode_ieee_half): Define.
7922         (ieee_half_format): Define.
7923         (arm_half_format): Define.
7924         * real.h (ieee_half_format): Declare.
7925         (arm_half_format): Declare.
7926
7927 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
7928
7929         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
7930         swapped, and reversed optabs exist before trying to use them.
7931
7932 2009-05-15  Paul Brook  <paul@codesourcery.com>
7933             Sandra Loosemore  <sandra@codesourcery.com>
7934
7935         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
7936         loads.  Allow PRE_DEC.
7937         (output_move_neon): Handle PRE_DEC.
7938         (arm_print_operand): Add 'A' for neon structure loads.
7939         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
7940         * config/arm/neon.md (neon_mov): Update comment.
7941         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
7942         calls.
7943         (Um): New constraint.
7944
7945 2009-05-15  Jan Hubicka  <jh@suse.cz>
7946
7947         Revert the following patch until testsuite fallout is fixed:
7948         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
7949         * cgraph.h (struct inline_summary): New filed self_wize,
7950         size_inlining_benefit, self_time and time_inlining_benefit.
7951         (struct cgraph_global_info): Replace insns by time ans size fields.
7952         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
7953         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
7954         (ipcp_update_callgraph): Do not touch function bodies.
7955         * ipa-inline.c: Include except.h
7956         (MAX_TIME): New constant.
7957         (overall_insns): Remove
7958         (overall_size, max_benefit): New static variables.
7959         (cgraph_estimate_time_after_inlining): New function.
7960         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
7961         (cgraph_clone_inlined_nodes): Update size.
7962         (cgraph_mark_inline_edge): Update size.
7963         (cgraph_estimate_growth): Use size info.
7964         (cgraph_check_inline_limits): Check size.
7965         (cgraph_default_inline_p): Likewise.
7966         (cgraph_edge_badness): Compute badness based on benefit and size cost.
7967         (cgraph_decide_recursive_inlining): Check size.
7968         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
7969         and times.
7970         (cgraph_decide_inlining): Likewise.
7971         (cgraph_decide_inlining_incrementally): Likewise; honor
7972         PARAM_EARLY_INLINING_INSNS.
7973         (likely_eliminated_by_inlining_p): New predicate.
7974         (estimate_function_body_sizes): New function.
7975         (compute_inline_parameters): Use it.
7976         * except.c (must_not_throw_labels): New function.
7977         * except.h (must_not_throw_labels): Declare.
7978         * tree-inline.c (init_inline_once): Kill inlining_weigths
7979         * tree-ssa-structalias.c: Avoid uninitialized warning.
7980         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
7981         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
7982         (PARAM_INLINE_CALL_COST): Remove.
7983         (PARAM_EARLY_INLINING_INSNS): New.
7984
7985 2009-05-15  Richard Guenther  <rguenther@suse.de>
7986
7987         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
7988         not TODO_update_ssa.
7989
7990 2009-05-15  Richard Guenther  <rguenther@suse.de>
7991
7992         PR tree-optimization/39999
7993         * gimple.h (gimple_expr_type): Use the expression type looking
7994         through useless conversions.
7995         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
7996         (vn_nary_op_insert_stmt): Likewise.
7997         (simplify_binary_expression): Likewise.
7998
7999 2009-05-15  Richard Guenther  <rguenther@suse.de>
8000
8001         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
8002         New options, enabled by default.
8003         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
8004         Document.
8005         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
8006         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
8007         * tree-ssa-structalias.c (gate_tree_pta): New function.
8008         (pass_build_alias): Use it.
8009
8010 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
8011
8012         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
8013         recurse on an invariant address if a conversion from a pointer
8014         type to a wider integer type is involved.
8015
8016 2009-05-15  Jan Hubicka  <jh@suse.cz>
8017
8018         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
8019         * cgraph.h (struct inline_summary): New filed self_wize,
8020         size_inlining_benefit, self_time and time_inlining_benefit.
8021         (struct cgraph_global_info): Replace insns by time ans size fields.
8022         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
8023         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
8024         (ipcp_update_callgraph): Do not touch function bodies.
8025         * ipa-inline.c: Include except.h
8026         (MAX_TIME): New constant.
8027         (overall_insns): Remove
8028         (overall_size, max_benefit): New static variables.
8029         (cgraph_estimate_time_after_inlining): New function.
8030         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
8031         (cgraph_clone_inlined_nodes): Update size.
8032         (cgraph_mark_inline_edge): Update size.
8033         (cgraph_estimate_growth): Use size info.
8034         (cgraph_check_inline_limits): Check size.
8035         (cgraph_default_inline_p): Likewise.
8036         (cgraph_edge_badness): Compute badness based on benefit and size cost.
8037         (cgraph_decide_recursive_inlining): Check size.
8038         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
8039         and times.
8040         (cgraph_decide_inlining): Likewise.
8041         (cgraph_decide_inlining_incrementally): Likewise; honor
8042         PARAM_EARLY_INLINING_INSNS.
8043         (likely_eliminated_by_inlining_p): New predicate.
8044         (estimate_function_body_sizes): New function.
8045         (compute_inline_parameters): Use it.
8046         * except.c (must_not_throw_labels): New function.
8047         * except.h (must_not_throw_labels): Declare.
8048         * tree-inline.c (init_inline_once): Kill inlining_weigths
8049         * tree-ssa-structalias.c: Avoid uninitialized warning.
8050         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
8051         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
8052         (PARAM_INLINE_CALL_COST): Remove.
8053         (PARAM_EARLY_INLINING_INSNS): New.
8054         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
8055         (inline-call-cost): Remove.
8056         (early-inlining-insns): New.
8057
8058 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
8059
8060         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
8061         for bounds.
8062         (print_int_cst_bounds_in_octal_p): Likewise.
8063         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
8064         with subtypes.
8065         * dwarf2out.c (base_type_die): Likewise.
8066         (is_subrange_type): Delete.
8067         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
8068         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
8069         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
8070         if the destination type is boolean.
8071         (build_range_check): Do not special-case subtypes.
8072         (fold_sign_changed_comparison): Likewise.
8073         (fold_unary): Likewise.
8074         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
8075         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
8076         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
8077         * tree.c (subrange_type_for_debug_p): New predicate based on the
8078         former is_subrange_type.
8079         * tree.h (subrange_type_for_debug_p): Declare.
8080         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
8081         (convert_affine_scev): Remove call to above function.
8082         (chrec_convert_aggressive): Likewise.
8083         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
8084         false for conversions involving subtypes.
8085         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
8086         (vrp_val_min): Likewise.
8087         (needs_overflow_infinity): Likewise.
8088         (extract_range_from_unary_expr): Likewise.
8089
8090 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
8091
8092         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
8093         * config/frv/frv.c: Likewise.
8094         * config/s390/s390.c: Likewise.
8095         * config/sparc/sparc.h: Likewise.
8096         * config/i386/i386.h: Likewise.
8097         * config/i386/i386.c: Likewise.
8098         * config/crx/crx.c: Likewise.
8099         * config/m68hc11/m68hc11.h: Likewise.
8100         * config/iq2000/iq2000.c: Likewise.
8101         * config/mn10300/mn10300.h: Likewise.
8102         * config/mn10300/mn10300.c: Likewise.
8103         * config/m68k/m68k.c: Likewise.
8104         * config/rs6000/rs6000.c: Likewise.
8105         * config/rs6000/xcoff.h: Likewise.
8106         * config/rs6000/linux64.h: Likewise.
8107         * config/rs6000/sysv4.h: Likewise.
8108         * config/score/score3.c: Likewise.
8109         * config/score/score7.c: Likewise.
8110         * config/score/score.c: Likewise.
8111         * config/arm/arm.md: Likewise.
8112         * config/mips/mips.c: Likewise.
8113         * config/mips/mips.md: Likewise.
8114         * config/bfin/bfin.h: Likewise.
8115         * config/pa/pa.c: Likewise.
8116         * config/pa/constraints.md: Likewise.
8117
8118         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
8119         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
8120         * config/pdp11/pdp11.h: Use memory_address_p instead.
8121
8122 2009-05-14  Ian Lance Taylor  <iant@google.com>
8123
8124         * passes.c (finish_optimization_passes): Change i to int.
8125         * plugin.c (plugins_active_p): Change event to int.
8126         (dump_active_plugins): Likewise.
8127         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
8128         Add cast.
8129         * tree.c (tree_range_check_failed): Change c to unsigned int.
8130         (omp_clause_range_check_failed): Likewise.
8131         (build_common_builtin_nodes): Change mode to int.  Add cast.
8132         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
8133         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
8134
8135         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
8136         ++ or -- with a variable of enum type.
8137
8138 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
8139
8140         PR driver/40144
8141         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
8142
8143 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
8144
8145         * store-motion.c: Do not include params.h
8146         * Makefile.in: Fix dependencies for various files.
8147
8148 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
8149
8150         * auto-inc-dec.c: Fix pass description, remove apparent
8151         accidental duplication.
8152
8153 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
8154
8155         PR middle-end/40147
8156         * ipa-utils.h (memory_identifier_string): Moved to ...
8157         * tree.h (memory_identifier_string): Here.  Add GTY(()).
8158
8159 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
8160
8161         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
8162         in the former documentation of...
8163         (GO_IF_LEGITIMATE_ADDRESS): ... this.
8164         * ira-conflicts.c (get_dup_num): Use address_operand.
8165         * targhooks.c (default_legitimate_address_p): New.
8166         * targhooks.h (default_legitimate_address_p): New.
8167         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
8168         Call hook.
8169         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
8170         * target.h (struct target): Add legitimate_address_p.
8171         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
8172         (TARGET_INITIALIZER): Include it.
8173
8174         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8175         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
8176         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
8177         (TARGET_LEGITIMATE_ADDRESS_P): New.
8178
8179         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8180         (REG_OK_STRICT_P): Delete.
8181         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
8182         (frv_legitimate_address_p_1): ... this.
8183         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
8184         (frv_legitimate_address_p_1): ... the renamed old
8185         frv_legitimate_address_p.
8186         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
8187         (TARGET_LEGITIMATE_ADDRESS_P): New.
8188
8189         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8190         * config/s390/s390-protos.h (legitimate_address_p): Remove.
8191         * config/s390/s390.c (legitimate_address_p): Rename to...
8192         (s390_legitimate_address_p): ... this, make static.
8193         (legitimize_address): Adjust call.
8194         (TARGET_LEGITIMATE_ADDRESS_P): New.
8195         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
8196
8197         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8198         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
8199         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
8200         (TARGET_LEGITIMATE_ADDRESS_P): New.
8201
8202         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8203         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
8204         * config/spu/spu.c (spu_legitimate_address): Rename to...
8205         (spu_legitimate_address_p): ... this, make static.
8206         (TARGET_LEGITIMATE_ADDRESS_P): New.
8207
8208         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8209         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
8210         * config/sparc/sparc.c (legitimate_address_p): Rename to...
8211         (sparc_legitimate_address_p): ... this, make static and return bool.
8212         (legitimize_address): Adjust call.
8213         (TARGET_LEGITIMATE_ADDRESS_P): New.
8214
8215         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8216         * config/i386/i386-protos.h (legitimate_address_p): Remove.
8217         * config/i386/i386.c (legitimate_address_p): Rename to...
8218         (ix86_legitimate_address_p): ... this, make static.
8219         (constant_address_p): Move after it, adjust call.
8220         (TARGET_LEGITIMATE_ADDRESS_P): New.
8221
8222         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8223         * config/avr/avr-protos.h (legitimate_address_p): Remove.
8224         * config/avr/avr.c (legitimate_address_p): Rename to...
8225         (avr_legitimate_address_p): ... this, make static.
8226         (legitimize_address): Adjust call.
8227         (TARGET_LEGITIMATE_ADDRESS_P): New.
8228
8229         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8230         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
8231         * config/crx/crx.c (crx_legitimate_address_p): Make static.
8232         (TARGET_LEGITIMATE_ADDRESS_P): New.
8233
8234         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8235         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
8236         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
8237         (TARGET_LEGITIMATE_ADDRESS_P): New.
8238
8239         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8240         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
8241         Remove.
8242         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
8243         Make static.
8244         (TARGET_LEGITIMATE_ADDRESS_P): New.
8245
8246         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8247         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
8248         Remove.
8249         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
8250         Rename to...
8251         (m68hc11_legitimate_address_p): ... this, make static.
8252         (go_if_legitimate_address_internal): Rename to...
8253         (m68hc11_legitimate_address_p_1): ... this.
8254         (legitimize_address): Adjust call.
8255         (TARGET_LEGITIMATE_ADDRESS_P): New.
8256
8257         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8258         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
8259         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
8260         (TARGET_LEGITIMATE_ADDRESS_P): New.
8261
8262         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8263         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
8264         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
8265         (mn10300_legitimate_address_p): ... this, make static.
8266         (TARGET_LEGITIMATE_ADDRESS_P): New.
8267
8268         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8269         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
8270         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
8271         (TARGET_LEGITIMATE_ADDRESS_P): New.
8272
8273         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8274         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
8275         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
8276         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8277         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
8278         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
8279         (rs6000_legitimate_address_p): ... this, make static.
8280         (TARGET_LEGITIMATE_ADDRESS_P): New.
8281         (REG_MODE_OK_FOR_BASE_P): Delete.
8282         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
8283
8284         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8285         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
8286         Delete.
8287         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
8288         static, adjust types.
8289         (TARGET_LEGITIMATE_ADDRESS_P): New.
8290
8291         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8292         * config/score/score.c (score_address_p): Rename to...
8293         (score_legitimate_address_p): ... this.
8294         (TARGET_LEGITIMATE_ADDRESS_P): New.
8295         * config/score/score3.c (score3_address_p): Rename to...
8296         (score3_legitimate_address_p): ... this.
8297         * config/score/score7.c (score7_address_p): Rename to...
8298         (score7_legitimate_address_p): ... this.
8299
8300         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
8301         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
8302         GO_IF_LEGITIMATE_ADDRESS): Delete.
8303         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
8304         thumb2_legitimate_address_p): Delete.
8305         (arm_legitimate_address_p): Rename to...
8306         (arm_legitimate_address_outer_p): ... this.
8307         * config/arm/constraints.md ("Uq"): Adjust call.
8308         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
8309         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
8310         to...
8311         (arm_legitimate_address_outer_p): ... this.
8312         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
8313         static.
8314         (TARGET_LEGITIMATE_ADDRESS_P): New.
8315
8316         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8317         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
8318         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
8319         (TARGET_LEGITIMATE_ADDRESS_P): New.
8320
8321         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8322         * config/vax/vax-protos.h (legitimate_address_p): Remove.
8323         * config/vax/vax.c (legitimate_address_p): Rename to...
8324         (vax_legitimate_address_p): ... this, make static.
8325         (TARGET_LEGITIMATE_ADDRESS_P): New.
8326
8327         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8328         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
8329         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
8330         (TARGET_LEGITIMATE_ADDRESS_P): New.
8331
8332         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8333         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
8334         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
8335         (mmix_legitimate_address_p): ... this, make static.
8336         (TARGET_LEGITIMATE_ADDRESS_P): New.
8337
8338         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
8339         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
8340         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
8341         (TARGET_LEGITIMATE_ADDRESS_P): New.
8342
8343 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
8344
8345         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
8346         of MODE_COMPLEX_INT.
8347
8348 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
8349
8350         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
8351         LCT_NORMAL in function call.
8352         * mips-tdump.c (print_file_desc): Add cast to enum type.
8353         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
8354         (mark_stabs): Add casts to enum types.
8355         (parse_stabs_common): Add casts to enum types.
8356
8357 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
8358
8359         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
8360         Check for invalid values of LETTER.
8361
8362 2009-05-13  Taras Glek  <tglek@mozilla.com>
8363
8364         * attribs.c (register_attribute): moved out attribute registration
8365         into register_attribute.
8366         * doc/plugins.texi: Documented register_attribute and
8367         PLUGIN_ATTRIBUTES.
8368         * gcc-plugin.h: Added forward decl for register_attribute.
8369         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
8370         * plugin.c (register_callback, invoke_plugin_callbacks): Added
8371         PLUGIN_ATTRIBUTES boilerplate.
8372
8373 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
8374
8375         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
8376         values even in sentinel and empty entries.
8377         (ms_printf_flag_specs):  Likewise.
8378         (ms_scanf_flag_specs):  Likewise.
8379         (ms_strftime_flag_specs):  Likewise.
8380         (ms_print_char_table):  Likewise.
8381         (ms_scan_char_table):  Likewise.
8382         (ms_time_char_table):  Likewise.
8383
8384 2009-05-13  Doug Kwan  <dougkwan@google.com>
8385
8386         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
8387
8388 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
8389
8390         * config/mips/mips.md (store): Add attributes for QI and HI.
8391         Update comment.
8392         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
8393         (truncdi<mode>2): ... this new pattern.
8394
8395 2009-05-13  Brad Hards  <bradh@kde.org>
8396
8397         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
8398
8399 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
8400             Ben Elliston <bje@au.ibm.com>
8401
8402         PR middle-end/40035
8403         * dse.c (check_mem_read_rtx): Guard against width == -1.
8404
8405 2009-05-13  Michael Matz  <matz@suse.de>
8406
8407         PR middle-end/39976
8408         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
8409         (trivially_conflicts_p): New function.
8410         (insert_backedge_copies): Use it.
8411
8412 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
8413
8414         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
8415         (handle_stdc_pragma): Use new enum constant names.
8416         (handle_pragma_float_const_decimal64): Ditto.
8417
8418 2009-05-13  Ian Lance Taylor  <iant@google.com>
8419
8420         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
8421         tree.def.
8422
8423 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
8424
8425         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
8426         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
8427         multilibs.
8428         * config/m68k/m68k.h (FL_UCLINUX): Define.
8429
8430 2009-05-13  Jan Hubicka  <jh@suse.cz>
8431
8432         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
8433
8434 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8435
8436         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
8437         unless -fschedule-insns is specified.
8438
8439 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8440
8441         PR target/39561
8442         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
8443         TARGET_EXPAND_CBRANCHDI4.
8444         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
8445         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
8446         (cmpeqdi): Fix comment.
8447
8448 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
8449
8450         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
8451         (sh_legitimate_address_p): Likewise.
8452         * config/sh/sh.c (sh_legitimate_index_p): New.
8453         (sh_legitimate_address_p): Likewise.
8454         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
8455         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
8456         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
8457         (MAYBE_BASE_REGISTER_RTX_P): New macro.
8458         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
8459         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
8460         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
8461         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
8462         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
8463
8464 2009-05-12  Jan Hubicka  <jh@suse.cz>
8465
8466         * tree-inline.c (estimate_operator_cost): Add operands;
8467         when division happens by constant, it is cheap.
8468         (estimate_num_insns): Loads and stores are not having cost of 0;
8469         EH magic stuff is cheap; when computing runtime cost of switch,
8470         use log2 base of amount of its cases; builtin_expect has cost of 0;
8471         compute cost for moving return value of call.
8472         (init_inline_once): Initialize time_based flags.
8473         * tree-inline.h (eni_weights_d): Add time_based flag.
8474
8475 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8476
8477         * df-core.c: Update head documentation.
8478
8479 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
8480
8481         PR bootstrap/40118
8482         * rs6000.c (rs6000_generate_compare): Use op1b instead of
8483         shadowing exisiting variable op1.
8484
8485 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
8486
8487         PR target/37179
8488         * config/i386/driver-i386.c (processor_signatures): New enum.
8489         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
8490         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
8491         processor signature to detect geode processor.
8492
8493 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8494
8495         Revert:
8496
8497         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8498
8499         * optabs.c (prepare_cmp_insn): Temporarily disable test that
8500         causes spurious differences between trunk and cond-optab branch.
8501
8502 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
8503
8504         * dojump.c (compare_from_rtx): Delete.
8505         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
8506         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
8507         if the comparison does not satisfy the predicate; test predicates for
8508         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
8509         further if one existing pattern fails.
8510         * expr.h (compare_from_rtx): Delete.
8511         (prepare_operand): Declare it.
8512         * optabs.c: Change "lib call" to "libcall" throughout.
8513         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
8514         HAVE_conditional_trap, emit_cmp_insn): Delete.
8515         (can_compare_p): Delete cmp_optab case.
8516         (prepare_float_lib_cmp): Return an rtx and a machine mode.
8517         Accept other parameters by value.
8518         (prepare_operand): Make non-static.
8519         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
8520         other parameters by value.  Try to widen operands here based on
8521         an optab_methods argument and looking at cbranch_optab.
8522         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
8523         loop.  Use cbranch_optab directly.
8524         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
8525         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
8526         assertion.
8527         (emit_conditional_move, emit_conditional_add): Inline what's needed
8528         of compare_from_rtx, using new prepare_cmp_insn for the rest.
8529         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
8530         with COMPARE.  Move cmov_optab and cstore_optab above
8531         with cbranch_optab, move cmp_optab down with ucmp_optab,
8532         remove tst_otpab.  Do not initialize trap_rtx.
8533         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
8534         for trap code.  Do not check HAVE_conditional_trap.  Use
8535         prepare_cmp_insn.  Accept no predicate for operand 3.
8536         * optabs.h (OTI_cmp): Mark as used only for libcalls.
8537         (OTI_ctrap, ctrap_optab): New.
8538         (tst_optab): Delete.
8539         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
8540         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
8541         with lookup of ctrap_optab.
8542         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
8543         Delete.
8544         (ctrap_optab): New.
8545
8546         * combine.c (combine_simplify_rtx, simplify_set): Do not
8547         special case comparing against zero for cc0 machines.
8548         * simplify-rtx.c (simplify_binary_operation_1): Never remove
8549         COMPARE on cc0 machines.
8550         (simplify_relational_operation): Return a new expression when
8551         a COMPARE could be removed.
8552         * final.c (final_scan_insn): Compare cc_status values
8553         against LHS of a (compare FOO (const_int 0)) cc0 source.
8554         Also check if cc_status.value is the full compare.
8555
8556         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
8557         (cstoreMM4): Document.
8558         (conditional_trap): Document ctrapMM4 instead.
8559         (sync_compare_and_swapMM): Refer to cbranchcc4.
8560         (Dependent Patterns): Eliminate obsolete information referring to
8561         the old jump optimization phase.
8562         (Canonicalization): Include cbranchcc4 case, omit canonicalization
8563         of compares with 0 on cc0 machines.
8564         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
8565         avoiding references to cc0.  Remove text about storing operands
8566         in cmpMM.
8567         * doc/tm.texi (Condition Codes): Include blurb on different
8568         condition code representations, separate into subsections for
8569         CC0, MODE_CC and conditional execution.
8570
8571         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
8572         alpha_emit_setcc): Accept operands and a machine mode.
8573         * config/alpha/alpha.c (alpha_emit_conditional_branch):
8574         Get code/op0/op1 from operands, use machine mode argument
8575         instead of alpha_compare.fp_p.  Emit the branch here.
8576         (alpha_emit_setcc): Likewise, and return boolean.
8577         (alpha_emit_conditional_move): Likewise.  Assert that
8578         cmp_op_mode == cmp_mode, and simplify accordingly.
8579         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
8580         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
8581         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
8582         Delete.
8583         (stack probe test): Use cbranchdi4.
8584         * config/alpha/predicates.md (alpha_cbranch_operator): New.
8585
8586         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
8587         * config/arc/arc.h (movsicc, movsfcc): Use it.
8588         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
8589         (cbranchsi4, cstoresi4): New.
8590         (cmpsi, bCC and sCC expanders): Remove. 
8591
8592         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
8593         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
8594         * config/arm/predicates.md (arm_comparison_operator): Only include
8595         floating-point operators if there is a hardware floating-point unit.
8596         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
8597         deferring to cbranch_cc and cstore_cc respectively.
8598         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
8599         cbranch_cc, cstore_cc): New.
8600         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
8601         arm_compare_op1.
8602         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
8603
8604         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
8605         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
8606         as an argument.
8607         (adjust_insn_length): Adjust calls.
8608         (avr_reorg): Handle (compare (foo) (const_int 0)).
8609         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
8610         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
8611         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
8612         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
8613         (bCC): Remove.
8614         (cbranchqi4, cbranchhi4, cbranchsi4): New.
8615         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
8616
8617         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
8618         (cbranchsi4, cstorebi4, cstoresi4): New.
8619         (movbisi): This insn is duplicate, split it to zero_extend.
8620         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
8621         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
8622         (bfin_optimize_loop): Use cbranch expander.
8623         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
8624         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
8625         (bfin_bimode_comparison_operator): ... this.
8626         (bfin_direct_comparison_operator): New.
8627  
8628         * config/cris/cris.c (cris_normal_notice_update_cc): Look
8629         inside (compare FOO (const_int 0)).
8630         (cris_rtx_costs): Handle ZERO_EXTRACT.
8631         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
8632         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
8633         (*tstdi_v32): Delete.
8634         (*cmpdi_non_v32): Add M alternative for operand 1.
8635         (cmpsi, cmp<mode>): Make private.
8636         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
8637         with COMPARE.
8638         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
8639
8640         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
8641         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
8642         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
8643         (cc_reg_operand): New.
8644         (any_cond): Delete.
8645         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
8646         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
8647         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
8648         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
8649         crx_expand_scond): Delete.
8650
8651         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
8652         (cbranchsi4): New.
8653         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
8654         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
8655
8656         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
8657         cstoresi4, cstoresf4, cstoredf4): New.
8658         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
8659         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
8660         Receive the entire operands array.
8661         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
8662         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
8663         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
8664         Get test/op0/op1 from the operands array.
8665         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
8666
8667         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
8668         (h8300_expand_store): New.
8669         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
8670         (const_int 0)).
8671         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
8672         (h8300_expand_store): New.
8673         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
8674         or do not try to produce (set (cc0) REG).
8675         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
8676         change a compare into a move to a scratch register.  Disable some
8677         peepholes when comparing with zero.
8678         (tstsi, tsthi, tstsi, cmpqi): Make private.
8679         (cmphi): Delete.
8680         (bCC, sCC): Delete.
8681         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
8682         cstoresi4): New.
8683
8684         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
8685         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
8686         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
8687         (ix86_emit_i387_log1p): Use cbranchxf2.
8688         (ix86_expand_setcc): Return void.
8689         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
8690         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
8691         cmp<MODEF>, cmpcc): Remove.
8692         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
8693         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
8694         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
8695         (sCC and bCC expanders): Remove.
8696         (stack_protect_test): Use cbranchcc4.
8697
8698         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
8699         Delete.
8700         (ia64_expand_compare): Accept three rtx by reference and return void.
8701         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
8702         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
8703         from *expr.  Update *expr with the BImode comparison to do.
8704         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
8705         cmptf, bCC, sCC, conditional_trap): Delete.
8706         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
8707         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
8708         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
8709         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
8710         * config/ia64/predicates.md (ia64_cbranch_operator): New.
8711
8712         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
8713         type of last argument.
8714         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
8715         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
8716         use machine mode argument instead of branch_type.  Remove dead
8717         code for floating-point comparisons.
8718         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
8719         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
8720         Remove.
8721         (cbranchsi4, cstoresi4): New.
8722         * config/iq2000/predicates.md (reg_or_const_operand): New.
8723
8724         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
8725         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
8726         (b<code>_op): Rewrite to...
8727         (bcc_op): ... this, using match_operator.
8728         (s<code>_op): Rewrite to...
8729         (scc_op): ... this, using match_operator.
8730         (s<code>_24_op): Rewrite to...
8731         (scc_op_24): ... this, using match_operator.
8732         (s<code>_<mode>): Rewrite to...
8733         (cstore<mode>4): ... this, using match_operator.
8734         (s<code>_<mode>_24): Rewrite to...
8735         (cstore<mode>4_24): ... this, using match_operator.
8736         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
8737         m32c_unpend_compare, m32c_expand_scc): Delete.
8738         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
8739         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
8740         (m32c_expand_movcc): Change NE to EQ if necessary.
8741         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
8742
8743         * config/m32r/m32r-protos.h (gen_cond_store): New.
8744         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
8745         (gen_cond_store): New, from sCC patterns.
8746         (m32r_expand_block_move): Use cbranchsi4.
8747         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
8748         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
8749         (cbranchsi4, cstoresi4): New.
8750         
8751         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
8752         Delete.
8753         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
8754         (m68hc11_notice_update_cc): Look into a compare with 0.
8755         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
8756         Delete.
8757         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
8758         cmphi, cmpqi, bCC): Delete.
8759         (cbranchsi4, cbranchhi4, cbranchqi4): New.
8760         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
8761         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
8762         sets with COMPARE.
8763
8764         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
8765         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
8766         * config/m68k/constraints.md (H): New.
8767         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
8768         the define_insn below.
8769         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
8770         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
8771         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
8772         patterns): Wrap RHS with COMPARE.
8773         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
8774         (*cmpdi_internal): Name this pattern.
8775         (cmpdi): Change to define_insn.
8776         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
8777         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
8778         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
8779         predicate.
8780         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
8781         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
8782         (conditional_trap): Change to...
8783         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
8784         (*conditional_trap): Use the ordered_comparison_operator and
8785         const1_operand predicates.
8786         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
8787         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
8788         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
8789         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
8790
8791         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
8792         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
8793         (mcore_gen_compare): New. 
8794         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
8795         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
8796         (mcore_gen_compare): ... this.
8797         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
8798         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
8799         (stack probe pattern): Use cbranchsi4.
8800
8801         * config/mips/predicates.md (mips_cstore_operator): New.
8802         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
8803         * config/mips/mips.md (any_cond): Delete.
8804         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
8805         always succeed.
8806         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
8807         fixuns_truncsfdi2): Use cbranch patterns.
8808         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
8809         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
8810         Adjust call to mips_expand_conditional_branch.
8811         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
8812         cstore<GPR:mode>4.
8813         * config/mips/mips-protos.h (mips_expand_conditional_branch,
8814         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
8815         * config/mips/mips.c (cmp_operands): Delete.
8816         (mips_emit_compare): Get comparison operands from *op0/*op1.
8817         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
8818         that it succeeds.  Use op0/op1 instead of cmp_operands.
8819         (mips_expand_conditional_branch, mips_expand_conditional_move,
8820         mips_expand_conditional_trap): Likewise.
8821         (mips_block_move_loop): Use cbranch patterns. 
8822         * config/mips/mips.h (cmp_operands): Delete.
8823
8824         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
8825         (mmix_gen_compare_reg): Just return a register in the right CC mode.
8826         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
8827         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
8828         (*cmpcc_folded): Rename to...
8829         (*cmpdi_folded): this.
8830         (*cmpcc): Rename to...
8831         (*cmps): ... this.
8832         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
8833         (bCC): Remove.
8834         (cbranchdi4): New.
8835         (cbranchdf4): New.  Handle invalid comparisons here.
8836         * config/mmix/predicates.md (float_comparison_operator): New.
8837
8838         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
8839         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
8840         * config/mn10300/mn10300.md (tst): Delete.
8841         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
8842         Name these patterns and wrap RHS in a compare.
8843         (*cmpsi): Make this pattern private.  Include tst.
8844         (*cmpsf): Make this pattern private.
8845         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
8846         (compare with zero peepholes): Likewise.
8847         (bCC): Remove.
8848         (cbranchsi4, cbranchsf4): New.
8849         (casesi): Use cbranchsi4.
8850
8851         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
8852         hppa_branch_type): Delete.
8853         (return_addr_rtx): Use cbranchsi4.
8854         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
8855         Emit CCFPmode comparison here.
8856         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
8857         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
8858         hppa_branch_type): Delete.
8859         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
8860         (movsicc, movdicc): Remove references to hppa_compare_op0,
8861         hppa_compare_op1 and compare_from_rtx.
8862         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
8863         (casesi): Use cbranchsi4.
8864
8865         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
8866         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
8867         * config/pdp11/pdp11.md (register_or_const0_operand): New.
8868         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
8869         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
8870         (bCC): Delete.
8871         (cbranchdf4, cbranchhi4, cbranchqi4): New.
8872         (*branch, *branch_inverted): New.
8873
8874         * config/picochip/picochip.md (cbranchhi4): Use
8875         ordered_comparison_operator.
8876         (cmphi, bCC): Remove.
8877
8878         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
8879         (trap_comparison_operator): Delete.
8880         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
8881         rs6000_emit_cbranch): Accept mode and operands.
8882         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
8883         rs6000_compare_fp_p): Delete.   
8884         (rs6000_generate_compare): Accept mode and comparison.  Extract code
8885         and op0/op1 from there.  Replace references to rs6000_compare_op0
8886         and rs6000_compare_op1.
8887         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
8888         extract result from passed operands.
8889         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
8890         extract loc from passed operands.
8891         (rs6000_emit_cmove): Likewise.
8892         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
8893         rs6000_compare_fp_p): Delete.
8894         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
8895         (cbranch<GPR>4, cbranch<FP>4): New.
8896         (cstore<mode>4): New.  Consolidate here all choices about when to use
8897         portable or specialized sCC sequences.
8898         (stack_protect_test): Use cbranchsi4.
8899         (conditional_trap): Replace with ctrap<GPR>4.
8900         (conditional trap insn): Replace trap_comparison_operator with
8901         ordered_comparison_operator. 
8902
8903         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
8904         (s390_emit_prologue): Use ctrap.
8905         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
8906         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
8907         New predicates replacing...
8908         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
8909         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
8910         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
8911         (add<mode>cc): Do not use s390_compare_op0/op1.
8912         (s<code>): Change to...
8913         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
8914         (seq): Change to...
8915         (cstorecc4): ... this.  Handle EQ or NE equally.
8916         (*sne): Un-privatize for use in cstorecc4.
8917         (b<code>): Change to...
8918         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
8919         (conditional_trap): Replace with...
8920         (ctrap<GPR>4, ctrap<FP>4): ... these.
8921         (stack_protect): Use cbranchcc4.
8922
8923         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
8924         * config/score/score-protos.h (score_gen_cmp): Delete.
8925         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
8926         (score_block_move-loop): Use cbranchsi4.
8927         * config/score/score.md (cbranchsi4): New.
8928         (cmpsi, bCC): Delete.
8929         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
8930         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
8931         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
8932         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
8933         * config/score/score3.h (score3_gen_cmp): Delete.
8934         * config/score/score7.h (score7_gen_cmp): Delete.
8935
8936         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
8937         (sh_emit_scc_to_t): ... this.  Return void.
8938         (from_compare): Rename to...
8939         (sh_emit_compare_and_branch): ... this.
8940         (sh_emit_compare_and_set): New.
8941         (sh_expand_t_scc): Accept operands.
8942         * config/sh/predicates.md (sh_float_comparison_operator): New.
8943         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
8944         (prepare_scc_operands): Rename to...
8945         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
8946         arguments.
8947         (sh_emit_cheap_store_flag): New.
8948         (sh_emit_set_t_insn): New.
8949         (from_compare): Rename to...
8950         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
8951         handling of TARGET_SH2E floating point to avoid recursive call.
8952         Generate branch here.
8953         (sh_emit_compare_and_set): New.
8954         (sh_expand_t_scc): Get op0/op1 from arguments.
8955         (sh_emit_cheap_store_flag): New.
8956         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
8957         cases.
8958         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
8959         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
8960         (movsicc, movdicc): Do nothing when it recreated operands from
8961         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
8962         prepare_scc_operands (now sh_emit_scc_to_t).
8963         (udivdi3): Use cstoresi4.
8964         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
8965         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
8966         (cbranchint4_media, cbranchfp4_media): New.
8967         (casesi): Use cbranchdi4.
8968         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
8969         Delete.
8970         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
8971         (movnegt): Remove second operand.
8972         (cbranchsf4, cbranchdf4): New.
8973         (stack_protect): Use cbranchdi4/cbranchsi4.
8974
8975         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
8976         (gen_compare_reg): Accept comparison, extract part of it to...
8977         (gen_compare_reg_1): ... this. 
8978         (gen_compare_operator): Delete.
8979         (gen_v9_scc): Accept separate destination, comparison code and arms.
8980         Do not use sparc_compare_op0/sparc_compare_op1.
8981         (emit_scc_insn, emit_conditional_branch_insn): New.
8982         (emit_v9_brxx): Make static.  Remove useless assertion.
8983         (sparc_emit_float_lib_cmp): Return RTL instead of calling
8984         emit_cmp_insn.
8985         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
8986         * config/sparc/sparc-protos.h (gen_compare_reg,
8987         sparc_emit_float_lib_cmp): Adjust prototype.
8988         (emit_scc_insn, emit_conditional_branch_insn): New.
8989         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
8990         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
8991         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
8992         iterators to the top.
8993         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
8994         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
8995         snedi_special_trunc): Delete.
8996         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
8997         and snedi_special_trunc.
8998         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
8999         cbranchdi4, cbranch<F:mode>4): New.
9000         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
9001         here.  Use gen_compare_reg instead of gen_compare_operator.
9002         (conditional_trap): Replace with...
9003         (ctrapsi4, ctrapdi4): ... this.
9004         (stack_protect_test): Use cbranchcc4.
9005
9006         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
9007         argument to rtx.
9008         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
9009         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
9010         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
9011         from operands[0] or operands[3] depending on is_set.
9012         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
9013         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
9014         cmpdf, bCC), sCC: Remove.
9015         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
9016         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
9017         cstoredf4): New.
9018         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
9019         spu_emit_branch_or_set.
9020
9021         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
9022         Add two arguments.
9023         * config/stormy16/stormy16.h (xstormy16_compare_op0,
9024         xstormy16_compare_op1): Delete.
9025         * config/stormy16/stormy16.c (xstormy16_compare_op0,
9026         xstormy16_compare_op1): Delete. 
9027         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
9028         Adjust calls.
9029         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
9030         (cmphi, cmpsi, bCC): Remove.
9031
9032         * config/v850/v850.md (tstsi, cmpsi): Fold into...
9033         (*cmpsi): ... this one.
9034         (cbranchsi4, cstoresi4): New.
9035         (bCC expanders): Delete.
9036         (sCC insns): Fold into...
9037         (*setcc): ... this one.
9038         (casesi): Do not use gen_cmpsi and gen_bgtu. 
9039         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
9040         (movsicc): Simplify.
9041         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
9042
9043         * config/vax/vax-protos.h (cond_name): New.
9044         (vax_output_conditional_branch): Remove.
9045         * config/vax/vax.c (cond_name): New.
9046         (vax_output_conditional_branch): Remove.
9047         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
9048         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
9049         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
9050         (bit<VAXint>): Wrap source with (compare).
9051         (b<code> and following unnamed pattern): Rename to *branch and
9052         *branch_reversed.  Change macroization to match_operator.
9053         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
9054
9055         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
9056         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
9057         Change last argument to machine_mode.
9058         (xtensa_expand_scc): Add machine_mode argument.
9059         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
9060         (gen_conditional_move, xtensa_expand_conditional_branch,
9061         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
9062         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
9063         Adjust operand numbers.
9064         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
9065         Delete.
9066         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
9067         (cmpsi, cmpsf, b<code>, s<code>): Delete.
9068         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
9069
9070 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
9071
9072         * optabs.c (prepare_cmp_insn): Temporarily disable test that
9073         causes spurious differences between trunk and cond-optab branch.
9074
9075 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
9076
9077         PR target/37137
9078         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
9079
9080 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
9081
9082         * tree.c (iterative_hash_pointer): Delete.
9083         (iterative_hash_expr): Short-circuit handling of NULL pointer.
9084         Hash UIDs and versions of SSA names.  Don't special-case built-in
9085         function declarations.
9086
9087 2009-05-11  Ian Lance Taylor  <iant@google.com>
9088
9089         PR bootstrap/40103
9090         * graphite.c: Force -Wc++-compat to only be a warning before
9091         #including "cloog/cloog.h".
9092
9093 2009-05-11  Martin Jambor  <mjambor@suse.cz>
9094
9095         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
9096         
9097 2009-05-11  Jan Hubicka  <jh@suse.cz>
9098
9099         * tree-ssa-loop-ivcanon.c: Include target.h
9100         (struct loop_size): new structure.
9101         (constant_after_peeling): New predicate.
9102         (tree_estimate_loop_size): New function.
9103         (estimated_unrolled_size): Rewrite for new estimates.
9104         (try_unroll_loop_completely): Use new estimates.
9105         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
9106
9107 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9108
9109         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
9110         libcpp interface change.
9111         (spu_macro_to_expand): Likewise.
9112
9113 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
9114
9115         PR tree-optimization/40026
9116         * gimplify.c (gimplify_init_constructor): Change initial conditional
9117         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
9118         optimize_compound_literals_in_ctor.
9119
9120 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
9121
9122         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
9123         New devices.
9124         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
9125
9126 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
9127
9128         * tree-vect-data-refs.c (vect_analyze_group_access): Use
9129         HOST_WIDE_INT for gap.
9130
9131 2009-05-11  Ira Rosen  <irar@il.ibm.com>
9132
9133         PR tree-optimization/40074
9134         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
9135         account in group size and step comparison.
9136
9137 2009-05-11  Richard Guenther  <rguenther@suse.de>
9138
9139         * passes.c (init_optimization_passes): Strip now incorrect comment.
9140         (execute_function_todo): Do not set PROP_alias.
9141         * tree-pass.h (PROP_alias): Remove.
9142         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
9143         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
9144         * tree-nrv.c (pass_return_slot): Likewise.
9145         * tree-object-size.c (pass_object_sizes): Likewise.
9146         * tree-ssa-dom.c (pass_dominator): Likewise.
9147         (pass_phi_only_cprop): Likewise.
9148         * tree-ssa-dse.c (pass_dse): Likewise.
9149         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
9150         (pass_cselim): Likewise.
9151         * tree-ssa-pre.c (pass_pre): Likewise.
9152         (pass_fre): Likewise.
9153         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
9154         * tree-ssa-sink.c (pass_sink_code): Likewise.
9155         * tree-stdarg.c (pass_stdarg): Likewise.
9156         * tree-tailcall.c (pass_tail_calls): Likewise.
9157         * tree-vrp.c (pass_vrp): Likewise.
9158
9159 2009-05-10  Ian Lance Taylor  <iant@google.com>
9160
9161         * basic-block.h (enum profile_status): Break out of struct
9162         control_flow_graph.
9163         * cgraph.h (struct inline_summary): Break out of struct
9164         cgraph_local_info.
9165         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
9166         of struct cgraph_order_sort.
9167         * combine.c (enum undo_kind): New enum, broken out of struct undo.
9168         * cse.c (struct branch_path): Break out of struct
9169         cse_basic_block_data.
9170         * except.h (enum eh_region_type): Break out of struct eh_region.
9171         * gcc.c (enum add_del): Break out of struct modify_target.
9172         * genrecog.c (enum decision_type): Break out of struct decision_test.
9173         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
9174         ggc_pch_data.
9175         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
9176         * regmove.c (enum match_use): New enum, broken out of struct match.
9177         * sched-int.h (enum post_call_group): New enum, broken out of
9178         struct deps.
9179         (struct deps_reg): Break out of struct deps.
9180         * target.h (struct asm_int_op): Break out of struct gcc_target.
9181         * tree-eh.c (struct goto_queue_node): Break out of struct
9182         leh_tf_state.
9183         * tree-inline.h (enum copy_body_cge_which): Break out of
9184         copy_body_data.
9185         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
9186
9187         * c-decl.c (in_struct, struct_types): New static variables.
9188         (pushtag): Add loc parameter.  Change all callers.
9189         (lookup_tag): Add ploc parameter.  Change all callers.
9190         (check_compound_literal_type): New function.
9191         (parser_xref_tag): Add loc parameter.  Change all callers.  If
9192         -Wc++-compat, warn about struct/union/enum types defined within a
9193         struct or union.
9194         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
9195         and loc parameters.  Change all callers.  Change error calls to
9196         error_at, using loc.  For a redefinition, if the location of the
9197         original definition is known, report it.  Set in_struct and
9198         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
9199         (finish_struct): Add new parameters enclosing_in_struct and
9200         enclosing_struct_types.  Change all callers.  Set
9201         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
9202         in the struct.  If in a struct, add this struct to struct_types.
9203         (start_enum): Add loc parameter.  Change all callers.  Use
9204         error_at for errors, using loc.  For a redefinition, if the
9205         location of the original definition is known, report it.  If in a
9206         struct, add this enum type to struct_types.  If -Wc++-compat warn
9207         if in sizeof, typeof, or alignof.
9208         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
9209         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
9210         (c_parser_enum_specifier): Get enum location for start_enum.
9211         (c_parser_struct_or_union_specifier): Get struct location for
9212         start_struct.  Save in_struct and struct_types status between
9213         start_struct and finish_struct.
9214         (c_parser_cast_expression): Get location of cast.
9215         (c_parser_alignof_expression): Get location of type.
9216         (c_parser_postfix_expression): Likewise.
9217         (c_parser_postfix_expression_after_paren_type): Add type_loc
9218         parameter.  Change all callers.  Call check_compound_literal_type.
9219         Use type_loc for error about variable size type.
9220         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
9221         of an enum constant from an enum type defined in a struct or union.
9222         (c_cast_expr): Add loc parameter.  Change all callers.  If
9223         -Wc++-compat, warn about defining a type in a cast.
9224         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
9225         (start_enum, start_struct, finish_struct): Update declarations.
9226         (parser_xref_tag, c_cast_expr): Update declarations.
9227         (check_compound_literal_type): Declare.
9228
9229 2009-05-11  Ben Elliston  <bje@au.ibm.com>
9230
9231         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
9232         for recent libcpp interface change.
9233         (rs6000_macro_to_expand): Likewise.
9234
9235 2009-05-10  Michael Matz  <matz@suse.de>
9236
9237         PR target/40031
9238         * config/arm/arm.c (require_pic_register): Emit on entry edge,
9239         not at entry of function.
9240
9241 2009-05-10  Richard Guenther  <rguenther@suse.de>
9242
9243         PR tree-optimization/40081
9244         Revert
9245         * tree-sra.c (instantiate_element): Instantiate scalar replacements
9246         using the main variant of the element type.  Do not fiddle with
9247         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
9248
9249         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
9250         structs with volatile fields.
9251
9252 2009-05-10  Jan Hubicka  <jh@suse.cz>
9253
9254         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
9255         (estimate_move_cost): Assert that it does not get called for
9256         VOID_TYPE_P.
9257         (estimate_num_insns): Skip VOID types in argument handling.
9258         (optimize_inline_calls): Delete unreachable blocks and verify that
9259         callgraph is valid.
9260
9261 2009-05-10  Jan Hubicka  <jh@suse.cz>
9262
9263         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
9264         * cgraph.c (cgraph_mark_address_taken_node): New function.
9265         (dump_cgraph_node): Dump new flag.
9266         * cgraph.h (struct cgraph_node): Add address_taken.
9267         (cgraph_mark_address_taken_node): New function.
9268         * ipa.c (cgraph_postorder): Prioritize functions with address taken
9269         since new direct calls can be born.
9270
9271 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
9272
9273         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
9274         tok->val.node.node.
9275
9276 2009-05-10  Jan Hubicka  <jh@suse.cz>
9277
9278         PR middle-end/40084
9279         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
9280         argument; rewrite.
9281         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
9282         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
9283         * tree-inline.c (copy_bb): Set frequency correctly.
9284         (fold_marked_statements): Update call to
9285         cgraph_update_edges_for_call_stmt.
9286
9287 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
9288
9289         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
9290         identifiers in diagnostics.
9291         * config/arm/arm.c (arm_handle_fndecl_attribute,
9292         arm_handle_isr_attribute): Likewise.
9293         * config/avr/avr.c (avr_handle_progmem_attribute,
9294         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
9295         * config/bfin/bfin.c (handle_int_attribute,
9296         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
9297         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
9298         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
9299         Likewise.
9300         * config/darwin.c (darwin_handle_kext_attribute,
9301         darwin_handle_weak_import_attribute): Likewise.
9302         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
9303         h8300_handle_eightbit_data_attribute,
9304         h8300_handle_tiny_data_attribute): Likewise.
9305         * config/i386/i386.c (ix86_handle_cconv_attribute,
9306         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
9307         * config/i386/winnt.c (ix86_handle_shared_attribute,
9308         ix86_handle_selectany_attribute): Likewise.
9309         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
9310         * config/m32c/m32c.c (function_vector_handler): Likewise.
9311         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
9312         m68hc11_handle_fntype_attribute): Likewise.
9313         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
9314         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
9315         * config/mips/mips.c (mips_insert_attributes,
9316         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
9317         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
9318         rs6000_handle_struct_attribute): Likewise.
9319         * config/sh/sh.c (sh_insert_attributes,
9320         sh_handle_resbank_handler_attribute,
9321         sh_handle_interrupt_handler_attribute,
9322         sh2a_handle_function_vector_handler_attribute,
9323         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
9324         Likewise.
9325         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
9326         * config/spu/spu.c (spu_handle_fndecl_attribute,
9327         spu_handle_vector_attribute): Likewise.
9328         * config/stormy16/stormy16.c
9329         (xstormy16_handle_interrupt_attribute): Likewise.
9330         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
9331         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
9332
9333 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
9334
9335         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
9336         (pp_translate_identifiers): New.
9337         (pp_identifier): Only conditionally translate identifier to locale
9338         character set.
9339         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
9340         (pp_base_tree_identifier): Only conditionally translate identifier
9341         to locale character set.
9342         * c-pretty-print.c (M_): Define.
9343         (pp_c_type_specifier, pp_c_primary_expression): Mark English
9344         fragments for conditional translation with M_.
9345         * tree-pretty-print.c (maybe_init_pretty_print): Disable
9346         identifier translation.
9347
9348 2009-05-10  Richard Guenther  <rguenther@suse.de>
9349
9350         PR tree-optimization/40081
9351         * tree-sra.c (instantiate_element): Instantiate scalar replacements
9352         using the main variant of the element type.  Do not fiddle with
9353         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
9354
9355 2009-05-09  Jan Hubicka  <jh@suse.cz>
9356
9357         PR middle-end/40080
9358         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
9359         indirect calls; verify cgraph afterwards.
9360
9361 2009-05-09  Jan Hubicka  <jh@suse.cz>
9362
9363         PR bootstrap/40082
9364         * ipa.c (update_inlined_to_pointer): New function.
9365         (cgraph_remove_unreachable_nodes): Use it.
9366
9367 2009-05-09  Jan Hubicka  <jh@suse.cz>
9368
9369         * tree-eh.c (struct leh_state): Remove prev_try.
9370         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
9371         not track prev_try.
9372         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
9373         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
9374         remove_eh_handler_and_replace, foreach_reachable_handler,
9375         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
9376         * except.h (struct eh_region): Remove eh_region_u_cleanup.
9377         (gen_eh_region_cleanup): Update prototype.
9378
9379 2009-05-09  Jan Hubicka  <jh@suse.cz>
9380
9381         PR middle-end/40043
9382         * except.c (copy_eh_region): Always set prev_try.
9383         (redirect_eh_edge_to_label): Find outer try.
9384         (foreach_reachable_handler): When looking for prev try
9385         handle case where previous try is not going to be taken.
9386
9387 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
9388
9389         PR tree-optimization/40049
9390         * tree-vect-stmts.c (vectorizable_operation): If the machine has
9391         only vector/vector shifts, convert the type of the constant to the
9392         appropriate type to avoid building incorrect trees, which
9393         eventually have problems with garbage collection.
9394
9395 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
9396
9397         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
9398         -1 for complex floating-point types if honoring signed zeros.
9399
9400 2009-05-08  Jan Hubicka  <jh@suse.cz>
9401
9402         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
9403         argument; handle correctly when profile is absent.
9404         (build_cgraph_edges): Update.
9405         (rebuild_cgraph_edges): Update.
9406         * cgraph.c: Do not include varray.h.
9407         (cgraph_set_call_stmt_including_clones): New function.
9408         (cgraph_create_edge_including_clones): Likewise
9409         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
9410         (cgraph_update_edges_for_call_stmt): Handle clones.
9411         (cgraph_remove_node): Handle clone tree.
9412         (cgraph_remove_node_and_inline_clones): New function.
9413         (dump_cgraph_node): Dump clone tree.
9414         (cgraph_clone_node): Handle clone tree.
9415         (clone_function_name): Bring here from tree-inline.c.
9416         (cgraph_create_virtual_clone): New function.
9417         * cgraph.h (ipa_replace_map): Move here from ipa.h.
9418         (cgraph_clone_info): New function.
9419         (strut cgraph_node): Add clone_info and new clone tree pointers.
9420         (cgraph_remove_node_and_inline_clones,
9421         cgraph_set_call_stmt_including_clones,
9422         cgraph_create_edge_including_clones,
9423         cgraph_create_virtual_clone): Declare.
9424         (cgraph_function_versioning): Use VEC argument.
9425         (compute_call_stmt_bb_frequency): Update prototype.
9426         (cgraph_materialize_all_clones): New function.
9427         * ipa-cp.c (ipcp_update_cloned_node): Remove.
9428         (ipcp_create_replace_map): Update to VECtors.
9429         (ipcp_update_callgraph): Use virtual clones.
9430         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
9431         (ipcp_update_profiling): Do not update local profiling.
9432         (ipcp_insert_stage): Use VECtors and virtual clones.
9433         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
9434         (clone_of_p): New function.
9435         (cgraph_preserve_function_body_p): Use clone tree.
9436         (cgraph_optimize): Materialize clones.
9437         (cgraph_function_versioning): Update for VECtors.
9438         (save_inline_function_body): Use clone tree.
9439         (cgraph_materialize_clone): New function.
9440         (cgraph_materialize_all_clones): Likewise.
9441         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
9442         * ipa.c: Include gimple.h.
9443         (cgraph_remove_unreachable_nodes): Use clone tree.
9444         * ipa-prop.c (ipa_note_param_call): Update call to
9445         compute_call_stmt_bb_frequencycall.
9446         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
9447         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
9448         (copy_bb): Handle updating of clone tree; add new edge when new call
9449         appears.
9450         (expand_call_inline): Be strict about every call having edge.
9451         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
9452         (delete_unreachable_blocks_update_callgraph): New function.
9453         (tree_function_versioning): Use VECtors; always remove unreachable
9454         blocks and fold conditionals.
9455         * tree-inline.h: Do not include varray.h.
9456         (tree_function_versioning): Remove.
9457         * Makefile.in (GTFILES): Remove tree-inline.c
9458         * passes.c (do_per_function): Do only functions having body.
9459         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
9460         tree.
9461
9462 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
9463             Andrew Morrow  <acm@google.com>
9464
9465         PR c/36892
9466         * c-common.c (c_common_attribute_table): Permit deprecated
9467         attribute to take an optional argument.
9468         (handle_deprecated_attribute): If the optional argument to
9469         __attribute__((deprecated)) is not a string ignore the attribute
9470         and emit a warning.
9471
9472         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
9473         * c-typeck.c (build_component_ref): Likewise.
9474         (build_external_ref): Likewise.
9475
9476         * toplev.c (warn_deprecated_use): Add an attribute argument.
9477         Emit the message associated with __attribute__((deprecated)).
9478
9479         * toplev.h (warn_deprecated_use): Updated.
9480
9481         * doc/extend.texi: Document new optional parameter to
9482         __attribute__((deprecated))
9483
9484 2009-05-08  Michael Eager <eager@eagercon.com>
9485
9486         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
9487         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
9488
9489 2009-05-08  Richard Guenther  <rguenther@suse.de>
9490
9491         PR tree-optimization/40062
9492         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
9493         Avoid exponential behavior.
9494
9495 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
9496
9497         PR rtl-optimization/33928
9498         PR 26854
9499         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
9500         process_uses, build_single_def_use_links): New.
9501         (update_df): Update use_def_ref.
9502         (forward_propagate_into): Use get_def_for_use instead of use-def
9503         chains.
9504         (fwprop_init): Call build_single_def_use_links and let it initialize
9505         dataflow.
9506         (fwprop_done): Free use_def_ref.
9507         (fwprop_addr): Eliminate duplicate call to df_set_flags.
9508         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
9509         df_rd_simulate_one_insn): New.
9510         (df_rd_bb_local_compute_process_def): Update head comment.
9511         (df_chain_create_bb): Use the new RD simulation functions.
9512         * df.h (df_rd_simulate_artificial_defs_at_top, 
9513         df_rd_simulate_one_insn): New.
9514         * opts.c (decode_options): Enable fwprop at -O1.
9515         * doc/invoke.texi (-fforward-propagate): Document this.
9516
9517 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
9518
9519         PR c/24581
9520         * c-typeck.c (build_binary_op): Handle arithmetic between one real
9521         and one complex operand specially.
9522         * tree-complex.c (some_nonzerop): Do not identify a real value as
9523         zero if flag_signed_zeros.
9524
9525 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
9526
9527         PR rtl-optimization/33928
9528         * loop-invariant.c (record_use): Fix && vs. || mishap.
9529
9530 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
9531
9532         PR rtl-optimization/33928
9533         * loop-invariant.c (struct use): Add addr_use_p.
9534         (struct def): Add n_addr_uses.
9535         (struct invariant): Add cheap_address.
9536         (create_new_invariant): Set cheap_address.
9537         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
9538         (record_uses): Pass df_ref to record_use.
9539         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
9540         used only as such.
9541
9542 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
9543
9544         * config/sh/sh.c: Do not include c-pragma.h.
9545
9546 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9547
9548         * config/spu/spu.c: Remove include of c-common.h.
9549
9550 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
9551
9552         PR c/39037
9553         * c-common.h (mark_valid_location_for_stdc_pragma,
9554         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
9555         clear_float_const_decimal64, float_const_decimal64_p): New.
9556         * c.opt (Wunsuffixed-float-constants): New.
9557         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
9558         unsuffixed float constant, handle new warning.
9559         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
9560         * c-decl.c (c_scope): New flag float_const_decimal64.
9561         (set_float_const_decimal64, clear_float_const_decimal64,
9562         float_const_decimal64_p): New.
9563         (push_scope): Set new flag.
9564         * c-parser.c (c_parser_translation_unit): Mark when it's valid
9565         to use STDC pragmas.
9566         (c_parser_external_declaration): Ditto.
9567         (c_parser_compound_statement_nostart): Ditto.
9568         * c-pragma.c (valid_location_for_stdc_pragma,
9569         mark_valid_location_for_stdc_pragma,
9570         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
9571         handle_pragma_float_const_decimal64): New.
9572         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
9573         * cp/semantics.c (valid_location_for_stdc_pragma_p,
9574         set_float_const_decimal64, clear_float_const_decimal64,
9575         float_const_decimal64_p): New dummy functions.
9576         * doc/extend.texi (Decimal Float): Remove statement that the
9577         pragma, and suffix for double constants, are not supported.
9578         * doc/invoke.texi (Warning Options): List new option.
9579         (-Wunsuffixed-float-constants): New.
9580
9581 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
9582
9583         * config/i386/i386.c: Do not include c-common.h.
9584
9585 2009-05-07  Mark Heffernan  <meheff@google.com>
9586
9587         * doc/invoke.texi (Debugging Options): Document change of debugging
9588         dump location.
9589         * opts.c (decode_options): Make dump_base_name relative to
9590         aux_base_name directory.
9591
9592 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
9593
9594         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
9595         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
9596
9597 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
9598
9599         * Makefile.in (install-plugin): Simplify a bit.
9600
9601 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
9602
9603         * Makefile.in (OBJS-common): Add regcprop.o.
9604         (regcprop.o): New.
9605         * timevar.def (TV_CPROP_REGISTERS): New.
9606         * regrename.c (regrename_optimize): Return 0.
9607         (rest_of_handle_regrename): Delete.
9608         (pass_rename_registers): Point to regrename_optimize.
9609         (struct value_data_entry, struct value_data, 
9610         kill_value_one_regno, kill_value_regno, kill_value,
9611         set_value_regno, init_value_data, kill_clobbered_value,
9612         kill_set_value, kill_autoinc_value, copy_value,
9613         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
9614         replace_oldest_value_reg, replace_oldest_value_addr,
9615         replace_oldest_value_mem, copyprop_hardreg_forward_1,
9616         debug_value_data, validate_value_data): Move...
9617         * regcprop.c: ... here.
9618         (rest_of_handle_cprop): Delete.
9619         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
9620
9621 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
9622
9623         PR middle-end/40057
9624         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
9625         GEN_INT for 1 << bitnum.
9626         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
9627         build_int_cst_type.
9628
9629 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
9630
9631         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
9632         Remove wrong description of "nand" operation.
9633
9634 2009-05-06  Richard Guenther  <rguenther@suse.de>
9635             Adam Nemet  <anemet@caviumnetworks.com>
9636
9637         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
9638         comment.  Add that if LHS is not a gimple register, then RHS1 has
9639         to be a single object (GIMPLE_SINGLE_RHS).
9640
9641 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
9642
9643         * expr.c (get_def_for_expr): Move it up in the file.
9644         (store_field): When expanding a bit-field store, look at the
9645         defining gimple stmt for the masking conversion.
9646
9647 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
9648
9649         PR middle-end/39986
9650         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
9651         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
9652         32-bit memcpy into long.
9653
9654 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
9655
9656         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
9657         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
9658         new_reg_loc_descr.
9659         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
9660         instead of appending DW_OP_deref*.
9661
9662 2009-05-06  Michael Matz  <matz@suse.de>
9663
9664         PR middle-end/40021
9665         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
9666         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
9667
9668 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
9669
9670         * Makefile.in (install-plugin): Fix srcdir handling.
9671
9672 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
9673
9674         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
9675         when processing for not_regs_needed bitmap.
9676         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
9677         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
9678         handling it for rhs. 
9679
9680 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
9681
9682         * config/i386/i386.md (unnamed inc/dec peephole): Use
9683         optimize_insn_for_size_p instead of optimize_size.
9684         * config/i386/predicates.md (incdec_operand): Likewise.
9685         (aligned_operand): Likewise.
9686         * config/i386/sse.md (divv8sf3): Likewise.
9687         (sqrtv8sf2): Likewise.
9688
9689 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
9690
9691         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
9692
9693         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
9694
9695 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
9696
9697         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
9698         ssemodesuffixf2c with avxmodesuffixf2c.
9699
9700 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
9701
9702         PR c/40032
9703         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
9704
9705 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
9706
9707         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
9708         (struct tree_base): Adjust spacing for 8 bit boundaries.
9709         (struct tree_decl_common): Add decl_by_reference_flag bit.
9710         (DECL_BY_REFERENCE): Adjust.
9711         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
9712         print DECL_BY_REFERENCE bit.
9713         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
9714         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
9715         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
9716         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
9717         unconditionally.
9718
9719         PR middle-end/39666
9720         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
9721         range of the type, but default label is missing, add it with one
9722         of the existing labels instead of adding a new label for it.
9723
9724 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
9725
9726         * dwarf.h: Remove.
9727
9728 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
9729
9730         * Makefile.in (enable_plugin, plugin_includedir): New.
9731         (install): Depend on install-plugin.
9732         (PLUGIN_HEADERS): New.
9733         (install-plugin): New.
9734         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
9735
9736 2009-05-05  Richard Guenther  <rguenther@suse.de>
9737
9738         PR tree-optimization/40022
9739         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
9740         the only vuse.
9741         (phivn_valid_p): Fix tuplification error, simplify.
9742         (phiprop_insert_phi): Add dumps.
9743         (propagate_with_phi): Simplify.
9744
9745 2009-05-05  Richard Guenther  <rguenther@suse.de>
9746
9747         PR middle-end/40023
9748         * builtins.c (gimplify_va_arg_expr): Properly build the address.
9749
9750 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
9751
9752         * tree.h (strip_float_extensions): Remove duplicate declaration.
9753         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
9754         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
9755         block_ultimate_origin): Rearrange the declarations line to match the
9756         comment that indicates the .c file which the functions are defined.
9757         (dwarf2out_*, set_decl_rtl): Add comment.
9758         (get_base_address): Adjust comment.
9759         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
9760         declarations line and add comment.
9761         (is_builtin_name): Add blank after function name, for clarity.
9762
9763 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
9764
9765         * attribs.c (decl_attributes): Use %qE for identifiers in
9766         diagnostics.
9767         * cgraphunit.c (verify_cgraph_node): Translate function names to
9768         locale character set in diagnostics.
9769         * coverage.c (get_coverage_counts): Use %qE for identifiers in
9770         diagnostics.
9771         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
9772         Document that functions are named in UTF-8.
9773         * expr.c (expand_expr_real_1): Translate function names to locale
9774         character set in diagnostics.
9775         * gimplify.c (omp_notice_variable, omp_is_private,
9776         gimplify_scan_omp_clauses): Use %qE for identifiers in
9777         diagnostics.
9778         * langhooks.c (lhd_print_error_function): Translate function names
9779         to locale character set.
9780         * langhooks.h (decl_printable_name): Document that return value is
9781         in internal character set.
9782         * stmt.c: Include pretty-print.h
9783         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
9784         diagnostics.
9785         (resolve_operand_name_1): Translate named operand name to locale
9786         character set.
9787         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
9788         diagnostics.
9789         * toplev.c (announce_function): Translate function names to locale
9790         character set.
9791         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
9792         (default_tree_printer): Use pp_identifier or translate identifiers
9793         to locale character set.  Mark "<anonymous>" for translation.
9794         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
9795         for identifiers in diagnostics.
9796         * tree.c (handle_dll_attribute): Use %qE for identifiers in
9797         diagnostics.
9798         * varasm.c (output_constructor): Use %qE for identifiers in
9799         diagnostics.
9800
9801 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
9802
9803         * configure.ac: use ` ` instead of $()
9804         * configure: Regenerate.
9805
9806 2009-05-05  Ben Elliston  <bje@au.ibm.com>
9807
9808         * config/pa/linux-atomic.c: Eliminate conditional include of
9809         errno.h on non-LP64 systems to simplify build requirements.
9810
9811 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
9812
9813         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
9814         diagnostics.
9815         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
9816         and pass value to identifier_to_locale.
9817         (warn_variable_length_array): Make name a tree.
9818         (grokdeclarator): Separate diagnostic texts for named and unnamed
9819         declarators.  Use %qE for named declarators.
9820         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
9821         diagnostics.
9822         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
9823         identifiers in diagnostics.
9824         * c-typeck.c (push_member_name, start_init): Pass identifiers to
9825         identifier_to_locale.  Mark "anonymous" strings for translation.
9826
9827 2009-05-04  Michael Eager <eager@eagercon.com>
9828
9829         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
9830         address for DImode/DFmode only if double-precision FP regs.
9831
9832 2009-05-04  Michael Eager <eager@eagercon.com>
9833
9834         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
9835         TARGET_SINGLE_FLOAT check.
9836
9837 2009-05-04  Michael Eager <eager@eagercon.com>
9838
9839         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
9840
9841 2009-05-04  Michael Eager <eager@eagercon.com>
9842
9843         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
9844         * config/rs6000/t-xilinx: New
9845
9846 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
9847
9848         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
9849         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
9850         * gcc/explow.c (memory_address): Use target hook.
9851         * gcc/targhooks.c (default_legitimize_address): New.
9852         * gcc/targhooks.h (default_legitimize_address): New.
9853         * gcc/target.h (legitimize_address): New.
9854         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
9855         (TARGET_INITIALIZER): Include it.
9856         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
9857
9858         * config/bfin/bfin-protos.h (legitimize_address): Remove.
9859         * config/bfin/bfin.c (legitimize_address): Remove.
9860         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
9861         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
9862         Remove.
9863         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
9864         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
9865
9866         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
9867         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
9868         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
9869         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
9870         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
9871         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
9872         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
9873         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
9874         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
9875         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
9876         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
9877         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
9878         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
9879         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
9880         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
9881         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
9882         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
9883         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
9884         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
9885         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
9886         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
9887         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
9888         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
9889
9890         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
9891         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
9892         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
9893         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
9894         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
9895         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
9896         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
9897         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
9898         (thumb_legitimize_address): Delete.
9899         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
9900         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
9901         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
9902         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
9903         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
9904         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
9905         Delete.
9906         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
9907         Delete.
9908
9909         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
9910         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
9911         * config/m32r/m32r.c (m32r_legitimize_address): New.
9912         * config/m68k/m68k.c (m68k_legitimize_address): New.
9913         * config/score/score.c (score_legitimize_address): Standardize.
9914         * config/score/score3.c (score3_legitimize_address): Standardize.
9915         * config/score/score3.h (score3_legitimize_address): Adjust.
9916         * config/score/score7.c (score7_legitimize_address): Standardize.
9917         * config/score/score7.h (score7_legitimize_address): Adjust.
9918         * config/sh/sh.c (sh_legitimize_address): New.
9919         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
9920
9921         * gcc/config/s390/s390.c (legitimize_address): Rename to...
9922         (s390_legitimize_address): ... this.
9923         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
9924         (sparc_legitimize_address): ... this.
9925         * gcc/config/i386/i386.c (legitimize_address): Rename to...
9926         (ix86_legitimize_address): ... this.
9927         * gcc/config/avr/avr.c (legitimize_address): Rename to...
9928         (avr_legitimize_address): ... this.
9929         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
9930         (mn10300_legitimize_address): ... this.
9931         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
9932         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
9933         (alpha_expand_mov): Adjust call.
9934
9935         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
9936         * config/spu/spu.c (spu_legitimize_address): Likewise.
9937         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
9938         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
9939
9940 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
9941
9942         * intl.c (locale_encoding, locale_utf8): New.
9943         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
9944         * intl.h (locale_encoding, locale_utf8): Declare.
9945         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
9946         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
9947         New.
9948         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
9949         argument.
9950         (pp_tree_identifier): Define to call pp_base_tree_identifier.
9951         (pp_base_tree_identifier): Declare as function.
9952         (identifier_to_locale): Declare.
9953         * Makefile.in (pretty-print.o): Update dependencies.
9954         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
9955
9956 2009-05-04  Richard Guenther  <rguenther@suse.de>
9957
9958         PR middle-end/40015
9959         * builtins.c (fold_builtin_memory_op): Do not decay to element
9960         type if the size matches the whole array.
9961
9962 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
9963
9964         * expmed.c (synth_mult): When trying out a shift, pass the result
9965         of a signed shift.
9966
9967 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
9968
9969         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
9970         (shiftsub1_cost): New.
9971         (init_expmed): Compute shiftsub1_cost.
9972         (synth_mult): Optimize multiplications by constants of the form
9973         -(2^^m-1) for some constant positive integer m.
9974
9975 2009-05-03  Richard Guenther  <rguenther@suse.de>
9976
9977         PR c/39983
9978         * c-typeck.c (array_to_pointer_conversion): Do not built
9979         ADDR_EXPRs of arrays of pointer-to-element type.
9980         * c-gimplify.c (c_gimplify_expr): Revert change fixing
9981         up wrong ADDR_EXPRs after-the-fact.
9982         * c-common.c (strict_aliasing_warning): Strip pointer
9983         conversions for obtaining the original type.
9984         * builtins.c (fold_builtin_memset): Handle array types.
9985         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
9986         and array types
9987
9988 2009-05-03  Richard Guenther  <rguenther@suse.de>
9989
9990         PR middle-end/23329
9991         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
9992         Do not lose casts from array types with unknown extent to array
9993         types with known extent.
9994         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
9995         alias set compatibility.
9996
9997 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9998
9999         * flags.h (extra_warnings): Delete.
10000         * toplev.c (process_options): Handle Wuninitialized here.
10001         * opts.c (extra_warnings): Delete.
10002         (set_Wextra): Delete.
10003         (common_handle_option): -Wextra can be handled automatically.
10004         * c-opts.c (c_common_handle_option): Delete obsolete code.
10005         (c_common_post_options): Simplify comment.
10006         * common.opt (W): Add Var.
10007         (Wextra): Add Var.
10008         (Wuninitialized): Initialize to -1.
10009
10010 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
10011             Richard Guenther  <rguenther@suse.de>
10012
10013         * expr.c (get_def_for_expr): New function.
10014         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
10015         SSA rather than trees.
10016         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
10017         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
10018         
10019 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
10020
10021         * c-common.c (reswords): Add _Imaginary.
10022         * c-common.c (enum rid): Add RID_IMAGINARY.
10023
10024 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
10025
10026         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
10027         Patch by Richard Guenther.
10028
10029 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
10030
10031         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
10032         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
10033         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
10034         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
10035         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
10036         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
10037         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
10038         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
10039         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
10040         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
10041         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
10042         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
10043         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
10044         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
10045         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
10046         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
10047         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
10048         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
10049
10050 2009-05-02  Richard Guenther  <rguenther@suse.de>
10051
10052         PR tree-optimization/39940
10053         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
10054         doing so.
10055
10056 2009-05-02  Richard Guenther  <rguenther@suse.de>
10057
10058         PR middle-end/40001
10059         * tree-ssa.c (execute_update_addresses_taken): Properly check
10060         if we can mark a variable DECL_GIMPLE_REG_P.
10061         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
10062         back to the end of the function.
10063         (is_gimple_reg_type): Remove complex type special casing.
10064         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
10065         if not optimizing.
10066
10067 2009-05-02  Ben Elliston  <bje@au.ibm.com>
10068
10069         * doc/collect2.texi (Collect2): Document search path behaviour
10070         when configured with --with-ld.
10071
10072 2009-05-02  Jan Hubicka  <jh@suse.cz>
10073
10074         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
10075         parameter; update callers.
10076         (coalesce_cost_edge): EH edges are costier because they needs
10077         splitting even if not critical and even more costier when there are
10078         multiple EH predecestors.
10079
10080 2009-05-02  Jan Hubicka  <jh@suse.cz>
10081
10082         * except.c (remove_eh_handler_and_replace): Handle updating after
10083         removing TRY blocks.
10084
10085 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
10086
10087         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
10088
10089 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
10090
10091         * varasm.c: Do not include c-pragma.h.
10092         * attribs.c: Do not incude c-common.h.
10093
10094 2009-05-01  Michael Matz  <matz@suse.de>
10095
10096         * calls.c (initialize_argument_information): Handle SSA names like
10097         decls with a non MEM_P DECL_RTL.
10098
10099 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
10100
10101         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
10102         * ipa-utils.c: Likewise.
10103         * ipa-type-escape.c: Likewise.
10104         * cgraphunit.c Do not include c-common.h.
10105         * ipa-pure-const.c: Likewise.
10106         * tree-if-conv.c: Likewise.
10107         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
10108         * ipa-struct-reorg.c: Likewise.
10109         * tree-nomudflap.c: Likewise.
10110         * tree-ssa-structalias.c: Likewise.
10111
10112 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
10113
10114         * store-motion.c: Many cleanups to make this pass a first-class
10115         citizen instead of an appendix to gcse load motion.  Add TODO list
10116         to make this pass faster/cleaner/better.
10117
10118         (struct ls_expr): Post gcse.c-split cleanups.
10119         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
10120         "stores" field to "avail_stores".
10121         (pre_ldst_mems): Rename to store_motion_mems.
10122         (pre_ldst_table): Rename to store_motion_mems_table.
10123         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
10124         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
10125         (ldst_entry): Rename to st_expr_entry, update users.
10126         (free_ldst_entry): Rename to free_st_expr_entry, update users.
10127         (free_ldst_mems): Rename to free_store_motion_mems, update users.
10128         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
10129         update caller.
10130         (first_ls_expr): Rename to first_st_expr, update users.
10131         (next_ls_expr): Rename to next_st_expr, update users.
10132         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
10133         fields properly for store motion instead of names inherited from load
10134         motion in gcse.c.
10135         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
10136         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
10137         are done with it.
10138
10139         (ae_kill): Rename to st_kill, update users.
10140         (ae_gen): Rename to st_avloc, update users.
10141         (transp): Rename to st_transp, update users.
10142         (pre_insert_map): Rename to st_insert_map, update users.
10143         (pre_delete_map): Rename to st_delete_map, update users.
10144         (insert_store, build_store_vectors, free_store_memory,
10145         one_store_motion_pass): Update for abovementioned changes.
10146
10147         (gcse_subst_count, gcse_create_count): Remove.
10148         (one_store_motion_pass): New statistics counters "n_stores_deleted"
10149         and "n_stores_created", local variables.
10150
10151         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
10152         use for_each_rtx.
10153
10154         (regvec, compute_store_table_current_insn): Remove.
10155         (reg_set_info, reg_clear_last_set): Remove.
10156         (compute_store_table): Use DF caches instead of local dataflow
10157         solvers.
10158
10159 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
10160
10161         * c-objc-common.c (c_tree_printer): Print identifiers with
10162         pp_identifier, not pp_string.  Mark "({anonymous})" for
10163         translation.
10164         * c-pretty-print.c (pp_c_ws_string): New.
10165         (pp_c_cv_qualifier, pp_c_type_specifier,
10166         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
10167         pp_c_storage_class_specifier, pp_c_function_specifier,
10168         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
10169         pp_c_primary_expression, pp_c_postfix_expression,
10170         pp_c_unary_expression, pp_c_shift_expression,
10171         pp_c_relational_expression, pp_c_equality_expression,
10172         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
10173         use pp_string and pp_c_ws_string in place of pp_identifier and
10174         pp_c_identifier for non-identifiers.  Mark English strings for
10175         translation.
10176         * c-pretty-print.h (pp_c_ws_string): Declare.
10177
10178 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
10179             Roland McGrath <roland@redhat.com>
10180
10181         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
10182         (ENABLE_LD_BUILDID): New configuration option.
10183         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
10184         (LINK_BUILDID_SPEC): New macro.
10185         (init_spec): If defined, prepend it between LINK_EH_SPEC and
10186         link_spec.
10187         * doc/install.texi: Document --enable-linker-build-id option.
10188         * configure: Rebuild.
10189         * config.in: Rebuild.
10190
10191 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
10192
10193         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
10194         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
10195         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
10196         MIPS_GP_SAVE_AREA_SIZE.
10197         * config/mips/mips.c (struct mips_frame_info): Update comment
10198         before arg_pointer_offset and hard_frame_pointer_offset.
10199         (mips_compute_frame_info): Update diagram before function: to
10200         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
10201         indicate the position of frame_pointer_rtx with -fstack-protector and
10202         to show args_size.  Don't allocate cprestore area for leaf functions
10203         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
10204         cprestore_size.
10205         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
10206
10207 2009-04-30  Michael Matz  <matz@suse.de>
10208
10209         PR tree-optimization/39955
10210         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
10211
10212 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
10213
10214         * ira.c (setup_cover_and_important_classes):  Use safe macro
10215         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
10216         directly.
10217         * genpreds.c (write_tm_preds_h):  Output suitable definition of
10218         REG_CLASS_FOR_CONSTRAINT.
10219
10220 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
10221
10222         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
10223         instead of an int.
10224         * bitmap.c (bitmap_descriptor): Likewise.
10225         * ggc-common.c (loc_descriptor): Likewise.
10226         * varray.c (varray_descriptor): Likewise.
10227         * vec.c (vec_descriptor): Likewise.
10228
10229 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
10230
10231         * Makefile.in (dce.o): Add $(EXCEPT_H).
10232         * dce.c: Include except.h and delete redundant vector definitions.
10233         (deletable_insn_p): Return false for non-call insns that can throw
10234         if DF is running.
10235
10236 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
10237
10238         * gcse.c (ae_gen): Remove.
10239         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
10240         and make non-static function to make it available in store-motion.c.
10241         Update call sites with search-and-replace.
10242         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
10243         extract_mentioned_regs, extract_mentioned_regs_helper,
10244         find_moveable_store, compute_store_table, load_kills_store, find_loads,
10245         store_killed_in_insn, store_killed_after, store_killed_before,
10246         build_store_vectors, insert_insn_start_basic_block, insert-store,
10247         remove_reachable_equiv_notes, replace_store_insn, delete_store,
10248         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
10249         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
10250         * store-motion.c: ...new file.  Also copy data structures from gcse.c
10251         and clean up to remove parts not used by store motion.
10252         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
10253         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
10254
10255 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10256
10257         PR target/38571
10258         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
10259         when optimizing for size.
10260
10261 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
10262
10263         * gcse.c (gcse_constant_p): Fix typo in last change.
10264
10265 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
10266
10267         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
10268
10269 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
10270
10271         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
10272
10273 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
10274
10275         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
10276         CONST_HIGH_PART result.
10277
10278 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
10279
10280         * config/avr/avr.c (initial_elimination_offset): Rename to
10281         avr_initial_elimination_offset.
10282         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
10283         change return type to bool.
10284         (avr_can_eliminate): New function.
10285         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
10286         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
10287         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
10288         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
10289         avr_initial_elimination_offset.
10290         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
10291         (avr_initial_elimination_offset): Define.
10292
10293 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
10294             Steven Bosscher  <steven@gcc.gnu.org>
10295
10296         PR rtl-optimization/39938
10297         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
10298         * cfgrtl.c: Include insn-attr.h.
10299         (rest_of_pass_free_cfg): New function.
10300         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
10301         * resource.c (init_resource_info): Remove call to df_analyze.
10302
10303 2009-04-29  Richard Guenther  <rguenther@suse.de>
10304
10305         PR target/39943
10306         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
10307         allow conversion to signed integers.
10308
10309 2009-04-29  Richard Guenther  <rguenther@suse.de>
10310
10311         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
10312         shifts of floating point vectors if the shift amount is
10313         a constant multiple of the element size.
10314
10315 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
10316             Michael Matz  <matz@suse.de>
10317
10318         PR middle-end/39927
10319         PR bootstrap/39929
10320         * tree-outof-ssa.c (emit_partition_copy): New function.
10321         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
10322         insert_part_to_rtx_on_edge): Perform the partition base var
10323         copy using emit_partition_copy.
10324         (insert_value_copy_on_edge): Convert constants to the right mode.
10325         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
10326         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
10327
10328 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10329
10330         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
10331         scan backwards to try to find a constant to initialize it.
10332
10333         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
10334         insn before the loop_end instruction, don't look past labels.
10335
10336 2009-04-29  Richard Guenther  <rguenther@suse.de>
10337
10338         PR middle-end/39937
10339         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
10340         loose type conversions.
10341         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
10342         stmts only if there are no uses of its definition.
10343
10344 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10345
10346         * config/bfin/bfin.h (splitting_loops): Declare.
10347         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
10348         Reorder bit definitions to be ascending.
10349         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
10350         * config/bfin/bfin.c (splitting_loops): New variable.
10351         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
10352         (struct loop_info): Remove members INIT and LOOP_INIT.
10353         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
10354         the LSETUP sequence.  Allow LC to be loaded from any register, but
10355         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
10356         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
10357         set to 1.
10358         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
10359         of reload_completed.
10360
10361         From Jie Zhang:
10362         * config/bfin/bfin.md (movsi_insn): Refine constraints.
10363
10364 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
10365
10366         * Makefile.in (PLUGIN_VERSION_H): New.
10367         (OBJS-common): Remove plugin-version.o.
10368         (plugin.o): Depend on (PLUGIN_VERSION_H).
10369         (plugin-version.o): Remove.
10370         * configure: Regenerate
10371         * configure.ac: Create plugin-version.h.
10372         * gcc-plugin.h (plugin_gcc_version): Remove.
10373         (plugin_default_version_check): Change signature.
10374         * plugin-version.c: Remove.
10375         * plugin.c: Include plugin-version.h.
10376         (str_plugin_gcc_version_name): Remove.
10377         (try_init_one_plugin): Pass gcc version to plugin_init.
10378         (plugin_default_version_check): Both gcc and plugin versions are now
10379         arguments.
10380
10381 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10382         
10383         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
10384         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
10385         Remove special case testing for last insn of inner loops. Don't fail
10386         if the loop ends with a jump, emit an extra nop instead.
10387
10388         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
10389         DREGS rather than comparing directly.  Remove code that tries to
10390         account for latencies.
10391
10392 2009-04-29  Richard Guenther  <rguenther@suse.de>
10393
10394         PR tree-optimization/39941
10395         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
10396         eliminating an indirect call.
10397
10398 2009-04-29  Richard Guenther  <rguenther@suse.de>
10399
10400         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
10401         parameter.  Allow invariants as base if !require_lvalue.
10402         (verify_gimple_assign_single): Adjust.
10403
10404 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
10405
10406         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
10407         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
10408         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
10409         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
10410         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
10411         a VEC_SELECT.
10412         * config/bfin/bfin.c (bfin_expand_builtin,
10413         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
10414
10415 2009-04-28  Richard Guenther  <rguenther@suse.de>
10416
10417         * tree-vect-loop.c (get_initial_def_for_induction): Use
10418         correct types for pointer increment.
10419
10420 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10421
10422         * toplev.c (print_version): Update GMP version string calculation.
10423
10424 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
10425
10426         PR rtl-optimization/39938
10427         * resource.c (init_resource_info): Add call to df_analyze.
10428
10429 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
10430
10431         * config/alpha/alpha.md (usegp): Cast the result of
10432         alpha_find_lo_sum_using_gp to enum attr_usegp.
10433         * config/alpha/alpha.c (override_options): Remove end-of-structure
10434         marker element from cpu_table.  Use array size of cpu_table to handle
10435         -mcpu and -mtune options.
10436         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
10437
10438 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
10439
10440         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
10441         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
10442         tune_32 and tune_64.
10443         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
10444         support on PowerPC.
10445         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
10446         * config/rs6000/option-defaults.h: ... here.  New file.
10447         (OPT_64, OPT_32): Define.
10448         (MASK_64BIT): Define to 0 if not already defined.
10449         (OPT_ARCH64, OPT_ARCH32): Define.
10450         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
10451         and tune_64.
10452
10453 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10454
10455         * config/arm/arm.c (arm_override_options): Emit error on using
10456         fpa with AAPCS.
10457
10458 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
10459
10460         PR rtl-optimization/39914
10461         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
10462         registers for allocnos created from user-defined variables only
10463         when not optimizing.
10464
10465 2009-04-28  Richard Guenther  <rguenther@suse.de>
10466
10467         PR middle-end/39937
10468         * fold-const.c (fold_binary): Use distribute_real_division only
10469         on float types.
10470
10471 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
10472
10473         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
10474         add hpux-stdint.h to tm_file.
10475         (hppa[12]*-*-hpux11*): Ditto.
10476         (ia64*-*-hpux*): Ditto.
10477         * config/hpux-stdint.h: New.
10478         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
10479         __STDC_EXT__ for all compiles.
10480         * config/pa/pa-hpux.h: Ditto.
10481         * config/pa/pa-hpux10.h: Ditto.
10482         * config/pa/pa-hpux11.h: Ditto.
10483
10484 2009-04-28  Catherine Moore  <clm@codesourcery.com>
10485
10486         * debug.h (set_name): Add comment.
10487
10488 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
10489
10490         PR target/39929
10491         * config/darwin.c (machopic_gen_offset): Check
10492         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
10493         * config/arm/arm.c (require_pic_register): Likewise.
10494
10495 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
10496
10497         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
10498         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
10499         m32c_promote_prototypes): Delete.
10500
10501 2009-04-28  Michael Matz  <matz@suse.de>
10502
10503         PR middle-end/39922
10504         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
10505         constants.
10506
10507 2009-04-28  Richard Guenther  <rguenther@suse.de>
10508
10509         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
10510
10511 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10512
10513         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
10514         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
10515         * config/arm/arm-tune.md: Regenerate.
10516
10517 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
10518
10519         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
10520         block if there are complex incoming edges.
10521         (sel_merge_blocks): Remove useless assert.
10522         (sel_redirect_edge_and_branch): Check that edge was redirected.
10523         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
10524         (sel_find_rgns): Delete declaration.
10525         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
10526         the region when it is not a preheader.
10527
10528 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
10529
10530         PR c/39323
10531         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
10532
10533 2009-04-28  Richard Guenther  <rguenther@suse.de>
10534
10535         * tree.h (SSA_NAME_VALUE): Remove.
10536         (struct tree_ssa_name): Remove value_handle member.
10537         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
10538         array for jump threading.
10539         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
10540         SSA_NAME_VALUEs.
10541         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
10542         * tree-flow.h (threadedge_initialize_values): Declare.
10543         (threadedge_finalize_values): Likewise.
10544         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
10545         (SSA_NAME_VALUE): Define.
10546         (threadedge_initialize_values): New function.
10547         (threadedge_finalize_values): Likewise.
10548         * tree-ssa-dom.c (ssa_name_values): New global variable.
10549         (SSA_NAME_VALUE): Define.
10550         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
10551
10552 2009-04-28  Ira Rosen  <irar@il.ibm.com>
10553
10554         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
10555         Use REPORT_VECTORIZED_LOCATIONS instead 
10556         REPORT_VECTORIZED_LOOPS.
10557         * tree-vectorizer.c (vect_verbosity_level): Make static.
10558         (vect_loop_location): Rename to vect_location.
10559         (vect_set_verbosity_level): Update comment.
10560         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
10561         and vect_location.
10562         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
10563         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
10564         instead REPORT_UNVECTORIZED_LOOPS.
10565         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
10566         and vect_loop_def to vect_external_def and vect_internal_def.
10567         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
10568         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
10569         REPORT_UNVECTORIZED_LOCATIONS.
10570         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
10571         and vect_used_in_loop and to vect_unused_in_scope and 
10572         vect_used_in_scope.
10573         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
10574         (vect_verbosity_level): Remove declaration.
10575         (vect_analyze_operations): Likewise.
10576         (vect_analyze_stmt): Declare.
10577         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
10578         REPORT_UNVECTORIZED_LOCATIONS.
10579         (vect_get_loop_niters): Fix indentation.
10580         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
10581         (vect_analyze_loop_operations): New function.
10582         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
10583         vect_analyze_operations.
10584         (vect_is_simple_reduction): Use new names.
10585         (vectorizable_live_operation, vect_transform_loop): Likewise.
10586         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
10587         to specify whether the data references can be a part of interleaving
10588         chain.
10589         (vect_analyze_data_ref_dependence): Use new names.
10590         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
10591         (vect_create_addr_base_for_vector_ref): Remove redundant code.
10592         * tree-vect-patterns.c (widened_name_p): Use new names.
10593         (vect_recog_dot_prod_pattern): Likewise.
10594         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
10595         (process_use, vect_mark_stmts_to_be_vectorized, 
10596         vect_model_simple_cost, vect_model_store_cost,
10597         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
10598         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
10599         vectorizable_operation, vectorizable_type_demotion,
10600         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
10601         vectorizable_condition): Likewise.
10602         (vect_analyze_operations): Split into vect_analyze_loop_operations
10603         and ...
10604         (vect_analyze_stmt): ... new function.
10605         (new_stmt_vec_info): Use new names.
10606         (vect_is_simple_use): Use new names and fix comment.
10607         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
10608         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
10609
10610 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
10611
10612         PR target/39911
10613         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
10614         and integer modes for x87 operands.  Do not ICE for unsupported size,
10615         generate error instead.  Generate error for unsupported operand types.
10616         ['z']: Do not handle HImode memory operands specially.  Warning
10617         for floating-point operands.  Fallthru to 'Z' for unsupported operand
10618         types.  Do not ICE for unsupported size, generate error instead.
10619         (output_387_binary_op): Use %Z to output operands.
10620         (output_fp_compare): Ditto.
10621         (output_387_reg_move): Ditto.
10622
10623 2009-04-28  Ben Elliston  <bje@au.ibm.com>
10624
10625         PR c++/35652
10626         Revert:
10627
10628         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10629
10630         * builtins.c (c_strlen): Do not warn here.
10631         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
10632         * c-common.c (pointer_int_sum): Take an explicit location.
10633         Warn about offsets out of bounds.
10634         * c-common.h (pointer_int_sum): Adjust declaration.
10635
10636 2009-04-27  Ian Lance Taylor  <iant@google.com>
10637
10638         * collect2.c (is_ctor_dtor): Change type of ret field in struct
10639         names to symkind.
10640         * dce.c (run_fast_df_dce): Change type of old_flags to int.
10641         * df-core.c (df_set_flags): Change return type to int.  Change
10642         type of old_flags to int.
10643         (df_clear_flags): Likewise.
10644         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
10645         (df_get_conditional_uses): Likewise.
10646         * df.h (df_set_flags, df_clear_flags): Update declarations.
10647         * dwarf2out.c (struct indirect_string_node): Change type of form
10648         field to enum dwarf_form.
10649         (AT_string_form): Change return type to enum dwarf_form.
10650         * fixed-value.c (fixed_compare): Add cast to enum type.
10651         * fwprop.c (update_df): Change 0 to VOIDmode.
10652         * gensupport.c: Change 0 to UNKNOWN.
10653         * gimple.h (gimple_cond_code): Add cast to enum type.
10654         * haifa-sched.c (reemit_notes): Add cast to enum type.
10655         * hooks.c (hook_int_void_no_regs): Remove function.
10656         * hooks.h (hook_int_void_no_regs): Remove declaration.
10657         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
10658         * predict.c (combine_predictions_for_insn): Add casts to enum type.
10659         * real.c (real_arithmetic): Add cast to enum type.
10660         (real_compare): Likewise.
10661         * target.h (struct gcc_target): Change return type of
10662         branch_target_register_class to enum reg_class.
10663         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
10664         default_branch_target_register_class.
10665         * targhooks.c (default_branch_target_register_class): New function.
10666         * targhooks.h (default_branch_target_register_class): Declare.
10667         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
10668         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
10669         cast to int.
10670         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
10671         ERROR_MARK.
10672         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
10673         vect_uninitialized_def.  Change 0 to ERROR_MARK.
10674         * tree-vect-stmts.c (supportable_widening_operation): Don't
10675         initialize icode1 and icode2.
10676         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
10677         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
10678         and to STD_C89.
10679         (cmn_err_flag_specs): Change 0 to STD_C89.
10680         (cmn_err_char_table): Likewise.
10681         * config/arm/arm.c (get_arm_condition_code): Change type of code
10682         to enum arm_cond_code.
10683         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
10684         (IWMMXT_BUILTIN2): Likewise.
10685         (neon_builtin_type_bits): Don't define typedef.
10686         (neon_builtin_datum): Change type of bits field to int.
10687         (arm_expand_neon_args): Add cast to enum type.
10688         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
10689         TLS_MODEL_NONE.
10690         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
10691         casts to enum type.
10692         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
10693         MIPS_FP_COND_f.
10694         * config/mips/mips.md (jal_macro): Return enum constant.
10695         (single_insn): Likewise.
10696         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
10697         CODE_FOR_nothing.
10698         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
10699         casts to enum type.
10700         * config/s390/s390.c (s390_tune_flags): Change type to int.
10701         (s390_arch_flags): Likewise.
10702         (s390_handle_arch_option): Change flags field of struct pta to int.
10703         * config/s390/s390.h (s390_tune_flags): Update declaration.
10704         (s390_arch_flags): Likewise.
10705         * config/sh/sh.c (prepare_move_operands): Compare
10706         tls_symbolic_operand result with enum constant.
10707         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
10708         (sh_expand_prologue): Add cast to enum type.
10709         (sh_expand_epilogue): Likewise.
10710         (tls_symbolic_operand): Change return type to enum tls_model.
10711         (fpscr_set_from_mem): Add cast to enum type.
10712         (legitimize_pic_address): Compare tls_symbolic_operand result with
10713         enum constant.
10714         (sh_target_reg_class): Change return type to enum reg_class.
10715         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
10716         PROCESSOR_xxx.
10717         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
10718         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
10719         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
10720         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
10721         (delayed_branch, tls_call_delay): Likewise.
10722         (eligible_for_sibcall_delay): Likewise.
10723         (eligible_for_return_delay): Likewise. 
10724         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
10725         (spu_expand_builtin_1): Likewise.
10726
10727         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
10728         for all types of conversions.
10729         (output_init_element): Issue -Wc++-compat warning if needed when
10730         initializing a bitfield with enum type.
10731         * c-parser.c (c_parser_expression): Set original_type to
10732         original_type of right hand operand of comman operator.
10733
10734 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10735
10736         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
10737         grammar nits.
10738         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
10739         * doc/cpp.texi (Standard Predefined Macros)
10740         (Implementation-defined behavior): Likewise.
10741         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
10742         * doc/gimple.texi (GIMPLE Exception Handling)
10743         (@code{GIMPLE_ASSIGN}): Likewise.
10744         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
10745         * doc/invoke.texi (Warning Options, Optimize Options)
10746         (AVR Options, Darwin Options): Likewise.
10747         (Optimize Options): Reformulate -fwhole-program description.
10748         * doc/loop.texi (Lambda): Likewise.
10749         * doc/md.texi (Output Template, Define Constraints)
10750         (Standard Names, Insn Splitting): Likewise.
10751         * doc/options.texi (Option properties): Likewise.
10752         * doc/passes.texi (Tree-SSA passes): Likewise.
10753         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
10754         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
10755         (File Names and DBX): Likewise.
10756         * doc/trouble.texi (Incompatibilities): Likewise.
10757
10758 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10759
10760         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
10761         instruction is correct.
10762
10763 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10764
10765         Allow non-constant arguments to conversion intrinsics.
10766         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
10767         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
10768         * spu.c (print_operand): Handle 'v' and 'w'.
10769         (exp2_immediate_p, spu_gen_exp2): Define.
10770         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
10771         spu_convtf_1): Update parameter descriptions.
10772         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
10773         * constraints.md ('v', 'w'): New.
10774         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
10775         Remove.
10776         (i2f, I2F): New define_mode_attr.
10777         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
10778         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
10779         fixuns_truncv4sfv4si2):  Update to use mode attribute.
10780         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
10781         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
10782         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
10783         patterns for combine.
10784
10785 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
10786
10787         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
10788         (cprop, hoist, pre, store_motion): New debug counters.
10789         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
10790         is not an RTL pass anymore.
10791         (pass_profiling): Remove extern decl for pass removed in 2005.
10792         (pass_gcse, pass_jump_bypass): Remove.
10793         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
10794         to 0 for clean state.
10795         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
10796         * cse.c (gate_handle_cse_after_global_opts,
10797         rest_of_handle_cse_after_global_opts): New functions.
10798         (pass_cse_after_global_opts): New pass, does local CSE.
10799         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
10800         (TV_CPROP): New timevar.
10801         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
10802         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
10803         (gcse_main, recompute_all_luids): Remove.
10804         (compute_hash_table_work): Call max_reg_num instead of reading
10805         max_gcse_regno.
10806         (cprop_jump): Don't set run_jump_opt_after_gcse.
10807         (constprop_register): Always allow to alter jumps.
10808         (cprop_insn): Likewise.
10809         (do_local_cprop): Likewise.
10810         (local_cprop_pass): Likewise.  Return non-zero if something changed.
10811         (cprop): Remove function, fold interesting bits into one_cprop_pass.
10812         (find_implicit_sets): Add note about missed optimization opportunity.
10813         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
10814         pass_rtl_cprop execute function.
10815         Don't bother tracking the pass number, each pass gets its own dumpfile
10816         now anyway.
10817         Always allow to alter jumpsand bypass jumps.
10818         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
10819         will just find no suitable set.
10820         (pre_edge_insert): Fix dumping, this function is for PRE only.
10821         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
10822         pass_rtl_pre execute function.
10823         (hoist_code): Return non-zero if something changed.  Keep track of
10824         substitutions and insertions for statistics gathering similar to PRE.
10825         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
10826         called from the pass_rtl_hoist execute function.  Show pass statistics.
10827         (compute_store_table): Use max_reg_num directly instead of using the
10828         formerly global max_gcse_regno.
10829         (build_store_vectors): Likewise.
10830         (replace_store_insn): Fix dumping.
10831         (store_motion): Rename to ...
10832         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
10833         pass, called from the pass_rtl_store_motion execute function.  Keep
10834         track of substitutions and insertions for statistics gathering similar
10835         to PRE.
10836         (bypass_jumps): Remove, fold interesting bits into ...
10837         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
10838         from the pass_rtl_cprop execute function.
10839         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
10840         pass_jump_bypass): Remove.
10841         (gate_handle_gcse, rest_of_handle_gcse): Remove.
10842         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
10843         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
10844         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
10845         (gate_rtl_store_motion, execute_rtl_store_motion,
10846         pass_rtl_store_motion): New.
10847         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
10848         make it clear that -fcse-skip-blocks is a no-op for backward compat.
10849         * passes.c (init_optimization_passes): Remove pass_gcse and
10850         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
10851         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
10852         instead of pass_jump_bypass.
10853
10854 2009-04-27  Richard Guenther  <rguenther@suse.de>
10855
10856         PR middle-end/39928
10857         * gimplify.c (gimplify_expr): If we are required to create
10858         a temporary make sure it ends up as register.
10859
10860 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
10861
10862         PR target/39903
10863         * config/i386/i386.c (construct_container): Don't call
10864         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
10865         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
10866
10867 2009-04-27  Michael Matz  <matz@suse.de>
10868
10869         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
10870         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
10871         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
10872         (dump_replaceable_exprs): Take a bitmap.
10873         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
10874         array.
10875         (expand_gimple_basic_block): Likewise.
10876         * tree-ssa-ter.c (struct temp_expr_table_d): Make
10877         replaceable_expressions member a bitmap.
10878         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
10879         (mark_replaceable): Likewise.
10880         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
10881         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
10882
10883 2009-04-27  Richard Guenther  <rguenther@suse.de>
10884
10885         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
10886         (verify_stmts): Dispatch to gimple/type verification code.
10887         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
10888         issue with call argument types.
10889
10890 2009-04-27  Michael Matz  <matz@suse.de>
10891
10892         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
10893         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
10894         to above.
10895
10896 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
10897             Eric Botcazou  <ebotcazou@adacore.com>
10898
10899         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
10900         a label's basic block.
10901         (mark_target_live_regs): Tidy and rework obsolete comments.
10902         Change back DF problem to LIVE.  If a label starts a basic block,
10903         assume that all registers that used to be live then still are.
10904         (init_resource_info): If a label starts a basic block, set its
10905         BLOCK_FOR_INSN accordingly.
10906         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
10907
10908 2009-04-27  Richard Guenther  <rguenther@suse.de>
10909
10910         * tree-flow-inline.h (function_ann): Remove.
10911         (get_function_ann): Likewise.
10912         * tree-dfa.c (create_function_ann): Remove.
10913         * tree-flow.h (struct static_var_ann_d): Remove.
10914         (struct function_ann_d): Likewise.
10915         (union tree_ann_d): Remove fdecl member.
10916         (function_ann_t): Remove.
10917         (function_ann, get_function_ann, create_function_ann): Remove
10918         declarations.
10919
10920 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
10921
10922         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
10923
10924 2009-04-27  Jan Hubicka  <jh@suse.cz>
10925
10926         * ipa-pure-const.c (struct funct_state_d): New fields
10927         state_previously_known, looping_previously_known; remove
10928         state_set_in_source.
10929         (analyze_function): Use new fields.
10930         (propagate): Avoid assumption that state_set_in_source imply
10931         nonlooping.
10932
10933         * tree-ssa-loop-niter.c (finite_loop_p): New function.
10934         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
10935         * cfgloop.h (finite_loop_p): Declare.
10936
10937 2009-04-26  Michael Matz  <matz@suse.de>
10938
10939         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
10940
10941 2009-04-26  Michael Matz  <matz@suse.de>
10942
10943         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
10944         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
10945         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
10946         pass_mark_used_blocks): Remove.
10947         * tree-optimize.c (pass_free_datastructures,
10948         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
10949         * passes.c (init_optimization_passes): Don't call
10950         pass_mark_used_blocks, remove dead code.
10951
10952 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
10953
10954         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
10955         * tree-ssa-live.h (register_ssa_partition): Likewise.
10956
10957 2009-04-26  Michael Matz  <matz@suse.de>
10958
10959         Expand from SSA.
10960         * builtins.c (fold_builtin_next_arg): Handle SSA names.
10961         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
10962         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
10963         SSA names. 
10964         (compare_pairs): Swap cost comparison.
10965         (coalesce_ssa_name): Don't use change_partition_var.
10966         * tree-nrv.c (struct nrv_data): Add modified member.
10967         (finalize_nrv_r): Set it.
10968         (tree_nrv): Use it to update statements.
10969         (pass_nrv): Require PROP_ssa.
10970         * tree-mudflap.c (mf_decl_cache_locals,
10971         mf_build_check_statement_for): Use make_rename_temp.
10972         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
10973         * alias.c (find_base_decl): Handle SSA names.
10974         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
10975         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
10976         * rtl.h (set_reg_attrs_for_parm): Declare.
10977         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
10978         to "optimized", remove unused locals at finish.
10979         (execute_free_datastructures): Make global, call
10980         delete_tree_cfg_annotations.
10981         (execute_free_cfg_annotations): Don't call
10982         delete_tree_cfg_annotations.
10983
10984         * ssaexpand.h: New file.
10985         * expr.c (toplevel): Include ssaexpand.h.
10986         (expand_assignment): Handle SSA names the same as register variables.
10987         (expand_expr_real_1): Expand SSA names.
10988         * cfgexpand.c (toplevel): Include ssaexpand.h.
10989         (SA): New global variable.
10990         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
10991         (SSAVAR): New macro.
10992         (set_rtl): New helper function.
10993         (add_stack_var): Deal with SSA names, use set_rtl.
10994         (expand_one_stack_var_at): Likewise.
10995         (expand_one_stack_var): Deal with SSA names.
10996         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
10997         before unique numbers.
10998         (expand_stack_vars): Use set_rtl.
10999         (expand_one_var): Accept SSA names, add asserts for them, feed them
11000         to above subroutines.
11001         (expand_used_vars): Expand all partitions (without default defs),
11002         then only the local decls (ignoring those expanded already).
11003         (expand_gimple_cond): Remove edges when jumpif() expands an
11004         unconditional jump.
11005         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
11006         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
11007         SSA name.
11008         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
11009         members of SA; deal with PARM_DECL partitions here; expand
11010         all PHI nodes, free tree datastructures and SA.  Commit instructions
11011         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
11012         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
11013         info and statements at start, collect garbage at finish.
11014         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
11015         (VAR_ANN_PARTITION) Remove.
11016         (change_partition_var): Don't declare.
11017         (partition_to_var): Always return SSA names.
11018         (var_to_partition): Only accept SSA names.
11019         (register_ssa_partition): Only check argument.
11020         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
11021         member.
11022         (delete_var_map): Don't free it.
11023         (var_union): Only accept SSA names, simplify.
11024         (partition_view_init): Mark only useful SSA names as used.
11025         (partition_view_fini): Only deal with SSA names.
11026         (change_partition_var): Remove.
11027         (dump_var_map): Use ssa_name instead of partition_to_var member.
11028         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
11029         basic blocks.
11030         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
11031         (struct _elim_graph): New member const_dests; nodes member vector of
11032         ints.
11033         (set_location_for_edge): New static helper.
11034         (create_temp): Remove.
11035         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
11036         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
11037         (new_elim_graph): Allocate const_dests member.
11038         (clean_elim_graph): Truncate const_dests member.
11039         (delete_elim_graph): Free const_dests member.
11040         (elim_graph_size): Adapt to new type of nodes member.
11041         (elim_graph_add_node): Likewise.
11042         (eliminate_name): Likewise.
11043         (eliminate_build): Don't take basic block argument, deal only with
11044         partition numbers, not variables.
11045         (get_temp_reg): New static helper.
11046         (elim_create): Use it, deal with RTL temporaries instead of trees.
11047         (eliminate_phi): Adjust all calls to new signature.
11048         (assign_vars, replace_use_variable, replace_def_variable): Remove.
11049         (rewrite_trees): Only do checking.
11050         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
11051         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
11052         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
11053         contains_tree_r, MAX_STMTS_IN_LATCH,
11054         process_single_block_loop_latch, analyze_edges_for_bb,
11055         perform_edge_inserts): Remove.
11056         (expand_phi_nodes): New global function.
11057         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
11058         functions, initialize new parameter, remember partitions having a
11059         default def.
11060         (finish_out_of_ssa): New global function.
11061         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
11062         don't reset in_ssa_p here, don't disable TER when mudflap.
11063         (pass_del_ssa): Remove.
11064         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
11065         partition members.
11066         (execute_free_datastructures): Declare.
11067         * Makefile.in (SSAEXPAND_H): New variable.
11068         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
11069         * basic-block.h (commit_one_edge_insertion): Declare.
11070         * passes.c (init_optimization_passes): Move pass_nrv and
11071         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
11072         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
11073         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
11074         (redirect_branch_edge): Deal with super block when expanding, split
11075         out jump patching itself into ...
11076         (patch_jump_insn): ... here, new static helper.
11077
11078 2009-04-26  Michael Matz  <matz@suse.de>
11079
11080         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
11081         beyond num_ssa_names.
11082         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
11083         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
11084
11085 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
11086
11087         PR inline-asm/39543
11088         * fwprop.c (forward_propagate_asm): New function.
11089         (forward_propagate_and_simplify): Propagate also into __asm, if it
11090         doesn't increase the number of referenced registers.
11091
11092         PR c/39889
11093         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
11094
11095 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
11096
11097         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
11098         note_nonlocal_vla_type for nonlocal VLAs.
11099         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
11100         contains_remapped_vars, remap_vla_decls): New functions.
11101         (convert_nonlocal_reference_stmt): If not optimizing, call
11102         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
11103         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
11104         if it wasn't found in var_map.
11105         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
11106         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
11107         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
11108         declare_vars.
11109         * gimplify.c (nonlocal_vlas): New variable.
11110         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
11111         referenced VLAs.
11112         (gimplify_body): Create and destroy nonlocal_vlas.
11113
11114         * dwarf2out.c (loc_descr_plus_const): New function.
11115         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
11116         mem_loc_descriptor, loc_descriptor_from_tree_1,
11117         descr_info_loc, gen_variable_die): Use it.
11118
11119         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
11120         !TREE_STATIC VAR_DECLs.
11121         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
11122         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
11123         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
11124         DECL_BY_REFERENCE is valid.
11125         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
11126         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
11127         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
11128         Copy DECL_BY_REFERENCE.
11129         (struct nesting_copy_body_data): New type.
11130         (nesting_copy_decl): New function.
11131         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
11132         if they have variable length.
11133
11134 2009-04-26  Michael Matz  <matz@suse.de>
11135
11136         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
11137         mark new temporaries for renaming.
11138
11139 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
11140
11141         PR c/39581
11142         * c-decl.c (global_bindings_p): Return negative value.
11143         (c_variable_size): New.  Based on variable_size from
11144         stor-layout.c.
11145         (grokdeclarator): Call c_variable_size not variable_size.
11146
11147 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
11148
11149         * config/i386/i386.c (print_operand) ['z']: Fix typo.
11150
11151 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
11152
11153         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
11154         Redefine it to just use mingw/include.
11155         (ASM_SPEC): Rules for -m32 and -m64.
11156         (LINK_SPEC): Use Likewise.
11157         (SPEC_32): New define.
11158         (SPEC_64): Likewise.
11159         (SUB_LINK_SPEC): Likewise.
11160         (MULTILIB_DEFAULTS): New define.
11161         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
11162         Add multilib options.
11163         (MULTILIB_DIRNAMES): Likewise.
11164         (MULTILIB_OSDIRNAMES): Likewise.
11165         (LIBGCC): Likewise.
11166         (INSTALL_LIBGCC): Likewise.
11167
11168 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
11169
11170         PR c/39556
11171         * c-tree.h (enum c_inline_static_type): New.
11172         (record_inline_static): Declare.
11173         * c-decl.c (struct c_inline_static, c_inline_statics,
11174         record_inline_static, check_inline_statics): New.
11175         (pop_file_scope): Call check_inline_statics.
11176         (start_decl): Call record_inline_static instead of pedwarning
11177         directly for static in inline function.
11178         * c-typeck.c (build_external_ref): Call record_inline_static
11179         instead of pedwarning directly for static referenced in inline
11180         function.
11181
11182 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
11183
11184         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
11185         not new but only being rescanned.
11186         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
11187         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
11188         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
11189         record_set_info, compute_set, grealloc): Remove.
11190         (recompute_all_luids): New function.
11191         (gcse_main): Don't compute sets, and don't do related memory
11192         allocations/free-ing.  If something changed before the end of the
11193         pass, update LUIDs using recompute_all_luids.
11194         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
11195         (free_gcse_mem): Don't free it either.
11196         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
11197         Use the df insn LUIDs.
11198         (load_killed_in_block): Likewise.
11199         (compute_hash_table_work): Don't compute reg_set_in_block.
11200         (compute_transp): Use DF_REG_DEF_CHAINs.
11201         (local_cprop_pass): Don't use compute_sets and related functions.
11202         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
11203         Use get_max_uid() instead of max_cuid.
11204         (insert_insn_end_basic_block, pre_insert_copy_insn,
11205         update_ld_motion_stores): Don't try to
11206         keep reg_set tables up to date.
11207         (pre_insert_copies): Use df insn LUIDs.
11208         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
11209         (reg_set_info): Don't use extra bitmap argument.
11210         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
11211         information to compute regs_set_in_block.
11212         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
11213         (bypass_jumps): Don't use compute_sets and friends.
11214
11215 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11216
11217         PR testsuite/39710
11218         * opts.c (undocumented_msg): Do not leave blank even with
11219         ENABLE_CHECKING.
11220
11221 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
11222
11223         * c-decl.c (build_enumerator): Allow values folding to integer
11224         constants but not integer constant expressions with a pedwarn if
11225         pedantic.
11226
11227 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
11228
11229         PR c/39582
11230         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
11231         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
11232         type is an integer constant.
11233
11234 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
11235
11236         PR target/39897
11237         * config/i386/i386.c (print_operand) ['z']: Revert handling of
11238         HImode operands.
11239
11240 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
11241
11242         PR c/39564
11243         * c-decl.c (grokdeclarator): Diagnose declarations of functions
11244         with variably modified return type and no storage class
11245         specifiers, except for the case of nested functions.  Distinguish
11246         extern declarations of functions with variably modified return
11247         types from those of objects with variably modified types.
11248
11249 2009-04-25  Jan Hubicka  <jh@suse.cz>
11250
11251         * tree.c (list_equal_p): New function.
11252         * tree.h (list_equal_p): Declare.
11253         * coretypes.h (edge_def, edge, const_edge, basic_block_def
11254         basic_block_def, basic_block, const_basic_block): New.
11255         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
11256         (redirect_eh_edge): New function.
11257         (make_eh_edge_update_phi): EH edges are not abnormal.
11258         * except.c: Include tree-flow.h.
11259         (list_match): New function.
11260         (eh_region_replaceable_by_p): New function.
11261         (replace_region): New function.
11262         (hash_type_list): New function.
11263         (hash_eh_region): New function.
11264         (eh_regions_equal_p): New function.
11265         (merge_peers): New function.
11266         (remove_unreachable_regions): Verify EH tree when checking;
11267         merge peers.
11268         (copy_eh_region_1): New function.
11269         (copy_eh_region): New function.
11270         (push_reachable_handler): New function.
11271         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
11272         regions without label but with live RESX.
11273         * except.h (redirect_eh_edge_to_label): New.
11274         * tree-flow.h (redirect_eh_edge): New.
11275         * coretypes.h (edge_def, edge, const_edge, basic_block_def
11276         basic_block_def, basic_block, const_basic_block): Remove.
11277         * Makefile.in (except.o): Add dependency on tree-flow.h
11278         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
11279         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
11280         Remove.
11281
11282 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
11283
11284         PR bootstrap/39645
11285         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
11286         on the destination of memcpy.
11287
11288 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
11289
11290         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
11291         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
11292         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
11293
11294 2009-04-25  Jan Hubicka  <jh@suse.cz>
11295
11296         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
11297         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
11298         to be reached by different label than left.
11299         (update_eh_edges): Update comment; remove edge_to_remove if possible
11300         and return true if suceeded.
11301         (cleanup_empty_eh): Accept sharing map; handle shared regions.
11302         (cleanup_eh): Compute sharing map.
11303         * except.c (remove_eh_handler_and_replace): Add argument if we should
11304         update regions.
11305         (remove_unreachable_regions): Update for label sharing.
11306         (label_to_region_map): Likewise.
11307         (get_next_region_sharing_label): New function.
11308         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
11309         prev_try pointers.
11310         (remove_eh_handler): Update.
11311         (remove_eh_region_and_replace_by_outer_of): New function.
11312         * except.h (struct eh_region): Add next_region_sharing_label.
11313         (remove_eh_region_and_replace_by_outer_of,
11314         get_next_region_sharing_label): Declare.
11315         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
11316
11317 2009-04-25  Jan Hubicka  <jh@suse.cz>
11318
11319         * tree-cfg.c (split_critical_edges): Split also edges where we can't
11320         insert code even if they are not critical.
11321
11322 2009-04-25  Jan Hubicka  <jh@suse.cz>
11323
11324         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
11325         (gimple_can_remove_branch_p): EH edges won't remove branch by
11326         redirection.
11327         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
11328         updating of non-abnormal EH edges.
11329         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
11330         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
11331         (split_critical_edges): Split also edges where emitting code on them
11332         will lead to splitting later.
11333
11334 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
11335             H.J. Lu  <hongjiu.lu@intel.com>
11336
11337         PR target/39590
11338         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
11339         the configured assembler supports fildq and fistpq mnemonics.
11340         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
11341         * configure: Regenerated.
11342         * config.in: Ditto.
11343
11344         * config/i386/i386.c (print_operand): Handle 'Z'.
11345         ['z']: Remove handling of special fild/fist suffixes.
11346         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
11347         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
11348         suffix of fild insn.
11349         (*floatsi<mode>2_vector_mixed): Ditto.
11350         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
11351         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
11352         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
11353         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
11354         * config/i386/gas.h (GAS_MNEMONICS): Remove.
11355
11356 2009-04-25  Ben Elliston  <bje@au.ibm.com>
11357  
11358         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
11359         the source of a set operation.
11360
11361 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
11362
11363         * target.h (struct gcc_target): Add case_values_threshold field.
11364         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
11365         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
11366         * targhooks.c (default_case_values_threshold): New function.
11367         * targhooks.h (default_case_values_threshold): Declare function.
11368         * stmt.c (expand_case): Use case_values_threshold target hook.
11369         * expr.h (case_values_threshold): Remove declartation.
11370         * expr.c (case_values_threshold): Remove function.
11371         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
11372
11373         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
11374         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
11375         (avr_case_values_threshold): Declare as static.
11376         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
11377
11378         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
11379         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
11380         (mn10300_case_values_threshold): New function.
11381
11382 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
11383
11384         * ira.c (setup_cover_and_important_classes): Add enum cast.
11385
11386 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
11387
11388         * genpreds.c (write_enum_constraint_num): Output definition of
11389         CONSTRAINT_NUM_DEFINED_P macro.
11390         * ira.c (setup_cover_and_important_classes): Use
11391         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
11392         
11393 2009-04-24  DJ Delorie  <dj@redhat.com>
11394
11395         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
11396         __SH2A_SINGLE_ONLY__ also.
11397
11398 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
11399
11400         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
11401         (movdf_internal): Ditto.
11402         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
11403         SFmode and DFmode constants.
11404         (ia64_print_operand): Add 'G' format for printing
11405         floating point constants.
11406
11407 2009-04-24  Richard Guenther  <rguenther@suse.de>
11408
11409         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
11410         from unsigned additions.
11411
11412 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
11413
11414         * c-typeck.c (set_init_index): Allow array designators that are
11415         not integer constant expressions with a pedwarn if pedantic.
11416
11417 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
11418
11419         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
11420         zero if no overlap in nonzero bits between the operands.
11421
11422 2009-04-24  Ian Lance Taylor  <iant@google.com>
11423
11424         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
11425         (record_dead_and_set_regs): Likewise.
11426         * df.h (struct df_mw_hardreg): Change flags field to int.
11427         (struct df_base_ref): Likewise.
11428         (struct df): Change changeable_flags field to int.
11429         * df-scan.c (df_defs_record): Change clobber_flags to int.
11430         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
11431         constants rather than #define macros.
11432         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
11433         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
11434         (enum dwarf_calling_convention): Likewise.
11435         (enum dwarf_line_number_x_ops): Likewise.
11436         (enum dwarf_call_frame_info): Likewise.
11437         (enum dwarf_source_language): Likewise.
11438         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
11439         (add_calling_convention_attribute): Likewise.
11440         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
11441         (combine_comparisons): Change compcode to int.  Add cast to enum type.
11442         * genrecog.c (maybe_both_true_2): Change c to int.
11443         (write_switch): Likewise.  Add cast to enum type.
11444         * gimplify.c (gimplify_omp_for): Handle return values from
11445         gimplify_expr using MIN rather than bitwise or.
11446         (gimplify_expr): Add cast to enum type.
11447         * ipa-prop.c (update_jump_functions_after_inlining): Change
11448         IPA_BOTTOM to IPA_JF_UNKNOWN.
11449         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
11450         Add casts to enum type.
11451         (setup_cover_and_important_classes): Change cl to int.  Add casts
11452         to enum type.
11453         (setup_class_translate): Change cl and mode to int.
11454         (ira_init_once): Change mode to int.
11455         (free_register_move_costs): Likewise.
11456         (setup_prohibited_mode_move_regs): Add casts to enum type.
11457         * langhooks.c (add_builtin_function_common): Rework assertion that
11458         value fits bitfield.
11459         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
11460         * omega.c (omega_do_elimination): Avoid math on enum types.
11461         * optabs.c (expand_vec_shift_expr): Remove casts to int.
11462         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
11463         int local to handle integral_argment value.
11464         * regmove.c (try_auto_increment): Change PUT_MODE to
11465         PUT_REG_NOTE_KIND.
11466         * reload.c (push_secondary_reload): Add casts to enum type.
11467         (secondary_reload_class, find_valid_class): Likewise.
11468         * reload1.c (emit_input_reload_insns): Likewise.
11469         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
11470         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
11471         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
11472         constant.
11473         * tree.c (build_common_builtin_nodes): Add casts to enum type.
11474         * tree-complex.c (complex_lattice_t): Typedef to int rather than
11475         enum type.
11476         (expand_complex_libcall): Add casts to enum type.
11477         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
11478         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
11479         with ERROR_MARK, not NUM_TREE_CODES.
11480         (vect_create_epilog_for_reduction): Likewise.
11481         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
11482         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
11483         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
11484         enum machine_mode.
11485         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
11486         vect_unused_in_loop.  Change 0 to loop_vect.
11487         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
11488         * var-tracking.c (get_init_value): Change return type to enum
11489         var_init_status.
11490         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
11491         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
11492         arm_fp_model.
11493         (arm_override_options): Add casts to enum type.
11494         (arm_emit_tls_decoration): Likewise.
11495         * config/i386/i386.c (ix86_function_specific_restore): Add casts
11496         to enum type.
11497         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
11498         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
11499         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
11500         enum type.
11501         * config/s390/s390.c (code_for_builtin_64): Change to array of
11502         enum insn_code.
11503         (code_for_builtin_31): Likewise.
11504         (s390_expand_builtin): Change code_for_builtin to enum insn_code
11505         const *.
11506         * config/sparc/sparc.c (sparc_override_options): Change value
11507         field in struct code_model to enum cmodel.  In initializer change
11508         0 to NULL and add cast to enum type.
11509
11510         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
11511         Change all callers.  Issue a -Wc++-compat warning using
11512         lhs_origtype if necessary.
11513         (convert_for_assignment): Issue -Wc++-compat warnings about
11514         invalid conversions to enum type on assignment.
11515         * c-common.h (build_modify_expr): Update declaration.
11516
11517 2009-04-24  Nick Clifton  <nickc@redhat.com>
11518
11519         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
11520         (function_arg_advance): Likewise.
11521         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
11522         5th alternative.
11523
11524 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11525
11526         * config/s390/constraints.md ('I', 'J'): Fix condition.
11527
11528 2009-04-24  Diego Novillo  <dnovillo@google.com>
11529
11530         * gengtype-parse.c (parse_error): Add newline after message.
11531
11532 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
11533
11534         * config/i386/sse.md (avxmodesuffixs): Removed.
11535         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
11536         (*avx_pinsr<ssevecsize>): This.
11537
11538 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
11539
11540         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
11541         follow chains of regs with a single definition, and allow expressions
11542         that are function_invariant_p.
11543         (simple_rhs_p): Allow expressions that are function_invariant_p.
11544
11545 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
11546
11547         PR middle-end/39867
11548         * fold-const.c (fold_cond_expr_with_comparison): When folding
11549         > and >= to MAX, make sure the MAX uses the same type as the
11550         comparison's operands.
11551
11552 2009-04-24  Nick Clifton  <nickc@redhat.com>
11553
11554         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
11555         addressing for DImode accesses.
11556         (frv_print_operand_address): Handle PLUS case.
11557         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
11558
11559 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
11560
11561         PR rtl-optimization/39794
11562         * alias.c (canon_true_dependence): Add x_addr argument.
11563         * rtl.h (canon_true_dependence): Adjust prototype.
11564         * cse.c (check_dependence): Adjust canon_true_dependence callers.
11565         * cselib.c (cselib_invalidate_mem): Likewise.
11566         * gcse.c (compute_transp): Likewise.
11567         * dse.c (scan_reads_nospill): Likewise.
11568         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
11569         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
11570         canon_base_addr of the group, plus optional offset.
11571         (struct group_info): Rename canon_base_mem to
11572         canon_base_addr.
11573         (get_group_info): Set canon_base_addr to canon_rtx of base, not
11574         canon_rtx of base_mem.
11575
11576 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
11577
11578         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
11579         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
11580
11581 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11582
11583         * config/spu/spu-builtins.h: Delete file.
11584
11585         * config/spu/spu.h (enum spu_builtin_type): Move here from
11586         spu-builtins.h.
11587         (struct spu_builtin_description): Likewise.  Add GTY marker.
11588         Do not use enum spu_function_code or enum insn_code.
11589         (spu_builtins): Add extern declaration.
11590
11591         * config/spu/spu.c: Do not include "spu-builtins.h".
11592         (enum spu_function_code, enum spu_builtin_type_index,
11593         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
11594         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
11595         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
11596         unsigned_V2DI_type_node): Move here from spu-builtins.h.
11597         (spu_builtin_types): Make static.  Add GTY marker.
11598         (spu_builtins): Add extern declaration with GTY marker.
11599         Include "gt-spu.h".
11600
11601         * config/spu/spu-c.c: Do not include "spu-builtins.h".
11602         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
11603         Check programmatically whether all parameters are scalar.
11604
11605         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
11606
11607 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
11608
11609         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
11610         assignment from the constructor either if the target is volatile.
11611
11612 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
11613
11614         * config/arm/arm.md (insv): Do not share operands[0].
11615
11616 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
11617
11618         * config/vxlib-tls.c (active_tls_threads): Delete.
11619         (delete_hook_installed): New.
11620         (tls_delete_hook): Don't delete the delete hook.
11621         (tls_destructor): Delete it here.
11622         (__gthread_set_specific): Adjust installing the delete hook.
11623         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
11624         __gthread_leave_tsd_dtor_context.
11625
11626 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
11627
11628         * c-format.c (gcc_tdiag_char_table): Add support for %E.
11629
11630 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
11631
11632         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
11633         enum type.
11634         (alpha_rtx_costs): Ditto.
11635         (emit_unlikely_jump): Use add_reg_note.
11636         (emit_frame_store_1): Ditto.
11637         (alpha_expand_prologue): Ditto.
11638         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
11639         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
11640
11641 2009-04-23  Nick Clifton  <nickc@redhat.com>
11642
11643         * config/v850/v850.md (epilogue): Remove suppressed code.
11644         (return): Rename to return_simple and remove test of frame size.
11645         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
11646         to gen_return_simple.
11647
11648 2009-04-22  Jing Yu  <jingyu@google.com>
11649
11650         PR testsuite/39781
11651         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
11652
11653 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11654
11655         PR C/31499
11656         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
11657         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
11658         value is a VECTOR_CST, the element type is the element type of the
11659         vector.
11660
11661 2009-04-22  DJ Delorie  <dj@redhat.com>
11662
11663         * config/m32c/m32c.h: Update GTY annotations to new syntax.
11664
11665 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
11666
11667         * alias.c (find_base_term): Move around LO_SUM case, so that
11668         CONST falls through into PLUS/MINUS handling.
11669
11670         PR c/39855
11671         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
11672         into 0, use omit_one_operand.
11673
11674 2009-04-23  Ben Elliston  <bje@au.ibm.com>
11675
11676         * config/rs6000/linux-unwind.h (get_regs): Remove type
11677         puns. Change the type of `pc' to an array of unsigned ints and
11678         update all users.  Constify frame24.
11679
11680 2009-04-22  DJ Delorie  <dj@redhat.com>
11681
11682         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
11683         declarations before code.
11684         (current_function_special_page_vector): Likewise.
11685         (m32c_expand_insv): Silence a warning.
11686
11687 2009-04-21  Taras Glek  <tglek@mozilla.com>
11688
11689         * alias.c: Update GTY annotations to new syntax.
11690         * basic-block.h: Likewise.
11691         * bitmap.h: Likewise.
11692         * c-common.h: Likewise.
11693         * c-decl.c: Likewise.
11694         * c-parser.c: Likewise.
11695         * c-pragma.c: Likewise.
11696         * c-tree.h: Likewise.
11697         * cfgloop.h: Likewise.
11698         * cgraph.h: Likewise.
11699         * config/alpha/alpha.c: Likewise.
11700         * config/arm/arm.h: Likewise.
11701         * config/avr/avr.h: Likewise.
11702         * config/bfin/bfin.c: Likewise.
11703         * config/cris/cris.c: Likewise.
11704         * config/darwin.c: Likewise.
11705         * config/frv/frv.c: Likewise.
11706         * config/i386/i386.c: Likewise.
11707         * config/i386/i386.h: Likewise.
11708         * config/i386/winnt.c: Likewise.
11709         * config/ia64/ia64.h: Likewise.
11710         * config/iq2000/iq2000.c: Likewise.
11711         * config/mips/mips.c: Likewise.
11712         * config/mmix/mmix.h: Likewise.
11713         * config/pa/pa.c: Likewise.
11714         * config/pa/pa.h: Likewise.
11715         * config/rs6000/rs6000.c: Likewise.
11716         * config/s390/s390.c: Likewise.
11717         * config/sparc/sparc.c: Likewise.
11718         * config/xtensa/xtensa.c: Likewise.
11719         * cselib.h: Likewise.
11720         * dbxout.c: Likewise.
11721         * dwarf2out.c: Likewise.
11722         * except.c: Likewise.
11723         * except.h: Likewise.
11724         * fixed-value.h: Likewise.
11725         * function.c: Likewise.
11726         * function.h: Likewise.
11727         * gimple.h: Likewise.
11728         * integrate.c: Likewise.
11729         * optabs.c: Likewise.
11730         * output.h: Likewise.
11731         * real.h: Likewise.
11732         * rtl.h: Likewise.
11733         * stringpool.c: Likewise.
11734         * tree-data-ref.c: Likewise.
11735         * tree-flow.h: Likewise.
11736         * tree-scalar-evolution.c: Likewise.
11737         * tree-ssa-address.c: Likewise.
11738         * tree-ssa-alias.h: Likewise.
11739         * tree-ssa-operands.h: Likewise.
11740         * tree.c: Likewise.
11741         * tree.h: Likewise.
11742         * varasm.c: Likewise.
11743         * varray.h: Likewise.
11744         * vec.h: Likewise.
11745         * coretypes.h: Do not define GTY macro if it is already defined.
11746         * doc/gty.texi: Update GTY documentation to new syntax.
11747         * gengtype-lex.l: Enforce attribute-like syntax for GTY
11748         annotations on structs.
11749         * gengtype-parse.c: Likewise.
11750
11751 2009-04-22  Mark Heffernan  <meheff@google.com>
11752
11753         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
11754
11755 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
11756
11757         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
11758         where appropriate.
11759
11760 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
11761
11762         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
11763         the same as a PLUS without a shift.  Increase the cost of a
11764         CONST_INT in MULT.
11765
11766 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11767
11768         * Makefile.in: Update dependencies.
11769         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
11770         * errors.h: Remove bogus comment about compatibility.
11771         (warning): Update declaration.
11772         * genautomata.c: Update all calls to warning.
11773         * gimple.c: Do not include errors.h. Include toplev.h.
11774         * tree-ssa-structalias.c: Do not include errors.h.
11775         * omega.c: Likewise.
11776         * tree-ssa-reassoc.c: Likewise.
11777         * config/spu/spu-c.c: Likewise.
11778         * config/spu/t-spu-elf: Update dependencies.
11779
11780 2009-04-22  Richard Guenther  <rguenther@suse.de>
11781
11782         PR tree-optimization/39824
11783         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
11784         make sure the types are compatible.
11785
11786 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11787
11788         PR c++/14875
11789         * c-common.c (c_parse_error): Take a token_flags parameter.
11790         Use token_type for the token type instead.
11791         Pass token_flags to cpp_type2name.
11792         * c-common.h (c_parse_error): Update declaration.
11793         * c-parser.c (c_parser_error): Pass 0 as token flags.
11794
11795 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
11796
11797         PR rtl-optimization/39580
11798         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
11799         
11800 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11801
11802         * function.c (expand_function_end): Do not emit a jump to the "naked"
11803         return label for fall-through returns.
11804         * except.c (sjlj_emit_function_exit): Always place the call to the
11805         unregister function at the location installed by expand_function_end.
11806
11807 2009-04-22  Richard Guenther  <rguenther@suse.de>
11808
11809         PR tree-optimization/39845
11810         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
11811         (gen_inbound_check): Likewise.
11812
11813 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
11814
11815         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
11816         padding for PPC.
11817         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
11818         * config/vxlib.c (__gthread_once): Add race guard for PPC.
11819
11820 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
11821
11822         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
11823         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
11824         shift counts to avoid out-of-bounds array accesses.
11825
11826 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
11827
11828         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
11829         (Pmode): Move above.
11830
11831 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
11832
11833         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
11834         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
11835         GET_CODE macro.  Use IN_RANGE macro where appropriate.
11836         * config/alpha/alpha.h: Ditto.
11837         * config/alpha/alpha.md: Ditto.
11838         * config/alpha/constraints.md: Ditto.
11839         * config/alpha/predicates.md: Ditto.
11840         
11841 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
11842
11843         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
11844         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11845         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11846         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11847         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11848         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11849         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11850         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11851         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11852         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11853         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11854         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11855         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11856         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11857         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11858         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11859         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11860         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11861         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11862         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11863         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11864         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11865         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11866         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11867         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11868         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11869         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
11870
11871 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
11872
11873         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
11874         references from comments.
11875         * cfgbuild.c: (count_basic_blocks): Delete.
11876         (find_basic_blocks_1): Delete.
11877         (find_basic_blocks): Delete.
11878         * except.c (finish_eh_generation): Make static.  Move comment from
11879         except.h here.  Remove find_basic_blocks references from comments.
11880         * except.h (finish_eh_generation): Delete.
11881         * basic-block.h (find_basic_blocks): Delete.
11882         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
11883
11884 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
11885
11886         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
11887         (sdbout_parms):  Likewise.
11888
11889 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
11890
11891         * config/sh/sh.c (prepare_cbranch_operands): Use
11892         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
11893         (expand_cbranchdi4): Likewise.
11894         (from_compare): Add cast to enum type.
11895         (expand_cbranchsi4): Use add_reg_note.
11896         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
11897         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
11898         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
11899         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
11900         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
11901         instead of CODE_FOR_nothing.
11902         (cbranchdi4): Likewise.  Fix the order of arguments for
11903         gen_rtx_fmt_ee.
11904         (push_fpscr): Use add_reg_note.
11905         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
11906         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
11907         
11908 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
11909
11910         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
11911         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
11912         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
11913         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
11914         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
11915         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
11916         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
11917         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
11918         config/alpha/x-vms, config/arc/t-arc,
11919         config/arm/README-interworking, config/arm/arm-c.c,
11920         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
11921         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
11922         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
11923         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
11924         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
11925         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
11926         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
11927         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
11928         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
11929         config/cris/t-elfmulti, config/crx/t-crx,
11930         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
11931         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
11932         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
11933         config/h8300/t-h8300, config/i386/athlon.md,
11934         config/i386/darwin-libgcc.10.4.ver,
11935         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
11936         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
11937         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
11938         config/i386/t-linux64, config/i386/t-nwld,
11939         config/i386/t-rtems-i386, config/i386/t-sol2-10,
11940         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
11941         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
11942         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
11943         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
11944         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
11945         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
11946         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
11947         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
11948         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
11949         config/m68k/t-uclinux, config/mcore/t-mcore,
11950         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
11951         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
11952         config/mips/crtn.asm, config/mips/irix-crti.asm,
11953         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
11954         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
11955         config/mips/mips-fixed.md, config/mips/sb1.md,
11956         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
11957         config/mips/t-iris6, config/mips/t-isa3264,
11958         config/mips/t-libgcc-mips16, config/mips/t-linux64,
11959         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
11960         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
11961         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
11962         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
11963         config/mn10300/t-linux, config/mn10300/t-mn10300,
11964         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
11965         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
11966         config/picochip/libgccExtras/clzsi2.asm,
11967         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
11968         config/rs6000/darwin-libgcc.10.4.ver,
11969         config/rs6000/darwin-libgcc.10.5.ver,
11970         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
11971         config/rs6000/t-aix43, config/rs6000/t-aix52,
11972         config/rs6000/t-darwin, config/rs6000/t-fprules,
11973         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
11974         config/rs6000/t-lynx, config/rs6000/t-netbsd,
11975         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
11976         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
11977         config/rs6000/t-rtems, config/rs6000/t-spe,
11978         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
11979         config/score/t-score-elf, config/sh/divcost-analysis,
11980         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
11981         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
11982         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
11983         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
11984         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
11985         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
11986         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
11987         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
11988         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
11989         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
11990         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
11991         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
11992         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
11993         limitx.h, version.c, xcoff.h: Add copyright and license notices.
11994         * config/h8300/genmova.sh: Include copyright and license notices
11995         in generated output.
11996         * config/h8300/mova.md: Regenerate.
11997         * doc/install.texi2html: Include word "Copyright" in copyright
11998         notice and use name "Free Software Foundation, Inc.".
11999         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
12000         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
12001         ChangeLog-2007, ChangeLog-2008: Correct dates.
12002
12003 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
12004
12005         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
12006         NE_EXPR operations as well.
12007         * c-parser.c (c_parser_condition): Do not set location information on
12008         the condition.
12009         (c_parser_conditional_expression): Likewise.
12010         (c_parser_binary_expression): Set location information on operators.
12011         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
12012         TRUTH_NOT_EXPR has been folded.
12013         * fold-const.c (fold_truth_not_expr): Copy location information from
12014         the incoming expression to the outgoing one.
12015         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
12016         recursive calls on the LHS of the operator but pass that of the
12017         operator to recursive calls on the RHS of the operator.  Set it
12018         on the COND_EXPR.
12019         (shortcut_cond_expr): Set the locus of the operator on the second
12020         COND_EXPR and that of the expression on the first in degenerate cases.
12021         Pass the locus of the expression to calls to shortcut_cond_r.
12022         Set the locus of the 'then' block on the associated jump, if any.
12023         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
12024         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
12025         expression to call to gimplify_boolean_expr.
12026
12027 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
12028
12029         * config.gcc: Add additional configuration for
12030         i686-w64-mingw* and x86_64-w64-mingw* triplet.
12031         * config/i386/mingw-w64.h: New mingw-w64 specific header.
12032         (CPP_SPEC): Redefine for allowing -municode option.
12033         (STARTFILE_SPEC): Likewise.
12034         * config/i386/t-mingw-w64: New.
12035         * config/i386/mingw-w64.opt: New.
12036         (municode): Add new target option.
12037         * doc/invoke.texi (municode): Add documentation for new option.
12038
12039 2009-04-21  Ian Lance Taylor  <iant@google.com>
12040
12041         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
12042         Correct test for number of arguments.
12043         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
12044
12045 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
12046
12047         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
12048         argument of emit_library_call.
12049
12050 2009-04-21  Richard Guenther  <rguenther@suse.de>
12051
12052         PR middle-end/39829
12053         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
12054         inside VIEW_CONVERT_EXPRs.
12055
12056 2009-04-21  Martin Jambor  <mjambor@suse.cz>
12057
12058         * tree-switch-conversion.c (build_constructors): Split a long line.
12059         (constructor_contains_same_values_p): New function.
12060         (build_one_array): Create assigns of constants if possible, do not
12061         call mark_sym_for_renaming, call update_stmt.
12062         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
12063         make_rename_temp.  Do not call mark_symbols_for_renaming, call
12064         update_stmt.
12065         (gen_def_assigns): Do not call mark_symbols_for_renaming or
12066         find_new_referenced_vars, call update_stmt.
12067         (gen_inbound_check): Use create_tmp_var and create ssa names manually
12068         instead of calling make_rename_temp.  Do not call
12069         find_new_referenced_vars or mark_symbols_for_renaming, call
12070         update_stmt.
12071
12072 2009-04-21  Richard Guenther  <rguenther@suse.de>
12073
12074         PR tree-optimization/39827
12075         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
12076         (tree_ssa_phiprop): Pass the correct array size.
12077
12078 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
12079
12080         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
12081
12082 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
12083
12084         PR 16202
12085         * c-typeck.c (lvalue_p): Move declaration ...
12086         * c-common.h (lvalue_p): ... to here.
12087         * c-common.c (candidate_equal_p): New.
12088         (add_tlist): Use it.
12089         (merge_tlist): Use it.
12090         (warn_for_collisions_1): Likewise.
12091         (warning_candidate_p): Accept more candidates.
12092         (verify_tree): A warning candidate can be an expression. Use
12093         candidate_equal_p.
12094
12095 2009-04-21  Ben Elliston  <bje@au.ibm.com>
12096
12097         PR target/5267
12098         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
12099         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
12100         options.  Remove -mcall-solaris documentation.
12101
12102 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12103
12104         PR c++/13358
12105         * doc/invoke.texi (-Wlong-long): Update description.
12106         * c-lex (interpret_integer): Only warn if there was no previous
12107         overflow and -Wlong-long is enabled.
12108         * c-decl.c (declspecs_add_type): Drop redundant flags.
12109         * c.opt (Wlong-long): Init to -1.
12110         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
12111         and front-end warn_long_long. Wlong-long only depends on other
12112         flags if it is uninitialized.
12113         * c-parser.c (disable_extension_diagnostics): warn_long_long is
12114         the same for CPP and FE.
12115         (restore_extension_diagnostics): Likewise.
12116
12117 2009-04-20  Ian Lance Taylor  <iant@google.com>
12118
12119         Fix enum conversions which are invalid in C++:
12120         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
12121         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
12122         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
12123         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
12124         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
12125         (dbxout_parms): Likewise.
12126         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
12127         (df_clear_flags): Likewise.
12128         * df-problems.c (df_rd_bb_local_compute_process_def): Change
12129         top_flag parameter to int.
12130         (df_chain_create_bb_process_use): Likewise.
12131         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
12132         Remove cast.
12133         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
12134         (df_ref_create_structure, df_def_record_1): Likewise.
12135         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
12136         (df_notes_rescan): Change 0 to VOIDmode in function call.
12137         (df_get_call_refs, df_insn_refs_collect): Likewise.
12138         (df_bb_regs_collect): Likewise.
12139         (df_entry_block_defs_collect): Likewise.
12140         (df_exit_block_uses_collect): Likewise.
12141         * df.h: Update declarations.
12142         * double-int.c (double_int_divmod): Add cast to enum type.
12143         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
12144         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
12145         (based_loc_descr): Likewise.
12146         (loc_descriptor_from_tree_1): Change first_op and second_op to
12147         enum dwarf_location_atom.  Add cast to enum type.
12148         * expmed.c (init_expmed): Change 0 to SET in function call.
12149         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
12150         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
12151         (do_store_flag): Likewise.
12152         * fixed-value.h (struct fixed_value): Change mode to enum
12153         machine_mode.
12154         * function.c (assign_parms): Change 0 to VOIDmode in function call.
12155         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
12156         function call.
12157         (insert_insn_decl, insert_decl, insert_state): Likewise.
12158         (automata_list_finish): Likewise.
12159         * genrecog.c (process_define_predicate): Add cast to enum type.
12160         * gensupport.c (init_predicate_table): Add cast to enum type.
12161         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
12162         function call.
12163         (gimple_build_call_1, gimple_build_label): Likewise.
12164         (gimple_build_goto, gimple_build_asm_1): Likewise.
12165         (gimple_build_switch_1, gimple_build_cdt): Likewise.
12166         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
12167         (enum fallback): Rename from enum fallback_t.
12168         (fallback_t): Typedef as int.
12169         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
12170         GSI_SAME_STMT in function call.
12171         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
12172         enum type.
12173         (setup_reg_class_relations): Likewise.
12174         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
12175         (setup_prohibited_class_mode_regs): Add cast to enum type.
12176         (setup_prohibited_mode_move_regs): Likewise.
12177         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
12178         (record_address_regs): Change i to enum reg_class.
12179         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
12180         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
12181         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
12182         (GET_MODE_2XWIDER_MODE): Likewise.
12183         (GET_CLASS_NARROWEST_MODE): Likewise.
12184         * omp-low.c (expand_omp_for): Add cast to enum type.
12185         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
12186         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
12187         * postreload.c (reload_cse_simplify_operands): Change rclass local
12188         to enum reg_class.
12189         * predict.c (combine_predictions_for_insn): Change best_predictor
12190         and predictor to enum br_predictor.
12191         (combine_predictions_for_bb): Likewise.
12192         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
12193         use SET_PREDICT_EXPR_OUTCOME.
12194         * real.c (real_arithmetic): Change icode to code in function call.
12195         * reginfo.c (init_move_cost): Add casts to enum type.
12196         (init_reg_sets_1, init_fake_stack_mems): Likewise.
12197         * regmove.c (regclass_compatible_p): Change class0 and class1 to
12198         enum reg_class.
12199         * reload.c (find_valid_class): Add casts to enum type.
12200         (push_reload): Change 0 to NO_REGS in function call.
12201         (find_reloads): Change this_alternative to array of enum
12202         reg_class.  Remove some now-unnecessary casts.
12203         (make_memloc): Change 0 to VOIDmode in function call.
12204         * reload1.c (reload): Change 0 to VOIDmode in function call.
12205         (eliminate_regs_1, elimination_effects): Likewise.
12206         (eliminate_regs_in_insn): Likewise.
12207         (emit_input_reload_insns): Add cast to enum type.
12208         (delete_output_reload): Change 0 to VOIDmode in function call.
12209         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
12210         to enum type in function call.
12211         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
12212         (SET_PREDICT_EXPR_OUTCOME): Define.
12213         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
12214         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
12215         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
12216         (dump_function): Likewise.
12217         * tree-dump.h: Update declarations.
12218         * tree-pass.h: Update declarations.
12219         * varasm.c (assemble_integer): Change mclass to enum mode_class.
12220         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
12221         enum type.
12222         (arm_rtx_costs_1): Correct parenthesization.
12223         (arm_rtx_costs): Add casts to enum type.
12224         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
12225         (vfp_emit_fstmd): Use add_rg_note.
12226         (emit_multi_reg_push, emit_sfm): Likewise.
12227         (thumb_set_frame_pointer): Likewise.
12228         (arm_expand_prologue): Likewise.
12229         (arm_regno_class): Change return type to enum reg_class.
12230         (thumb1_expand_prologue): Use add_reg_note.
12231         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
12232         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
12233         in function call.
12234         * config/arm/gentune.sh: Add cast to enum type.
12235         * config/arm/arm-tune.md: Rebuild.
12236         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
12237         (ix86_split_fp_branch, predict_jump): Likewise.
12238         (ix86_expand_multi_arg_builtin): Change sub_code from enum
12239         insn_code to enum rtx_code.
12240         (ix86_builtin_vectorized_function): Add cast to enum type.
12241         * config/i386/i386.md (truncdfsf2): Change slot to enum
12242         ix86_stack_slot.
12243         (truncxf<mode>2, isinf<mode>2): Likewise.
12244         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
12245         enum type.
12246         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
12247         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
12248         (insert_bundle_state): Change 1 to INSERT in function call.
12249         (ia64_add_bundle_selector_before): Likewise.
12250         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
12251         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
12252         (restore_stack_nonlocal): Likewise.
12253         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
12254         function call.
12255         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
12256         function call.
12257         (mips_rtx_costs): Likewise.
12258         (mips_override_options): Add casts to enum type.
12259         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
12260         in function call.
12261         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
12262         (store_reg, set_reg_plus_d): Likewise.
12263         (hppa_expand_prologue, hppa_profile_hook): Likewise.
12264         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
12265         cast to enum type.
12266         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
12267         function call.
12268         (emit_unlikely_jump): Use add_reg_note.
12269         (rs6000_emit_allocate_stack): Likewise.
12270         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
12271         (output_toc): Change 1 to INSERT in function call.
12272         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
12273         (rs6000_initialize_trampoline): Likewise.
12274         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
12275         function call.
12276         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
12277         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
12278         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
12279         (save_gprs): Use add_reg_note.
12280         (s390_emit_prologue): Likewise.
12281         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
12282         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
12283         (sparc_fold_builtin): Add cast to enum type.
12284         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
12285         enum insn_code.
12286         (spu_expand_prologue): Use add_reg_note.
12287         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
12288
12289 2009-04-20  Ian Lance Taylor  <iant@google.com>
12290
12291         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
12292         (c_parser_postfix_expression_after_primary): Get VEC for list of
12293         arguments.  Get original types of arguments.  Call
12294         build_function_call_vec.
12295         (cached_expr_list_1, cached_expr_list_2): New static variables.
12296         (c_parser_expr_list): Change return type to VEC *.  Add
12297         p_orig_types parameter.  Change all callers.
12298         (c_parser_release_expr): New static function.
12299         (c_parser_vec_to_tree_list): New static function.
12300         * c-typeck.c (build_function_call): Rewrite to build a VEC and
12301         call build_function_call_vec.
12302         (build_function_call_vec): New function, based on old
12303         build_function_call.
12304         (convert_arguments): Remove nargs and argarray parameters.  Change
12305         values to a VEC.  Add origtypes parameter.
12306         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
12307         (convert_for_assignment): Add origtype parameter.  Change all
12308         callers.  If warn_cxx_compat, check for conversion to an enum
12309         type when calling a function.
12310         (store_init_value): Add origtype parameter.  Change all callers.
12311         (digest_init): Likewise.
12312         (struct init_node): Add origtype field.
12313         (add_pending_init): Add origtype parameter.  Change all callers.
12314         (output_init_element): Likewise.
12315         (output_pending_init_elements): Pass origtype from init_node to
12316         output_init_element.
12317         (process_init_element): Pass origtype from c_expr to
12318         output_init_element.
12319         (c_finish_return): Add origtype parameter.  Change all callers.
12320         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
12321         caller.
12322         (sync_resolve_params): Likewise.
12323         (sync_resolve_return): Change params to first_param.  Change caller.
12324         (resolve_overloaded_builtins): Change params to VEC *.  Change
12325         callers.  Save first parameter around call to build_function_call_vec.
12326         * c-decl.c (finish_decl): Add origtype parameter.  Change all
12327         callers.  Call build_function_call_vec rather than
12328         build_function_call for cleanup.
12329         * c-tree.h: Update declarations.
12330         * c-common.h: Update declarations.
12331         * stub-objc.c (objc_rewrite_function_call): Change parameter from
12332         params to first_param.
12333         * target.h (struct gcc_target): Change resolve_overloaded_builtin
12334         params parameter from tree to void *.
12335         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
12336         Change arglist parameter to have type void *, and to be a pointer
12337         to a VEC.
12338         * config/rs6000/rs6000-protos.h
12339         (altivec_resolve_overloaded_builtin): Update declaration.
12340         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
12341         fnargs parameter to have type void *, and to be a pointer to a
12342         VEC.  Call build_function_call_vec instead of
12343         build_function_call.
12344         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
12345
12346 2009-04-20  Joey Ye  <joey.ye@intel.com>
12347             Xuepeng Guo  <xuepeng.guo@intel.com>
12348             H.J. Lu  <hongjiu.lu@intel.com>
12349
12350         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
12351
12352         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
12353         (IX86_LEA_PRIORITY): Likewise.
12354         (distance_non_agu_define): New function.
12355         (distance_agu_use): Likewise.
12356         (ix86_lea_for_add_ok): Likewise.
12357         (ix86_dep_by_shift_count): Likewise.
12358
12359         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
12360         should split for LEA.
12361
12362         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
12363         function.
12364         (ix86_dep_by_shift_count): Likewise.
12365
12366 2009-04-20  Richard Guenther  <rguenther@suse.de>
12367
12368         * expr.c (handled_component_p): Move ...
12369         * tree.h (handled_component_p): ... here.
12370         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
12371         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
12372         and REALPART_EXPR to be in one group.
12373
12374 2009-04-20  Richard Guenther  <rguenther@suse.de>
12375
12376         * basic-block.h (get_all_dominated_blocks): Declare.
12377         * dominance.c (get_all_dominated_blocks): New function.
12378         * tree-cfg.c (get_all_dominated_blocks): Remove.
12379         (remove_edge_and_dominated_blocks): Adjust.
12380         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
12381         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
12382         instead of recursing.
12383
12384 2009-04-20  Doug Kwan  <dougkwan@google.com>
12385
12386         * cgraph.h (cgraph_node_ptr): New type for vector functions.
12387         (struct cgraph_node_set_def): New type.
12388         (cgraph_node_set) New type. Also declare vector functions.
12389         (struct cgraph_node_set_element_def): New type.
12390         (cgraph_node_set_element): Ditto.
12391         (cgraph_node_set_iterator): New iterator type.
12392         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
12393         cgraph_node_set_remove, dump_cgraph_node_set,
12394         debug_cgraph_node_set): New prototypes.
12395         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
12396         cgraph_node_set_size): New inlines.
12397         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
12398         including cgraph.h.
12399         (struct ipa_opt_pass): Add struct cgraph_node_set_def
12400         argument to function 'write_summary'.
12401         * ipa.c: Include ggc.h.
12402         (hash_cgraph_node_set_element,
12403         eq_cgraph_node_set_element, cgraph_node_set_new,
12404         cgraph_node_set_add, cgraph_node_set_remove,
12405         cgraph_node_set_find, dump_cgraph_node_set,
12406         debug_cgraph_node_set): New functions.
12407         * Makefile.in (ipa.o): Add dependency on GGC_H.
12408
12409 2009-04-20  Ira Rosen  <irar@il.ibm.com>
12410
12411         PR tree-optimization/39675
12412         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
12413         check of the return code of vect_schedule_slp. Check that
12414         stmt_vec_info still exists for the statement, before checking its
12415         vectorization type.
12416
12417 2009-04-20  Michael Matz  <matz@suse.de>
12418
12419         * Makefile.in (generated_files): Take out $(simple_generated_c).
12420
12421 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
12422
12423         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
12424         (UINTPTR_TYPE):  Likewise.
12425
12426 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
12427
12428         PR c/37481
12429         * c-typeck.c (digest_init): Check for initializing an array with a
12430         string literal.
12431
12432 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
12433
12434         PR c/19771
12435         * c-semantics.c (pop_stmt_list): Propagate
12436         STATEMENT_LIST_HAS_LABEL to parent statement list.
12437
12438 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
12439
12440         * config/mips/mips.h (mips_tune_attr): New macro.
12441         * config/mips/mips.md (cpu): Use it.
12442
12443 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
12444
12445         PR c/38243
12446         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
12447         declaring a tag.
12448
12449 2009-04-19  Diego Novillo  <dnovillo@google.com>
12450
12451         * toplev.c (compile_file): Move call to coverage_finish ...
12452         * cgraphunit.c (ipa_passes): ... here.
12453         Call cgraph_process_new_functions.
12454         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
12455         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
12456
12457 2009-04-19  Jan Hubicka  <jh@suse.cz>
12458
12459         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
12460         cfun.
12461         (dump_cgraph_node): Dump can throw external flag.
12462         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
12463
12464 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
12465
12466         PR c/32061
12467         PR c++/36954
12468         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
12469         * common.opt (Wlogical-op): Move from here...
12470         * c.opt (Wlogical-op): ... to here.
12471         * c-typeck.c (parser_build_binary_op): Update call to
12472         warn_logical_operator.
12473         * c-opts.c (c_common_post_options): Enable warn_logical_op with
12474         extra_warnings.
12475         * c-common.c (warn_logical_op): Update.
12476         * c-common.h (warn_logical_op): Update declaration.
12477
12478 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
12479
12480         * tree.c (protected_set_expr_location): Fix formatting.
12481
12482 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
12483
12484         PR c/27676
12485         * c-typeck.c (readonly_warning): new.
12486         (build_unary_op, build_modify_expr): Use readonly_warning for
12487         storing into something readonly but not const-qualified.
12488
12489 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
12490
12491         PR c/22367
12492         * c-typeck.c (build_unary_op): Check for taking address of
12493         expression of type void.
12494
12495 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
12496
12497         PR c/35210
12498         * c-typeck.c (build_function_call): Check for calling a function
12499         with qualified void return types.  Call require_complete_type when
12500         generating a trap.
12501
12502 2009-04-18  Jan Hubicka  <jh@suse.cz>
12503
12504         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
12505         Set nothrow flag.
12506         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
12507         can_throw_external flag.
12508         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
12509         * ipa-pure-const.c (ignore_edge): New function.
12510         (propagate): Compute order for NOTHROW computation; set NOTHROWs
12511         only over can_throw_external edges.
12512         (local_pure_const): Add nothrow flag.
12513         * ipa-utils.c (searchc): Add ignore_edge callback.
12514         (ipa_utils_reduced_inorder): Add ignore_edge callback.
12515         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
12516         (set_nothrow_function_flags): Update cgraph.
12517         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
12518
12519 2009-04-18  Richard Guenther  <rguenther@suse.de>
12520
12521         PR middle-end/39804
12522         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
12523         (fold_stmt): ... this and ...
12524         (fold_stmt_inplace): ... this.
12525         (fold_stmt_1): Fold references in calls and asms.
12526         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
12527
12528 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12529
12530         * tree-vrp.c (ssa_name_nonzero_p): Remove.
12531         * tree.h: Remove the prototype for ssa_name_nonzero_p.
12532
12533 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12534
12535         * tree.c (function_args_count): Remove.
12536         * tree.h: Remove the prototype for function_args_count.
12537
12538 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12539
12540         * tree-iterator.c (expr_only): Remove.
12541         * tree.h: Remove the prototype for expr_only.
12542
12543 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12544
12545         * reginfo.c (cannot_change_mode_set_regs): Remove.
12546         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
12547
12548 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
12549
12550         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
12551         whether operands 0 and 1 overlaps.
12552
12553 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
12554
12555         PR middle-end/36902
12556         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
12557         pointer. Use warning_at instead of warning.
12558         (search_for_addr_array): Likewise.
12559         (check_array_bounds): Likewise.
12560         (check_all_array_refs): Check that the incoming edge is not in the
12561         list of edges to be removed.
12562         (check_all_array_refs): Avoid the temporal pointer.
12563         (vrp_visit_cond_stmt): Fix typo.
12564         (simplify_switch_using_ranges): Handle the case where the switch
12565         index is an integer constant.
12566
12567 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
12568
12569         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
12570
12571 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
12572
12573         * doc/extend.texi, doc/invoke.texi: Fix typos.
12574
12575 2009-04-17  Cary Coutant  <ccoutant@google.com>
12576
12577         * tree-flow-inline.h (get_lineno): Fix inverted test.
12578
12579 2009-04-17  Diego Novillo  <dnovillo@google.com>
12580
12581         * tree-ssa-pre.c (create_expression_by_pieces): Remove
12582         assertion for AVAIL_OUT.
12583
12584 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
12585
12586         PR target/38627
12587         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
12588         * config/sh/linux-atomic.asm: Likewise.
12589
12590 2009-04-17  Diego Novillo  <dnovillo@google.com>
12591
12592         * except.c (debug_eh_tree): New.
12593         (struct eh_region, struct eh_status): Move ...
12594         * except.h: ... here.
12595         (add_type_for_runtime): Declare extern.
12596         (lookup_type_for_runtime): Likewise.
12597         (debug_eh_tree): Declare.
12598         * Makefile.in (GTFILES): List except.h before except.c
12599
12600 2009-04-17  Diego Novillo  <dnovillo@google.com>
12601
12602         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
12603         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
12604         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
12605         (find_vars_r): ... here.
12606         * tree-flow.h (find_referenced_vars_in): Declare.
12607         * tree-ssa-pre.c (create_expression_by_pieces): Assert
12608         that AVAIL_OUT exists for BLOCK.
12609         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
12610         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
12611         (tree-parloops.o): Likewise.
12612
12613 2009-04-17  Simon Baldwin  <simonb@google.com>
12614
12615         * toplev.c (default_tree_printer): Add handling for %E format.
12616
12617 2009-04-17  Diego Novillo  <dnovillo@google.com>
12618
12619         * tree-pretty-print.c (dump_generic_node): Add break after
12620         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
12621         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
12622         FUNCTION_TYPE together.  Call print_struct_decl when printing
12623         structures and TDF_SLIM is not given.
12624         (print_struct_decl): Fix logic for detecting recursion.
12625
12626 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
12627
12628         PR 31567
12629         * gcc.c (create_at_file): New.
12630         (compile_input_file_p): New.
12631         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
12632         * main.c (main): Update call to toplev_main.
12633         * toplev.c (toplev_main): Change signature. Call expandargv.
12634         * toplev.h (toplev_main): Change signature.
12635
12636 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
12637
12638         * dwarf2out.c (field_byte_offset): Use the type size as the field size
12639         if the latter is not constant.
12640
12641 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
12642
12643         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
12644
12645 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
12646
12647         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
12648         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
12649
12650 2009-04-17  Richard Guenther  <rguenther@suse.de>
12651
12652         * tree-ssa-structalias.c (get_constraint_for_component_ref):
12653         Handle component references view-converting an invariant address.
12654
12655 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
12656
12657         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
12658         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
12659         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
12660         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
12661         Use @deftypevr rather than @deftypevar.
12662
12663 2009-04-17  Richard Guenther  <rguenther@suse.de>
12664
12665         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
12666         (get_prop_source_stmt): Likewise.
12667         (can_propagate_from): Likewise.
12668
12669 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
12670
12671         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
12672         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
12673         (--with-multilib-list): Add default value.
12674         * configure: Regenerate.
12675         * Makefile.in (TM_ENDIAN_CONFIG): Define.
12676         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
12677         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
12678         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
12679         Don't add default cpu to multilib list unnecessarily, but do enable
12680         the relevant compiler option..
12681         Add support for --with-multilib-list=<blank> and
12682         --with-multilib-list=!<somelib> to supress unwanted multilibs.
12683         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
12684         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
12685         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
12686         TM_MULTILIB_CONFIG.
12687         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
12688         (MULTILIB_OSDIRNAMES): New variable.
12689         * config/sh/t-1e: Delete file.
12690         * config/sh/t-mlib-sh1: Delete file.
12691         * config/sh/t-mlib-sh2: Delete file.
12692         * config/sh/t-mlib-sh2a: Delete file.
12693         * config/sh/t-mlib-sh2a-nofpu: Delete file.
12694         * config/sh/t-mlib-sh2a-single: Delete file.
12695         * config/sh/t-mlib-sh2a-single-only: Delete file.
12696         * config/sh/t-mlib-sh2e: Delete file.
12697         * config/sh/t-mlib-sh3e: Delete file.
12698         * config/sh/t-mlib-sh4: Delete file.
12699         * config/sh/t-mlib-sh4-nofpu: Delete file.
12700         * config/sh/t-mlib-sh4-single: Delete file.
12701         * config/sh/t-mlib-sh4-single-only: Delete file.
12702         * config/sh/t-mlib-sh4a: Delete file.
12703         * config/sh/t-mlib-sh4a-nofpu: Delete file.
12704         * config/sh/t-mlib-sh4a-single: Delete file.
12705         * config/sh/t-mlib-sh4a-single-only: Delete file.
12706         * config/sh/t-mlib-sh4al: Delete file.
12707         * config/sh/t-mlib-sh5-32media: Delete file.
12708         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
12709         * config/sh/t-mlib-sh5-64media: Delete file.
12710         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
12711         * config/sh/t-mlib-sh5-compact: Delete file.
12712         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
12713         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
12714         * doc/install.texi (Options specification): Add
12715         --with-multilib-list and --with-endian.
12716
12717 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
12718
12719         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
12720         REVISION_c.
12721         (OBJS-common): Add plugin-version.o.
12722         (plugin-version.o): New.
12723         * gcc-plugin.h (plugin_gcc_version): New.
12724         (plugin_default_version_check): New.
12725         (plugin_init_func, plugin_init): Add version argument.
12726         * plugin-version.c: New.
12727         * plugin.c (str_plugin_gcc_version_name): New.
12728         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
12729         pass it to the init function.
12730         (plugin_default_version_check): New.
12731
12732 2009-04-17  Richard Guenther  <rguenther@suse.de>
12733
12734         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
12735         for decl-vs-decl disambiguation.
12736
12737 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
12738
12739         * config/s390/s390.h (s390_tune_attr): New macro definition.
12740         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
12741
12742 2009-04-17  Richard Guenther  <rguenther@suse.de>
12743
12744         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
12745         (fold_stmt_r): Likewise.
12746         (maybe_fold_reference): New function.
12747         (fold_gimple_assign): Handle cases fold_stmt_r did.
12748         (fold_stmt): Do not use fold_stmt_r.
12749         (fold_stmt_inplace): Likewise.
12750
12751 2009-04-17  Richard Guenther  <rguenther@suse.de>
12752
12753         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
12754         (record_equivalences_from_stmt): Remove useless checks and
12755         simplifications.
12756         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
12757         the type is already suitable.
12758
12759 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
12760
12761         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
12762
12763 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
12764
12765         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
12766         (CMPtype): Define as __gcc_CMPtype.
12767
12768 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
12769
12770         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
12771         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
12772
12773 2009-04-17  Richard Guenther  <rguenther@suse.de>
12774
12775         PR tree-optimization/39746
12776         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
12777         special-casing for builtins and static variable use/def.
12778         (call_may_clobber_ref_p_1): Likewise.
12779
12780 2009-04-16  Ian Lance Taylor  <iant@google.com>
12781
12782         * df.h: Include "timevar.h".
12783         (struct df_problem): Change tv_id field to timevar_id_t.
12784         * tree-pass.h: Include "timevar.h".
12785         (struct opt_pass): Change tv_id field to timevar_id_t.
12786         * timevar.h (timevar_id_t): Define TV_NONE.
12787         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
12788         TV_NONE rather than tv_id != 0.
12789         (execute_one_pass): Likewise.
12790         * Makefile.in (DF_H): Add $(TIMEVAR_H).
12791         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
12792         dependencies to $(TREE_PASS_H).
12793         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
12794         to TV_NONE.
12795         (pass_branch_target_load_optimize2): Likewise.
12796         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
12797         (pass_outof_cfg_layout_mode): Likewise.
12798         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
12799         (pass_rebuild_cgraph_edges): Likewise.
12800         (pass_remove_cgraph_callee_edges): Likewise.
12801         * df-core.c (pass_df_initialize_opt): Likewise.
12802         (pass_df_initialize_no_opt): Likewise.
12803         (pass_df_finish): Likewise.
12804         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
12805         * except.c (pass_set_nothrow_function_flags): Likewise.
12806         (pass_convert_to_eh_region_ranges): Likewise.
12807         * final.c (pass_compute_alignments): Likewise.
12808         * function.c (pass_instantiate_virtual_regs): Likewise.
12809         (pass_init_function): Likewise.
12810         (pass_leaf_regs): Likewise.
12811         (pass_match_asm_constraints): Likewise.
12812         * gimple-low.c (pass_lower_cf): Likewise.
12813         (pass_mark_used_blocks): Likewise.
12814         * init-regs.c (pass_initialize_regs): Likewise.
12815         * integrate.c (pass_initial_value_sets): Likewise.
12816         * ira.c (pass_ira): Likewise.
12817         * jump.c (pass_cleanup_barriers): Likewise.
12818         * omp-low.c (pass_expand_omp): Likewise.
12819         (pass_lower_omp): Likewise.
12820         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
12821         * recog.c (pass_split_all_insns): Likewise.
12822         (pass_split_after_reload): Likewise.
12823         (pass_split_before_regstack): Likewise.
12824         (pass_split_before_sched2): Likewise.
12825         (pass_split_for_shorten_branches): Likewise.
12826         * reginfo.c (pass_reginfo_init): Likewise.
12827         (pass_subregs_of_mode_init): Likewise.
12828         (pass_subregs_of_mode_finish): Likewise.
12829         * passes.c (pass_postreload): Likewise.
12830         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
12831         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
12832         (pass_warn_function_return): Likewise.
12833         (pass_warn_function_noreturn): Likewise.
12834         * tree-complex.c (pass_lower_complex): Likewise.
12835         (pass_lower_complex_O0): Likewise.
12836         * tree-if-conv.c (pass_if_conversion): Likewise.
12837         * tree-into-ssa.c (pass_build_ssa): Likewise.
12838         * tree-mudflap.c (pass_mudflap_1): Likewise.
12839         (pass_mudflap_2): Likewise.
12840         * tree-nomudflap.c (pass_mudflap_1): Likewise.
12841         (pass_mudflap_2): Likewise.
12842         * tree-nrv.c (pass_return_slot): Likewise.
12843         * tree-object-size.c (pass_object_sizes): Likewise.
12844         * tree-optimize.c (pass_all_optimizations): Likewise.
12845         (pass_early_local_passes): Likewise.
12846         (pass_all_early_optimizations): Likewise.
12847         (pass_cleanup_cfg): Likewise.
12848         (pass_cleanup_cfg_post_optimizing): Likewise.
12849         (pass_free_datastructures): Likewise.
12850         (pass_free_cfg_annotations): Likewise.
12851         (pass_fixup_cfg): Likewise.
12852         (pass_init_datastructures): Likewise.
12853         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
12854         (pass_late_warn_uninitialized): Likewise.
12855         (pass_update_address_taken): Likewise.
12856         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
12857         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
12858         (pass_cse_sincos): Likewise.
12859         (pass_convert_to_rsqrt): Likewise.
12860         * tree-ssa-structalias.c (pass_build_alias): Likewise.
12861         * tree-stdarg.c (pass_stdarg): Likewise.
12862         * tree-tailcall.c (pass_tail_recursion): Likewise.
12863         (pass_tail_calls): Likewise.
12864         * tree-vect-generic.c (pass_lower_vector): Likewise.
12865         (pass_lower_vector_ssa): Likewise.
12866         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
12867
12868 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
12869
12870         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
12871         XLR entry.
12872         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
12873         Handle -march=xlr.
12874         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
12875         logical and signext.
12876
12877 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
12878
12879         PR target/39767
12880         * config/sh/predicates.md (arith_operand): Check if the operand
12881         of TRUNCATE is a REG.
12882
12883 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12884
12885         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
12886         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
12887
12888 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12889
12890         * tree-iterator.c (tsi_split_statement_list_after,
12891         tsi_split_statement_list_before): Remove.
12892         * tree-iterator.h: Remove the prototypes for
12893         tsi_split_statement_list_after and tsi_split_statement_list_before.
12894
12895 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12896
12897         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
12898         * tree-ssa-propagate.h: Remove the prototype for
12899         stmt_makes_single_load.
12900
12901 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12902
12903         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
12904         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
12905
12906 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12907
12908         * tree-iterator.c (EXPR_LAST_BODY): Remove.
12909
12910 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12911
12912         * except.c (eh_region_outer_p): Remove.
12913         * except.h: Remove the prototype for eh_region_outer_p.
12914
12915 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
12916
12917         * function.c (current_function_assembler_name): Remove.
12918         * function.h: Remove the prototype for
12919         current_function_assembler_name.
12920
12921 2009-04-16  Ian Lance Taylor  <iant@google.com>
12922
12923         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
12924         (add_reg_note): Call alloc_reg_note.
12925         * rtl.h (alloc_reg_note): Declare.
12926         * combine.c (try_combine): Use alloc_reg_note.
12927         (recog_for_combine, move_deaths): Likewise.
12928         (distribute_notes): Use alloc_reg_note and add_reg_note.
12929         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
12930         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
12931         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
12932
12933 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
12934
12935         PR rtl-optimization/39762
12936         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
12937         ira_may_move_out_cost): Add comments about way of their usage.
12938         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
12939
12940         * ira-conflicts.c (process_regs_for_copy): Use function
12941         ira_get_register_move_cost instead of global
12942         ira_register_move_cost.
12943
12944         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
12945         color_pass, move_spill_restore, update_curr_costs): Ditto.
12946
12947         * ira-lives.c (process_single_reg_class_operands): Ditto.
12948
12949         * ira-emit.c (emit_move_list): Ditto.
12950
12951         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
12952         (record_reg_classes): Ditto.  Use functions
12953         ira_get_register_move_cost and ira_get_may_move_cost instead of
12954         global vars ira_register_move_cost, ira_may_move_out_cost and
12955         ira_may_move_in_cost.
12956         (record_address_regs): Don't call ira_init_register_move_cost.
12957         Use function ira_get_may_move_cost instead of global
12958         ira_may_move_in_cost.
12959         (process_bb_node_for_hard_reg_moves): Use function
12960         ira_get_register_move_cost instead of global ira_register_move_cost.
12961         (ira_costs): Don't call ira_init_register_move_cost.
12962
12963 2009-04-16  Richard Guenther  <rguenther@suse.de>
12964
12965         * tree-cfg.c (verify_gimple_assign_binary):
12966         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
12967         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
12968         (create_general_new_stmt): Note that this function is broken.
12969
12970 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
12971
12972         * common.opt (fhelp): Add Var(help_flag).
12973         * gcc-plugin.h (plugin_info): Add help.
12974         * plugin.c (plugin_name_args): Add help.
12975         (register_plugin_info): Set plugin->help.
12976         (print_help_one_plugin): New.
12977         (print_plugins_help): New.
12978         * plugin.h (print_plugins_help): New.
12979         * toplev.c (toplev_main): Call print_plugins_help if needed.
12980
12981 2009-04-16  Richard Guenther  <rguenther@suse.de>
12982
12983         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
12984         (gimple_ior_addresses_taken_1): New function.
12985         (gimple_ior_addresses_taken): Likewise.
12986         * gimple.h (struct gimple_statement_with_ops_base): Remove
12987         addresses_taken member.
12988         (gimple_ior_addresses_taken): Declare.
12989         (gimple_addresses_taken, gimple_addresses_taken_ptr,
12990         gimple_set_addresses_taken): Remove.
12991         * ipa-reference.c (mark_address): New function.
12992         (scan_stmt_for_static_refs): Use it for marking addresses taken.
12993         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
12994         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
12995         (gimple_add_to_addresses_taken): Remove.
12996         (get_tmr_operands): Call mark_address_taken.
12997         (get_asm_expr_operands): Likewise.
12998         (get_expr_operands): Likewise.
12999         (build_ssa_operands): Do not clear the addresses_taken bitmap.
13000         (free_stmt_operands): Do not free it.
13001         * tree-ssa.c (delete_tree_ssa): Likewise.
13002         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
13003
13004 2009-04-16  Richard Guenther  <rguenther@suse.de>
13005
13006         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
13007         (walk_stmt_load_store_ops): Likewise.
13008         * gimple.c (get_base_loadstore): New function.
13009         (walk_stmt_load_store_addr_ops): Likewise.
13010         (walk_stmt_load_store_ops): Likewise.
13011         * ipa-pure-const.c (check_op): Simplify.
13012         (check_load, check_store): New functions.
13013         (check_stmt): Use walk_stmt_load_store_ops.
13014         * ipa-reference.c (mark_load): Adjust signature.
13015         (mark_store): Likewise.
13016         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
13017
13018 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
13019
13020         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
13021         (plugin_info): New.
13022         * opts.c (common_handle_option): Don't call print_version.
13023         * plugin.c (plugin_name_args): Add version.
13024         (register_plugin_info): New.
13025         (register_callback): Handle PLUGIN_INFO.
13026         (try_init_one_plugin): New.
13027         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
13028         if failed to init.
13029         (finalize_one_plugin): New.
13030         (finalize_plugins): New.
13031         (print_one_plugin): New.
13032         (print_plugins_versions): New.
13033         * plugin.h (print_plugins_versions): New.
13034         (finalize_plugins): New.
13035         * toplev.c (compile_file): Don't call initialize_plugins.
13036         (print_version): Call print_plugins_versions.
13037         (toplev_main): Call initialize_plugins. Print version if needed.
13038         Call finalize_plugins.
13039
13040 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
13041
13042         * common.opt (fversion): New.
13043         * gcc.c (print_version): New.
13044         (process_command): Don't print the version. Just set print_version.
13045         (main): Print version. Call subprocesses if print_version and
13046         verbose_flag are set.
13047         * opts.c (common_handle_option): Handle OPT_fversion.
13048
13049 2009-04-16  Richard Guenther  <rguenther@suse.de>
13050             Ira Rosen  <irar@il.ibm.com>
13051
13052         PR tree-optimization/39698
13053         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
13054         type of the reduction variable.  Only generate the def if
13055         it is needed.
13056
13057         * omp-low.c (expand_omp_for_generic): When converting to a pointer
13058         make sure to first convert to an integer of the same precision.
13059         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
13060         the type of the evolution correctly in computing the new
13061         induction variable base.
13062
13063 2009-04-16  Richard Guenther  <rguenther@suse.de>
13064
13065         PR middle-end/39625
13066         * tree-cfg.c (make_blocks): Split statements with to-be
13067         abnormal SSA names on the lhs.
13068
13069 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
13070
13071         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
13072         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
13073         * c-typeck.c (really_start_incremental_init): Likewise.
13074         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
13075         (TARGET_INITIALIZER): Remove it.
13076         * target.h (struct target): Remove vector_opaque_p.
13077         * tree.c (build_opaque_vector_type): New.
13078         * tree.h (TYPE_VECTOR_OPAQUE): New.
13079         (build_opaque_vector_type): Declare.
13080         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
13081         * config/rs6000/rs6000.c (build_opaque_vector_type,
13082         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
13083         (rs6000_init_builtins): Use build_opaque_vector_type for
13084         opaque_V4SI_type_node.
13085
13086 2009-04-15  Catherine Moore  <clm@codesourcery.com>
13087
13088         * debug.h (set_name):  Declare.
13089         * dwarf2out.c (dwarf2out_set_name): Declare.
13090         (dwarf2_debug_hooks): Add set_name.
13091         (find_AT_string): New.
13092         (add_AT_string): Call find_AT_string.
13093         (dwarf2out_set_name): New.
13094         * cp/decl.c (grokdeclarator): Call set_name.
13095         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
13096         * debug.c (do_nothing_debug_hooks):  Likewise.
13097         * dbxout.c (dbx_debug_hooks): Likewise.
13098         * sdbout.c (sdb_debug_hooks): Likewise.
13099
13100 2009-04-15  Michael Eager  <eager@eagercon.com>
13101
13102         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
13103         reg for single-precision FPU.
13104         * config/rs6000/rs6000.md (movsi_internal1): Only for
13105         !TARGET_SINGLE_FPU.
13106         (movsi_internal1_single): New. Add pattern to move SI values to/from
13107         single-precision FP regs.
13108
13109 2009-04-15  Richard Guenther  <rguenther@suse.de>
13110
13111         * omp-low.c (lower_rec_input_clauses): Build correct address
13112         expressions.
13113         (expand_omp_for_generic): Fix multiplication type.
13114         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
13115         (generate_memset_zero): Fix types.
13116         * tree-profile.c (prepare_instrumented_value): Correctly
13117         widen a pointer.
13118
13119 2009-04-15  Ian Lance Taylor  <iant@google.com>
13120
13121         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
13122         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
13123         for -Wall and for -Wc++-compat.
13124         (c_common_post_options): For C++, set warn_enum_compare if not
13125         already set.
13126         * c-tree.h (struct c_expr): Add field original_type.
13127         (build_external_ref): Update declaration.
13128         * c-parser.c (c_parser_braced_init): Set original_type.
13129         (c_parser_initelt): Likewise.
13130         (c_parser_expr_no_commas): Likewise.
13131         (c_parser_conditional_expression): Likewise.
13132         (c_parser_cast_expression): Likewise.
13133         (c_parser_unary_expression): Likewise.  Pull setting of
13134         original_code to top of function.
13135         (c_parser_sizeof_expression): Set original_type.
13136         (c_parser_alignof_expression): Likewise.
13137         (c_parser_postfix_expression): Likewise.  Pull setting of
13138         original_code to top of function.
13139         (c_parser_postfix_expression_after_paren_type): Set original_type.
13140         (c_parser_postfix_expression_after_primary): Likewise.
13141         (c_parser_expression): Likewise.
13142         * c-typeck.c (build_external_ref): Add type parameter.  Change all
13143         callers.
13144         (c_expr_sizeof_expr): Set original_type field.
13145         (parser_build_unary_op): Likewise.
13146         (parser_build_binary_op): Likewise.  Optionally warn about
13147         comparisons of enums of different types.
13148         (digest_init): Set original_type field.
13149         (really_start_incremental_init): Likewise.
13150         (push_init_level, pop_init_level): Likewise.
13151         * doc/invoke.texi (Warning Options): -Wenum-compare now
13152         supported in C.
13153
13154 2009-04-15  Richard Guenther  <rguenther@suse.de>
13155
13156         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
13157         out a necessary conversion.
13158         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
13159         names we didn't value number.
13160         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
13161
13162 2009-04-15  Richard Guenther  <rguenther@suse.de>
13163
13164         PR tree-optimization/39764
13165         * tree-ssa-ccp.c (get_value): Canonicalize value with
13166         canonicalize_float_value.
13167
13168 2009-04-15  Jan Hubicka  <jh@suse.cz>
13169
13170         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
13171         Wrong version of patch.
13172
13173 2009-04-15  Jan Hubicka  <jh@suse.cz>
13174
13175         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
13176
13177 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
13178
13179         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
13180         our distinct integral and vector types.
13181
13182 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
13183
13184         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
13185         * init.c (build_vtbl_address): Remove call to assemble_external.
13186
13187 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
13188
13189         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
13190         output for other floating point modes.
13191
13192 2009-04-14  Diego Novillo  <dnovillo@google.com>
13193
13194         * diagnostic.c (diagnostic_report_diagnostic): Do not
13195         warn about loaded plugins for DK_ERROR and DK_WARNING.
13196         * c-decl.c (declspecs_add_type): Move call to
13197         invoke_plugin_callbacks ...
13198         * c-parser.c (c_parser_declspecs): ... here.
13199         * plugin.c (dump_active_plugins): Tidy output.
13200
13201 2009-04-14  Diego Novillo  <dnovillo@google.com>
13202             Le-Chun Wu  <lcwu@google.com>
13203
13204         * configure.ac: Add --enable-plugin support.
13205         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
13206         * Makefile.in (PLUGIN_H): Define.
13207         Export ENABLE_PLUGIN and GMPINC to site.exp.
13208         Add PLUGINLIBS to link command.
13209         Add/modify dependencies for plugin.o and files including plugin.h.
13210         (plugin.o): New.
13211         * config.in: Regenerate.
13212
13213         * opts.c (common_handle_option): Handle OPT_fplugin_ and
13214         OPT_fplugin_arg_.
13215
13216 2009-04-14  Le-Chun Wu  <lcwu@google.com>
13217
13218         * tree-pass.h (register_one_dump_file): Add a prototype for
13219         register_one_dump_file.
13220         * toplev.c (compile_file): Call initialize_plugins.
13221         (do_compile): Call invoke_plugin_callbacks.
13222         (toplev_main): Call invoke_plugin_callbacks.
13223         * common.opt: Add -fplugin= and -fplugin-arg-.
13224         * gcc-plugin.h: New public header file for plugins to include.
13225         * plugin.c: New source file.
13226         * plugin.h: New internal header file.
13227         * passes.c (register_one_dump_file): Make it external.
13228
13229         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
13230
13231 2009-04-14  Diego Novillo  <dnovillo@google.com>
13232
13233         * doc/plugins.texi: New.
13234         * doc/gccint.texi: Add reference to Plugins chapter.
13235         * doc/invoke.texi: Document -fplugin and -fplugin-arg
13236         * diagnostic.c (diagnostic_report_diagnostic): Warn about
13237         loaded plugins, if any.
13238         * timevar.def (TV_PLUGIN_INIT): Define.
13239         (TV_PLUGIN_RUN): Define.
13240         * plugin.c: Include timevar.h
13241         (plugins_active_p): New.
13242         (dump_active_plugins): New.
13243         (debug_active_plugins): New.
13244
13245 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
13246
13247         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
13248         library paths.
13249         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
13250
13251 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
13252
13253         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
13254         the same as a minus without a shift.
13255
13256 2009-04-14  Nick Clifton  <nickc@redhat.com>
13257
13258         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
13259         comparisons with small integers will always produce a short
13260         branch.
13261
13262 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
13263
13264         Merge:
13265         2008-12-19  Diego Novillo  <dnovillo@google.com>
13266
13267         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
13268
13269 2009-04-14  Richard Guenther  <rguenther@suse.de>
13270
13271         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
13272         verification.
13273         (verify_gimple_assign_binary): Likewise.  Handle shifts and
13274         rotates correctly.
13275         (verify_gimple_phi): Print the mismatched argument position.
13276         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
13277         Fix types.
13278         (vect_update_init_of_dr): Likewise.
13279         * matrix-reorg.c (transform_access_sites): Do what the
13280         comment suggests.
13281         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
13282
13283 2009-04-13  Michael Eager  <eager@eagercon.com>
13284
13285         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
13286         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
13287         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
13288         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
13289         remove duplicate config
13290
13291 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13292
13293         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
13294         file_name:line_number type locator of the call site.
13295
13296 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
13297
13298         * genautomata.c: Put blank after comma.
13299         (automaton_decls): New.
13300         (struct unit_usage): Add comments to member next.
13301         (store_alt_unit_usage): Keep the list ordered.
13302         (unit_present_on_list_p, equal_alternatives_p): New.
13303         (check_regexp_units_distribution): Check units distribution
13304         correctness correctly.
13305         (main): Don't write automata if error is found.  Return correct
13306         exit code.
13307
13308         * config/m68k/cf.md (cfv4_ds): Remove.
13309         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
13310         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
13311
13312         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
13313         power4-load-ext, power4-store, power4-store-update,
13314         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
13315         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
13316         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
13317         power4-sqrt, power4-isync): Modify reservation to make correct
13318         unit distribution to automata.
13319
13320         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
13321         power5-store-update, power5-two, power5-three, power5-lmul,
13322         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
13323
13324 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
13325
13326         * except.c (pass_set_nothrow_function_flags): Set name and add
13327         TODO_dump_func.
13328         (set_nothrow_function_flags): Mention in the dump file when
13329         changing a function to nothrow.
13330
13331 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
13332
13333         PR/39066
13334         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
13335         instead of unsigned long.
13336
13337 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13338
13339         * config/arm/arm.c (return_used_this_function): Remove.
13340         (arm_output_function_prologue): Remove use of
13341         return_used_this_function.
13342         (output_return_instruction): Replace use of
13343         return_used_this_function
13344         by cfun->machine->return_used_this_function.
13345         (arm_output_epilogue): Likewise.
13346         (arm_output_function_epilogue): Likewise.
13347         (thumb_unexpanded_epilogue): Likewise.
13348         * config/arm/arm.h (struct machine_function):
13349         New member return_used_this_function.
13350
13351 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
13352
13353         * doc/install.texi: Correct description of default directory for
13354         --with-gxx-include-dir.
13355
13356 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
13357
13358         * fold-const.c (build_range_check): Properly deal with enumeral and
13359         boolean base types.
13360
13361 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
13362
13363         * doc/invoke.texi (max_gcse_passes): Remove documentation.
13364         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
13365         * params.h (MAX_GCSE_PASSES): Remove.
13366         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
13367         in sequence.  Remove ability to run multiple passes.
13368         (bypass_jumps): Report run as third CPROP pass.
13369
13370 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
13371
13372         PR middle-end/39651
13373         * except.c (can_throw_external): Look at each insn in a SEQUENCE
13374         when deciding whether the whole SEQUENCE can throw.
13375
13376 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
13377
13378         PR target/39740
13379         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
13380         offseted label references.
13381
13382 2009-04-11  Jan Hubicka  <jh@suse.cz>
13383
13384         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
13385
13386 2009-04-11  Richard Guenther  <rguenther@suse.de>
13387
13388         PR middle-end/39732
13389         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
13390         return variables as TREE_ADDRESSABLE.
13391
13392 2009-04-11  Richard Guenther  <rguenther@suse.de>
13393
13394         PR tree-optimization/39713
13395         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
13396         reference trees have SSA_NAME operands.
13397
13398 2009-04-11  Richard Guenther  <rguenther@suse.de>
13399
13400         PR c/39712
13401         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
13402         address expressions.
13403
13404 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
13405
13406         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
13407         match changes in Cygwin 1.7
13408         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
13409         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
13410
13411 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
13412
13413         PR tree-optimization/39701
13414         * doc/invoke.texi (Optimization Options): Document change in
13415         meaning and initialization of -fdelete-null-pointer-checks.
13416
13417 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
13418
13419         PR middle-end/39701
13420         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
13421
13422         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
13423         here.
13424
13425         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
13426
13427 2009-04-10  Chao-ying Fu  <fu@mips.com>
13428
13429         * doc/tm.texi (Instruction Output): Document
13430         TARGET_ASM_FINAL_POSTSCAN_INSN.
13431         * target.h (final_postscan_insn): New field in asm_out.
13432         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
13433         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
13434         * final.c (final_scan_insn): Call
13435         targetm.asm_out.final_postscan_insn after outputting
13436         an asm macro and a normal instruction.
13437
13438         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
13439         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
13440         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
13441         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
13442         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
13443
13444 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
13445
13446         PR middle-end/39701
13447         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
13448         variables as non-NULL even with -fdelete-null-pointer-checks.
13449
13450 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
13451
13452         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
13453
13454 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
13455
13456         PR target/39678
13457         * config/i386/i386.c (classify_argument): Handle SCmode with
13458         (bit_offset % 64) != 0.
13459
13460 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
13461
13462         * doc/invoke.texi (Optimize Options): Add cross-reference to
13463         -Q --help=optimizers examples.
13464
13465 2009-04-10  Ben Elliston  <bje@au.ibm.com>
13466
13467         PR target/36800
13468         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
13469         regalign for the reg == fpr and TDmode case.
13470
13471 2009-04-09  David Ayers  <ayers@fsfe.org>
13472
13473         PR objc/29200
13474         * objc/objc-act.c (warn_with_method): Remove helper function.
13475         (check_duplicates): Call warning and inform directly.
13476         (really_start_method): Likewise.
13477
13478 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
13479
13480         * expmed.c (expand_divmod): Always use a comparison for a division
13481         by a large unsigned integer.
13482
13483         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
13484         for things others than variables or functions as nonzero.
13485
13486 2009-04-09  Nick Clifton  <nickc@redhat.com>
13487
13488         * unwind-compat.c: Change copyright header to refer to version
13489         3 of the GNU General Public License with version 3.1 of the
13490         GCC Runtime Library Exception and to point readers at the
13491         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
13492         * config/alpha/crtfastmath.c: Likewise.
13493         * config/alpha/linux-unwind.h: Likewise.
13494         * config/alpha/qrnnd.asm: Likewise.
13495         * config/alpha/vms-crt0-64.c: Likewise.
13496         * config/alpha/vms-crt0.c: Likewise.
13497         * config/alpha/vms-dwarf2.asm: Likewise.
13498         * config/alpha/vms-dwarf2eh.asm: Likewise.
13499         * config/alpha/vms-psxcrt0-64.c: Likewise.
13500         * config/alpha/vms-psxcrt0.c: Likewise.
13501         * config/alpha/vms_tramp.asm: Likewise.
13502         * config/arc/initfini.c: Likewise.
13503         * config/arc/lib1funcs.asm: Likewise.
13504         * config/arm/bpabi-v6m.S: Likewise.
13505         * config/arm/bpabi.S: Likewise.
13506         * config/arm/bpabi.c: Likewise.
13507         * config/arm/crti.asm: Likewise.
13508         * config/arm/crtn.asm: Likewise.
13509         * config/arm/ieee754-df.S: Likewise.
13510         * config/arm/ieee754-sf.S: Likewise.
13511         * config/arm/lib1funcs.asm: Likewise.
13512         * config/arm/libunwind.S: Likewise.
13513         * config/arm/linux-atomic.c: Likewise.
13514         * config/arm/mmintrin.h: Likewise.
13515         * config/arm/pr-support.c: Likewise.
13516         * config/arm/unaligned-funcs.c: Likewise.
13517         * config/arm/unwind-arm.c: Likewise.
13518         * config/arm/unwind-arm.h: Likewise.
13519         * config/avr/libgcc.S: Likewise.
13520         * config/bfin/crti.s: Likewise.
13521         * config/bfin/crtlibid.s: Likewise.
13522         * config/bfin/crtn.s: Likewise.
13523         * config/bfin/lib1funcs.asm: Likewise.
13524         * config/bfin/linux-unwind.h: Likewise.
13525         * config/cris/arit.c: Likewise.
13526         * config/cris/cris_abi_symbol.c: Likewise.
13527         * config/darwin-64.c: Likewise.
13528         * config/darwin-crt2.c: Likewise.
13529         * config/darwin-crt3.c: Likewise.
13530         * config/darwin.h: Likewise.
13531         * config/dbxelf.h: Likewise.
13532         * config/dfp-bit.c: Likewise.
13533         * config/dfp-bit.h: Likewise.
13534         * config/elfos.h: Likewise.
13535         * config/fixed-bit.c: Likewise.
13536         * config/fixed-bit.h: Likewise.
13537         * config/fp-bit.c: Likewise.
13538         * config/fp-bit.h: Likewise.
13539         * config/fr30/crti.asm: Likewise.
13540         * config/fr30/crtn.asm: Likewise.
13541         * config/fr30/lib1funcs.asm: Likewise.
13542         * config/freebsd-spec.h: Likewise.
13543         * config/frv/cmovd.c: Likewise.
13544         * config/frv/cmovh.c: Likewise.
13545         * config/frv/cmovw.c: Likewise.
13546         * config/frv/frvbegin.c: Likewise.
13547         * config/frv/frvend.c: Likewise.
13548         * config/frv/lib1funcs.asm: Likewise.
13549         * config/glibc-stdint.h: Likewise.
13550         * config/h8300/clzhi2.c: Likewise.
13551         * config/h8300/crti.asm: Likewise.
13552         * config/h8300/crtn.asm: Likewise.
13553         * config/h8300/ctzhi2.c: Likewise.
13554         * config/h8300/fixunssfsi.c: Likewise.
13555         * config/h8300/lib1funcs.asm: Likewise.
13556         * config/h8300/parityhi2.c: Likewise.
13557         * config/h8300/popcounthi2.c: Likewise.
13558         * config/i386/ammintrin.h: Likewise.
13559         * config/i386/att.h: Likewise.
13560         * config/i386/avxintrin.h: Likewise.
13561         * config/i386/biarch64.h: Likewise.
13562         * config/i386/bmmintrin.h: Likewise.
13563         * config/i386/cpuid.h: Likewise.
13564         * config/i386/cross-stdarg.h: Likewise.
13565         * config/i386/crtfastmath.c: Likewise.
13566         * config/i386/crtprec.c: Likewise.
13567         * config/i386/cygming-crtbegin.c: Likewise.
13568         * config/i386/cygming-crtend.c: Likewise.
13569         * config/i386/cygwin.asm: Likewise.
13570         * config/i386/emmintrin.h: Likewise.
13571         * config/i386/gmm_malloc.h: Likewise.
13572         * config/i386/gthr-win32.c: Likewise.
13573         * config/i386/i386.h: Likewise.
13574         * config/i386/immintrin.h: Likewise.
13575         * config/i386/linux-unwind.h: Likewise.
13576         * config/i386/linux64.h: Likewise.
13577         * config/i386/mm3dnow.h: Likewise.
13578         * config/i386/mmintrin-common.h: Likewise.
13579         * config/i386/mmintrin.h: Likewise.
13580         * config/i386/nmmintrin.h: Likewise.
13581         * config/i386/pmm_malloc.h: Likewise.
13582         * config/i386/pmmintrin.h: Likewise.
13583         * config/i386/smmintrin.h: Likewise.
13584         * config/i386/sol2-c1.asm: Likewise.
13585         * config/i386/sol2-ci.asm: Likewise.
13586         * config/i386/sol2-cn.asm: Likewise.
13587         * config/i386/sol2-gc1.asm: Likewise.
13588         * config/i386/tmmintrin.h: Likewise.
13589         * config/i386/unix.h: Likewise.
13590         * config/i386/w32-unwind.h: Likewise.
13591         * config/i386/wmmintrin.h: Likewise.
13592         * config/i386/x86-64.h: Likewise.
13593         * config/i386/x86intrin.h: Likewise.
13594         * config/i386/xmmintrin.h: Likewise.
13595         * config/ia64/crtbegin.asm: Likewise.
13596         * config/ia64/crtend.asm: Likewise.
13597         * config/ia64/crtfastmath.c: Likewise.
13598         * config/ia64/crti.asm: Likewise.
13599         * config/ia64/crtn.asm: Likewise.
13600         * config/ia64/fde-glibc.c: Likewise.
13601         * config/ia64/lib1funcs.asm: Likewise.
13602         * config/ia64/linux-unwind.h: Likewise.
13603         * config/ia64/quadlib.c: Likewise.
13604         * config/ia64/unwind-ia64.c: Likewise.
13605         * config/linux.h: Likewise.
13606         * config/m32c/m32c-lib1.S: Likewise.
13607         * config/m32c/m32c-lib2-trapv.c: Likewise.
13608         * config/m32c/m32c-lib2.c: Likewise.
13609         * config/m32r/initfini.c: Likewise.
13610         * config/m68hc11/larith.asm: Likewise.
13611         * config/m68hc11/m68hc11-crt0.S: Likewise.
13612         * config/m68k/cf.md: Likewise.
13613         * config/m68k/crti.s: Likewise.
13614         * config/m68k/crtn.s: Likewise.
13615         * config/m68k/lb1sf68.asm: Likewise.
13616         * config/m68k/linux-unwind.h: Likewise.
13617         * config/mcore/crti.asm: Likewise.
13618         * config/mcore/crtn.asm: Likewise.
13619         * config/mcore/lib1.asm: Likewise.
13620         * config/mips/linux-unwind.h: Likewise.
13621         * config/mips/loongson.h: Likewise.
13622         * config/mips/mips16.S: Likewise.
13623         * config/mmix/crti.asm: Likewise.
13624         * config/mmix/crtn.asm: Likewise.
13625         * config/pa/fptr.c: Likewise.
13626         * config/pa/hpux-unwind.h: Likewise.
13627         * config/pa/lib2funcs.asm: Likewise.
13628         * config/pa/linux-atomic.c: Likewise.
13629         * config/pa/linux-unwind.h: Likewise.
13630         * config/pa/milli64.S: Likewise.
13631         * config/pa/quadlib.c: Likewise.
13632         * config/pa/stublib.c: Likewise.
13633         * config/picochip/libgccExtras/adddi3.asm: Likewise.
13634         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
13635         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
13636         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
13637         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
13638         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
13639         * config/picochip/libgccExtras/divmod15.asm: Likewise.
13640         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
13641         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
13642         * config/picochip/libgccExtras/longjmp.asm: Likewise.
13643         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
13644         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
13645         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
13646         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
13647         * config/picochip/libgccExtras/setjmp.asm: Likewise.
13648         * config/picochip/libgccExtras/subdi3.asm: Likewise.
13649         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
13650         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
13651         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
13652         * config/rs6000/750cl.h: Likewise.
13653         * config/rs6000/altivec.h: Likewise.
13654         * config/rs6000/biarch64.h: Likewise.
13655         * config/rs6000/crtresfpr.asm: Likewise.
13656         * config/rs6000/crtresgpr.asm: Likewise.
13657         * config/rs6000/crtresxfpr.asm: Likewise.
13658         * config/rs6000/crtresxgpr.asm: Likewise.
13659         * config/rs6000/crtsavfpr.asm: Likewise.
13660         * config/rs6000/crtsavgpr.asm: Likewise.
13661         * config/rs6000/darwin-asm.h: Likewise.
13662         * config/rs6000/darwin-fallback.c: Likewise.
13663         * config/rs6000/darwin-fpsave.asm: Likewise.
13664         * config/rs6000/darwin-ldouble.c: Likewise.
13665         * config/rs6000/darwin-tramp.asm: Likewise.
13666         * config/rs6000/darwin-unwind.h: Likewise.
13667         * config/rs6000/darwin-vecsave.asm: Likewise.
13668         * config/rs6000/darwin-world.asm: Likewise.
13669         * config/rs6000/e500crtres32gpr.asm: Likewise.
13670         * config/rs6000/e500crtres64gpr.asm: Likewise.
13671         * config/rs6000/e500crtres64gprctr.asm: Likewise.
13672         * config/rs6000/e500crtrest32gpr.asm: Likewise.
13673         * config/rs6000/e500crtrest64gpr.asm: Likewise.
13674         * config/rs6000/e500crtresx32gpr.asm: Likewise.
13675         * config/rs6000/e500crtresx64gpr.asm: Likewise.
13676         * config/rs6000/e500crtsav32gpr.asm: Likewise.
13677         * config/rs6000/e500crtsav64gpr.asm: Likewise.
13678         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
13679         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
13680         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
13681         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
13682         * config/rs6000/eabi-ci.asm: Likewise.
13683         * config/rs6000/eabi-cn.asm: Likewise.
13684         * config/rs6000/eabi.asm: Likewise.
13685         * config/rs6000/linux-unwind.h: Likewise.
13686         * config/rs6000/linux64.h: Likewise.
13687         * config/rs6000/paired.h: Likewise.
13688         * config/rs6000/paired.md: Likewise.
13689         * config/rs6000/ppc64-fp.c: Likewise.
13690         * config/rs6000/ppu_intrinsics.h: Likewise.
13691         * config/rs6000/rs6000.h: Likewise.
13692         * config/rs6000/si2vmx.h: Likewise.
13693         * config/rs6000/sol-ci.asm: Likewise.
13694         * config/rs6000/sol-cn.asm: Likewise.
13695         * config/rs6000/spe.h: Likewise.
13696         * config/rs6000/spu2vmx.h: Likewise.
13697         * config/rs6000/sysv4.h: Likewise.
13698         * config/rs6000/tramp.asm: Likewise.
13699         * config/rs6000/vec_types.h: Likewise.
13700         * config/s390/linux-unwind.h: Likewise.
13701         * config/s390/tpf-unwind.h: Likewise.
13702         * config/score/crti.asm: Likewise.
13703         * config/score/crtn.asm: Likewise.
13704         * config/sh/crt1.asm: Likewise.
13705         * config/sh/crti.asm: Likewise.
13706         * config/sh/crtn.asm: Likewise.
13707         * config/sh/divtab-sh4-300.c: Likewise.
13708         * config/sh/divtab-sh4.c: Likewise.
13709         * config/sh/divtab.c: Likewise.
13710         * config/sh/lib1funcs-4-300.asm: Likewise.
13711         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
13712         * config/sh/lib1funcs.asm: Likewise.
13713         * config/sh/lib1funcs.h: Likewise.
13714         * config/sh/linux-atomic.asm: Likewise.
13715         * config/sh/linux-unwind.h: Likewise.
13716         * config/sh/shmedia.h: Likewise.
13717         * config/sh/sshmedia.h: Likewise.
13718         * config/sh/ushmedia.h: Likewise.
13719         * config/sparc/crtfastmath.c: Likewise.
13720         * config/sparc/linux-unwind.h: Likewise.
13721         * config/sparc/sol2-c1.asm: Likewise.
13722         * config/sparc/sol2-ci.asm: Likewise.
13723         * config/sparc/sol2-cn.asm: Likewise.
13724         * config/spu/divmodti4.c: Likewise.
13725         * config/spu/divv2df3.c: Likewise.
13726         * config/spu/float_disf.c: Likewise.
13727         * config/spu/float_unsdidf.c: Likewise.
13728         * config/spu/float_unsdisf.c: Likewise.
13729         * config/spu/float_unssidf.c: Likewise.
13730         * config/spu/mfc_multi_tag_release.c: Likewise.
13731         * config/spu/mfc_multi_tag_reserve.c: Likewise.
13732         * config/spu/mfc_tag_release.c: Likewise.
13733         * config/spu/mfc_tag_reserve.c: Likewise.
13734         * config/spu/mfc_tag_table.c: Likewise.
13735         * config/spu/multi3.c: Likewise.
13736         * config/spu/spu_internals.h: Likewise.
13737         * config/spu/spu_intrinsics.h: Likewise.
13738         * config/spu/spu_mfcio.h: Likewise.
13739         * config/spu/vec_types.h: Likewise.
13740         * config/spu/vmx2spu.h: Likewise.
13741         * config/stormy16/stormy16-lib2.c: Likewise.
13742         * config/svr4.h: Likewise.
13743         * config/sync.c: Likewise.
13744         * config/v850/lib1funcs.asm: Likewise.
13745         * config/vxlib-tls.c: Likewise.
13746         * config/vxlib.c: Likewise.
13747         * config/vxworks-dummy.h: Likewise.
13748         * config/xtensa/crti.asm: Likewise.
13749         * config/xtensa/crtn.asm: Likewise.
13750         * config/xtensa/ieee754-df.S: Likewise.
13751         * config/xtensa/ieee754-sf.S: Likewise.
13752         * config/xtensa/lib1funcs.asm: Likewise.
13753         * config/xtensa/lib2funcs.S: Likewise.
13754         * config/xtensa/linux-unwind.h: Likewise.
13755         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
13756         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
13757         * coretypes.h: Likewise.
13758         * crtstuff.c: Likewise.
13759         * defaults.h: Likewise.
13760         * dwarf2.h: Likewise.
13761         * emutls.c: Likewise.
13762         * gbl-ctors.h: Likewise.
13763         * gcov-io.h: Likewise.
13764         * ginclude/float.h: Likewise.
13765         * ginclude/iso646.h: Likewise.
13766         * ginclude/stdarg.h: Likewise.
13767         * ginclude/stdbool.h: Likewise.
13768         * ginclude/stddef.h: Likewise.
13769         * ginclude/stdfix.h: Likewise.
13770         * ginclude/stdint-gcc.h: Likewise.
13771         * ginclude/tgmath.h: Likewise.
13772         * gthr-aix.h: Likewise.
13773         * gthr-dce.h: Likewise.
13774         * gthr-gnat.c: Likewise.
13775         * gthr-gnat.h: Likewise.
13776         * gthr-lynx.h: Likewise.
13777         * gthr-mipssde.h: Likewise.
13778         * gthr-nks.h: Likewise.
13779         * gthr-posix.c: Likewise.
13780         * gthr-posix.h: Likewise.
13781         * gthr-posix95.h: Likewise.
13782         * gthr-rtems.h: Likewise.
13783         * gthr-single.h: Likewise.
13784         * gthr-solaris.h: Likewise.
13785         * gthr-tpf.h: Likewise.
13786         * gthr-vxworks.h: Likewise.
13787         * gthr-win32.h: Likewise.
13788         * gthr.h: Likewise.
13789         * libgcc2.c: Likewise.
13790         * libgcc2.h: Likewise.
13791         * libgcov.c: Likewise.
13792         * tsystem.h: Likewise.
13793         * typeclass.h: Likewise.
13794         * unwind-c.c: Likewise.
13795         * unwind-compat.h: Likewise.
13796         * unwind-dw2-fde-compat.c: Likewise.
13797         * unwind-dw2-fde-darwin.c: Likewise.
13798         * unwind-dw2-fde-glibc.c: Likewise.
13799         * unwind-dw2-fde.c: Likewise.
13800         * unwind-dw2-fde.h: Likewise.
13801         * unwind-dw2.c: Likewise.
13802         * unwind-dw2.h: Likewise.
13803         * unwind-generic.h: Likewise.
13804         * unwind-pe.h: Likewise.
13805         * unwind-sjlj.c: Likewise.
13806         * unwind.inc: Likewise.
13807         * config/arm/neon-gen.ml: Change generated copyright header to
13808         refer to version 3 of the GNU General Public License with
13809         version 3.1 of the GCC Runtime Library Exception and to point
13810         readers at the COPYING3 and COPYING3.RUNTIME files and the
13811         FSF's license web page.
13812         * config/arm/arm_neon.h: Regenerate.
13813
13814 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
13815
13816         * config/cris/cris.md: Change copyright header to refer to version
13817         3 of the GNU General Public License.
13818         * doc/install.texi2html: Change copyright header to refer to version
13819         3 of the GNU General Public License and to point readers at the
13820         COPYING3 file and the FSF's license web page.
13821         * config/vax/linux.h: Likewise.
13822
13823 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
13824
13825         * config/i386/i386.md (cmpcc): New.
13826         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
13827         (sync_compare_and_swap_cc*): Delete.
13828
13829         * config/s390/s390.c (s390_compare_emitted): Remove.
13830         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
13831         s390_compare_emitted used to be handled.  Assert that modes match.
13832         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
13833         refer to sync_compare_and_swap_ccsi.
13834         * config/s390/s390.h (s390_compare_emitted): Remove.
13835         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
13836         instead of s390_compare_emitted.
13837         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
13838         instead of s390_compare_emitted.
13839         * config/s390/s390.md (cmpcc): New.
13840         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
13841         CC_REGNUM, do not pretend it's set.
13842         (sync_compare_and_swap_cc*): Delete.
13843         * config/s390/predicates.md (cc_reg_operand): New.
13844
13845         * expr.c (sync_compare_and_swap_cc): Delete.
13846         * optabs.h (sync_compare_and_swap_cc): Delete.
13847         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
13848         is being used with can_compare_p.
13849         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
13850         (find_cc_set): New.
13851         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
13852         look for a MODE_CC set instead.  Use emit_store_flag.
13853         (expand_compare_and_swap_loop): Likewise, with some additional
13854         complication to avoid a force_reg when useless.  Use
13855         emit_cmp_and_jump_insns.
13856         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
13857         * doc/md.texi (sync_compare_and_swap_cc): Merge with
13858         sync_compare_and_swap documentation.
13859
13860 2009-04-09  Jan Hubicka  <jh@suse.cz>
13861
13862         * except.c (find_prev_try): Break out from ....
13863         (duplicate_eh_regions): ... here; properly update prev_try pointers
13864         when duplication part of tree.
13865         (dump_eh_tree): Improve dumping.
13866         (verify_eh_region): New.
13867         (verify_eh_tree): Use it.
13868
13869 2009-04-06  Richard Guenther  <rguenther@suse.de>
13870
13871         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
13872         &ARRAY addresses by adjusting their types and prepending
13873         a conversion.
13874         * tree-cfg.c (verify_gimple_assign_single): Verify that
13875         addresses are correct.
13876
13877 2009-04-09  Richard Guenther  <rguenther@suse.de>
13878
13879         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
13880         indices into an array reference if possible.
13881         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
13882         Fold POINTER_PLUS_EXPR statements with invariant address.
13883
13884 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
13885
13886         PR target/39634
13887         * config.gcc (powerpc64-*-linux*): Always build biarch.
13888
13889 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
13890
13891         PR c/39613
13892         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
13893         it and pedwarn if this results in an INTEGER_CST.
13894
13895 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13896
13897         * doc/install.texi: Update minimum GMP version.  Remove obsolete
13898         text in MPFR section.
13899
13900 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
13901
13902         * dwarf2out.c (class_scope_p): New static inline.
13903         (class_or_namespace_scope_p): Use it.
13904         (gen_variable_die): Use DW_TAG_member tag for static data member
13905         declarations instead of DW_TAG_variable.
13906
13907         PR middle-end/39573
13908         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
13909         variables.
13910
13911 2009-04-08  Richard Guenther  <rguenther@suse.de>
13912
13913         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
13914         valueize random data.
13915
13916 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
13917
13918         * config.gcc (aix tm_file):  Add aix-stdint.h.
13919         (aix tm clause use_gcc_stdint):  Set to wrap.
13920         * config/rs6000/aix-stdint.h:  New file.
13921
13922 2009-04-08  Richard Guenther  <rguenther@suse.de>
13923
13924         PR middle-end/36291
13925         * tree-dfa.c (add_referenced_var): Do not recurse into
13926         global initializers.
13927         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
13928         exposed variables.
13929         (fold_const_aggregate_ref): Likewise.
13930
13931 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
13932
13933         * recog.c (ordered_comparison_operator): New.
13934         * gensupport.c (std_preds): Add it.
13935         * doc/md.texi (Machine-Independent Predicates): Document it.
13936
13937 2009-04-08  Jan Hubicka  <jh@suse.cz>
13938
13939         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
13940         * function.h (rtl_eh): Remove exception_handler_label_map.
13941         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
13942         remove_exception_handler_label, for_each_eh_label_1): Remove.
13943         (rtl_remove_unreachable_regions): Remove.
13944         (convert_from_eh_region_ranges): Do not remove unreachable regions.
13945         (find_exception_handler_labels): Don't build the hashtable.
13946         (maybe_remove_eh_handler): Remove.
13947         (for_each_eh_label): Rewrite to walk the tree.
13948         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
13949         * except.h (maybe_remove_eh_handler): Remove.
13950         * passes.c (init_optimization_passes): Schedule second EH cleanup
13951         before out-of-ssa.
13952         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
13953         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
13954
13955 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
13956
13957         * genoutput.c (validate_optab_operands): New.
13958         (gen_insn, gen_expand): Call it.
13959
13960         * genflags.c (gen_insn): Detect misused iterators.
13961         (main): Pass line_no to gen_insn, exit with status 1 on error.
13962
13963         * genextract.c (line_no): Make global.
13964         (VEC_safe_set_locstr): Change assertion to error message.
13965         (main): Exit with status 1 on error.
13966
13967 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
13968
13969         PR c/39614
13970         PR c/39673
13971         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
13972         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
13973         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
13974         * c-convert.c (convert): Do not call fold on results of conversion
13975         functions when the result is a C_MAYBE_CONST_EXPR.
13976         * c-parser.c (c_parser_postfix_expression): Do not fold condition
13977         of __builtin_choose_expr.
13978         * c-typeck.c (remove_c_maybe_const_expr): New.
13979         (build_unary_op, build_conditional_expr, build_compound_expr,
13980         build_binary_op, c_objc_common_truthvalue_conversion): Call
13981         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
13982         integer operands.
13983
13984 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
13985
13986         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
13987         CODE to produce a new one. Add a prototype to use fold_convert_const
13988
13989 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
13990
13991         PR bootstrap/39660
13992         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
13993         mix declarations and code.
13994
13995 2009-04-08  Ben Elliston  <bje@au.ibm.com>
13996
13997         * gcc.c: Replace `CC' with `GCC' throughout.
13998
13999 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
14000
14001         * doc/invoke.texi: Document Atom support.
14002
14003 2009-04-07  Jason Merrill  <jason@redhat.com>
14004
14005         PR c++/25185
14006         * c-common.h, c-common.c: Add flag_pretty_templates.
14007         * c-opts.c (c_common_handle_option): Set it.
14008         * c.opt: Add -fno-pretty-templates.
14009         * doc/invoke.texi (C++ Dialect Options): Likewise.
14010
14011 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
14012
14013         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
14014         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
14015         (ia64_expand_builtin): Likewise.
14016
14017 2009-04-07  Martin Jambor  <mjambor@suse.cz>
14018
14019         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
14020         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
14021         ADDR_EXPRS are include too.
14022
14023 2009-04-07  Richard Guenther  <rguenther@suse.de>
14024
14025         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
14026         decls are only used if passes as parameters or if they are
14027         local statics and the call is not to a builtin.
14028         (call_may_clobber_ref_p_1): Likewise.
14029
14030 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
14031
14032         * expr.c (do_store_flag): Remove last argument.  Simplify code
14033         to avoid duplication of tests already done by can_compare_p.
14034         (expand_expr_real_1): Adjust caller.
14035
14036 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
14037
14038         * optabs.c (can_compare_p): Test the predicate of a
14039         cbranch and cstore pattern.
14040
14041 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
14042
14043         * expr.c (convert_move): Use emit_store_flag instead of
14044         "emulating" it.
14045
14046 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
14047
14048         * config/i386/i386.c (ix86_compare_emitted): Remove.
14049         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
14050         ix86_compare_op0 like ix86_compare_emitted used to be handled.
14051         * config/i386/i386.h (ix86_compare_emitted): Remove.
14052         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
14053         instead of ix86_compare_emitted.
14054         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
14055
14056 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
14057
14058         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
14059         Add t-sysroot-suffix to tmake_file.
14060         * config/print-sysroot-suffix.sh: New file.
14061         * config/t-sysroot-suffix: New file.
14062
14063 2009-04-07  Ben Elliston  <bje@au.ibm.com>
14064
14065         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
14066         as the latter produces a warning when the target does not support
14067         infinity.
14068
14069 2009-04-07  Ben Elliston  <bje@au.ibm.com>
14070
14071         * dfp.c: Replace type punning assignments with memcpy throughout.
14072         * Makefile.in (dfp.o-warn): Remove.
14073
14074 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
14075
14076         PR target/39634
14077         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
14078         Include soft-fp/t-softfp after rs6000/t-linux64.
14079
14080 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
14081
14082         * stor-layout.c (set_sizetype): Use the full precision of their
14083         machine mode for bitsize types.
14084
14085 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
14086
14087         * config/i386/i386.md: Revert 2 accidental checkins.
14088
14089 2009-04-06  Joey Ye  <joey.ye@intel.com>
14090             Xuepeng Guo  <xuepeng.guo@intel.com>
14091             H.J. Lu  <hongjiu.lu@intel.com>
14092
14093         Atom pipeline model, tuning and insn selection.
14094         * config.gcc (atom): Add atom config options and target.
14095
14096         * config/i386/atom.md: New.
14097
14098         * config/i386/i386.c (atom_cost): New cost.
14099         (m_ATOM): New macro flag.
14100         (initial_ix86_tune_features): Set m_ATOM.
14101         (x86_accumulate_outgoing_args): Likewise.
14102         (x86_arch_always_fancy_math_387): Likewise.
14103         (processor_target): Add Atom cost.
14104         (cpu_names): Add Atom cpu name.
14105         (override_options): Set Atom ISA.
14106         (ix86_issue_rate): New case PROCESSOR_ATOM.
14107         (ix86_adjust_cost): Likewise.
14108
14109         * config/i386/i386.h (TARGET_ATOM): New target macro.
14110         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
14111         (TARGET_OPT_AGU): New target option.
14112         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
14113         (processor_type): Add PROCESSOR_ATOM.
14114
14115         * config/i386/i386.md (cpu): Add new value "atom".
14116         (use_carry, movu): New attr.
14117         (atom.md): Include atom.md.
14118         (adddi3_carry_rex64): Set attr "use_carry".
14119         (addqi3_carry): Likewise.
14120         (addhi3_carry): Likewise.
14121         (addsi3_carry): Likewise.
14122         (*addsi3_carry_zext): Likewise.
14123         (subdi3_carry_rex64): Likewise.
14124         (subqi3_carry): Likewise.
14125         (subhi3_carry): Likewise.
14126         (subsi3_carry): Likewise.
14127         (x86_movdicc_0_m1_rex64): Likewise.
14128         (*x86_movdicc_0_m1_se): Likewise.
14129         (x86_movsicc_0_m1): Likewise.
14130         (*x86_movsicc_0_m1_se): Likewise.
14131         (*adddi_1_rex64): Emit add insn as much as possible.
14132         (*addsi_1): Likewise.
14133         (return_internal): Set atom_unit.
14134         (return_internal_long): Likewise.
14135         (return_pop_internal): Likewise.
14136         (*rcpsf2_sse): Set atom_sse_attr attr.
14137         (*qrt<mode>2_sse): Likewise.
14138         (*prefetch_sse): Likewise.
14139
14140         * config/i386/i386-c.c (ix86_target_macros_internal): New case
14141         PROCESSOR_ATOM.
14142         (ix86_target_macros_internal): Likewise.
14143
14144         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
14145         (*prefetch_sse_rex): Likewise.
14146         (sse_rcpv4sf2): Likewise.
14147         (sse_vmrcpv4sf2): Likewise.
14148         (sse_sqrtv4sf2): Likewise.
14149         (<sse>_vmsqrt<mode>2): Likewise.
14150         (sse_ldmxcsr): Likewise.
14151         (sse_stmxcsr): Likewise.
14152         (*sse_sfence): Likewise.
14153         (sse2_clflush): Likewise.
14154         (*sse2_mfence): Likewise.
14155         (*sse2_lfence): Likewise.
14156         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
14157         (<sse>_movup<ssemodesuffixf2c>): Likewise.
14158         (avx_movdqu<avxmodesuffix>): Likewise.
14159         (avx_lddqu<avxmodesuffix>): Likewise.
14160         (sse2_movntv2di): Change attr "type" to "ssemov".
14161         (sse2_movntsi): Likewise.
14162         (rsqrtv8sf2): Change attr "type" to "sseadd".
14163         (sse3_addsubv2df3): Set attr "atom_unit".
14164         (sse3_h<plusminus_insn>v4sf3): Likewise.
14165         (*sse2_pmaddwd): Likewise.
14166         (*vec_extractv2di_1_rex64): Likewise.
14167         (*vec_extractv2di_1_avx): Likewise.
14168         (sse2_psadbw): Likewise.
14169         (ssse3_phaddwv8hi3): Likewise.
14170         (ssse3_phaddwv4hi3): Likewise.
14171         (ssse3_phadddv4si3): Likewise.
14172         (ssse3_phadddv2si3): Likewise.
14173         (ssse3_phaddswv8hi3): Likewise.
14174         (ssse3_phaddswv4hi3): Likewise.
14175         (ssse3_phsubwv8hi3): Likewise.
14176         (ssse3_phsubwv4hi3): Likewise.
14177         (ssse3_phsubdv4si3): Likewise.
14178         (ssse3_phsubdv2si3): Likewise.
14179         (ssse3_phsubswv8hi3): Likewise.
14180         (ssse3_phsubswv4hi3): Likewise.
14181         (ssse3_pmaddubsw128): Likewise.
14182         (sse3_pmaddubsw: Likewise.
14183         (ssse3_palignrti): Likewise.
14184         (ssse3_palignrdi): Likewise.
14185
14186 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
14187
14188         * doc/install.texi (Specific): Fix two cross-references to MinGW.
14189
14190 2009-04-06  Richard Guenther  <rguenther@suse.de>
14191
14192         PR tree-optimization/28868
14193         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
14194         of which PHI results we inserted.
14195         (insert_into_preds_of_block): Record inserted PHIs.
14196         (eliminate): Eliminate redundant PHI nodes.
14197         (init_pre): Init inserted_phi_names.
14198
14199 2009-04-06  Richard Guenther  <rguenther@suse.de>
14200
14201         PR tree-optimization/39643
14202         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
14203         IMAGPART_EXPRs of complex constants.
14204         (execute_fold_all_builtins): If we folded a call queue
14205         TODO_update_address_taken.
14206
14207 2009-04-06  Jan Hubicka  <jh@suse.cz>
14208
14209         PR middle-end/39659
14210         * except.c (remove_unreachable_regions): Propagate may_contain_throw
14211         flag.
14212
14213 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
14214
14215         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
14216         delay slot.
14217         (ic_invalidate_array): Likewise.
14218
14219 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
14220
14221         * calls.c (emit_library_call_value_1): Fix a problem with parameter
14222         alignment for library calls.
14223
14224 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
14225
14226         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
14227         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
14228         * config/i386/mingw-stdint.h:  New file.
14229
14230 2009-04-05  Richard Guenther  <rguenther@suse.de>
14231
14232         PR tree-optimization/39648
14233         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
14234         our &A vs. &A[0] IL deficiencies.
14235
14236 2009-04-04  Jan Hubicka  <jh@suse.cz>
14237
14238         * except.c (sjlj_find_directly_reachable_regions): Be ready for
14239         removed toplevel regions.
14240         (sjlj_mark_call_sites): Likewise.
14241
14242 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
14243
14244         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
14245         (cygwin tm clause use_gcc_stdint):  Set to wrap.
14246         * config/i386/cygwin-stdint.h:  New file.
14247
14248 2009-04-04  Richard Guenther  <rguenther@suse.de>
14249
14250         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
14251         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
14252         single-argument PHIs if we are in loop-closed SSA form.
14253         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
14254         for the pre-condition.
14255         (slpeel_tree_peel_loop_to_edge): Likewise.
14256         (vect_build_loop_niters): Take an optional sequence to append stmts.
14257         (vect_generate_tmps_on_preheader): Likewise.
14258         (vect_do_peeling_for_loop_bound): Take extra guards for the
14259         pre-condition.
14260         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
14261         the cost model check.
14262         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
14263         guards if we are going to peel.  Do not apply versioning in that case.
14264         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
14265         (vect_do_peeling_for_loop_bound): Likewise.
14266         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
14267         loop bound only record extra pre-conditions, do not apply loop
14268         versioning.
14269
14270 2009-04-04  Richard Guenther  <rguenther@suse.de>
14271
14272         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
14273         renaming code.
14274
14275 2009-04-04  Jan Hubicka  <jh@suse.cz>
14276
14277         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
14278         last_basic_block for size of bb->index indexed array.
14279         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
14280         compute_out, link_btr_uses, build_btr_def_use_webs,
14281         build_btr_def_use_webs, migrate_btr_defs): Likewise.
14282
14283 2009-04-04  Jan Hubicka  <jh@suse.cz>
14284
14285         * except.c (remove_eh_handler_and_replace): Break out from ...
14286         (remove_eh_handler): ... here.
14287         (bring_to_root): New function.
14288         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
14289         handled ones, bring others to root of tree.
14290
14291 2009-04-04  Jan Hubicka  <jh@suse.cz>
14292
14293         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
14294         (all_phis_safe_to_merge): New function.
14295         (update_info): New structure.
14296         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
14297         (cleanup_empty_eh): Update SSA if possible.
14298
14299 2009-04-04  Richard Guenther  <rguenther@suse.de>
14300
14301         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
14302         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
14303         (append_vuse): Likewise.
14304
14305 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
14306
14307         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
14308         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
14309         instead of REG_UNSAVED for DW_CFA_undefined.
14310         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
14311         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
14312         outermost frame.
14313
14314 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
14315
14316         PR target/39501
14317         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
14318         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
14319         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
14320
14321 2009-04-04  Richard Guenther  <rguenther@suse.de>
14322
14323         PR tree-optimization/8781
14324         PR tree-optimization/37892
14325         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
14326         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
14327         (valueize_refs): Call it for *& valueizations.
14328         (shared_reference_ops_from_ref): Rename to ...
14329         (valueize_shared_reference_ops_from_ref): ... this and valueize.
14330         (shared_reference_ops_from_call): Rename to ...
14331         (valueize_shared_reference_ops_from_call): ... this and valueize.
14332         (vn_reference_lookup): Update.
14333         (visit_reference_op_call): Likewise.
14334         * tree-ssa-pre.c (phi_translate_1): Fold *&.
14335         (eliminate): Value-replace the call address in call statements.
14336
14337 2009-04-04  Richard Guenther  <rguenther@suse.de>
14338
14339         PR tree-optimization/39636
14340         * tree-ssa-forwprop.c
14341         (forward_propagate_addr_into_variable_array_index): Check for
14342         GIMPLE_ASSIGN before accessing the rhs code.
14343
14344 2009-04-03  Jason Merrill  <jason@redhat.com>
14345
14346         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
14347
14348 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
14349
14350         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
14351         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
14352         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
14353         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
14354         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
14355         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
14356         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
14357         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
14358         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
14359         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
14360         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
14361         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
14362         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
14363         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
14364         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
14365         Use fr_reg_or_fp01_operand instead of fr_register_operand
14366
14367         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
14368         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
14369         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
14370
14371 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
14372
14373         PR rtl-optimization/39607
14374         PR rtl-optimization/39631
14375
14376         Revert:
14377
14378         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
14379         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
14380         instead of DF_LR_OUT.
14381         * ira-lives.c (process_bb_node_lives): Ditto.
14382         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
14383         instead of DF_LR_{OUT,IN}.
14384         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
14385         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
14386
14387 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
14388
14389         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
14390         (execute_lower_omp): Always run but take the short way out if -fopenmp
14391         is not given.
14392         (gate_lower_omp): Remove, forcing the pass manager to always run the
14393         pass and always set PROP_gimple_lomp.
14394         (pass_lower_omp): Remove gate function.
14395         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
14396         PROP_trees.  Instead, require it.
14397         * ipa-cp.c (pass_ipa_cp): Likewise.
14398         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
14399         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
14400         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
14401         and PROP_gimple_leh.
14402
14403 2009-04-03  Richard Guenther  <rguenther@suse.de>
14404
14405         PR middle-end/13146
14406         PR tree-optimization/23940
14407         PR tree-optimization/33237
14408         PR middle-end/33974
14409         PR middle-end/34093
14410         PR tree-optimization/36201
14411         PR tree-optimization/36230
14412         PR tree-optimization/38049
14413         PR tree-optimization/38207
14414         PR tree-optimization/38230
14415         PR tree-optimization/38301
14416         PR tree-optimization/38585
14417         PR middle-end/38895
14418         PR tree-optimization/38985
14419         PR tree-optimization/39299
14420         * tree-ssa-structalias.h: Remove.
14421         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
14422         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
14423         (struct vuse_element_d): Remove.
14424         (struct vuse_vec_d): Likewise.
14425         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
14426         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
14427         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
14428         VUSE_ELEMENT_VAR): Likewise.
14429         (struct voptype_d): Likewise.
14430         (NUM_VOP_FREE_BUCKETS): Likewise.
14431         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
14432         (struct stmt_operands_d): Remove.
14433         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
14434         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
14435         VDEF_NUM, VDEF_VECT): Likewise.
14436         (copy_virtual_operands): Remove.
14437         (operand_build_cmp): Likewise.
14438         (create_ssa_artificial_load_stmt): Likewise.
14439         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
14440         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
14441         vuse_index and mayuse_index members.  Pack and move done and iter_type
14442         members to the front.
14443         (SSA_OP_VMAYUSE): Remove.
14444         (SSA_OP_VIRTUAL_USES): Adjust.
14445         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
14446         (unlink_stmt_vdef): Declare.
14447         (add_to_addressable_set): Remove.
14448         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
14449         (vrp_visit_stmt): Likewise.
14450         * doc/tree-ssa.texi (Alias analysis): Update.
14451         * doc/invoke.texi (max-aliased-vops): Remove docs.
14452         (avg-aliased-vops): Likewise.
14453         * tree-into-ssa.c (syms_to_rename): Remove.
14454         (need_to_update_vops_p): Likewise.
14455         (need_to_initialize_update_ssa_p): Rename to ...
14456         (update_ssa_initialized_fn): ... this.  Track function we are
14457         initialized for.
14458         (symbol_marked_for_renaming): Simplify.
14459         (add_new_name_mapping): Do not set need_to_update_vops_p.
14460         (dump_currdefs): Use SYMS_TO_RENAME.
14461         (rewrite_update_stmt): Always walk all uses/defs.
14462         (dump_update_ssa): Adjust.
14463         (init_update_ssa): Take function argument.  Track what we are
14464         initialized for.
14465         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
14466         (create_new_def_for): Initialize for cfun, assert we are initialized
14467         for cfun.
14468         (mark_sym_for_renaming): Simplify.
14469         (mark_set_for_renaming): Do not initialize update-ssa.
14470         (need_ssa_update_p): Simplify.  Take function argument.
14471         (name_mappings_registered_p): Assert we ask for the correct function.
14472         (name_registered_for_update_p): Likewise.
14473         (ssa_names_to_replace): Likewise.
14474         (release_ssa_name_after_update_ssa): Likewise.
14475         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
14476         (dump_decl_set): Do not print a newline.
14477         (debug_decl_set): Do it here.
14478         (dump_update_ssa): And here.
14479         * tree-ssa-loop-im.c (move_computations): Adjust.
14480         (movement_possibility): Likewise.
14481         (determine_max_movement): Likewise.
14482         (gather_mem_refs_stmt): Likewise.
14483         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
14484         or NAME_MEMORY_TAG.
14485         * tree-complex.c (update_all_vops): Remove.
14486         (expand_complex_move): Adjust.
14487         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
14488         Simplify test for memory referencing statement.  Exclude
14489         non-invariant ADDR_EXPRs.
14490         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
14491         * tree-loop-distribution.c (generate_memset_zero): Adjust.
14492         (rdg_flag_uses): Likewise.
14493         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
14494         related code.
14495         (tree_optimize_tail_calls_1): Also split the
14496         edge from the entry block if we have degenerate PHI nodes in
14497         the first basic block.
14498         * tree.c (init_ttree): Remove memory-tag related code.
14499         (tree_code_size): Likewise.
14500         (tree_node_structure): Likewise.
14501         (build7_stat): Re-write to be build6_stat.
14502         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
14503         (SSA_VAR_P): Adjust.
14504         (struct tree_memory_tag): Remove.
14505         (struct tree_memory_partition_tag): Likewise.
14506         (union tree_node): Adjust.
14507         (build7): Re-write to be build6.
14508         * tree-pass.h (pass_reset_cc_flags): Remove.
14509         (TODO_update_address_taken): New flag.
14510         (pass_simple_dse): Remove.
14511         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
14512         * params.h (MAX_ALIASED_VOPS): Remove.
14513         (AVG_ALIASED_VOPS): Likewise.
14514         * omp-low.c (expand_omp_taskreg): Update SSA form.
14515         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
14516         aliases the lhs in a copy stmt.
14517         * tree-ssa-dse.c (struct address_walk_data): Remove.
14518         (memory_ssa_name_same): Likewise.
14519         (memory_address_same): Likewise.
14520         (get_kill_of_stmt_lhs): Likewise.
14521         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
14522         unused stores.  Look through PHI nodes into post-dominated regions.
14523         (dse_optimize_stmt): Simplify.  Properly remove stores.
14524         (tree_ssa_dse): Compute dominators.
14525         (execute_simple_dse): Remove.
14526         (pass_simple_dse): Likewise.
14527         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
14528         gimple_loaded_syms and gimple_stored_syms computation.
14529         * toplev.c (dump_memory_report): Dump alias and pta stats.
14530         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
14531         (vn_reference_eq): Likewise.
14532         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
14533         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
14534         valueize_vuses): Remove.
14535         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
14536         (get_def_ref_stmt_vuse): ... this.
14537         (vn_reference_lookup_2): New function.
14538         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
14539         walking equivalent vuses.  Simplify.
14540         (vn_reference_lookup): Likewise.
14541         (vn_reference_insert): Likewise.
14542         (vn_reference_insert_pieces): Likewise.
14543         (visit_reference_op_call): Simplify.
14544         (visit_reference_op_load): Likewise.
14545         (visit_reference_op_store): Likewise.
14546         (init_scc_vn): Remove shared_lookup_vuses initialization.
14547         (free_scc_vn): Remove shared_lookup_vuses freeing.
14548         (sort_vuses, sort_vuses_heap): Remove.
14549         (get_ref_from_reference_ops): Export.
14550         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
14551         vector with single vuse pointer.
14552         (vn_reference_lookup_pieces, vn_reference_lookup,
14553         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
14554         (shared_vuses_from_stmt): Remove.
14555         (get_ref_from_reference_ops): Declare.
14556         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
14557         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
14558         memory-tag related code.
14559         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
14560         (likely_value): Add comment, skip static-chain of call statements.
14561         (surely_varying_stmt_p): Adjust.
14562         (gimplify_and_update_call_from_tree): Likewise.
14563         (execute_fold_all_builtins): Do not rebuild alias info.
14564         (gimplify_and_update_call_from_tree): Properly update VOPs.
14565         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
14566         (copy_ref_info): Remove memory-tag related code.
14567         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
14568         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
14569         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
14570         computation.
14571         * tree-ssa-dom.c (gimple_p): Remove typedef.
14572         (eliminate_redundant_computations): Adjust.
14573         (record_equivalences_from_stmt): Likewise.
14574         (avail_expr_hash): Likewise.
14575         (avail_expr_eq): Likewise.
14576         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
14577         (stmt_makes_single_load): Likewise.
14578         (stmt_makes_single_store): Likewise.
14579         * tree-ssa-alias.c: Rewrite completely.
14580         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
14581         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
14582         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
14583         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
14584         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
14585         Remove public functions.
14586         (pass_reset_cc_flags): Remove.
14587         (pass_build_alias): Move ...
14588         * tree-ssa-structalias.c (pass_build_alias): ... here.
14589         * tree-ssa-alias.c (may_be_aliased): Move ...
14590         * tree-flow-inline.h (may_be_aliased): ... here.
14591         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
14592         count_uses_and_derefs): Move ...
14593         * gimple.c: ... here.
14594         * gimple.h (count_uses_and_derefs): Declare.
14595         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
14596         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
14597         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
14598         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
14599         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
14600         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
14601         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
14602         New functions.
14603         * tree-dfa.c (refs_may_alias_p): Move ...
14604         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
14605         * tree-ssa-alias.h: New file.
14606         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
14607         (statement_sink_location): Likewise.
14608         * opts.c (decode_options): Do not adjust max-aliased-vops or
14609         avg-aliased-vops values.
14610         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
14611         (TV_CALL_CLOBBER): Likewise.
14612         (TV_FLOW_SENSITIVE): Likewise.
14613         (TV_FLOW_INSENSITIVE): Likewise.
14614         (TV_MEMORY_PARTITIONING): Likewise.
14615         (TV_ALIAS_STMT_WALK): New timevar.
14616         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
14617         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
14618         (get_address_description): Remove memory-tag related code.
14619         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
14620         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
14621         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
14622         and immediate uses in statements.  Document.
14623         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
14624         (dump_symbols): Remove.
14625         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
14626         * alias.c (get_deref_alias_set): New function split out from ...
14627         (get_alias_set): ... here.
14628         * alias.h (get_deref_alias_set): Declare.
14629         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
14630         type parameter.  Remove restrict pointer handling.  Create a
14631         ref-all pointer in case type-based alias sets do not conflict.
14632         (vect_analyze_data_refs): Remove SMT related code.
14633         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
14634         (vectorizable_load): Likewise.
14635         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
14636         (DR_SYMBOL_TAG, DR_VOPS): Remove.
14637         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
14638         Ignore vops and SMTs.
14639         (dr_analyze_alias): Likewise..
14640         (free_data_ref): Likewise.
14641         (create_data_ref): Likewise.
14642         (analyze_all_data_dependences): Likewise.
14643         (get_references_in_stmt): Adjust.
14644         * tree-flow-inline.h (gimple_aliases_computed_p,
14645         gimple_addressable_vars, gimple_call_clobbered_vars,
14646         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
14647         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
14648         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
14649         gimple_mem_ref_stats): Remove.
14650         (gimple_vop): New function.
14651         (op_iter_next_use): Remove vuses and mayuses cases.
14652         (op_iter_next_def): Remove vdefs case.
14653         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
14654         (clear_and_done_ssa_iter): Do not set removed fields.
14655         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
14656         Assert we are not iterating over vuses or vdefs if not also
14657         iterating over uses or defs.
14658         (op_iter_init_use): Likewise.
14659         (op_iter_init_def): Likewise.
14660         (op_iter_next_vdef): Remove.
14661         (op_iter_next_mustdef): Likewise.
14662         (op_iter_init_vdef): Likewise.
14663         (compare_ssa_operands_equal): Likewise.
14664         (link_use_stmts_after): Handle vuse operand.
14665         (is_call_used): Use is_call_clobbered.
14666         (is_call_clobbered): Global variables are always call clobbered,
14667         query the call-clobbers bitmap.
14668         (mark_call_clobbered): Ignore global variables.
14669         (clear_call_clobbered): Likewise.
14670         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
14671         virtual operands sanity check.
14672         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
14673         Remove.
14674         (TARGET_MEM_REF): Remove TMR_TAG operand.
14675         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
14676         Remove call-clobber related code.
14677         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
14678         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
14679         partitions or escape reason.
14680         (get_single_def_stmt, get_single_def_stmt_from_phi,
14681         get_single_def_stmt_with_phi): Remove.
14682         (dump_referenced_vars): Tidy.
14683         (get_ref_base_and_extent): Allow bare decls.
14684         (collect_dfa_stats): Adjust.
14685         * graphite.c (rename_variables_in_stmt): Adjust.
14686         (graphite_copy_stmts_from_block): Likewise.
14687         (translate_clast): Likewise.
14688         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
14689         (EXPR_DIES): New.
14690         (translate_vuse_through_block): Use the oracle.
14691         (phi_translate_1): Adjust.
14692         (value_dies_in_block_x): Use the oracle.  Cache the outcome
14693         in EXPR_DIES.
14694         (valid_in_sets): Check if the VUSE for
14695         a REFERENCE is available.
14696         (eliminate): Do not remove stmts during elimination,
14697         instead queue and remove them afterwards.
14698         (do_pre): Do not rebuild alias info.
14699         (pass_pre): Run TODO_rebuild_alias before PRE.
14700         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
14701         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
14702         (mark_all_v_defs_stmt): Remove.
14703         (mark_all_v_defs_seq): Adjust.
14704         (sra_replace): Likewise.
14705         (scalarize_use): Likewise.
14706         (scalarize_copy): Likewise.
14707         (scalarize_init): Likewise.
14708         (scalarize_ldst): Likewise.
14709         (todoflags): Remove.
14710         (tree_sra): Do not rebuild alias info.
14711         (tree_sra_early): Adjust.
14712         (pass_sra): Run TODO_update_address_taken before SRA.
14713         * tree-predcom.c (set_alias_info): Remove.
14714         (prepare_initializers_chain): Do not call it.
14715         (mark_virtual_ops_for_renaming): Adjust.
14716         (mark_virtual_ops_for_renaming_list): Remove.
14717         (initialize_root_vars): Adjust.
14718         (initialize_root_vars_lm): Likewise.
14719         (prepare_initializers_chain): Likewise.
14720         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
14721         (may_propagate_copy_into_stmt): Likewise.
14722         (merge_alias_info): Do nothing for now.
14723         (propagate_tree_value_into_stmt): Adjust.
14724         (stmt_may_generate_copy): Likewise.
14725         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
14726         not mark symbols for renaming.
14727         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
14728         with the same statement, make sure to update the new pointed-to one.
14729         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
14730         call statements, do not mark symbols for renaming.
14731         (mark_operand_necessary): Dump something.
14732         (ref_may_be_aliased): New function.
14733         (mark_aliased_reaching_defs_necessary_1): New helper function.
14734         (mark_aliased_reaching_defs_necessary): Likewise.
14735         (mark_all_reaching_defs_necessary_1): Likewise.
14736         (mark_all_reaching_defs_necessary): Likewise.
14737         (propagate_necessity): Do not process virtual PHIs.  For
14738         non-aliased loads mark all reaching definitions as necessary.
14739         For aliased loads and stores mark the immediate dominating
14740         aliased clobbers as necessary.
14741         (visited): New global static.
14742         (perform_tree_ssa_dce): Free visited bitmap after propagating
14743         necessity.
14744         (remove_dead_phis): Perform simple dead virtual PHI removal.
14745         (remove_dead_stmt): Properly unlink virtual operands when
14746         removing stores.
14747         (eliminate_unnecessary_stmts): Schedule PHI removal after
14748         stmt removal.
14749         * tree-ssa-ter.c (is_replaceable_p): Adjust.
14750         (process_replaceable): Likewise.
14751         (find_replaceable_in_bb): Likewise.
14752         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
14753         based on the single gimple vop.
14754         (verify_flow_insensitive_alias_info): Remove.
14755         (verify_flow_sensitive_alias_info): Likewise.
14756         (verify_call_clobbering): Likewise.
14757         (verify_memory_partitions): Likewise.
14758         (verify_alias_info): Likewise.
14759         (verify_ssa): Adjust..
14760         (execute_update_addresses_taken): Export.  Update SSA
14761         manually.  Optimize only when optimizing.  Use a local bitmap.
14762         (pass_update_address_taken): Remove TODO_update_ssa, add
14763         TODO_dump_func.
14764         (pass_update_address_taken): Just use TODO_update_address_taken.
14765         (init_tree_ssa): Do not initialize addressable_vars.
14766         (verify_ssa): Verify new VUSE / VDEF properties.
14767         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
14768         Do not call verify_alias_info.
14769         (delete_tree_ssa): Clear the VUSE, VDEF operands.
14770         Do not free the loaded and stored syms bitmaps.  Reset the escaped
14771         and callused solutions.  Do not free addressable_vars.
14772         Remove memory-tag related code.
14773         (warn_uninitialized_var): Aliases are always available.
14774         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
14775         * lambda-code.c (can_put_in_inner_loop): Adjust.
14776         (can_put_after_inner_loop): Likewise.
14777         (perfect_nestify): Likewise.
14778         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
14779         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
14780         (vectorizable_conversion): Do not mark symbols for renaming.
14781         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
14782         (expand_call_inline): Unlink the calls virtual operands before
14783         replacing it.
14784         (tree_function_versioning): Do not call update_ssa if we are not
14785         updating clones.  Simplify.
14786         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
14787         (propagate_with_phi): Likewise..
14788         * tree-outof-ssa.c (create_temp): Remove memory tag and call
14789         clobber code.  Assert we are not aliased or global.
14790         * tree-flow.h: Include tree-ssa-alias.h
14791         (enum escape_type): Remove.
14792         (struct mem_sym_stats_d): Likewise.
14793         (struct mem_ref_stats_d): Likewise.
14794         (struct gimple_df): Add vop member.  Remove global_var,
14795         call_clobbered_vars, call_used_vars, addressable_vars,
14796         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
14797         escaped and callused members.
14798         (struct ptr_info_def): Remove all members, add points-to solution
14799         member pt.
14800         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
14801         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
14802         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
14803         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
14804         (tree-ssa-alias.o): Likewise.
14805         (toplev.o): Add tree-ssa-alias.h
14806         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
14807         * gimple.c (gimple_set_bb): Fix off-by-one error.
14808         (is_gimple_reg): Do not handle memory tags.
14809         (gimple_copy): Also copy virtual operands.
14810         Delay updating the statement.  Do not reset loaded and stored syms.
14811         (gimple_set_stored_syms): Remove.
14812         (gimple_set_loaded_syms): Likewise.
14813         (gimple_call_copy_skip_args): Copy the virtual operands
14814         and mark the new statement modified.
14815         * tree-ssa-structalias.c (may_alias_p): Remove.
14816         (set_uids_in_ptset): Take the alias set to prune with as
14817         parameter.  Fold in the alias test of may_alias_p.
14818         (compute_points_to_sets): Compute whether a ptr is dereferenced
14819         in a local sbitmap.
14820         (process_constraint): Deal with &ANYTHING on the lhs, reject all
14821         other ADDRESSOF constraints on the lhs.
14822         (get_constraint_for_component_ref): Assert that we don't get
14823         ADDRESSOF constraints from the base of the reference.
14824         Properly generate UNKNOWN_OFFSET for DEREF if needed.
14825         (struct variable_info): Remove collapsed_to member.
14826         (get_varinfo_fc): Remove.
14827         (new_var_info): Do not set collapsed_to.
14828         (dump_constraint): Do not follow cycles.
14829         (dump_constraint_graph): Likewise.
14830         (build_pred_graph): Likewise.
14831         (build_succ_graph): Likewise.
14832         (rewrite_constraints): Likewise.
14833         (do_simple_structure_copy): Remove.
14834         (do_rhs_deref_structure_copy): Remove.
14835         (do_lhs_deref_structure_copy): Remove.
14836         (collapse_rest_of_var): Remove.
14837         (do_structure_copy): Re-implement.
14838         (pta_stats): New global variable.
14839         (dump_pta_stats): New function.
14840         (struct constraint_expr): Make offset signed.
14841         (UNKNOWN_OFFSET): Define special value.
14842         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
14843         (solution_set_expand): New helper function split out from ...
14844         (do_sd_constraint): ... here.
14845         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
14846         (do_ds_constraint): Likewise.
14847         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
14848         and CALLUSED = *CALLUSED.
14849         (set_union_with_increment): Make inc argument signed.
14850         (type_safe): Remove.
14851         (get_constraint_for_ptr_offset): Handle unknown and negative
14852         constant offsets.
14853         (first_vi_for_offset): Handle offsets before start.  Bail
14854         out early for offsets beyond the variable extent.
14855         (first_or_preceding_vi_for_offset): New function.
14856         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
14857         Together with ESCAPED = *ESCAPED this properly computes reachability.
14858         (find_what_var_points_to): New function.
14859         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
14860         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
14861         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
14862         pt_solutions_intersect): New functions.
14863         (compute_call_used_vars): Remove.
14864         (compute_may_aliases): New main entry into PTA computation.
14865         * gimple.h (gimple_p): New typedef.
14866         (struct gimple_statement_base): Remove references_memory_p.
14867         (struct gimple_statement_with_memory_ops_base): Remove
14868         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
14869         members.
14870         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
14871         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
14872         gimple_set_references_memory): Remove.
14873         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
14874         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
14875         New functions.
14876         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
14877         (verify_expr): Allow RESULT_DECL.
14878         (gimple_duplicate_bb): Do not copy virtual operands.
14879         (gimple_duplicate_sese_region): Adjust.
14880         (gimple_duplicate_sese_tail): Likewise.
14881         (mark_virtual_ops_in_region): Remove.
14882         (move_sese_region_to_fn): Do not call it.
14883         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
14884         and pass_simple_dse.
14885         (execute_function_todo): Handle TODO_update_address_taken,
14886         call execute_update_addresses_taken for TODO_rebuild_alias.
14887         (execute_todo): Adjust.
14888         (execute_one_pass): Init dump files early.
14889         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
14890         call-clobbered.
14891         (create_general_new_stmt): Clear vops.
14892         * tree-ssa-reassoc.c (get_rank): Adjust.
14893         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
14894         symbols for renaming.
14895         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
14896         (PARAM_AVG_ALIASED_VOPS): Likewise.
14897         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
14898         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
14899         * tree-ssa-operands.c: Simplify for new virtual operand representation.
14900         (operand_build_cmp, copy_virtual_operands,
14901         create_ssa_artificial_load_stmt, add_to_addressable_set,
14902         gimple_add_to_addresses_taken): Remove public functions.
14903         (unlink_stmt_vdef): New function.
14904
14905 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
14906
14907         * config.gcc (powerpc-*-linux*): Merge variants.
14908
14909 2009-04-02  Chao-ying Fu  <fu@mips.com>
14910             James Grosbach  <james.grosbach@microchip.com>
14911
14912         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
14913         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
14914         cop0_sp_offset.
14915         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
14916         keep_interrupts_masked_p, use_debug_exception_return_p.
14917         (mips_attribute_table): Add interrupt, use_shadow_register_set,
14918         keep_interrupts_masked, use_debug_exception_return.
14919         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
14920         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
14921         New functions.
14922         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
14923         (mips_print_operand): Process COP0 registers to print $0 .. $31
14924         correctly for GAS to process.
14925         (mips_interrupt_extra_call_saved_reg_p): New function.
14926         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
14927         extra registers.
14928         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
14929         (mips_compute_frame_info): Add supports for interrupt context that
14930         includes doubleword accumulators and COP0 registers.
14931         (mips_for_each_saved_acc): New function.
14932         (mips_for_each_saved_gpr_and_fpr): Change the function name from
14933         mips_for_each_saved_reg.
14934         (mips_save_reg): Save accumulators.
14935         (mips_kernel_reg_p): A new for_each_rtx callback.
14936         (mips_expand_prologue): Support interrupt handlers.
14937         (mips_restore_reg): Restore accumulators.
14938         (mips_expand_epilogue): Support interrupt handlers.
14939         (mips_can_use_return_insn): Return false for interrupt handlers.
14940         (mips_epilogue_uses): New function.
14941         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
14942         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
14943         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
14944         cop0_move): New instructions.
14945         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
14946         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
14947         defines.
14948         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
14949         New defines.
14950         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
14951         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
14952         interrupt handlers, we use K0 as the temporary register.
14953         (EPILOGUE_USES): Change to a function call.
14954         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
14955         handlers, we use K0 as the temporary register.
14956
14957         * doc/extend.texi (Function Attributes): Document interrupt,
14958         use_shadow_register_set, keep_interrupts_masked,
14959         use_debug_exception_return for MIPS attributes.
14960
14961 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
14962
14963         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
14964         Remove a number of t-files from tmake_file.
14965         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
14966         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
14967         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
14968         target_prototype, not TARGET_PROTOTYPE.
14969         (LINK_OS_GNU_SPEC): Define.
14970         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
14971         and darwin-ldoubdle.c.
14972
14973 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
14974
14975         PR driver/39293
14976         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
14977         (cpp_options): Ditto.
14978         (default_compilers): Ditto.
14979         (display_help): Ditto.
14980         (process_command): Ditto.
14981         (do_spec_1): Ditto.
14982         (set_input): Use lbasename instead of duplicate code.
14983         (save_temps_prefix): New static for -save-temps=obj.
14984         (save_temps_length): Ditto.
14985
14986         * doc/invoke.texi (-save-temps=obj): Document new variant to
14987         -save-temps switch.
14988
14989 2009-04-02  Jeff Law  <law@redhat.com>
14990
14991         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
14992         variable.
14993
14994 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
14995
14996         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
14997         * configure: Regenerated.
14998
14999 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
15000
15001         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
15002         share the argument list.
15003
15004 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
15005
15006         Merge
15007
15008         2009-02-12  Diego Novillo  <dnovillo@google.com>
15009
15010         * varpool.c (debug_varpool): New.
15011         * cgraph.h (debug_varpool): Declare.
15012
15013 2009-04-02  Jan Hubicka  <jh@suse.cz>
15014
15015         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
15016         pass.
15017
15018 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
15019
15020         * config/i386/i386.c (ix86_abi): Move initialization to ...
15021         (override_options): Here.
15022
15023 2009-04-02  Christian Bruel  <christian.bruel@st.com>
15024
15025         * config/sh/sh.c (sh_dwarf_register_span): New function.
15026         (TARGET_DWARF_REGISTER_SPAN): Define.
15027         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
15028
15029 2009-04-02  Ira Rosen  <irar@il.ibm.com>
15030
15031         PR tree-optimization/39595
15032         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
15033         interleaved loads group is not  greater than the SLP group size.
15034
15035 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
15036
15037         * builtins.c (is_builtin_name): New.
15038         (called_as_built_in): Use is_builtin_name.
15039         * tree.h (is_builtin_name): New.
15040         * varasm.c (incorporeal_function_p): Use is_builtin_name
15041
15042 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
15043
15044         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
15045
15046 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
15047
15048         PR c++/26693
15049         * c-decl.c (clone_underlying_type): Move this ...
15050         * c-common.c (set_underlying_type): ... here.
15051         Also, make sure the function properly sets TYPE_STUB_DECL() on
15052         the newly created typedef variant type.
15053         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
15054         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
15055         points.
15056
15057 2009-04-02  Richard Guenther  <rguenther@suse.de>
15058
15059         PR tree-optimization/37221
15060         * tree-flow.h (degenerate_phi_result): Declare.
15061         * tree-ssa-dom.c (degenerate_phi_result): Export.
15062         * tree-scalar-evolution.c (analyze_initial_condition): If
15063         the initial condition is defined by a degenerate PHI node
15064         use the degenerate value.
15065
15066 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
15067
15068         PR rtl-optimization/39588
15069         * combine.c (merge_outer_ops): Do not set the constant when this
15070         is not necessary.
15071         (simplify_shift_const_1): Do not modify it either in this case.
15072
15073 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
15074
15075         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
15076         tuning is deprecated if -mtune value is set to an Itanium1 variant.
15077
15078 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
15079
15080         PR c/29027
15081         * c-lex.c (interpret_float): Default (no suffix) is double.
15082
15083 2009-04-1  Xinliang David Li  <davidxl@google.com>
15084
15085         * config/i386/i386.c (legitimate_constant_p): Recognize
15086         all one vector constant.
15087
15088 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15089
15090         * config/vax/vax.c: Add #includes to silence warnings.
15091         Change #include order to silence two warnings.
15092
15093 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15094
15095         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
15096         (ASM_SPEC): Pass -k to the assembler for PIC code.
15097
15098 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15099
15100         * config.gcc: Add vax-*-linux* to the switch.
15101         * config/vax/linux.h: New file. (TARGET_VERSION,
15102         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
15103
15104 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15105
15106         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
15107         Use predicate macros instead of GET_CODE() == foo.
15108         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
15109         ashlsi3, rotrsi3, <unnamed>): Likewise.
15110
15111 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15112
15113         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
15114         jbbccihi, jbbccisi): Remova trailing whitespace.
15115         * config/vax/constraints.md: Likewise.
15116         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
15117         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
15118         * config/vax/predicates.md: Likewise.
15119         * config/vax/vax.c (print_operand_address, vax_output_int_move,
15120         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
15121         * config/vax/vax.h: Likewise.
15122         * config/vax/vax.md (nonlocal_goto): Likewise.
15123
15124 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15125
15126         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
15127         (indirectable_address_p, adjacent_operands_p): Add spaces around
15128         braces.
15129         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
15130
15131 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15132
15133         * config/vax/vax.c (legitimate_constant_address_p,
15134         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
15135         index_term_p, reg_plus_index_p, legitimate_address_p,
15136         vax_mode_dependent_address_p): Update comments to match functions
15137         modified by the recent int->bool conversion.
15138
15139 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15140
15141         * config/vax/builtins.md: Update copyright message.
15142         * config/vax/constraints.md: Likewise.
15143         * config/vax/netbsd-elf.h: Likewise.
15144         * config/vax/predicates.md: Likewise.
15145         * config/vax/vax-protos.h: Likewise.
15146         * config/vax/vax.c: Likewise.
15147         * config/vax/vax.h: Likewise.
15148         * config/vax/vax.md: Likewise.
15149         * config/vax/vax.opt: Likewise.
15150
15151 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
15152
15153         * config/vax/builtins.md (ffssi2, ffssi2_internal,
15154         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
15155         * config/vax/constraints.md (B, R): Likewise.
15156         * config/vax/predicates.md (external_memory_operand,
15157         nonimmediate_addsub_di_operand): Likewise.
15158         * config/vax/vax.c (vax_output_int_add): Likewise.
15159         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
15160         untyped_call): Likewise.
15161
15162 2009-04-01  Matt Thomas  <matt@3am-software.com>
15163
15164         * config/vax/predicates.md: New file.
15165         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
15166         external_const_operand, nonsymbolic_operand, external_memory_operand,
15167         indirect_memory_operand, indexed_memory_operand,
15168         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
15169         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
15170         predicate.
15171         * config/vax/constraints.md: New file.
15172         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
15173         New constraint.
15174         * config/vax/builtins.md: New file.
15175         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
15176         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
15177         jbbccisi): Define.
15178         * config/vax/vax.opt (mqmath): Add option.
15179         * config/vax/vax.md (isfx): Extend with DI.
15180         (VAXintQH, VAXintQHSD): Define.
15181         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
15182         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
15183         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
15184         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
15185         (movdi): Update constraints and use vax_output_int_move().
15186         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
15187         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
15188         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
15189         nonlocal_goto): New.
15190         (mov<mode>): Extend accepted operand types.
15191         (subdi3_old): Rename from subdi3, change update constraints and use
15192         a new implementation.
15193         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
15194         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
15195         MOVE_RATIO, CLEAR_RATIO): Define.
15196         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
15197         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
15198         (PRINT_OPERAND): Redefine using a function instead of inlined code.
15199         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
15200         (split_quadword_operands): Make static and really allow variable
15201         splitting.
15202         (print_operand_address): Update for PIC generation.
15203         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
15204         indexable_address_p, fixup_mathdi_operand,
15205         vax_expand_addsub_di_operands, adjacent_operands_p): New.
15206         (vax_float_literal, legitimate_constant_p,
15207         indirectable_constant_address_p, index_term_p,
15208         reg_plus_index_p): Return bool instead of int.
15209         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
15210         where needed.
15211         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
15212         generation.
15213         (vax_output_conditional_branch): Indent.
15214         (legitimate_constant_address_p, indirectable_constant_address_p,
15215         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
15216         vax_mode_dependent_address_p): Return bool instead of int, update for
15217         PIC generation.
15218         * config/vax/vax-protos.h (legitimate_constant_address_p,
15219         legitimate_constant_p, legitimate_address_p,
15220         vax_mode_dependent_address_p): Change declaration to bool.
15221         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
15222         vax_expand_addsub_di_operands, vax_output_int_subtract,
15223         vax_output_movmemsi): Declare.
15224         (split_quadword_operands, vax_float_literal): Delete declaration.
15225         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
15226         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
15227         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
15228         ASM_OUTPUT_DWARF_PCREL): Define.
15229         (ASM_SPEC): Change definition to allow PIC generation.
15230
15231 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
15232
15233         * doc/sourcebuild.texi: Update front-end requirements.
15234
15235 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
15236
15237         PR target/39226
15238         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
15239         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
15240         (booldi3_internal3): Use boolean_or_operator instead of
15241         boolean_operator.
15242
15243 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
15244
15245         PR c/39605
15246         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
15247         declarator whose size is not an integer constant expression but
15248         folds to an integer constant, then treat it as a constant
15249         subsequently.
15250
15251 2009-04-01  Richard Guenther  <rguenther@suse.de>
15252
15253         * fold-const.c (fold_plusminus_mult_expr): Do not fold
15254         i * 4 + 2 to (i * 2 + 1) * 2.
15255
15256 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
15257
15258         PR c/37772
15259         * c-parser.c (c_parser_asm_statement): Skip until close paren and
15260         return if c_parser_asm_string_literal returned NULL.
15261
15262 2009-04-01  Nick Clifton  <nickc@redhat.com>
15263
15264         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
15265         already defined.
15266         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
15267         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
15268         other typedefs to avoid conflicts with libgcc2.c.  Define labels
15269         to gain 16-bit bit-manipulation functions from libgcc2.c and then
15270         include it.
15271         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
15272         to gain 16-bit trapping arithmetic functions from libgcc2.c and
15273         then include it.
15274
15275 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
15276
15277         * varasm.c (default_function_rodata_section): Declare DOT as
15278         const char*.
15279
15280 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
15281             Andrey Galkin  <agalkin@hypercom.com>
15282
15283         PR/39492
15284         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
15285         Make object_name unique for each process.
15286
15287 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
15288
15289         PR other/39591
15290         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
15291         addressable variables in the parallel that could go out of scope while
15292         running queued tasks.
15293
15294 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
15295
15296         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
15297         (CASE_VALUES_THRESHOLD): Redefine.
15298         * config/avr/avr.c (avr_override_options): Remove initialization of
15299         avr_case_values_threshold variable.
15300         (avr_case_values_threshold): Remove variable. Add new function.
15301         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
15302         * config/avr/avr.opt (mno-tablejump): Remove option.
15303         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
15304
15305 2009-04-01  DJ Delorie  <dj@redhat.com>
15306
15307         * varasm.c (default_function_rodata_section): Don't assume
15308         anything about where the first '.' in the section name is.
15309
15310 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
15311
15312         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
15313         rs6000_emit_stack_tie.
15314
15315 2009-03-31  Ian Lance Taylor  <iant@google.com>
15316
15317         * tree-eh.c (tree_remove_unreachable_handlers): Compare
15318         gimple_code with GIMPLE_RESX, not RESX.
15319
15320 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
15321
15322         * c-common.c (c_get_ident): New.
15323         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
15324
15325 2009-04-01  Ben Elliston  <bje@au.ibm.com>
15326
15327         * config/rs6000/sysv4.opt (msdata): Improve option description.
15328
15329 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
15330
15331         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
15332         (divdf3_internal_lat): Remove.
15333         (divxf3_internal_lat): Remove.
15334         (divxf3_internal_thr): Remove.
15335         (divxf): Use divxf3_internal.
15336         * config/ia64/div.md (divsf3_internal_lat): New.
15337         (divdf3_internal_lat): New.
15338         (divxf3_internal): New.
15339
15340 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
15341
15342         PR c/448
15343         * Makefile.in (USE_GCC_STDINT): Define.
15344         (stmp-int-hdrs): Install stdint.h if applicable.
15345         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
15346         if known.
15347         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
15348         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
15349         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
15350         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
15351         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
15352         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
15353         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
15354         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
15355         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
15356         (c_common_nodes_and_builtins): Initialize
15357         underlying_wchar_type_node.  Do not initialize
15358         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
15359         nodes for new types.
15360         (c_stddef_cpp_builtins): Define macros for new types.
15361         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
15362         Remove.
15363         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
15364         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
15365         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
15366         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
15367         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
15368         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
15369         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
15370         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
15371         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
15372         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
15373         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
15374         int16_type_node, int32_type_node, int64_type_node,
15375         uint8_type_node, uint16_type_node, c_uint32_type_node,
15376         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
15377         int_least32_type_node, int_least64_type_node,
15378         uint_least8_type_node, uint_least16_type_node,
15379         uint_least32_type_node, uint_least64_type_node,
15380         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
15381         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
15382         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
15383         uintptr_type_node): Define.
15384         * c-cppbuiltin.c (builtin_define_constants,
15385         builtin_define_type_minmax): New.
15386         (builtin_define_stdint_macros): Define more macros.
15387         (c_cpp_builtins): Define more limit macros.
15388         (type_suffix): New.
15389         (builtin_define_type_max): Define in terms of
15390         builtin_define_type_minmax.  Remove is_long parameter.  All
15391         callers changed.
15392         * config.gcc (use_gcc_stdint): Define.
15393         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
15394         Add newlib-stdint.h for generic targets.
15395         * config/glibc-stdint.h, config/newlib-stdint.h,
15396         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
15397         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
15398         * config/score/score.h (UINTPTR_TYPE): Define.
15399         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
15400         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
15401         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
15402         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
15403         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
15404         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
15405         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
15406         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
15407         * config/spu/spu.h (STDINT_LONG32): Define.
15408         * configure.ac (use_gcc_stdint): Substitute.
15409         * configure: Regenerate.
15410         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
15411         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
15412         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
15413         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
15414         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
15415         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
15416         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
15417         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
15418         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
15419         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
15420         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
15421         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
15422         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
15423         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
15424         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
15425         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
15426         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
15427         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
15428         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
15429         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
15430         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
15431         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
15432         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
15433         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
15434         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
15435         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
15436         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
15437         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
15438         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
15439
15440 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
15441
15442         * loop-iv.c (suitable_set_for_replacement): Renamed from
15443         simplify_using_assignment; changed to return bool and to accept new
15444         args DEST and SRC.  Return true iff we find a source/destination pair
15445         that can be used to make a replacement, and fill SRC and DEST if so.
15446         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
15447         changed.
15448         (simplify_using_initial_values): Deal with altered regs here and track
15449         more precisely the effect they have on the validity of our expression.
15450
15451         * loop-iv.c (simplify_using_condition): A condition of the form
15452         (EQ REG CONST) can be used to simply make a substitution.
15453         (simplify_using_initial_values): Keep track of conditions we have seen
15454         and keep using them to simplify new expressions, while applying the
15455         same substitutions to them as to the expression.
15456
15457         * simplify-rtx.c (simplify_relational_operation_1): Simplify
15458         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
15459         GEU/LTU reversed.
15460
15461         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
15462         changed.  Use this when trying to improve the upper bound.
15463         Generate the comparison by using simplify_gen_relational.
15464
15465         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
15466
15467         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
15468         functions.
15469         (simplify_using_assignment, simplify_using_initial_values): Call
15470         replace_in_expr to make replacements.  Call replace_single_def_regs
15471         once on the initial version of the expression.
15472
15473 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15474
15475         PR target/27237
15476         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
15477
15478 2009-03-31  Richard Guenther  <rguenther@suse.de>
15479
15480         PR middle-end/31029
15481         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
15482         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
15483
15484 2009-03-31  Richard Guenther  <rguenther@suse.de>
15485
15486         * tree.h (div_if_zero_remainder): Declare.
15487         * fold-const.c (div_if_zero_remainder): Export.
15488         * tree-ssa-forwprop.c
15489         (forward_propagate_addr_into_variable_array_index): Handle
15490         constant array index addition outside of the variable index.
15491
15492 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
15493
15494         PR target/39592
15495         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
15496         define_splits, floatunssi<mode>2): Require x87 conversions from
15497         DImode to be permitted.
15498
15499 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
15500
15501         PR preprocessor/15638
15502         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
15503
15504 2009-03-31  Richard Guenther  <rguenther@suse.de>
15505
15506         PR middle-end/23401
15507         PR middle-end/27810
15508         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
15509         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
15510         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
15511         a separate statement.
15512         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
15513         (lookup_tmp_var): Likewise.
15514         (is_gimple_formal_tmp_or_call_rhs): Remove.
15515         (is_gimple_reg_or_call_rhs): Rename to ...
15516         (is_gimple_reg_rhs_or_call): ... this.
15517         (is_gimple_mem_or_call_rhs): Rename to ...
15518         (is_gimple_mem_rhs_or_call): ... this.
15519         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
15520         DECL_GIMPLE_REG_P only if is_formal is true.
15521         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
15522         for non-proper post-modify expression gimplification.
15523         (gimplify_self_mod_expr): For post-modify expressions gimplify
15524         the lvalue to a minimal lvalue.
15525         (rhs_predicate_for): Remove formal temp case.
15526         (gimplify_modify_expr_rhs): Likewise.
15527         (gimplify_addr_expr): Use is_gimple_reg.
15528         (gimplify_expr): Remove formal temp cases.
15529         (gimple_regimplify_operands): Likewise.
15530         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
15531         and FILTER_EXPR like constants.
15532         * gimple.c (walk_gimple_op): Fix val_only initialization, use
15533         is_gimple_reg.
15534         (is_gimple_formal_tmp_rhs): Remove.
15535         (is_gimple_reg_rhs): Remove special casing.
15536         (is_gimple_mem_rhs): Fix.
15537         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
15538         (is_gimple_formal_tmp_var): Remove.
15539         (is_gimple_formal_tmp_reg): Likewise.
15540         (is_gimple_min_lval): Allow invariant component ref parts.
15541         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
15542         is_gimple_formal_tmp_reg): Remove declarations.
15543         * tree-cfg.c (verify_expr): Verify that variables with address
15544         taken do not have DECL_GIMPLE_REG_P set.
15545         * tree-mudflap.c (mf_build_check_statement_for): Use
15546         force_gimple_operand instead of gimplify_expr.
15547
15548 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
15549
15550         * modulo-sched.c (sms_schedule_by_order): Pass the actual
15551         schedulable rows to compute_split_row.
15552
15553 2009-03-31  Ben Elliston  <bje@au.ibm.com>
15554
15555         PR target/31635
15556         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
15557         OPT_mvrsave.
15558
15559 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
15560
15561         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
15562         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
15563         * configure: Regenerate.
15564         * config.in: Regenerate.
15565         * config/rs6000/rs6000.opt (mtls-markers): Add.
15566         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
15567         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
15568         (tls_ld_aix, tls_ld_sysv): Likewise.
15569         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
15570         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
15571
15572 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
15573
15574         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
15575
15576 2009-03-30  Jan Hubicka  <jh@suse.cz>
15577
15578         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
15579         out of RESX.
15580         (tree_remove_unreachable_handlers): Cleanup EH predecestor
15581         detection and label handling.
15582
15583 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
15584
15585         * ira-int.h (ira_allocno): Rename left_conflicts_num to
15586         left_conflicts_size.
15587         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
15588         ALLOCNO_LEFT_CONFLICTS_SIZE.
15589
15590         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
15591         remove_allocno_from_bucket_and_push,
15592         allocno_spill_priority_compare, push_allocnos_to_stack,
15593         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
15594         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
15595         (setup_allocno_left_conflicts_num): Ditto.  Rename to
15596         setup_allocno_left_conflicts_size.
15597         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
15598         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
15599         setup_allocno_left_conflicts_size instead of
15600         setup_allocno_left_conflicts_num.
15601
15602         * ira-build.c (ira_create_allocno): Use
15603         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
15604         ALLOCNO_LEFT_CONFLICTS_NUM.
15605
15606 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
15607
15608         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
15609         instead of DF_LR_OUT.
15610
15611         * ira-lives.c (process_bb_node_lives): Ditto.
15612
15613         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
15614         instead of DF_LR_{OUT,IN}.
15615
15616         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
15617
15618         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
15619
15620 2009-03-30  Jan Hubicka  <jh@suse.cz>
15621
15622         * except.c (label_to_region_map): Fix thinko.
15623
15624 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
15625
15626         PR middle-end/38237
15627         * tree.h (tree_find_value): New declaration.
15628         * tree.c (tree_find_value): New function.
15629         * varasm.c (assemble_external): Avoid duplicate entries on lists.
15630
15631 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
15632
15633         PR debug/39563
15634         * c-decl.c (struct c_binding): Add locus field.
15635         (bind): Add locus argument, set locus field from it.
15636         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
15637         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
15638         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
15639         implicitly_declare, undeclared_variable, lookup_label,
15640         declare_label, c_make_fname_decl, c_builtin_function,
15641         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
15642         bind callers.
15643
15644 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
15645
15646         PR target/38781
15647         * config/i386/i386.c (classify_argument): Check total size of
15648         structure.
15649
15650 2009-03-30  Martin Jambor  <mjambor@suse.cz>
15651
15652         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
15653         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
15654         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
15655         respectively.
15656
15657         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
15658         seen_variable_array_ref while also traversing a union.
15659
15660         * tree-inline.c (optimize_inline_calls): Do not call
15661         cgraph_node_remove_callees.
15662         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
15663         (pass_remove_cgraph_callee_edges): New variable.
15664         * passes.c (init_optimization_passes): Add
15665         pass_remove_cgraph_callee_edges after early inlining and before all
15666         late intraprocedural passes.
15667
15668         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
15669
15670 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15671
15672         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
15673         Fix typos in names.
15674
15675 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15676
15677         * combine.c (simplify_comparison): Use have_insn_for.
15678         * dojump.c (do_jump): Likewise.
15679
15680 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15681
15682         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
15683         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
15684         sparc_compare_op0 like sparc_compare_emitted used to be handled.
15685         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
15686         instead of sparc_compare_emitted.
15687         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
15688         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
15689         instead of sparc_compare_emitted.
15690
15691 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15692
15693         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
15694         enter/exit cfglayout mode.
15695         (pass_partition_block): Require it.
15696         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
15697         (combine_instructions): Track basic blocks instead of labels.
15698         (update_cfg_for_uncondjump): New.
15699         (try_combine): Use it.  Update jumps after rescanning.
15700         (pass_combine): Require PROP_cfglayout.
15701         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
15702
15703 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15704
15705         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
15706         Provide/destroy PROP_cfglayout respectively.
15707         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
15708         * tree-pass.h (PROP_cfglayout): New.
15709
15710 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
15711
15712         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
15713         fold_convert_const_fixed_from_fixed,
15714         fold_convert_const_fixed_from_int,
15715         fold_convert_const_fixed_from_real, fold_negate_const): Do not
15716         set TREE_CONSTANT_OVERFLOW.
15717         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
15718         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
15719
15720 2009-03-30  Ira Rosen  <irar@il.ibm.com>
15721
15722         * tree-vect-loop-manip.c: New file.
15723         * tree-vectorizer.c: Update documentation and included files.
15724         (vect_loop_location): Make extern.
15725         (rename_use_op): Move to tree-vect-loop-manip.c
15726         (rename_variables_in_bb, rename_variables_in_loop,
15727         slpeel_update_phis_for_duplicate_loop,
15728         slpeel_update_phi_nodes_for_guard1,
15729         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
15730         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
15731         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
15732         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
15733         find_loop_location): Likewise.
15734         (new_stmt_vec_info): Move to tree-vect-stmts.c.
15735         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
15736         get_vectype_for_scalar_type, vect_is_simple_use,
15737         supportable_widening_operation, supportable_narrowing_operation):
15738         Likewise.
15739         (bb_in_loop_p): Move to tree-vect-loop.c.
15740         (new_loop_vec_info, destroy_loop_vec_info,
15741         reduction_code_for_scalar_code, report_vect_op,
15742         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
15743         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
15744         (vect_supportable_dr_alignment): Likewise.
15745         * tree-vectorizer.h (tree-data-ref.h): Include.
15746         (vect_loop_location): Declare.
15747         Reorganize function declarations according to the new file structure.
15748         * tree-vect-loop.c: New file.
15749         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
15750         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
15751         * tree-vect-data-refs.c: New file.
15752         * tree-vect-patterns.c (timevar.h): Don't include.
15753         * tree-vect-stmts.c: New file.
15754         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
15755         tree-vect-slp.c, tree-vect-loop.c.
15756         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
15757         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
15758         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
15759         (tree-vect-analyze.o): Remove.
15760         (tree-vect-transform.o): Likewise.
15761         (tree-vect-data-refs.o): Add rule.
15762         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
15763         tree-vect-slp.o): Likewise.
15764         (tree-vect-patterns.o): Remove redundant dependencies.
15765         (tree-vectorizer.o): Likewise.
15766         * tree-vect-slp.c: New file.
15767
15768 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15769
15770         * optc-gen.awk: Warn if an option flag has multiple different
15771         help strings.
15772
15773 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
15774
15775         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
15776         -floop-block): Document dependences on PPL, CLooG and Graphite.
15777
15778 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
15779
15780         PR rtl-optimization/323
15781         * c-common.c (c_fully_fold, convert_and_check,
15782         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
15783         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
15784         * c-common.def (EXCESS_PRECISION_EXPR): New.
15785         * c-cppbuiltin.c (builtin_define_float_constants): Define
15786         constants with enough digits for long double.
15787         * c-lex.c (interpret_float): Interpret constant with excess
15788         precision where appropriate.
15789         * c-opts.c (c_common_post_options): Set
15790         flag_excess_precision_cmdline.  Give an error for
15791         -fexcess-precision=standard for C++ for processors where the
15792         option is significant.
15793         * c-parser.c (c_parser_conditional_expression): Handle excess
15794         precision in condition.
15795         * c-typeck.c (convert_arguments): Handle arguments with excess
15796         precision.
15797         (build_unary_op): Move excess precision outside operation.
15798         (build_conditional_expr): Likewise.
15799         (build_compound_expr): Likewise.
15800         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
15801         (build_modify_expr): Handle excess precision in RHS.
15802         (convert_for_assignment): Handle excess precision in converted
15803         value.
15804         (digest_init, output_init_element, process_init_element): Handle
15805         excess precision in initializer.
15806         (c_finish_return): Handle excess precision in return value.
15807         (build_binary_op): Handle excess precision in operands and add
15808         excess precision as needed for operation.
15809         * common.opt (-fexcess-precision=): New option.
15810         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
15811         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
15812         For standard excess precision, output explicit conversion to and
15813         truncation from XFmode.
15814         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
15815         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
15816         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
15817         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
15818         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
15819         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
15820         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
15821         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
15822         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
15823         define_splits, sqrt<mode>2): Disable where appropriate for
15824         standard excess precision.
15825         * convert.c (convert_to_real): Do not shorten arithmetic to type
15826         for which excess precision would be used.
15827         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
15828         * doc/invoke.texi (-fexcess-precision=): Document option.
15829         (-mfpmath=): Correct index entry.
15830         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
15831         flag_excess_precision): New.
15832         * langhooks.c (lhd_post_options): Set
15833         flag_excess_precision_cmdline.
15834         * opts.c (common_handle_option): Handle -fexcess-precision=.
15835         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
15836         init_excess_precision): New.
15837         (lang_dependent_init_target): Call init_excess_precision.
15838         * tree.c (excess_precision_type): New.
15839         * tree.h (excess_precision_type): Declare.
15840
15841 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
15842
15843         PR c/35235
15844         * c-typeck.c (build_component_ref): Do not copy qualifiers from
15845         non-lvalue to component.
15846
15847 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
15848
15849         PR preprocessor/34695
15850         * Makefile.in (c-opts.o): Depend on c-tree.h.
15851         * c-common.c: Move down include of diagnostic.h.
15852         (done_lexing, c_cpp_error): New.
15853         * c-common.h (done_lexing): Declare.
15854         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
15855         (parse_in).
15856         * c-opts.c: Include c-tree.h.
15857         (c_common_init_options): Set preprocessor error callback.
15858         (c_common_handle_option): Do not set preprocessor
15859         inhibit_warnings, warnings_are_errors, warn_system_headers,
15860         pedantic_errors or inhibit_warnings flags.
15861         (c_common_post_options): Do not check cpp_errors (parse_in).
15862         (c_common_finish): Do not output dependencies if there were
15863         errors.  Do not check return value of cpp_finish.
15864         * c-ppoutput.c (pp_file_change): Set input_location.
15865         * c-tree.h (c_cpp_error): Declare.
15866         * diagnostic.c (diagnostic_set_info_translated): Also initialize
15867         override_column.
15868         (diagnostic_build_prefix): Check override_column.
15869         * diagnostic.h (diagnostic_info): Add override_column field.
15870         (diagnostic_override_column): Define.
15871
15872 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
15873
15874         * c-common.c (c_expand_expr, c_staticp): Remove.
15875         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
15876         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
15877         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
15878         * c-gimplify.c (gimplify_compound_literal_expr,
15879         optimize_compound_literals_in_ctor): Remove.
15880         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
15881         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
15882         * c-semantics.c (emit_local_var): Remove.
15883
15884         * langhooks-def.h (lhd_expand_expr): Remove.
15885         * langhooks.c (lhd_expand_expr): Remove.
15886         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
15887
15888         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
15889         handling from c-semantics.c; don't call into langhook.
15890         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
15891         * gimplify.c (gimplify_compound_literal_expr,
15892         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
15893         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
15894         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
15895         as was done in c-gimplify.c.
15896         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
15897         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
15898         Move from c-common.h.
15899         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
15900
15901         * tree.c (staticp): Do not call langhook.
15902         * langhooks.c (lhd_staticp): Delete.
15903         * langhooks-def.h (lhd_staticp): Delete prototype.
15904         (LANG_HOOKS_STATICP): Delete.
15905         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
15906
15907         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
15908         instead of DECL_STMTs.
15909
15910 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
15911
15912         PR c/456
15913         PR c/5675
15914         PR c/19976
15915         PR c/29116
15916         PR c/31871
15917         PR c/35198
15918         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
15919         void_type_node.
15920         (fold_call_expr): Return a NOP_EXPR from folding rather than the
15921         contained expression.
15922         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
15923         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
15924         conditional expressions for C.
15925         (decl_constant_value_for_optimization): Move from
15926         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
15927         whether optimizing and that the expression is a VAR_DECL not of
15928         array type instead of doing such checks in the caller.  Do not
15929         check pedantic.  Call gcc_unreachable for C++.
15930         * c-common.def (C_MAYBE_CONST_EXPR): New.
15931         * c-common.h (c_fully_fold, c_save_expr,
15932         decl_constant_value_for_optimization): New prototypes.
15933         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
15934         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
15935         EXPR_INT_CONST_OPERANDS): Define.
15936         * c-convert.c (convert): Strip nops from expression.
15937         * c-decl.c (groktypename): Take extra parameters expr and
15938         expr_const_operands.  Update call to grokdeclarator.
15939         (start_decl): Update call to grokdeclarator.  Add statement for
15940         expressions used in type of decl.
15941         (grokparm): Update call to grokdeclarator.
15942         (push_parm_decl): Update call to grokdeclarator.
15943         (build_compound_literal): Add parameter non_const and build a
15944         C_MAYBE_COSNT_EXPR if applicable.
15945         (grokdeclarator): Take extra parameters expr and
15946         expr_const_operands.  Track expressions used in declaration
15947         specifiers and declarators.  Fold array sizes and track whether
15948         they are constant expressions and whether they are integer
15949         constant expressions.
15950         (parser_xref_tag): Set expr and expr_const_operands fields in
15951         return value.
15952         (grokfield): Update call to grokdeclarator.
15953         (start_function): Update call to grokdeclarator.
15954         (build_null_declspecs): Set expr and expr_const_operands fields in
15955         return value.
15956         (declspecs_add_type): Handle expressions in typeof specifiers.
15957         * c-parser.c (c_parser_declspecs): Set expr and
15958         expr_const_operands fields for declaration specifiers.
15959         (c_parser_enum_specifier): Likewise.
15960         (c_parser_struct_or_union_specifier): Likewise.
15961         (c_parser_typeof_specifier): Likewise.  Update call to
15962         groktypename.  Fold expression as needed.  Return expressions with
15963         type instead of adding statements.
15964         (c_parser_attributes): Update calls to c_parser_expr_list.
15965         (c_parser_statement_after_labels): Fold expression before passing
15966         to objc_build_throw_stmt.
15967         (c_parser_condition): Fold expression.
15968         (c_parser_asm_operands): Fold expression.
15969         (c_parser_conditional_expression): Use c_save_expr.  Update call
15970         to build_conditional_expr.
15971         (c_parser_alignof_expression): Update call to groktypename.
15972         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
15973         original_code.  Fold expression argument of va_arg.  Create
15974         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
15975         argument to va_arg.  Update calls to groktypename.  Fold array
15976         index for offsetof.  Verify that first argument to
15977         __builtin_choose_expr has integer type.
15978         (c_parser_postfix_expression_after_paren_type): Update calls to
15979         groktypename and build_compound_literal.  Handle expressions with
15980         side effects in type name.
15981         (c_parser_postfix_expression_after_primary): Update call to
15982         c_parser_expr_list.  Set original_code for calls to
15983         __builtin_constant_p.
15984         (c_parser_expr_list): Take extra parameter fold_p.  Fold
15985         expressions if requested.
15986         (c_parser_objc_type_name): Update call to groktypename.
15987         (c_parser_objc_synchronized_statement): Fold expression.
15988         (c_parser_objc_receiver): Fold expression.
15989         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
15990         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
15991         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
15992         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
15993         (struct c_typespec): Add elements expr and expr_const_operands.
15994         (struct c_declspecs): Add elements expr and expr_const_operands.
15995         (groktypename, build_conditional_expr, build_compound_literal):
15996         Update prototypes.
15997         (in_late_binary_op): Declare.
15998         * c-typeck.c (note_integer_operands): New function.
15999         (in_late_binary_op): New variable.
16000         (decl_constant_value_for_broken_optimization): Move to c-common.c
16001         and rename to decl_constant_value_for_optimization.
16002         (default_function_array_conversion): Do not strip nops.
16003         (default_conversion): Do not call
16004         decl_constant_value_for_broken_optimization.
16005         (build_array_ref): Do not fold result.
16006         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
16007         result when operand is a VLA.
16008         (c_expr_sizeof_type): Update call to groktypename.  Handle
16009         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
16010         result when operand names a VLA type.
16011         (build_function_call): Update call to build_compound_literal.
16012         Only fold result for calls to __builtin_* functions.  Strip
16013         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
16014         the function designator.
16015         (convert_arguments): Fold arguments.  Update call to
16016         convert_for_assignment.
16017         (build_unary_op): Handle increment and decrement of
16018         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
16019         decrement earlier.  Fold operand of increment and decrement.
16020         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
16021         built for integer operand.  Wrap returns that are INTEGER_CSTs
16022         without being integer constant expressions or that have integer
16023         constant operands without being INTEGER_CSTs.
16024         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
16025         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
16026         result is an integer constant expression or can be used in
16027         unevaluated parts of one and avoid folding and wrap as
16028         appropriate.  Fold operands before possibly doing -Wsign-compare
16029         warnings.
16030         (build_compound_expr): Wrap result for C99 if operands can be used
16031         in integer constant expressions.
16032         (build_c_cast): Update call to digest_init.  Do not ignore
16033         overflow from casting floating-point constants to integers.  Wrap
16034         results that could be confused with integer constant expressions,
16035         null pointer constants or floating-point constants.
16036         (c_cast_expr): Update call to groktypename.  Handle expressions
16037         included in type name.
16038         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
16039         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
16040         Update calls to convert_for_assignment.
16041         (convert_for_assignment): Take new parameter
16042         null_pointer_constant.  Do not strip nops or call
16043         decl_constant_value_for_broken_optimization.  Set
16044         in_late_binary_op for conversions to boolean.
16045         (store_init_value): Update call to digest_init.
16046         (digest_init): Take new parameter null_pointer_constant.  Do not
16047         call decl_constant_value_for_broken_optimization.  pedwarn for
16048         initializers not constant expressions.  Update calls to
16049         convert_for_assignment.
16050         (constructor_nonconst): New.
16051         (struct constructor_stack): Add nonconst element.
16052         (really_start_incremental_init, push_init_level, pop_init_level):
16053         Handle constructor_nonconst and nonconst element.
16054         (set_init_index): Call constant_expression_warning for array
16055         designators.
16056         (output_init_element): Fold value.  Set constructor_nonconst as
16057         applicable.  pedwarn for initializers not constant expressions.
16058         Update call to digest_init.  Call constant_expression_warning
16059         where constant initializers are required.
16060         (process_init_element): Use c_save_expr.
16061         (c_finish_goto_ptr): Fold expression.
16062         (c_finish_return): Fold return value.  Update call to
16063         convert_for_assignment.
16064         (c_start_case): Fold switch expression.
16065         (c_process_expr_stmt): Fold expression.
16066         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
16067         ensure statement expression is not evaluated in constant expression.
16068         (build_binary_op): Track whether results are integer constant
16069         expressions or may occur in such, disable folding and wrap results
16070         as applicable.  Fold operands for -Wsign-compare warnings unless
16071         in_late_binary_op.
16072         (c_objc_common_truthvalue_conversion): Handle results folded to
16073         integer constants that are not integer constant expressions.
16074         * doc/extend.texi: Document when typeof operands are evaluated,
16075         that condition of __builtin_choose_expr is an integer constant
16076         expression, and more about use of __builtin_constant_p in
16077         initializers.
16078
16079 2009-03-29  Richard Guenther  <rguenther@suse.de>
16080
16081         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
16082         propagate addresses of array references.
16083
16084 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
16085
16086         * regmove.c (perhaps_ends_bb_p): Remove.
16087         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
16088         from INSN and check that the main loop stays within that basic block.
16089         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
16090         (regmove_forward_pass): Split out from regmove_optimize.  Use
16091         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
16092         (regmove_backward_pass): Split out from regmove_optimize.  Use
16093         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
16094         (regmove_optimize): Simplify.
16095
16096 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
16097
16098         PR target/39545
16099         * config/i386/i386.c (classify_argument): Ignore flexible array
16100         member in struct and warn ABI change.
16101
16102 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
16103
16104         * config/i386/i386-protos.h (ix86_agi_dependent): New.
16105
16106         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
16107         (ix86_adjust_cost): Updated.
16108
16109 2009-03-29  Jan Hubicka  <jh@suse.cz>
16110
16111         PR middle-end/28850
16112         * tree-pass.h (pass_cleanup_eh): New function.
16113         (remove_unreachable_regions): Break code handling RTL
16114         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
16115         that can not be reached by runtime.
16116         (can_be_reached_by_runtime): New function.
16117         (label_to_region_map): New function.
16118         (num_eh_regions): New function.
16119         (rtl_remove_unreachable_regions): New function.
16120         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
16121         (remove_eh_region): New function.
16122         * except.h: Include sbitmap and vecprim.
16123         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
16124         num_eh_regions): Declare.
16125         * passes.c (init_optimization_passes): Schedule cleanup_eh.
16126         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
16127         * tree-eh.c (tree_remove_unreachable_handlers): New function.
16128         (tree_empty_eh_handler_p): New function.
16129         (cleanup_empty_eh): New function.
16130         (cleanup_eh): New function.
16131         (pass_cleanup_eh): New function.
16132
16133 2009-03-29  Jan Hubicka  <jh@suse.cz>
16134
16135         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
16136         for removed regions.
16137
16138 2009-03-29  Jan Hubicka  <jh@suse.cz>
16139
16140         * except.c (dump_eh_tree): Dump all datastructures.
16141
16142 2009-03-29  Jan Hubicka  <jh@suse.cz>
16143
16144         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
16145         (duplicate_eh_regions_1): Likewise.
16146         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
16147         vector; call EH verification.
16148         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
16149         Be ready for region being removed.
16150
16151 2009-03-29  Jan Hubicka  <jh@suse.cz>
16152
16153         * bitmap.c (bitmap_last_set_bit): New function.
16154         * bitmap.h (bitmap_last_set_bit): Declare.
16155
16156 2009-03-29  David Ayers  <ayers@fsfe.org>
16157
16158         PR objc/27377
16159         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
16160         by calling objc_compare_types and surpress warnings about
16161         incompatible C pointers that are compatible ObjC pointers.
16162
16163 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
16164
16165         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
16166         call initialize_inline_failed.
16167         (initialize_inline_failed): Move it from here ...
16168         * cgraph.c (initialize_inline_failed): ... to here.
16169         (cgraph_create_edge): Call initialize_inline_failed rather than
16170         setting inline_failed directly.
16171
16172 2009-03-29  Ben Elliston  <bje@au.ibm.com>
16173
16174         PR target/32542
16175         * sysv4.opt (msdata): Improve comment.
16176         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
16177         * sysv4.h (SVR4_ASM_SPEC): Likewise.
16178
16179 2009-03-29  Ben Elliston  <bje@au.ibm.com>
16180
16181         PR target/30451
16182         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
16183         load and store attributes.
16184
16185 2009-03-29  Ben Elliston  <bje@au.ibm.com>
16186
16187         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
16188         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
16189         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
16190         * doc/extend.texi (X86 Built-in Functions): Add index entries for
16191         __builtin_infq and __builtin_huge_valq.
16192
16193 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
16194
16195         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
16196         atmega8m1 devices.
16197         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
16198         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
16199
16200 2009-03-28  Xinliang David Li  <davidxl@google.com>
16201
16202         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
16203         (do_dbg_cnt): New function.
16204
16205 2009-03-28  Jan Hubicka  <jh@suse.cz>
16206
16207         Merge from pretty-ipa:
16208
16209         2009-03-27  Jan Hubicka  <jh@suse.cz>
16210
16211         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
16212         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
16213         * passes.c (function_called_by_processed_nodes_p): New.
16214         * ipa-pure-const.c (check_call): Fix handling of operands.
16215         (analyze_function): Dump debug output for skipped bodies.
16216         (local_pure_const): Use function_called_by_processed_nodes_p.
16217         * dwarf2out.c (reference_to_unused): Use output.
16218         * passes.c (do_per_function_toporder): Likewise.
16219
16220         2008-11-12  Jan Hubicka  <jh@suse.cz>
16221
16222         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
16223         * ipa-pure-const.c (funct_state_d): Add can throw field; make
16224         state_set_in_source enum
16225         (check_decl): Ignore memory tags; do not set fake looping flags;
16226         dump diagnostics.
16227         (check_operand, check_tree, check_rhs_var, check_lhs_var,
16228         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
16229         (check_call, analyze_function): Rewrite.
16230         (check_stmt): New.
16231         (add_new_function): Update call of analyze_function.
16232         (generate_summary): Add call of analyze_function.
16233         (propagate): Propagate can_throw; handle state_set_in_source correctly.
16234         (local_pure_const): New function.
16235         (pass_local_pure_const): New pass.
16236         * ipa-inline.c (inline_transform): Set after_inlining.
16237         * tree-eh.c (stmt_can_throw_external): New.
16238         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
16239         work with aliasing built.
16240         * tree-flow.h (stmt_can_throw_external): New.
16241         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
16242         and local pure/const pass in early and late optimization queue.
16243
16244 2009-03-28  Martin Jambor  <mjambor@suse.cz>
16245
16246         * fold-const.c (get_pointer_modulus_and_residue): New parameter
16247         allow_func_align.
16248         (fold_binary): Allow function decl aligment consideration is the
16249         second argument is integer constant one.
16250         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
16251         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
16252         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
16253
16254 2009-03-28  Jan Hubicka  <jh@suse.cz>
16255
16256         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
16257         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
16258         * function.h (rtl_data): Add nothrow flag.
16259         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
16260         set DECL_NOTHROW for AVAILABLE functions.
16261
16262 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
16263
16264         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
16265         following vector keyword has expansion starting with pixel or bool
16266         keyword, expand vector to __vector and pixel or bool to __pixel or
16267         __bool.
16268
16269         PR c++/39554
16270         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
16271         warn_if_disallowed_function_p): Removed.
16272         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
16273         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
16274         warning_if_disallowed_function_p.
16275         * flags.h (warn_if_disallowed_function_p,
16276         warn_disallowed_functions): Removed.
16277         * common.opt (Wdisallowed-function-list=): Removed.
16278         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
16279
16280 2009-03-28  Richard Guenther  <rguenther@suse.de>
16281
16282         PR tree-optimization/38723
16283         * tree-ssa-pre.c (compute_avail): Add all default definitions to
16284         the entry block.
16285
16286 2009-03-28  Jan Hubicka  <jh@suse.cz>
16287
16288         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
16289         test introduced by my previous patch.
16290
16291 2009-03-28  Richard Guenther  <rguenther@suse.de>
16292
16293         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
16294         the PHIs value undefined.
16295
16296 2009-03-28  Jan Hubicka  <jh@suse.cz>
16297
16298         * tree-pass.h (pass_fixup_cfg): New pass.
16299         * ipa-inline.c (inline_transform): Set
16300         always_inline_functions_inlined/after_inlining.
16301         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
16302         (pass_fixup_cfg): New pass.
16303         * passes.c (init_optimization_passes): Add fixup_cfg.
16304
16305 2009-03-28  Richard Guenther  <rguenther@suse.de>
16306
16307         PR tree-optimization/38458
16308         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
16309         argument use the arguments copy-of value.
16310
16311 2009-03-28  Richard Guenther  <rguenther@suse.de>
16312
16313         PR tree-optimization/38180
16314         * tree-ssa-ccp.c (get_default_value): Simplify.
16315         (likely_value): Likewise.
16316         (surely_varying_stmt_p): Properly handle VOP case.
16317         (ccp_initialize): Likewise.
16318         (ccp_fold): Handle propagating through *&.
16319         (fold_const_aggregate_ref): Also handle decls.
16320
16321 2009-03-28  Jan Hubicka  <jh@suse.cz>
16322
16323         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
16324         * cgraph.h (cgraph_node): Likewise.
16325         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
16326         (cgraph_reset_node): Use process flag.
16327         (cgraph_mark_functions_to_output): Likewise.
16328         (cgraph_expand_function): Likewise.
16329         (cgraph_expand_all_functions): Likewise.
16330         (cgraph_output_in_order): Likewise.
16331         * dwarf2out.c (reference_to_unused): Likewise.
16332         * passes.c do_per_function_toporder): Likewise.
16333
16334 2009-03-28  Jan Hubicka  <jh@suse.cz>
16335
16336         Bring from lto-branch:
16337
16338         2008-09-03  Doug Kwan  <dougkwan@google.com>
16339
16340         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
16341         enums instead of reason strings.
16342         * cgraph.c (cgraph_create_edge): Same.
16343         (cgraph_inline_failed_string): New function.
16344         * cgraph.h (cgraph_inline_failed_t): New enum type.
16345         (cgraph_inline_failed_string): New prototype.
16346         (struct cgraph_edge): Change type of INLINED_FAILED from constant
16347         char pointer to cgraph_inline_failed_t.
16348         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
16349         (cgraph_default_inline_p): Ditto.
16350         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
16351         to cgraph_inline_failed_t pointer.
16352         * cif-code.def: New file.
16353         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
16354         reason string.
16355         (cgraph_check_inline_limits): Change type of REASON to pointer to
16356         cgraph_inline_failed_t.  Replace reason strings with enums.
16357         (cgraph_default_inline_p): Ditto.
16358         (cgraph_recursive_inlining_p): Ditto.
16359         (update_caller_keys): Change type of FAILED_REASON to
16360         cgraph_inline_failed_t.
16361         (cgraph_set_inline_failed): Change type of REASON to pointer to
16362         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
16363         convert enums to strings for text output.
16364         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
16365         to be of type cgraph_inline_failed_t.  Replace reason strings with
16366         enums.  Call cgraph_inline_failed_string to covert enums
16367         to strings for text output.
16368         (cgraph_decide_inlining): Replace reason strings with enums.
16369         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
16370         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
16371         for text output.
16372         * tree-inline.c (expand_call_inline): Change type of REASON
16373         to cgraph_inline_failed_t.  Replace reason strings with enums.
16374         Call cgraph_inline_failed_string for text output.
16375         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
16376         (cgraph.o): Ditto.
16377
16378 2009-03-28  Jan Hubicka  <jh@suse.cz>
16379
16380         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
16381         cgraph_clone_node): Remove master clone handling.
16382         (cgraph_is_master_clone, cgraph_master_clone): Remove.
16383         * cgraph.h (master_clone): Remove.
16384         (cgraph_is_master_clone, cgraph_master_clone): Remove.
16385         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
16386         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
16387
16388 2009-03-28  Jan Hubicka  <jh@suse.cz>
16389
16390         * cgraph.c (cgraph_function_body_availability): Functions declared
16391         inline are always safe to assume that it is not going to be replaced.
16392
16393 2009-03-28  Richard Guenther  <rguenther@suse.de>
16394
16395         PR tree-optimization/38513
16396         * tree-ssa-pre.c (eliminate): Remove redundant stores.
16397         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
16398         EXC_PTR_EXPR and FILTER_EXPR.
16399         (get_ref_from_reference_ops): Likewise.
16400
16401 2009-03-28  Richard Guenther  <rguenther@suse.de>
16402
16403         PR tree-optimization/38968
16404         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
16405         Use FLOOR_MOD_EXPR to compute misalignment.
16406
16407 2009-03-28  Richard Guenther  <rguenther@suse.de>
16408
16409         PR tree-optimization/37795
16410         * tree.h (combine_comparisons): Declare.
16411         * fold-const.c (combine_comparisons): Export.
16412         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
16413         comparisons.
16414         (ifcombine_iforif): Use combine_comparisons.
16415
16416 2009-03-28  Jan Hubicka  <jh@suse.cz>
16417
16418         * tree-eh.c (inlinable_call_p): New function.
16419         (make_eh_edges): Use it.
16420         (verify_eh_edges): Use it.
16421         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
16422         * except.c (reachable_next_level): Add inlinable_function argument
16423         (sjlj_find_directly_reachable_regions): Update.
16424         (add_reachable_handler): Do not set saw_any_handlers.
16425         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
16426         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
16427         Add new inlinable call parameter.
16428         (can_throw_internal, can_throw_external): Update.
16429         * except.h (can_throw_internal_1, can_throw_external_1,
16430         foreach_reachable_handler): Update declaration.
16431
16432 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
16433
16434         * config/arm/t-arm-coff, config/h8300/coff.h,
16435         config/i386/i386-aout.h, config/i386/i386-coff.h,
16436         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
16437         config/pdp11/2bsd.h, config/rs6000/aix41.h,
16438         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
16439         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
16440         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
16441         sys-types.h: Remove.
16442         * Makefile.in: Remove protoize and fixproto support and references
16443         in comments.
16444         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
16445         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
16446         Remove.
16447         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
16448         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
16449         unprotoize$(exeext).
16450         (rest.encap): Don't depend on $(STMP_FIXPROTO)
16451         (.PHONY): Don't depend on proto.
16452         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
16453         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
16454         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
16455         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
16456         build/gen-protos.o, build/scan.o, xsys-protos.h,
16457         build/fix-header$(build_exeext), build/fix-header.o,
16458         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
16459         stmp-install-fixproto): Remove.
16460         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
16461         SYSCALLS.c or fixproto files.
16462         (install-common): Don't install protoize.
16463         (install-headers-tar, install-headers-cpio, install-headers-cp):
16464         Don't depend on $(STMP_FIXPROTO).
16465         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
16466         install fixproto files or write out fixproto settings.
16467         (uninstall): Don't uninstall protoize.
16468         * config.gcc (use_fixproto): Remove.
16469         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
16470         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
16471         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
16472         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
16473         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
16474         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
16475         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
16476         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
16477         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
16478         * config/t-vxworks (STMP_FIXPROTO): Remove.
16479         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
16480         STMP_FIXPROTO): Remove.
16481         * config.in, configure: Regenerate.
16482         * crtstuff.c (gid_t, uid_t): Don't undefine.
16483         * doc/install.texi: Change m68k-coff to m68k-elf in example.
16484         (arm-*-coff, arm-*-aout: Remove target entries.
16485         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
16486         Remove mention of AIX 4.1.
16487         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
16488         * doc/invoke.texi (Running Protoize): Remove.
16489         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
16490         (Protoize Caveats): Remove.
16491         * tsystem.h: Update comments on headers assumed to exist.
16492
16493 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
16494
16495         * genautomata.c: Add a new year to the copyright.  Add a new
16496         reference.
16497         (struct insn_reserv_decl): Add comments for member bypass_list.
16498         (find_bypass): Remove.
16499         (insert_bypass): New.
16500         (process_decls): Use insert_bypass.
16501         (output_internal_insn_latency_func): Output all bypasses with the
16502         same input insn in one switch case.
16503
16504         * rtl.def (define_bypass): Describe bypass choice.
16505         * doc/md.texi (define_bypass): Ditto.
16506
16507 2009-03-27  Richard Guenther  <rguenther@suse.de>
16508
16509         * gimplify.c (mark_addressable): Export.
16510         * tree-flow.h (mark_addressable): Declare.
16511         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
16512         * tree-ssa.c (verify_phi_args): Verify that address taken
16513         variables have TREE_ADDRESSABLE set.
16514
16515 2009-03-27  Richard Guenther  <rguenther@suse.de>
16516
16517         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
16518         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
16519         Do not mark decls TREE_ADDRESSABLE.
16520         (build_fold_addr_expr): Adjust.
16521         (fold_addr_expr): Remove.
16522         (fold_unary): Use build_fold_addr_expr.
16523         (fold_comparison): Likewise.
16524         (split_address_to_core_and_offset): Likewise.
16525         * coverage.c (tree_coverage_counter_addr): Mark the array decl
16526         TREE_ADDRESSABLE.
16527         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
16528         (gimplify_modify_expr_to_memcpy): Mark source and destination
16529         addressable.
16530         * omp-low.c (create_omp_child_function): Mark the object decl
16531         TREE_ADDRESSABLE.
16532         (lower_rec_input_clauses): Mark the var we take the address of
16533         TREE_ADDRESSABLE.
16534         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
16535
16536 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16537
16538         PR middle-end/39315
16539         * cfgexpand.c (expand_one_stack_var_at): Change alignment
16540         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
16541
16542 2009-03-27  Richard Guenther  <rguenther@suse.de>
16543
16544         PR tree-optimization/39120
16545         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
16546         constraints.
16547         (handle_lhs_call): Process return constraints.  Add escape
16548         constraints if necessary.
16549         (handle_const_call): Fill out return constraints.  Make nested
16550         case more precise.  Avoid consttmp if possible.
16551         (handle_pure_call): Fill out return constraints.  Avoid
16552         callused if possible.
16553         (find_func_aliases): Simplify call handling.
16554
16555 2009-03-27  Richard Guenther  <rguenther@suse.de>
16556
16557         PR tree-optimization/39120
16558         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
16559         as a representative.
16560         (solve_graph): Do propagate CALLUSED.
16561         (handle_pure_call): Use a scalar constraint from CALLUSED for
16562         the return value.
16563         (find_what_p_points_to): CALLUSED shall not appear in poins-to
16564         solutions.
16565
16566 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16567
16568         PR c/39323
16569         * c-common.c (handle_aligned_attribute): Properly check alignment
16570         overflow.  Use (1U << i) instead of (1 << i).
16571
16572         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
16573
16574         * expr.h (get_mem_align_offset): Updated.
16575
16576         * tree.h (tree_decl_common): Change align to "unsigned int" and
16577         move it before pointer_alias_set.
16578
16579 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16580             Jakub Jelinek  <jakub@redhat.com>
16581
16582         PR target/38034
16583         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
16584         gr_register_operand with gr_reg_or_0_operand.
16585         (cmpxchg_rel_di): Likewise.
16586         (sync_lock_test_and_set<mode>): Likewise.
16587
16588 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16589
16590         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
16591         (true_regnum): Likewise.
16592
16593         * rtlanal.c (subreg_info): Moved to ...
16594         * rtl.h (subreg_info): Here.  New.
16595         (subreg_get_info): New.
16596
16597         * rtlanal.c (subreg_get_info): Make it extern.
16598
16599 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16600
16601         PR target/39472
16602         * config/i386/i386.c (ix86_abi): New.
16603         (override_options): Handle -mabi=.
16604         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
16605         (ix86_call_abi_override): Likewise.
16606         (init_cumulative_args): Likewise.
16607         (function_arg_advance): Likewise.
16608         (function_arg_64): Likewise.
16609         (function_arg): Likewise.
16610         (ix86_pass_by_reference): Likewise.
16611         (ix86_function_value_regno_p): Likewise.
16612         (ix86_build_builtin_va_list_abi): Likewise.
16613         (setup_incoming_varargs_64): Likewise.
16614         (is_va_list_char_pointer): Likewise.
16615         (ix86_init_machine_status): Likewise.
16616         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
16617         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
16618         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
16619         (ix86_function_abi): Make it static and return enum calling_abi.
16620         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
16621         with ix86_abi.
16622         (ix86_fn_abi_va_list): Updated.
16623
16624         * config/i386/i386.h (ix86_abi): New.
16625         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
16626         (CONDITIONAL_REGISTER_USAGE): Likewise.
16627         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
16628         (machine_function): Likewise.
16629
16630         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
16631         with ix86_abi.
16632         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
16633         (STACK_BOUNDARY): Likewise.
16634         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
16635
16636         * config/i386/i386.opt (mabi=): New.
16637
16638         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
16639         return enum calling_abi.
16640         (ix86_function_type_abi): Likewise.
16641         (ix86_function_abi): Removed.
16642
16643         * doc/invoke.texi: Document -mabi= option for x86.
16644
16645 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16646
16647         * builtins.c (real_dconstp): Delete.
16648         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
16649
16650 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
16651             Jakub Jelinek  <jakub@redhat.com>
16652
16653         PR debug/37959
16654         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
16655         (gen_subprogram_die): When a function is explicit, generate the
16656         DW_AT_explicit attribute.
16657         * langhooks.h (struct lang_hooks_for_decls): Add
16658         function_decl_explicit_p langhook.
16659         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
16660         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
16661
16662 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
16663
16664         * builtins.c (fold_builtin_memory_op): Optimize memmove
16665         into memcpy if we can prove source and destination don't overlap.
16666
16667         * tree-inline.c: Include gt-tree-inline.h.
16668         (clone_fn_id_num): New variable.
16669         (clone_function_name): New function.
16670         (tree_function_versioning): Use it.
16671         * Makefile.in (GTFILES): Add tree-inline.c.
16672
16673 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
16674
16675         * BASE-VER: Change to 4.5.0.
16676
16677 2009-03-27  Xinliang David Li  <davidxl@google.com>
16678
16679         PR tree-optimization/39557
16680         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
16681
16682 2009-03-27  Xinliang David Li  <davidxl@google.com>
16683
16684         PR tree-optimization/39548
16685         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
16686         candidate check.
16687
16688 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16689
16690         * c-common.c (pointer_int_sum): Use %wd on return from
16691         tree_low_cst.
16692
16693 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
16694
16695         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
16696         on return from tree_low_cst.
16697
16698 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16699
16700         PR c++/36799
16701         * ginclude/stdarg.h (va_copy): Define also for
16702         __GXX_EXPERIMENTAL_CXX0X__.
16703
16704 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16705
16706         PR c++/35652
16707         * builtins.h (c_strlen): Do not warn here.
16708         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
16709         * c-common.c (pointer_int_sum): Take an explicit location.
16710         Warn about offsets out of bounds.
16711         * c-common.h (pointer_int_sum): Adjust declaration.
16712
16713 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16714
16715         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
16716         markup glitch.
16717
16718 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
16719
16720         PR c++/39554
16721         * opts.c (warn_if_disallowed_function_p): Don't assume
16722         get_callee_fndecl must return non-NULL.
16723
16724 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
16725
16726         PR rtl-optimization/39522
16727         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
16728         when reg_reloaded_valid is set.
16729
16730 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
16731
16732         * config/spu/divv2df3.c: New file.
16733         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
16734         (DPBIT_FUNCS): Filter out _div_df.
16735
16736 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
16737
16738         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
16739         a jump insn, count that jump in the distance to the loop start.
16740
16741 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
16742
16743         PR target/39523
16744         * config/sh/sh.c (calc_live_regs): Fix condition for global
16745         registers except PIC_OFFSET_TABLE_REGNUM.
16746
16747 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
16748
16749         PR/39518
16750         * doc/invoke.texi (-mconsole): New.
16751         (-mcygwin): New.
16752         (-mno-cygwin): New.
16753         (-mdll): New.
16754         (-mnop-fun-dllimport): New.
16755         (-mthread): New.
16756         (-mwin32): New.
16757         (-mwindows): New.
16758         (sub section "i386 and x86-64 Windows Options"): New.
16759
16760 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
16761
16762         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
16763         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
16764
16765 2009-03-25  Richard Guenther  <rguenther@suse.de>
16766
16767         PR middle-end/39497
16768         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
16769         of -Wno-error.
16770
16771 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
16772
16773         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
16774         neither of haifa/selective schedulers are working.
16775
16776 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16777
16778         * doc/invoke.texi (Debugging Options): Fix description of
16779         -fno-merge-debug-strings.
16780
16781 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
16782
16783         * config/cris/libgcc.ver: New version-script.
16784         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
16785
16786         * configure.ac <GAS features, nop mnemonic>: Add pattern
16787         crisv32-*-* for "nop".
16788         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
16789         * configure: Regenerate.
16790
16791 2009-03-24  Ira Rosen  <irar@il.ibm.com>
16792
16793         PR tree-optimization/39529
16794         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
16795         mark_sym_for_renaming for the tag copied to the new vector
16796         pointer.
16797
16798 2009-03-24  Arthur Loiret  <aloiret@debian.org>
16799
16800         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
16801         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
16802         EXTRA_SPEC_FUNCTIONS.
16803         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
16804         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
16805         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
16806         -march and -mtune options.
16807
16808 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
16809
16810         * config/m68k/t-rtems: Add m5329 multilib.
16811
16812 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
16813             Jakub Jelinek  <jakub@redhat.com>
16814
16815         PR debug/39524
16816         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
16817         nodes.
16818
16819 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
16820
16821         PR c/39495
16822         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
16823         instead of c_parser_expression_conv, if original_code isn't one of the
16824         4 allowed comparison codes, fail.
16825
16826 2009-03-23  Richard Guenther  <rguenther@suse.de>
16827
16828         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
16829         * tree.h (struct tree_type): Likewise.
16830         * reload.h (struct insn_chain): Likewise.
16831         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
16832         * function.h (struct function): Likewise.
16833         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
16834
16835 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
16836
16837         PR tree-optimization/39516
16838         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
16839
16840 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
16841
16842         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
16843         should be set true if BITS_PER_WORD of target is bigger than 32
16844
16845 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
16846
16847         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
16848         Translate -B-options to -rpath-link.  Correct existing
16849         rpath-link and conditionalize on !nostdlib.
16850
16851 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16852
16853         * doc/extend.texi (Function Attributes, Variable Attributes):
16854         Fix typos.
16855         * doc/invoke.texi (Debugging Options, Optimize Options)
16856         (i386 and x86-64 Options, MCore Options): Likewise.
16857
16858 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
16859
16860         PR debug/37890
16861         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
16862         it for block local namespace aliases.
16863         (gen_decl_die): Pass context_die to gen_namespace_die.
16864
16865 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
16866
16867         PR c/39495
16868         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
16869         minimum or maximum value.
16870
16871 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
16872
16873         * reginfo.c (globalize_reg): Recompute derived reg sets.
16874
16875 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
16876
16877         PR target/39063
16878         * libgcc2.c (mprotect): Do not use signed arguments for
16879         VirtualProtect, use DWORD arguments.  Also fix the 'may
16880         be used uninitialized' warning for the np variable.
16881
16882 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
16883
16884         PR target/39496
16885         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
16886         functions using regparm calling conventions when not optimizing.
16887         (ix86_function_sseregparm): Similarly for sseregparm calling
16888         conventions.
16889
16890 2009-03-19  Li Feng  <nemokingdom@gmail.com>
16891
16892         PR middle-end/39500
16893         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
16894         dependence if the first conflict is after niter iterations.
16895
16896 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
16897
16898         PR middle-end/38609
16899         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
16900         functions with dynamic stack-pointer adjustments.
16901
16902 2009-03-19  Ben Elliston  <bje@au.ibm.com>
16903
16904         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
16905         option; change to -msdata=data.
16906
16907 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16908
16909         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
16910         and -fopenmp.
16911
16912 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
16913
16914         PR target/35180
16915         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
16916
16917 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
16918
16919         * doc/invoke.texi (Code Gen Options): Expand discussion of
16920         -fno-common.
16921
16922 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
16923
16924         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
16925         * matrix-reorg.c (struct matrix_info): Likewise.
16926         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
16927         * rtl.h (struct mem_attrs): Likewise.
16928         * df.h (struct df): Likewise.
16929         * tree-data-ref.h (struct data_dependence_relation): Likewise.
16930         * ira-int.h (struct ira_allocno): Likewise.
16931         * df-scan.c (struct df_collection_rec): Likewise.
16932         * ira.c (struct equivalence): Likewise.
16933         * function.c (struct temp_slot): Likewise.
16934         * cfgloop.h (struct loop): Likewise.
16935
16936         PR debug/39485
16937         * function.c (use_register_for_decl): When not optimizing, disregard
16938         register keyword for variables with types containing methods.
16939
16940 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
16941
16942         PR middle-end/39447
16943         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
16944         (is_simple_operand): Call contains_component_ref_p before calling data
16945         reference analysis that would fail on COMPONENT_REFs.
16946
16947         * tree-vrp.c (search_for_addr_array): Fix formatting.
16948
16949 2009-03-18  Richard Guenther  <rguenther@suse.de>
16950
16951         * tree-vect-transform.c (vect_loop_versioning): Fold the
16952         generated comparisons.
16953         * tree-vectorizer.c (set_prologue_iterations): Likewise.
16954         (slpeel_tree_peel_loop_to_edge): Likewise.
16955
16956 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16957
16958         PR middle-end/37805
16959         * opts.c (print_specific_help): In addition to `undocumented',
16960         accept `separate' and `joined' flags if passed alone.  Describe
16961         output by the first matched one of those.
16962         (common_handle_option): Skip over empty strings.
16963         * gcc.c (display_help): Fix help string for `--help='.
16964         * doc/invoke.texi (Option Summary, Overall Options): With
16965         `--help=', classes and qualifiers can both be repeated, but
16966         only the latter can be negated.  One should not pass only
16967         negated qualifiers.  Fix markup and examples.
16968
16969         Revert
16970         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
16971         PR middle-end/37805
16972         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
16973         and -fhelp=separate.
16974
16975 2009-03-17  Jing Yu  <jingyu@google.com>
16976
16977         PR middle-end/39378
16978         * function.h (struct rtl_data): Move is_thunk from here...
16979         (struct function): ...to here.
16980         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
16981         * varasm.c (assemble_start_function): Change is_thunk from crtl to
16982         cfun.
16983         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
16984         cfun.
16985         (alpha_does_function_need_gp, alpha_start_function): Likewise.
16986         (alpha_output_function_end_prologue): Likewise.
16987         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
16988         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
16989         (rs6000_output_function_epilogue): Likewise.
16990         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
16991
16992 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
16993
16994         PR target/39482
16995         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
16996         from different units in a single alternative.
16997         (*truncdfsf_i387): Ditto.
16998         (*truncxfsf2_mixed): Ditto.
16999         (*truncxfdf2_mixed): Ditto.
17000
17001 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
17002
17003         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
17004         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
17005
17006         PR debug/39474
17007         * tree-ssa-live.c (remove_unused_locals): Don't remove local
17008         unused non-artificial variables when not optimizing.
17009
17010         PR debug/39471
17011         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
17012         DW_TAG_imported_module even if decl is IMPORTED_DECL with
17013         NAMESPACE_DECL in its DECL_INITIAL.
17014
17015         PR middle-end/39443
17016         * optabs.c (set_user_assembler_libfunc): New function.
17017         * expr.h (set_user_assembler_libfunc): New prototype.
17018         * c-common.c: Include libfuncs.h.
17019         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
17020         for memcmp, memset, memcpy, memmove and abort.
17021         * Makefile.in (c-common.o): Depend on libfuncs.h.
17022
17023         PR debug/39412
17024         * dwarf2out.c (gen_inlined_enumeration_type_die,
17025         gen_inlined_structure_type_die, gen_inlined_union_type_die,
17026         gen_tagged_type_instantiation_die): Removed.
17027         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
17028         do nothing.
17029
17030 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
17031
17032         PR testsuite/38526
17033         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
17034         its use.
17035         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
17036         (check-parallel-%): Ditto.
17037         (check-consistency): Ditto.
17038
17039 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
17040
17041         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
17042         local variable rhs by NULL_TREE.
17043
17044 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
17045
17046         PR target/39477
17047         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
17048
17049 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
17050
17051         PR target/39476
17052         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
17053
17054 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
17055
17056         PR target/39473
17057         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
17058         for ms->sysv ABI calls only in 64bit mode.
17059
17060         * config/i386/i386.md (untyped_call): Support 32bit.
17061
17062 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
17063
17064         * doc/extend.texi: Replace x86_65 with x86_64.
17065
17066 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
17067
17068         PR tree-optimization/39455
17069         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
17070         mismatches for POINTER_TYPE_P (type).
17071         (number_of_iterations_le): Likewise.
17072
17073 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
17074
17075         * config/picochip/picochip.c: Removed profiling support.
17076         * config/picochip/picochip.md: Removed profiling instruction.
17077         * config/picochip/picochip.h: Removed profiling builtin.
17078
17079 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
17080
17081         * doc/install.texi (--with-host-libstdcxx): Document.
17082
17083 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
17084
17085         PR target/34299
17086         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
17087         generate a warning if the function name does not begin with
17088         "__vector" and the function has either the 'signal' or 'interrupt'
17089         attribute, from here to ...
17090         (avr_declare_function_name): ...here. New function.
17091         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
17092         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
17093
17094 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
17095
17096         PR bootstrap/39454
17097         * cse.c (fold_rtx): Don't modify original const_arg1 when
17098         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
17099         separate variable instead.
17100         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
17101         from out of range shift counts.
17102         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
17103
17104 2009-03-13  Catherine Moore  <clm@codesourcery.com>
17105
17106         * config/i386/x-mingw32 (host-mingw32.o): Replace
17107         diagnostic.h with $(DIAGNOSTIC_H).
17108
17109 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
17110
17111         PR target/39431
17112         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
17113         predicate.
17114         * config/i386/sync.md (sync_compare_and_swap<mode>,
17115         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
17116         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
17117         into a register.
17118         (sync_double_compare_and_swapdi_pic,
17119         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
17120         cmpxchg8b_pic_memory_operand instead of just memory_operand.
17121
17122 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
17123
17124         PR target/39445
17125         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
17126
17127 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
17128
17129         PR target/39327
17130         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
17131         (avx_addsubv4df3): Likewise.
17132         (*avx_addsubv4sf3): Likewise.
17133         (sse3_addsubv4sf3): Likewise.
17134
17135 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
17136
17137         PR target/38824
17138         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
17139
17140 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
17141
17142         PR debug/39432
17143         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
17144         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
17145         registers for allocnos created from user-defined variables.
17146
17147 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17148
17149         PR target/39181
17150         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
17151         of non-integer mode as well.
17152
17153 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
17154
17155         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
17156         for functions for which the parameter types are unknown.
17157
17158 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
17159
17160         PR target/39137
17161         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
17162         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
17163         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
17164         * config/i386/i386.c (ix86_local_alignment): For
17165         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
17166         long long variables on the stack to avoid dynamic realignment.
17167         Allow the first argument to be a decl rather than type.
17168         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
17169
17170 2009-03-11  Nick Clifton  <nickc@redhat.com>
17171
17172         PR target/5362
17173         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
17174         options.
17175         Add description to mno-lsim option.
17176         * config/mcore/mcore.h: Remove comment about deprecated m4align
17177         option.
17178         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
17179         * doc/invoke.texi: Add description of mno-lsim and
17180         mstack-increment options.
17181
17182         * config/fr30/fr30.opt: Document the -mno-lsim option.
17183         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
17184         and -mno-lsim options.
17185
17186 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17187
17188         * fold-const.c (fold_comparison): Only call fold_inf_compare
17189         if the mode supports infinities.
17190
17191 2009-03-11  Jason Merrill  <jason@redhat.com>
17192
17193         PR debug/39086
17194         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
17195         end already did.  Notice GIMPLE_CALL modifications of the result.
17196         Don't copy debug information from an ignored decl or a decl from
17197         another function.
17198
17199 2009-03-10  Richard Guenther  <rguenther@suse.de>
17200             Nathan Froyd  <froydnj@codesourcery.com>
17201
17202         PR middle-end/37850
17203         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
17204         (__divMODE3): Likewise.
17205
17206 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
17207
17208         PR tree-optimization/39394
17209         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
17210         DECL_SIZE_UNIT of variable length FIELD_DECLs.
17211
17212 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17213
17214         * recog.c (verfiy_changes): Disallow renaming of hard regs in
17215         inline asms for register asm ("") declarations.
17216
17217 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
17218
17219         * fold-const.c (fold_unary): Fix comment.
17220
17221 2009-03-07  Jan Hubicka  <jh@suse.cz>
17222
17223         PR target/39361
17224         * tree-inline.c (setup_one_parameter): Do replacement of const
17225         argument by constant in SSA form.
17226
17227 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17228
17229         PR middle-end/38028
17230         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
17231         determine alignment passed to assign_stack_local.
17232         (assign_parms_unsplit_complex): Likewise.
17233         * except.c (sjlj_build_landing_pads): Likewise.
17234
17235 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
17236
17237         PR middle-end/39360
17238         * tree-flow.h (add_referenced_var): Return bool instead of void.
17239         * tree-dfa.c (add_referenced_var): Return result of
17240         referenced_var_check_and_insert call.
17241         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
17242         of referenced_var_check_and_insert.
17243
17244         PR debug/39372
17245         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
17246         (gen_variable_die): Emit DW_AT_location on abstract static variable's
17247         DIE, don't emit it if abstract origin already has it.
17248         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
17249         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
17250
17251 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
17252
17253         * genpreds.c (needs_variable): Fix parentheses at variable name
17254         detection.
17255         (write_tm_constrs_h): Indent generated code.
17256
17257 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17258
17259         * doc/extend.texi (Function Attributes): Add documentation
17260         for isr attributes.
17261
17262 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
17263
17264         PR debug/39387
17265         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
17266         take locus from its DECL_SOURCE_LOCATION instead of input_location.
17267
17268 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
17269
17270         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
17271         the loop as bad.
17272
17273 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
17274
17275         PR debug/39379
17276         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
17277         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
17278
17279 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
17280
17281         * config/i386/i386.md (R8_REG, R9_REG): New constants.
17282         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
17283         constants instead of magic numbers.
17284         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
17285         (QI_REG_P): Ditto.
17286         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
17287         (x86_64_ms_abi_int_parameter_registers): Ditto.
17288         (x86_64_int_return_registers): Ditto.
17289         (ix86_maybe_switch_abi): Ditto.
17290         (ix86_expand_call): Ditto for clobbered_registers array.
17291         (ix86_hard_regno_mode_ok): Ditto.
17292         (x86_extended_QIreg_mentioned_p): Ditto.
17293
17294 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
17295
17296         PR tree-optimization/39349
17297         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
17298
17299         * combine.c (gen_lowpart_for_combine): Use omode when generating
17300         clobber.
17301
17302 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
17303
17304         PR rtl-optimization/39235
17305         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
17306
17307 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
17308
17309         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
17310
17311 2009-03-04  Richard Guenther  <rguenther@suse.de>
17312
17313         PR tree-optimization/39362
17314         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
17315         that occur in abnormal PHIs should be varying.
17316
17317 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
17318
17319         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
17320         Extend comments.
17321         (simple_iv):  Take loop as an argument instead of statement.
17322         * tree-scalar-evolution.h (simple_iv): Declaration changed.
17323         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
17324         to simple_iv.
17325         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
17326         Ditto.
17327         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
17328         * matrix-reorg.c (analyze_transpose): Ditto.
17329         * tree-data-ref.c (dr_analyze_innermost): Ditto.
17330         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
17331         * tree-predcom.c (ref_at_iteration): Ditto.
17332         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
17333
17334 2009-03-04  Richard Guenther  <rguenther@suse.de>
17335
17336         PR tree-optimization/39358
17337         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
17338         escaped_id and callused_id.
17339         (solve_graph): Likewise.
17340
17341 2009-03-04  Richard Guenther  <rguenther@suse.de>
17342
17343         PR tree-optimization/39339
17344         * tree-sra.c (try_instantiate_multiple_fields): Make it
17345         no longer ICE on the above.
17346
17347 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
17348
17349         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
17350         that fits within Pmode.
17351
17352 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
17353
17354         PR middle-end/10109
17355         * tm.texi (LIBCALL_VALUE): Update description.
17356
17357 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
17358
17359         PR middle-end/34443
17360         * doc/extend.texi (section): Update description.
17361
17362 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
17363
17364         PR middle-end/39345
17365         * tree-inline.c (remapped_type): New.
17366         (can_be_nonlocal): Call remapped_type instead of remap_type.
17367
17368 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
17369
17370         PR fortran/39354
17371         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
17372         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
17373
17374 2009-03-03  Richard Guenther  <rguenther@suse.de>
17375
17376         PR middle-end/39272
17377         * tree.c (tree_nonartificial_location): New function.
17378         * tree.h (tree_nonartificial_location): Declare.
17379         * builtins.c (expand_builtin_memory_chk): Provide location
17380         of the call location for artificial function pieces.
17381         (maybe_emit_chk_warning): Likewise.
17382         (maybe_emit_sprintf_chk_warning): Likewise.
17383         (maybe_emit_free_warning): Likewise.
17384         * expr.c (expand_expr_real_1): Likewise.
17385
17386 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
17387
17388         PR tree-optimization/39343
17389         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
17390         COMPONENT_REF t has ARRAY_TYPE.
17391
17392 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
17393
17394         PR middle-end/39335
17395         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
17396         when the type precision of the induction variable should be
17397         larger than the type precision of nit.
17398         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
17399         * graphite.c (graphite_loop_normal_form): Same.
17400         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
17401
17402 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
17403
17404         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
17405         (*call_1_rex64_ms_sysv): Use named constants instead of magic
17406         numbers to describe clobbered registers.
17407         (*call_value_0_rex64_ms_sysv): Ditto.
17408         * config/i386/mmx.md (mmx_emms): Ditto.
17409         (mmx_femms): Ditto.
17410
17411 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
17412
17413         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
17414         of ABI_64.
17415
17416 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17417
17418         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
17419         (spu_section_type_flags): New function.
17420
17421 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
17422
17423         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
17424         reg_class_contents of FLOAT_REGS into a temporary.
17425
17426 2009-03-02  Richard Guenther  <rguenther@suse.de>
17427             Ira Rosen  <irar@il.ibm.com>
17428
17429         PR tree-optimization/39318
17430         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
17431         information to the vectorized statement.
17432
17433 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
17434
17435         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
17436         variable.  Use defined names instead of magic constants for REX SSE
17437         registers.
17438
17439 2009-03-01  Richard Guenther  <rguenther@suse.de>
17440
17441         PR tree-optimization/39331
17442         * omp-low.c (lower_send_shared_vars): Do not receive new
17443         values for the reference of DECL_BY_REFERENCE parms or results.
17444
17445 2009-03-01  Jan Hubicka  <jh@suse.cz>
17446
17447         PR debug/39267
17448         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
17449         BLOCK_NONLOCALIZED_VAR): New macros.
17450         (tree_block): Add nonlocalized_vars.
17451         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
17452         gen_decl_die): Add origin argument.  Allow generation of die with
17453         origin at hand only.
17454         (gen_member_die, gen_type_die_with_usage, force_decl_die,
17455         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
17456         of gen_*.
17457         (gen_block_die): Fix checking for unused blocks.
17458         (process_scope_var): Break out from .... ; work with origins only.
17459         (decls_for_scope) ... here; process nonlocalized list.
17460         (dwarf2out_ignore_block): Look for nonlocalized vars.
17461         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
17462         vars.
17463         (dump_scope_block): Dump them.
17464         * tree-inline.c (remap_decls): Handle nonlocalized vars.
17465         (remap_block): Likewise.
17466         (can_be_nonlocal): New predicate.
17467         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
17468
17469 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17470
17471         * configure: Regenerate.
17472
17473 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17474
17475         * optc-gen.awk: No need to duplicate option flags twice.
17476         Reuse help texts for duplicate options which do not have any.
17477
17478         * gcc.c (display_help): Document --version.
17479
17480         * gcc.c (main): If print_help_list and verbose_flag, ensure
17481         driver output comes before subprocess output.
17482
17483         * optc-gen.awk: Assign all remaining fields to help string,
17484         space-separated, for multi-line help in *.opt.
17485
17486         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
17487         -Wno-pedantic-ms-format is for MinGW targets only.
17488
17489         * doc/options.texi (Option file format): Fix bad indentation,
17490         restoring dropped sentence.
17491
17492 2009-02-28  Jan Hubicka  <jh@suse.cz>
17493
17494         * tree-inline.c (tree_function_versioning): Output debug info.
17495
17496 2009-02-28  Jan Hubicka  <jh@suse.cz>
17497
17498         PR debug/39267
17499         * tree-inline.c (setup_one_parameter): Do not copy propagate
17500         arguments when not optimizing.
17501
17502 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
17503
17504         PR target/39327
17505         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
17506         (avx_addsubv4df3): Likewise.
17507         (*avx_addsubv4sf3): Likewise.
17508         (sse3_addsubv4sf3): Likewise.
17509         (*avx_addsubv2df3): Likewise.
17510         (sse3_addsubv2df3): Likewise.
17511         (avx_unpckhps256): Correct item selectors.
17512         (avx_unpcklps256): Likewise.
17513         (avx_unpckhpd256): Likewise.
17514         (avx_unpcklpd256): Likewise.
17515
17516 2009-02-28  Jan Hubicka  <jh@suse.cz>
17517
17518         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
17519         static vars.
17520         (copy_arguments_for_versioning): If var is declared don't declare it.
17521         (tree_function_versioning): First setup substitutions and then copy
17522         args.
17523
17524 2009-02-27  Jan Hubicka  <jh@suse.cz>
17525
17526         PR debug/39267
17527         * cgraph.h (varpool_output_debug_info): Remove.
17528         * cgraphunit.c (varpool_output_debug_info): Remove.
17529         * dwarf2out.c (deferred_locations_struct): New struct
17530         (deferred_locations): New type.
17531         (deferred_locations_list): New static var.
17532         (deffer_location): New function.
17533         (gen_variable_die): Use it.
17534         (decls_for_scope): Output info on local static vars.
17535         (dwarf2out_finish): Process deferred locations.
17536         * varpool.c (varpool_output_debug_info): Remove.
17537
17538 2009-02-27  Jan Hubicka  <jh@suse.cz>
17539
17540         PR debug/39267
17541         * tree.h (TREE_PROTECTED): Fix comment.
17542         (BLOCK_HANDLER_BLOCK): Remove.
17543         (struct tree_block): Remove handler_block add body_block.
17544         (inlined_function_outer_scope_p): New.
17545         (is_body_block): Remove.
17546         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
17547         * dwarf2out.c (is_inlined_entry_point): Remove.
17548         (add_high_low_attributes): Use inlined_function_outer_scope_p.
17549         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
17550         code.
17551         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
17552         * gimplify.c (gimplify_expr): Gimplify body blocks.
17553         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
17554         block with multiple subblocks.
17555         (dump_scope_block): Prettier output; dump more flags and info.
17556         (dump_scope_blocks): New.
17557         (remove_unused_locals): Use dump_scope_blocks.
17558         * tree-flow.h (dump_scope_blocks): Declare.
17559         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
17560         * stmt.c (is_body_block): Remove.
17561         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
17562         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
17563
17564 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
17565
17566         PR middle-end/39308
17567         * graphite.c (graphite_loop_normal_form): Do not call
17568         number_of_iterations_exit from a gcc_assert.
17569
17570 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
17571
17572         * config/s390/s390.c (s390_swap_cmp): Look for conditional
17573         jumps if COND is NULL.
17574         (find_cond_jump): New function.
17575         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
17576         * config/s390/s390.md: Remove z10_cobra attribute value.
17577
17578 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
17579
17580         * config/alpha/alpha.h (alpha_expand_mov): Return false if
17581         force_const_mem returns NULL_RTX.
17582
17583 2009-02-26  Jan Hubicka  <jh@suse.cz>
17584
17585         PR debug/39267
17586         * cgraph.h (varpool_output_debug_info): Remove.
17587         * cgraphunit.c (varpool_output_debug_info): Remove.
17588         * dwarf2out.c (deferred_locations_struct): New struct
17589         (deferred_locations): New type.
17590         (deferred_locations_list): New static var.
17591         (deffer_location): New function.
17592         (gen_variable_die): Use it.
17593         (decls_for_scope): Output info on local static vars.
17594         (dwarf2out_finish): Process deferred locations.
17595         * varpool.c (varpool_output_debug_info): Remove.
17596
17597 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
17598
17599         PR rtl-optimization/39241
17600         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
17601         to subreg_offset_representable_p.
17602
17603 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
17604
17605         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
17606         execute function prototype.  Get f and nregs from max_reg_num
17607         and get_insns.  Remove the first backward pass as it's dead,
17608         guard the forward pass by flag_expensive_optimizations.
17609         (rest_of_handle_regmove): Delete.
17610         (pass_regmove): Replace it with regmove_optimize.
17611
17612 2009-02-25  Martin Jambor  <mjambor@suse.cz>
17613
17614         PR tree-optimization/39259
17615         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
17616         calls_alloca function flags.
17617         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
17618         calls are detected.
17619
17620 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
17621
17622         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
17623         flags_set_1_rtx, flags_set_1_set): Delete.
17624         (regmove_optimize): Do not call mark_flags_life_zones.
17625
17626 2009-02-24  Julian Brown  <julian@codesourcery.com>
17627
17628         PR target/35965
17629         * config/arm/arm.c (require_pic_register): Only set
17630         cfun->machine->pic_reg once per function.
17631
17632 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
17633
17634         * doc/invoke.texi (Link Options): Document an easier way to pass
17635         options that take arguments to the GNU linker using -Xlinker and -Wl.
17636
17637 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
17638
17639         PR target/33785
17640         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
17641
17642 2009-02-24  Richard Guenther  <rguenther@suse.de>
17643
17644         PR debug/39285
17645         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
17646
17647 2009-02-24  Richard Guenther  <rguenther@suse.de>
17648             Zdenek Dvorak  <ook@ucw.cz>
17649
17650         PR tree-optimization/39233
17651         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
17652         from converting them to a generic type.
17653
17654 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
17655
17656         PR tree-optimization/39260
17657         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
17658         contains a condition with a real type.
17659         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
17660
17661 2009-02-23  Jason Merrill  <jason@redhat.com>
17662
17663         PR c++/38880
17664         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
17665         narrowing_initializer_constant_valid_p.
17666         (narrowing_initializer_constant_valid_p): Don't return
17667         null_pointer_node for adding a pointer to itself.
17668
17669 2009-02-23  Jan Hubicka  <jh@suse.cz>
17670
17671         PR c/12245
17672         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
17673         resizing.
17674
17675 2009-02-23  Jan Hubicka  <jh@suse.cz>
17676
17677         PR tree-optimization/37709
17678         * tree.c (block_ultimate_origin): Move here from dwarf2out.
17679         * tree.h (block_ultimate_origin): Declare.
17680         * dwarf2out.c (block_ultimate_origin): Move to tree.c
17681         * tree-ssa-live.c (remove_unused_scope_block_p):
17682         Eliminate blocks containig no instructions nor live variables nor
17683         nested blocks.
17684         (dump_scope_block): New function.
17685         (remove_unused_locals): Enable removal of dead blocks by default;
17686         enable dumping at TDF_DETAILS.
17687
17688 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
17689
17690         * config/i386/i386.c (classify_argument): Don't allow COImode
17691         and OImode.
17692         (function_arg_advance_32): Don't allow OImode.
17693         (function_arg_32): Likewise.
17694         (function_value_32): Likewise.
17695         (return_in_memory_32): Likewise.
17696         (function_arg_64): Remove OImode comment.
17697
17698 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
17699
17700         PR target/39261
17701         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
17702         ix86_expand_vector_set for V4DImode in 64bit mode only.
17703         (ix86_expand_vector_init_one_var): Likewise.
17704
17705 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
17706
17707         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
17708
17709 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
17710
17711         PR bootstrap/39257
17712         * loop-iv.c: Revert last change.
17713         * emit-rtl.c: Likewise.
17714
17715 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
17716
17717         PR target/39256
17718         * config/i386/i386.c (type_natural_mode): Remove an extra
17719         space in the warning message.
17720         (function_value_32): Handle 32-byte vector modes.
17721         (return_in_memory_32): Likewise.
17722
17723 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
17724
17725         * loop-iv.c (truncate_value): New function.
17726         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
17727         of lowpart_subreg.
17728         (lowpart_subreg): Move to...
17729         * emit-rtl.c: ...here.
17730
17731 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
17732
17733         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
17734         accidental and undocumented change at revision 140860.
17735
17736 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
17737
17738         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
17739         take gimple_seq * arguments.
17740         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
17741         types_compatible_p langhook.
17742
17743 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
17744             Joseph Myers  <joseph@codesourcery.com>
17745
17746         * config/arm/arm.c (arm_builtin_va_list): New function.
17747         (arm_expand_builtin_va_start): Likewise.
17748         (arm_gimplify_va_arg_expr): Likewise.
17749         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
17750         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
17751         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
17752         (va_list_type): New variable.
17753         (arm_mangle_type): Mangle va_list_type appropriately.
17754
17755 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
17756
17757         PR middle-end/39157
17758         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
17759         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
17760         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
17761         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
17762         parameter to 1000 for -O1 by default.
17763         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
17764         parameter.
17765         * loop-invariant.c: Include params.h.
17766         (move_loop_invariants): Don't call move_single_loop_invariants on
17767         very large loops.
17768
17769 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
17770
17771         * calls.c (emit_library_call_value_1): Use slot_offset instead of
17772         offset when calculating bounds for indexing stack_usage_map.  Fixes
17773         a buffer overflow with certain target setups.
17774
17775 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
17776
17777         PR target/39240
17778         * calls.c (expand_call): Clear try_tail_call if caller and callee
17779         disagree in promotion of function return value.
17780
17781 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
17782
17783         PR target/39175
17784         * c-common.c (c_determine_visibility): If visibility changed and
17785         DECL_RTL has been already set, call make_decl_rtl to update symbol
17786         flags.
17787
17788 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
17789
17790         PR c++/39188
17791         * varasm.c (assemble_variable): Don't check DECL_NAME when
17792         globalizing a variable.
17793
17794 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
17795
17796         PR c/38483
17797         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
17798         expression before any __builtin_trap call.
17799         * c-typeck.c (build_function_call): Convert and check function
17800         arguments before generating a call to a trap.  Evaluate the
17801         function arguments before the trap.
17802
17803 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
17804
17805         PR target/39228
17806         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
17807         (UNSPEC_FXAM_MEM): New unspec.
17808         (fxam<mode>2_i387_with_temp): New insn and split pattern.
17809         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
17810         memory using fxam<mode>2_i387_with_temp to remove excess precision.
17811
17812 2009-02-19  Richard Guenther  <rguenther@suse.de>
17813
17814         PR tree-optimization/39207
17815         PR tree-optimization/39074
17816         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
17817         storedanything_tree): New.
17818         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
17819         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
17820         (build_succ_graph): Add edges from STOREDANYTHING to all
17821         non-direct nodes.
17822         (init_base_vars): Initialize STOREDANYTHING.
17823         (compute_points_to_sets): Free substitution info after
17824         building the succ graph.
17825         (ipa_pta_execute): Likewise.
17826
17827         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
17828         field.
17829         (do_ds_constraint): Do not add to special var or non-pointer
17830         field solutions.
17831         (type_could_have_pointers): Split out from ...
17832         (could_have_pointers): ... here.  For arrays use the element type.
17833         (create_variable_info_for): Initialize may_have_pointers.
17834         (new_var_info): Likewise.
17835         (handle_lhs_call): Make the HEAP variable unknown-sized.
17836         (intra_create_variable_infos): Use a type with pointers for
17837         PARM_NOALIAS, make it unknown-sized.
17838
17839 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
17840
17841         PR target/39224
17842         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
17843
17844 2009-02-18  Jason Merrill  <jason@redhat.com>
17845
17846         PR target/39179
17847         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
17848         value if DECL_EXTERNAL.
17849         * tree-sra.c (sra_walk_gimple_assign): Likewise.
17850         * target.h (gcc_target::binds_local_p): Clarify "module".
17851         * tree.h (TREE_PUBLIC): Clarify "module".
17852
17853 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
17854
17855         PR target/38891
17856         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
17857         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
17858
17859 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
17860
17861         PR target/39082
17862         * c.opt (Wabi): Support C and ObjC.
17863         (Wpsabi): New.
17864
17865         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
17866
17867         * config/i386/i386.c (classify_argument): Warn once about the ABI
17868         change when passing union with long double.
17869
17870         * doc/invoke.texi: Update -Wabi for warning psABI changes.
17871
17872 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
17873
17874         PR c/35447
17875         * c-parser.c (c_parser_compound_statement): Always enter and leave
17876         a scope.
17877
17878 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17879
17880         PR target/34587
17881         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
17882
17883 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
17884
17885         PR tree-optimization/36922
17886         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
17887         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
17888         Likewise.
17889
17890 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
17891
17892         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
17893         to 0 for EABI64.
17894
17895 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
17896
17897         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
17898
17899 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
17900
17901         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
17902         tree sharing.
17903
17904 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
17905             Richard Sandiford  <rdsandiford@googlemail.com>
17906
17907         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
17908         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
17909         (loongson_biadd): ...this.
17910
17911 2009-02-17  Richard Guenther  <rguenther@suse.de>
17912
17913         PR tree-optimization/39202
17914         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
17915         a var make sure to follow existing collapses.
17916
17917 2009-02-17  Richard Guenther  <rguenther@suse.de>
17918
17919         PR middle-end/39214
17920         * langhooks.c (lhd_print_error_function): Check for NULL block.
17921
17922 2009-02-17  Richard Guenther  <rguenther@suse.de>
17923
17924         PR tree-optimization/39204
17925         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
17926         of the PHI arg.
17927
17928 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
17929
17930         * config/soft-fp/double.h: Update from glibc CVS.
17931
17932 2009-02-17  Richard Guenther  <rguenther@suse.de>
17933
17934         PR tree-optimization/39207
17935         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
17936         strict-aliasing warnings for pointers pointing to NULL.
17937
17938 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
17939
17940         PR c/35446
17941         * c-parser.c (c_parser_braced_init): Call pop_init_level when
17942         skipping until next close brace.
17943
17944 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
17945
17946         PR target/37049
17947         * config/i386/i386.c (ix86_expand_push): Set memory alignment
17948         to function argument boundary.
17949
17950 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
17951
17952         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
17953         in the lea_add. Reload eventually constraints it properly.
17954         * config/picochip/constraints.md: Remove the target constraint
17955         "b", since it is not needed anymore.
17956
17957 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
17958
17959         * gthr-dce.h: Uglify function parameter and local variable names.
17960         * gthr-gnat.h: Likewise.
17961         * gthr-mipssde.h: Likewise.
17962         * gthr-nks.h: Likewise.
17963         * gthr-posix95.h: Likewise.
17964         * gthr-posix.h: Likewise.
17965         * gthr-rtems.h: Likewise.
17966         * gthr-single.h: Likewise.
17967         * gthr-solaris.h: Likewise.
17968         * gthr-tpf.h: Likewise.
17969         * gthr-vxworks.h: Likewise.
17970         * gthr-win32.h: Likewise.
17971
17972 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
17973
17974         PR target/39196
17975         * config/i386/i386.md: Restrict the new peephole2 to move
17976         between MMX/SSE registers.
17977
17978 2009-02-15  Richard Guenther  <rguenther@suse.de>
17979
17980         Revert
17981         2009-02-13  Richard Guenther  <rguenther@suse.de>
17982
17983         * configure.ac: Enable LFS.
17984         * configure: Re-generate.
17985         * config.in: Likewise.
17986
17987 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17988
17989         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
17990         spu_srqwbyte, spu_srqwbytebc): Define.
17991         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
17992         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
17993         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
17994         "shrqby_<mode>"): New insn-and-split patterns.
17995         * config/spu/spu.c (expand_builtin_args): Determine and return
17996         number of operands using spu_builtin_description data.
17997         (spu_expand_builtin_1): Use it.
17998
17999 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
18000
18001         PR target/38056
18002         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
18003         TARGET_CONST_GP.
18004
18005 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
18006
18007         PR target/39149
18008         * config/i386/i386.c (override_options): Correct warning
18009         messages for -malign-loops, -malign-jumps and -malign-functions.
18010
18011 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
18012
18013         PR target/39152
18014         * config/i386/i386.md: Restrict the new peephole2 to move
18015         between the general purpose registers.
18016
18017 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
18018
18019         PR target/39162
18020         * config/i386/i386.c (type_natural_mode): Add a new argument.
18021         Return the original mode and warn ABI change if vector size is 32byte.
18022         (function_arg_advance): Updated.
18023         (function_arg): Likewise.
18024         (ix86_function_value): Likewise.
18025         (ix86_return_in_memory): Likewise.
18026         (ix86_sol10_return_in_memory): Likewise.
18027         (ix86_gimplify_va_arg): Likewise.
18028         (function_arg_32): Don't warn ABX ABI change here.
18029         (function_arg_64): Likewise.
18030
18031 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
18032
18033         * loop-iv.c (implies_p): In the final case, test that operands 0
18034         of the two comparisons match.
18035
18036         * config/bfin/bfin.c (find_prev_insn_start): New function.
18037         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
18038         (find_next_insn_start): Move.
18039
18040 2009-02-13  Richard Guenther  <rguenther@suse.de>
18041
18042         * configure.ac: Enable LFS.
18043         * configure: Re-generate.
18044         * config.in: Likewise.
18045
18046 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
18047
18048         PR c/35444
18049         * c-parser.c (c_parser_parms_list_declarator): Discard pending
18050         sizes on syntax error after some arguments have been parsed.
18051
18052 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
18053
18054         * doc/invoke.texi (-fira): Remove.
18055
18056 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
18057
18058         * caller-save.c: Replace regclass.c with reginfo.c in comments.
18059         * recog.c: Likewise.
18060         * rtl.h: Likewise.
18061
18062 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
18063
18064         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
18065         (umul_ppmm): Likewise.
18066         (count_leading_zeros): Likewise.
18067         (count_trailing_zeros): Likewise.
18068         (UMUL_TIME): Likewise.
18069
18070 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
18071
18072         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
18073         soft-fp/t-softfp to tmake_file.
18074
18075         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
18076         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
18077         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
18078         IA64_BUILTIN_INFQ]: New.
18079         (ia64_init_builtins): Initialize __builtin_infq,
18080         __builtin_fabsq and __builtin_copysignq if not HPUX.
18081         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
18082         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
18083
18084         * config/ia64/lib1funcs.asm (__divtf3): Define only if
18085         SHARED is defined.
18086         (__fixtfti): Likewise.
18087         (__fixunstfti): Likewise.
18088         (__floattitf): Likewise.
18089
18090         * config/ia64/libgcc-glibc.ver: New.
18091         * config/ia64/t-fprules-softfp: Likewise.
18092         * config/ia64/sfp-machine.h: Likewise.
18093
18094         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
18095         (LIBGCC2_TF_CEXT): Likewise.
18096         (TF_SIZE): Likewise.
18097         (TARGET_INIT_LIBFUNCS): Likewise.
18098
18099         * config/ia64/t-glibc (SHLINB_MAPFILES):
18100         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
18101
18102 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
18103
18104         * config/i386/i386.c (construct_container): Rewrite processing
18105         BLKmode with X86_64_SSE_CLASS.
18106
18107 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
18108
18109         PR target/39152
18110         * config/i386/i386.md: Replace simplify_replace_rtx with
18111         replace_rtx in the new peephole2.
18112
18113 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
18114
18115         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
18116         loop unrolling do not happen at -O2.
18117
18118 2009-02-12  Michael Matz  <matz@suse.de>
18119
18120         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
18121
18122 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
18123
18124         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
18125         for -g3.
18126
18127 2009-02-12  Ben Elliston  <bje@au.ibm.com>
18128
18129         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
18130         patterns when updating the back chain.  Missed in the 2009-02-10
18131         change.
18132
18133 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
18134
18135         * doc/extend.texi (Decimal Floating Types): Update identifier of
18136         draft TR and list of missing support.
18137
18138 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
18139
18140         PR middle-end/39154
18141         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
18142         bit to variable length decl's flags, add it also to its
18143         pointer replacement variable.
18144
18145 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
18146             Jakub Jelinek  <jakub@redhat.com>
18147
18148         PR target/39118
18149         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
18150         (memory_blockage): New expander.
18151         (*memory_blockage): New insn pattern.
18152         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
18153         instead of general blockage at the end of function prologue when
18154         frame pointer is used to access red zone area.  Do not emit blockage
18155         when profiling, it is emitted in generic code.
18156         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
18157         function epilogue when frame pointer is used to access red zone area.
18158
18159 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
18160
18161         PR target/38824
18162         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
18163         by arithmetic with memory operands.
18164         * config/i386/predicates.md (commutative_operator): New.
18165
18166 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
18167
18168         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
18169         bulleted lists.
18170
18171 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
18172
18173         * alias.h (record_alias_subset): Declare.
18174         * alias.c (record_alias_subset): Make global.
18175
18176 2009-02-10  Nick Clifton  <nickc@redhat.com>
18177
18178         * tree-parloops.c: Change license to GPLv3.
18179         * ipa-struct-reorg.c: Change license to GPLv3.
18180         * ipa-struct-reorg.h: Change license to GPLv3.
18181
18182 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
18183
18184         PR c/39084
18185         * c-decl.c (start_struct): Return NULL on error.
18186
18187 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
18188
18189         PR middle-end/39124
18190         * cfgloopmanip.c (remove_path): Call remove_bbs after
18191         cancel_loop_tree, not before it.
18192
18193         PR target/39139
18194         * function.h (struct function): Add has_local_explicit_reg_vars bit.
18195         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
18196         VAR_DECLs were seen.
18197         * tree-ssa-live.c (remove_unused_locals): Recompute
18198         cfun->has_local_explicit_reg_vars.
18199         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
18200         copies or clearings if cfun->has_local_explicit_reg_vars.
18201
18202 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
18203
18204         PR target/39118
18205         * config/i386/i386.c (expand_prologue): Emit blockage at the end
18206         of function prologue when frame pointer is used to access
18207         red zone area.
18208
18209 2009-02-10  Richard Guenther  <rguenther@suse.de>
18210
18211         PR middle-end/39127
18212         * gimplify.c (gimple_regimplify_operands): Always look if
18213         we need to create a temporary.
18214
18215 2009-02-10  Richard Guenther  <rguenther@suse.de>
18216
18217         PR tree-optimization/39132
18218         * tree-loop-distribution.c (todo): New global var.
18219         (generate_memset_zero): Trigger TODO_rebuild_alias.
18220         (tree_loop_distribution): Return todo.
18221
18222 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
18223
18224         PR target/39119
18225         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
18226         (x86_64_reg_class_name): Removed.
18227         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
18228         first one isn't X86_64_SSE_CLASS or any other ones aren't
18229         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
18230         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
18231         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
18232         and 3 X86_64_SSEUP_CLASS.
18233         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
18234         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
18235
18236 2009-02-10  Ben Elliston  <bje@au.ibm.com>
18237
18238         * config/rs6000/rs6000.md (allocate_stack): Always use an update
18239         form instruction to update the stack back chain word, even if the
18240         user has disabled the generation of update instructions.
18241         (movdi_<mode>_update_stack): New.
18242         (movsi_update_stack): Likewise.
18243         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
18244         always use an update form instruction to update the stack back
18245         chain word.
18246
18247 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
18248
18249         PR middle-end/38953
18250         * graphite.c (if_region_set_false_region): After moving a region in
18251         the false branch of a condition, remove the empty dummy basic block.
18252         (gloog): Remove wrong fix for PR38953.
18253
18254 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18255
18256         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
18257         generation due to implicit sign extension.
18258
18259 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
18260
18261         PR middle-end/38981
18262         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
18263         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
18264
18265 2009-02-09  Richard Guenther  <rguenther@suse.de>
18266
18267         PR middle-end/35202
18268         * convert.c (convert_to_real): Disable (float)fn((double)x)
18269         to fnf(x) conversion if errno differences may occur and
18270         -fmath-errno is set.
18271
18272 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
18273
18274         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
18275         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
18276         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
18277
18278 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
18279
18280         PR c/35434
18281         * c-common.c (handle_alias_attribute): Disallow attribute for
18282         anything not a FUNCTION_DECL or VAR_DECL.
18283
18284 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
18285
18286         PR c/39035
18287         * real.c (do_compare): Special-case compare of zero against
18288         decimal float value.
18289
18290 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
18291
18292         PR c/36432
18293         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
18294         as indicating flexible array members unless the field itself is
18295         being declarared as the incomplete array.
18296
18297 2009-02-06  Jan Hubicka  <jh@suse.cz>
18298
18299         PR tree-optimization/38844
18300         * ipa-inline.c (try_inline): Stop inlining recursion when edge
18301         is already inlined.
18302
18303 2009-02-06  Richard Guenther  <rguenther@suse.de>
18304
18305         PR middle-end/38977
18306         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
18307         fork because we may expand it as __gcov_fork.
18308
18309 2009-02-06  Nick Clifton  <nickc@redhat.com>
18310
18311         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
18312
18313 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
18314
18315         PR tree-optimization/35659
18316         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
18317         vn_phi_eq): Shortcut if hashcode does not match.
18318         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
18319         NULL operands.
18320         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
18321         and avoid iterative_hash_expr.
18322         (FOR_EACH_VALUE_ID_IN_SET): New.
18323         (value_id_compare): Remove.
18324         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
18325         sort expressions by value id.
18326
18327 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
18328
18329         PR target/38991
18330         * config/sh/predicates.md (general_movsrc_operand): Don't check
18331         the subreg of system registers here.
18332
18333 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
18334
18335         PR c++/39106
18336         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
18337         on the copied decl.
18338
18339 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
18340
18341         PR rtl-optimization/39110
18342         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
18343         addresses, not aligned ones.
18344
18345 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
18346             Richard Guenther  <rguenther@suse.de>
18347
18348         PR tree-optimization/39100
18349         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
18350         comment says and add edges.
18351
18352 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
18353
18354         PR c/35435
18355         * c-common.c (handle_tls_model_attribute): Ignore attribute for
18356         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
18357
18358 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
18359
18360         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
18361         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
18362         register_bb_in_sese, new_sese, free_sese): Moved.
18363         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
18364         outermost_loop_in_scop, build_scop_iteration_domain,
18365         expand_scalar_variables_ssa_name, get_vdef_before_scop,
18366         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
18367         Use loop_in_sese_p instead of loop_in_scop_p.
18368         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
18369         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
18370         (scopdet_basic_block_info): Fix bug in scop detection.
18371         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
18372         eq_loop_to_cloog_loop): Remove.
18373         (nb_loops_around_loop_in_scop, nb_loop
18374         ref_nb_loops): Moved here...
18375         * graphite.h (ref_nb_loops): ... from here.
18376         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
18377         (loop_domain_dim, loop_iteration_vector_dim): Remove.
18378         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
18379         * testsuite/gcc.dg/graphite/scop-19.c: New
18380
18381 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
18382             Hans-Peter Nilsson  <hp@axis.com>
18383
18384         PR rtl-optimization/37889
18385         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
18386         Move offset handling from PLUS to before the switch.  Use new
18387         arguments when considering SYMBOL_REFs too.
18388         (rtx_addr_can_trap_p): Pass dummy offset and size.
18389         (enum may_trap_p_flags): Remove.
18390         (may_trap_p_1): Pass size from MEM_SIZE.
18391
18392         PR rtl-optimization/38921
18393         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
18394         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
18395         * rtlanal.c (may_trap_after_code_motion_p): Delete.
18396         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
18397
18398 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
18399
18400         AVX Programming Reference (January, 2009)
18401         * config/i386/sse.md (*vpclmulqdq): New.
18402
18403 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
18404
18405         PR tree-optimization/38977
18406         PR gcov-profile/38292
18407         * calls.c (special_function_p): Disregard __builtin_ prefix.
18408
18409 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
18410
18411         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
18412         non-indexable addresses even before reload.
18413
18414 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
18415
18416         PR c/29129
18417         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
18418         as having variable size.  Do not give an error for unnamed
18419         parameters with [*] declarators.  Give a warning for type names
18420         with [*] declarators and mark them as variable size.
18421         * c-parser.c (c_parser_sizeof_expression): Do not give an error
18422         for sizeof applied to [*] type names.
18423
18424 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18425
18426         PR C++/36607
18427         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
18428
18429 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
18430
18431         * gcc.c (process_command): Update copyright notice dates.
18432         * gcov.c (print_version): Likewise.
18433         * gcov-dump.c (print_version): Likewise.
18434         * mips-tfile.c (main): Likewise.
18435         * mips-tdump.c (main): Likewise.
18436
18437 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
18438
18439         PR c/35433
18440         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
18441         for composite type involving a zero-length array type.
18442
18443 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
18444
18445         PR target/35318
18446         * function.c (match_asm_constraints_1): Skip over
18447         initial optional % in the constraint.
18448
18449         PR inline-asm/39059
18450         * c-parser.c (c_parser_postfix_expression): If fixed point is not
18451         supported, don't accept FIXED_CSTs.
18452         * c-decl.c (finish_declspecs): Error if fixed point is not supported
18453         and _Sat is used without _Fract/_Accum.  Set specs->type to
18454         integer_type_node for cts_fract/cts_accum if fixed point is not
18455         supported.
18456
18457 2009-02-02  Catherine Moore  <clm@codesourcery.com>
18458
18459         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
18460
18461 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
18462
18463         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
18464         (ABI_HAS_64BIT_SYMBOLS): Use it.
18465         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
18466
18467 2009-02-02  Paul Brook  <paul@codesourcery.com>
18468
18469         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
18470
18471 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
18472
18473         PR inline-asm/39058
18474         * recog.h (asm_operand_ok): Add constraints argument.
18475         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
18476         recurse on matching constraint.
18477         (check_asm_operands): Pass constraints as 3rd argument to
18478         asm_operand_ok.  Don't look up matching constraint here.
18479         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
18480         to asm_operand_ok.
18481
18482 2009-02-02  Ben Elliston  <bje@au.ibm.com>
18483
18484         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
18485         TARGET_NARROW_VOLATILE_BITFIELD macro names.
18486
18487 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18488
18489         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
18490         information.  Remove some obsolete information.  Reorganize.
18491
18492         * config/pa/fptr.c: Revert license to GPL 2.
18493         * config/pa/milli64.S: Likewise.
18494
18495 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
18496
18497         PR target/38904
18498         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
18499         LIBRARY name in, instead of hard-coding it.
18500         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
18501         extra target make frag to tmake_files according to EH model.
18502         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
18503         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
18504         frags that define makefile variable EH_MODEL appropriately.
18505         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
18506         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
18507         to "-sjlj" according to type of EH configured.
18508         (LIBGCC_SONAME):  Concatenate it to shared library base name.
18509         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
18510         to "_sjlj" according to type of EH configured.
18511         (LIBGCC_SONAME):  Concatenate it to shared library base name.
18512         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
18513         (SHLIB_LINK):  Add missing semicolon to if-else construct.
18514         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
18515         string value of "pe_dll" command-line option.
18516         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
18517         (SHLIB_SONAME):  Use it when overriding t-cygming default.
18518         (SHLIB_IMPLIB):  Override t-cygming default.
18519         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
18520         string value of "pe_dll" command-line option.
18521
18522 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
18523
18524         PR target/38952
18525         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
18526         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
18527
18528 2009-01-31  Richard Guenther  <rguenther@suse.de>
18529
18530         PR tree-optimization/38937
18531         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
18532         computing the transitive closure.
18533
18534 2009-01-30  Richard Guenther  <rguenther@suse.de>
18535
18536         PR tree-optimization/39041
18537         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
18538         Propagate variable indices only if the types match for this stmt.
18539
18540 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
18541
18542         PR target/39013
18543         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
18544         inline but never defined.
18545
18546 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
18547
18548         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
18549         (*insv_h_di_reg_extimm): New insn.
18550         (*insv_l<mode>_reg_extimm): New insn.
18551
18552 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
18553
18554         * config/picochip/picochip.c (flag_conserve_stack): set
18555         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
18556         fconserve-stack. Reduce call-overhead used by inliner.
18557
18558 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
18559
18560         PR/38157
18561         * common.opt (flag_conserve_stack): Initialised to zero.
18562
18563 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
18564
18565         PR/39002
18566         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
18567         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
18568         method.
18569
18570 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
18571
18572         * ira-color.c (allocno_reload_assign): Update comments.
18573         * regmove.c (regmove_optimize): Likewise.
18574
18575         * ra.h: Removed.
18576
18577 2009-01-29  Robert Millan  <rmh@aybabtu.com>
18578
18579         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
18580         * config/i386/kopensolaris-gnu.h: New file.  Undefine
18581         `MD_UNWIND_SUPPORT'.
18582         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
18583
18584 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
18585
18586         PR tree-optimization/39007
18587         * tree-loop-distribution.c (generate_builtin): Use
18588         recompute_dominator to compute the immediate dominator of the
18589         basic block just after the loop.
18590
18591 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
18592
18593         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
18594         (ASM_OUTPUT_DWARF_PCREL): Define.
18595
18596 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
18597
18598         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
18599         * doc/passes.texi: Remove entries about regclass, local-alloc, and
18600         global.  Modify entries about regmove and IRA.
18601
18602         * ra-conflict.c: Remove the file.
18603
18604         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
18605
18606         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
18607         (pass_regclass_init): Rename to pass_reginfo_init.
18608
18609         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
18610
18611         * toplev.h (flag_ira): Remove.
18612
18613         * caller-save.c (setup_save_areas): Remove flag_ira.
18614
18615         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
18616
18617         * global.c: Remove the file.
18618
18619         * opts.c (decode_options): Remove flag_ira.
18620
18621         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
18622
18623         * regmove.c: Modify file description.
18624         (find_use_as_address, try_auto_increment): Define them only if
18625         AUTO_INC_DEC is defined.
18626         (replacement_quality, replace_in_call_usage, fixup_match_1,
18627         stable_and_no_regs_but_for_p): Remove.
18628         (reg_set_in_bb): Make it static.
18629         (regmove_optimize): Remove flag_ira and code which worked for
18630         !flag_ira.
18631
18632         * local-alloc.c: Remove the file.
18633
18634         * common.opt (fira): Remove.
18635
18636         * ira.c: Include except.h.
18637         (eliminable_regset): Move from global.c.
18638         (mark_elimination): Ditto.  Remove flag_ira.
18639         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
18640         equiv_mem_modified, validate_equiv_mem_from_store,
18641         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
18642         contains_replace_regs, memref_referenced_p, memref_used_between_p,
18643         no_equiv, recorded_label_ref): Move from local-alloc.c.
18644         (update_equiv_regs): Ditto.  Make it static.
18645         (print_insn_chain, print_insn_chains): Move it from global.c.
18646         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
18647         (build_insn_chain): Ditto.  Make it static.
18648         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
18649         Rename to init_live_subregs.
18650         (gate_ira): Remove flag_ira.
18651
18652         * regclass.c: Rename reginfo.c.  Change file description.
18653         (FORBIDDEN_INC_DEC_CLASSES): Remove.
18654         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
18655         (init_reg_sets_1): Remove code for evaluation of
18656         reg_class_superclasses and losing_caller_save_reg_set.
18657         (init_regs): Remove init_reg_autoinc.
18658         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
18659         ok_for_base_p_nonstrict): Remove.
18660         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
18661         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
18662         corresponding entries.
18663         (dump_regclass, record_operand_costs, scan_one_insn,
18664         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
18665         record_address_regs, auto_inc_dec_reg_p): Remove.
18666         (gt-regclass.h): Rename to gt-reginfo.h.
18667
18668         * rtl.h (dump_global_regs, retry_global_alloc,
18669         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
18670
18671         * Makefile.in (RA_H): Remove.
18672         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
18673         Rename regclass.o to reginfo.o.
18674         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
18675         gt-reginfo.h.
18676         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
18677         (GTFILES): Rename regclass.c to reginfo.c.
18678
18679         * passes.c (init_optimization_passes): Remove pass_local_alloc and
18680         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
18681
18682         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
18683         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
18684         Remove flag_ira.
18685         (finish_spills): Ditto.  Remove code for !flag_ira.
18686
18687 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
18688
18689         PR middle-end/35854
18690         * doc/invoke.texi (rtl debug options): Complete rewrite.
18691         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
18692         to auto_inc_dec".
18693         * mode-switching.c (pass_mode_switching): Rename pass from
18694         "mode-sw" to "mode_sw".
18695         * except.c (pass_convert_to_eh_ranges): Rename pass from
18696         "eh-ranges" to "eh_ranges".
18697         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
18698         to "subreg1".
18699
18700
18701 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
18702             Alexander Monakov  <amonakov@ispras.ru>
18703
18704         PR middle-end/38857
18705         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
18706         register.
18707         (move_exprs_to_boundary): Change return type and pass through
18708         should_move from move_op.  Relax assert.  Update usage ...
18709         (schedule_expr_on_boundary): ... here.  Use should_move instead of
18710         cant_move.
18711         (move_op_orig_expr_found): Indicate that insn was disconnected from
18712         stream.
18713         (code_motion_process_successors): Do not call after_merge_succs
18714         callback if original expression was not found when traversing any of
18715         the branches.
18716         (code_motion_path_driver): Change return type.  Update prototype.
18717         (move_op): Update comment.  Add a new parameter (should_move).  Update
18718         prototype.  Set *should_move based on indication provided by
18719         move_op_orig_expr_found.
18720
18721 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
18722
18723         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
18724         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
18725         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
18726         * config/rs6000/rs6000.c (rs6000_override_options): Default
18727         avoid-indexed-addresses on for Power6, off for everything else.
18728         (avoiding_indexed_address_p): New function.
18729         (rs6000_legitimize_address): Use it.
18730         (rs6000_legitimate_address): Likewise.
18731         * config/rs6000/rs6000.md (movXX_updateX): Likewise
18732
18733 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
18734
18735         PR tree-optimization/38997
18736         * tree-loop-distribution.c (generate_memset_zero): Use
18737         POINTER_PLUS_EXPR for a pointer addition.
18738
18739 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
18740
18741         * config/s390/s390.md (bswap<mode>2): New pattern added.
18742
18743 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
18744
18745         * config/s390/s390.md (*tls_load_31): Added type attribute.
18746
18747 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
18748
18749         * config/s390/s390.md: Fix a few comments.
18750
18751 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
18752
18753         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
18754         (*tm<mode>_full): Fixed z10prop attribute.
18755         (*tst<mode>_extimm): Fixed z10prop attribute.
18756         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
18757         (*tstqiCCT_cconly): Fixed z10prop attribute.
18758         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
18759         (*movsi_larl): Fixed z10prop attribute.
18760         (*movsi_zarch): Fixed z10prop attribute.
18761         (*movsi_eas): Fixed z10prop attribute.
18762         (*movhi): Fixed z10prop attribute.
18763         (*movqi): Fixed z10prop attribute.
18764         (*movstrictqi): Fixed z10prop attribute.
18765         (*mov<mode>): Fixed z10prop attribute.
18766         (*movcc): Fixed z10prop attribute.
18767         (*sethighpartdi_64): Fixed z10prop attribute.
18768         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
18769         (*negdi2_sign_cc): Fixed z10prop attribute.
18770         (*negdi2_sign): Fixed z10prop attribute.
18771         (*absdi2_sign_cc): Fixed z10prop attribute.
18772         (*absdi2_sign): Fixed z10prop attribute.
18773         (*negabsdi2_sign_cc): Fixed z10prop attribute.
18774         (*negabsdi2_sign): Fixed z10prop attribute.
18775         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
18776         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
18777         (doloop_si64): Fixed z10prop attribute.
18778         (doloop_si31): Fixed z10prop attribute.
18779         (doloop_long): Fixed z10prop attribute.
18780         (indirect_jump): Fixed z10prop attribute.
18781         (nop): Fixed z10prop attribute.
18782         (main_base_64): Fixed z10prop attribute.
18783         (reload_base_64): Fixed z10prop attribute.
18784
18785 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
18786
18787         PR rtl-optimization/38740
18788         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
18789         if !optimize.
18790         * config/mips/mips.c (mips_reorg): Likewise.
18791
18792 2009-01-28  Richard Guenther  <rguenther@suse.de>
18793
18794         PR tree-optimization/38926
18795         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
18796         with the correct value id to a value.
18797         (do_regular_insertion): Use the value number of edoubleprime
18798         for the value number of the expr.
18799
18800         Revert
18801         2008-08-21  Richard Guenther  <rguenther@suse.de>
18802
18803         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
18804         a PHI ask VN if it is already available.
18805         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
18806         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
18807
18808 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
18809
18810         PR middle-end/38934
18811         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
18812         set to varying whenever max has TREE_OVERFLOW set, similarly
18813         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
18814
18815 2009-01-28  Richard Guenther  <rguenther@suse.de>
18816
18817         PR middle-end/38908
18818         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
18819         uninitialized aggregate uses in call arguments.
18820
18821 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
18822
18823         PR tree-optimization/38984
18824         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
18825         the nothing_id variable if -fno-delete-null-pointer-checks.
18826
18827 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
18828
18829         PR target/38988
18830         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
18831         (set_got_offset_rex64): Ditto.
18832
18833 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
18834
18835         PR target/38941
18836         * doc/extend.texi: Improve local variable with asm reg.
18837
18838 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
18839
18840         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
18841         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
18842         was not supplied then set warn_packed_bitfield_compat to the
18843         default value of 1.
18844         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
18845         against 1.
18846
18847 2009-01-27  Richard Guenther  <rguenther@suse.de>
18848
18849         PR tree-optimization/38503
18850         * cfgexpand.c (expand_gimple_basic_block): Ignore
18851         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
18852         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
18853         variables that cannot have TBAA applied.
18854         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
18855         statements.
18856
18857 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
18858
18859         PR middle-end/38969
18860         * calls.c (initialize_argument_information): Do not wrap complex
18861         arguments in SAVE_EXPR.
18862
18863 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
18864
18865         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
18866         (INSTALL_LIBGCC): Revert typo commit.
18867
18868 2009-01-26  Richard Guenther  <rguenther@suse.de>
18869
18870         PR tree-optimization/38745
18871         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
18872         from special handling.
18873
18874 2009-01-26  Richard Guenther  <rguenther@suse.de>
18875
18876         PR tree-optimization/38745
18877         * tree-ssa.c (execute_update_addresses_taken): Do not include
18878         variables that cannot possibly be a register in not_reg_needs.
18879         Do not clear TREE_ADDRESSABLE on vars that may not become
18880         registers.
18881         * tree-ssa.c (update_alias_info_1): Include those in the set
18882         of addressable vars.
18883
18884 2009-01-26  Richard Guenther  <rguenther@suse.de>
18885
18886         PR middle-end/38851
18887         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
18888         * tree-ssa-dse.c: Include langhooks.h
18889         (execute_simple_dse): Remove stores with zero size.
18890
18891 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
18892
18893         PR c/38957
18894         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
18895         as PLUS_EXPR.
18896
18897 2009-01-24  Julian Brown  <julian@codesourcery.com>
18898
18899         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
18900         config/arm/linux-atomic.c.
18901         * config/arm/linux-atomic.c: New.
18902
18903 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
18904
18905         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
18906         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
18907         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
18908
18909 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
18910
18911         PR c/38938
18912         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
18913         properly.
18914
18915 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
18916
18917         PR tree-optimization/38953
18918         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
18919         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
18920         (gloog): Split the exit of the scop when the scop exit is a loop exit.
18921         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
18922         changed the CFG.
18923
18924 2009-01-24  Paul Brook  <paul@codesourcery.com>
18925
18926         * config/arm/neon.md (neon_type): Move to arm.md.
18927         (neon_mov<VSTRUCT>): Add neon_type attribute.
18928         * config/arm/arm.md (neon_type): Move to here.
18929         (conds): Add "unconditioal" and use as default for NEON insns.
18930
18931 2009-01-24  Ben Elliston  <bje@au.ibm.com>
18932
18933         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
18934         void *' warning from -Wc++-compat.
18935         * Makefile.in (dominance.o-warn): Remove.
18936
18937 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
18938
18939         PR tree-optimization/38932
18940         * fold-const.c (fold_unary_ignore_overflow): New.
18941         * tree.h (fold_unary_ignore_overflow): Declare.
18942         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
18943         * tree-ssa-sccvn.c (visit_reference_op_load,
18944         simplify_unary_expression): Likewise.
18945
18946 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
18947
18948         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
18949         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
18950         regardless of their type.
18951         * c-common.c (handle_packed_attribute): Don't ignore packed on
18952         bitfields.
18953         * c.opt (Wpacked-bitfield-compat): New warning option.
18954         * stor-layout.c (place_field): Warn if offset of a field changed.
18955         * doc/extend.texi (packed): Mention the ABI change.
18956         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
18957         (Warning Options): Add it to the list.
18958
18959 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
18960
18961         * c-opts.c (c_common_post_options): Fix a typo in comments.
18962
18963 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
18964
18965         PR middle-end/38615
18966         * gimplify.c (gimplify_init_constructor): Fix promotion of const
18967         variables to static.
18968         * doc/invoke.texi (-fmerge-all-constants): Update description.
18969
18970 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
18971
18972         PR target/38931
18973         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
18974         (*movdi_1_rex64): Use type "mmx" for alternative 5.
18975
18976 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
18977
18978         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
18979         a word boundary.
18980         (LOCAL_ALIGNMENT): Similarly.
18981
18982 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
18983             Joseph Myers  <joseph@codesourcery.com>
18984
18985         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
18986         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
18987         * config/arm/arm-tune.md: Regenerate.
18988         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
18989         -march=iwmmxt2.
18990
18991 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
18992
18993         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
18994         version number to five.
18995
18996 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
18997
18998         PR c++/38930
18999         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
19000         * c-common.c (set_underlying_type): Likewise.
19001         (is_typedef_decl ): Likewise
19002         * tree.h: Likewise
19003         (set_underlying_type): Likewise.
19004         (is_typedef_type): Likewise.
19005
19006 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
19007
19008         PR middle-end/38587
19009         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
19010         crossing setjmps.
19011
19012 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
19013
19014         PR bootstrap/37660
19015         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
19016         (LIBGCC_SPEC):  Don't define.
19017         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
19018
19019 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
19020
19021         PR rtl-optimization/38879
19022         * alias.c (base_alias_check): Unaligned access via AND address can
19023         alias all surrounding object types except those with sizes equal
19024         or wider than the size of unaligned access.
19025
19026 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
19027
19028         PR c++/26693
19029         * c-decl.c (clone_underlying_type): Move this ...
19030         * c-common.c (set_underlying_type): ... here.
19031         Also, make sure the function properly sets TYPE_STUB_DECL() on
19032         the newly created typedef variant type.
19033         (is_typedef_decl ): New entry point.
19034         * tree.h: Added a new member member_types_needing_access_check to
19035         struct tree_decl_non_common.
19036         (set_underlying_type): New entry point.
19037         (is_typedef_type): Likewise.
19038
19039 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
19040
19041         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
19042         Check whether two instructions have memory references that
19043         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
19044         are helper functions for traversing.
19045         * alias.h (insn_alias_sets_confilict_p): New prototypes.
19046         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
19047         not to draw dependency edge for instructions with non-conflicting
19048         alias sets.
19049
19050 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
19051
19052         PR other/38758
19053         * longlong.h: Update copyright years.  Use soft-fp license notice.
19054         Sync __clz_tab declaration with glibc.
19055
19056 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
19057
19058         PR target/30687
19059         * doc/extend.texi (syscall_linkage): New.
19060         (version_id): Modify.
19061
19062 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19063             Richard Guenther  <rguenther@suse.de>
19064
19065         PR tree-optimization/38747
19066         PR tree-optimization/38748
19067         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
19068         conversion if the base address is an indirect reference and the
19069         aliasing sets could cause issues.
19070
19071 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
19072
19073         * common.opt (fgraphite, fgraphite-identity): Add comment for
19074         explaining why these options are not documented.
19075
19076 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
19077
19078         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
19079         gimple_call_lhs is NULL.
19080
19081 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
19082
19083         PR target/38868
19084         * emit-rtl.c (adjust_address_1): Make sure memref is never
19085         overwritten.
19086
19087 2009-01-20  Ben Elliston  <bje@au.ibm.com>
19088
19089         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
19090         const qualifier from arg parameter. Remove unnecessary cast to char *.
19091         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
19092         const qualifier from arg 2.
19093
19094 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
19095
19096         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
19097
19098 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
19099
19100         PR c/38869
19101         * rtl.h (reinit_regs): New prototype.
19102         * regclass.c: Include ira.h.
19103         (reinit_regs): New.
19104         * Makefile.in (regclass.o): Add ira.h.
19105         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
19106
19107 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
19108
19109         PR target/38736
19110         * c-common.c (handle_aligned_attribute): Use
19111         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
19112         default alignment value.
19113
19114         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
19115
19116         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
19117         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
19118
19119         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
19120         __BIGGEST_ALIGNMENT__.
19121
19122         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
19123
19124 2009-01-18  Richard Guenther  <rguenther@suse.de>
19125
19126         PR tree-optimization/38819
19127         * tree-flow.h (operation_could_trap_helper_p): Declare.
19128         * tree-eh.c (operation_could_trap_helper_p): Export.
19129         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
19130         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
19131         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
19132         are about to insert a possibly trapping instruction and fail
19133         in this case.
19134
19135 2009-01-18  Andreas Schwab  <schwab@suse.de>
19136
19137         * doc/install.texi (Configuration): Remove obsolete paragraph
19138         about use of --with-gnu-ld with --with-gnu-as.
19139
19140 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
19141
19142         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
19143         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
19144         Follow spelling conventions.
19145
19146 2009-01-18  Ben Elliston  <bje@au.ibm.com>
19147
19148         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
19149         C++ warning about implicit conversion from void * to struct
19150         bitmap_head_def *.
19151         (bitmap_obstack_free): Likewise for bitmap_element *.
19152         * Makefile.in (bitmap.o-warn): Remove.
19153
19154 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
19155
19156         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
19157
19158 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
19159             Tobias Grosser  <tobi.grosser@amd.com>
19160
19161         * graphite.c (graphite_trans_scop_block): Do not block single
19162         nested loops.
19163
19164 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
19165
19166         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
19167         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
19168         test with assertion.
19169
19170 2009-01-16  Richard Guenther  <rguenther@suse.de>
19171
19172         PR tree-optimization/38835
19173         PR middle-end/36227
19174         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
19175         and INT + PTR -> (INT)(PTR p+ INT) folding.
19176         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
19177
19178 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
19179
19180         PR target/38554
19181         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
19182         the subreg from a lowpart subreg if it is also casting the value.
19183
19184 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
19185             Tobias Grosser  <tobi.grosser@amd.com>
19186
19187         * graphite.c (compare_prefix_loops): New.
19188         (build_scop_canonical_schedules): Rewritten.
19189         (graphite_transform_loops): Move build_scop_canonical_schedules
19190         after build_scop_iteration_domain.
19191
19192 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
19193             Tobias Grosser  <tobi.grosser@amd.com>
19194
19195         * graphite.c (add_conditions_to_domain): Add the loops to
19196         the dimension of the iteration domain.  Do copy the domain
19197         only when it exists.
19198         (build_scop_conditions_1): Do not call add_conditions_to_domain.
19199         (add_conditions_to_constraints): New.
19200         (can_generate_code_stmt, can_generate_code): Removed.
19201         (gloog): Do not call can_generate_code.
19202         (graphite_transform_loops): Call add_conditions_to_constraints
19203         after building the iteration domain.
19204
19205 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
19206
19207         PR tree-optimization/38789
19208         * tree-ssa-threadedge.c
19209         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
19210         __builtin_constant_p.
19211
19212 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
19213
19214         * dce.c (delete_unmarked_insns): Reversed the order that insns are
19215         examined before deleting them.
19216
19217 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
19218
19219         * function.c (aggregate_value_p): Correctly extract the function
19220         type from CALL_EXPR_FN lookup.
19221
19222 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
19223
19224         * config/picochip/picochip.c (picochip_override_options): Revert
19225         CFI asm flag disable commited previously.
19226
19227 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
19228             Tobias Grosser  <tobi.grosser@amd.com>
19229             Jan Sjodin  <jan.sjodin@amd.com>
19230
19231         * graphite.c (scan_tree_for_params): On substractions negate
19232         all the coefficients of the term.
19233         (clast_to_gcc_expression_red): New.  Handle reduction expressions
19234         of more than two operands.
19235         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
19236         (get_vdef_before_scop): Handle also the case of default definitions.
19237
19238 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
19239
19240         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
19241         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
19242         Also use them when walking CALL_INSN_FUNCTION_USAGE.
19243
19244 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
19245             Joey Ye  <joey.ye@intel.com>
19246
19247         PR middle-end/37843
19248         * cfgexpand.c (expand_stack_alignment): Don't update stack
19249         boundary nor check incoming stack boundary here.
19250         (gimple_expand_cfg): Update stack boundary and check incoming
19251         stack boundary here.
19252
19253 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
19254
19255         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
19256
19257 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
19258
19259         PR rtl-optimization/38245
19260         * calls.c (expand_call): Add stack arguments to
19261         CALL_INSN_FUNCTION_USAGE even for pure calls (when
19262         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
19263         in regs and partially in memory or BLKmode arguments.
19264         (emit_library_call_value_1): Add stack arguments to
19265         CALL_INSN_FUNCTION_USAGE even for pure calls (when
19266         ACCUMULATE_OUTGOING_ARGS).
19267         * dce.c: Include tm_p.h.
19268         (find_call_stack_args): New function.
19269         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
19270         argument.
19271         (mark_insn): Call find_call_stack_args for CALL_Ps.
19272         (prescan_insns_for_dce): Walk insns backwards in bb rather than
19273         forwards.  Allocate and free arg_stores bitmap if needed, pass it
19274         down to deletable_insn_p, don't mark stores set in arg_stores
19275         bitmap, clear the bitmap at the beginning of each bb.
19276         * Makefile.in (dce.o): Depend on $(TM_P_H).
19277
19278 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
19279
19280         PR target/22599
19281         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
19282         to make sure the insn is a conditional test (bug 22599).  Reformat a
19283         few long lines.
19284
19285 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
19286
19287         PR middle-end/38431
19288         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
19289         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
19290         (gloog): Do not call cleanup_tree_cfg.
19291         (graphite_transform_loops): Call cleanup_tree_cfg after all
19292         scops have been code generated.
19293
19294 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
19295         * doc/gty.texi (Invoking the garbage collector): Added new node
19296         and section documenting ggc_collect.
19297
19298 2009-01-14  Richard Guenther  <rguenther@suse.de>
19299
19300         PR tree-optimization/38826
19301         PR middle-end/38477
19302         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
19303         initialization notes only if we actually emitted a warning.
19304         (intra_create_variable_infos): Add constraints for a result decl
19305         that is passed by hidden reference.
19306         (build_pred_graph): Mark all related variables non-direct on
19307         address-taking.
19308
19309 2009-01-14  Nick Clifton  <nickc@redhat.com>
19310
19311         * ira-conflicts.c: Include addresses.h for the definition of
19312         base_reg_class.
19313         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
19314         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
19315
19316 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
19317
19318         PR target/38811
19319         * Makefile.in (ira-lives.o): Add except.h.
19320
19321         * ira-lives.c: Include except.h.
19322         (process_bb_node_lives): Process can_throw_internal.
19323
19324 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
19325
19326         PR rtl-optimization/38774
19327         * combine.c (simplify_set): When undoing cc_use change, don't do
19328         PUT_CODE on the newly created comparison, but instead put back the
19329         old comparison.
19330
19331 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
19332
19333         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
19334         values.  Remove duplicate arm8 entry.
19335
19336 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
19337
19338         PR tree-optimization/38786
19339         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
19340         the SSA_NAME case of expand_scalar_variables_expr.
19341         Set the type of an expression to the type of its assign statement.
19342         (expand_scalar_variables_expr): Also gather the scalar computation
19343         used to index the memory access.  Do not pass loop_p.
19344         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
19345         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
19346         the gimple_stmt_iterator where it inserts new code.
19347         Do not pass loop_p.
19348         (copy_bb_and_scalar_dependences): Do not pass loop_p.
19349         (translate_clast): Update call to copy_bb_and_scalar_dependences.
19350
19351 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
19352
19353         * graphite.h (debug_value): Removed.
19354         * graphite.c (debug_value): Removed.
19355
19356 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
19357
19358         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
19359         ldrd/strd with two 32-bit instructions.
19360
19361 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
19362
19363         * config/arm/arm.c (struct processors): Pass for speed down into
19364         cost helper functions.
19365         (const_ok_for_op): Handle COMPARE and inequality nodes.
19366         (arm_rtx_costs_1): Rewrite.
19367         (arm_size_rtx_costs): Update prototype.
19368         (arm_rtx_costs): Pass speed down to helper functions.
19369         (arm_slowmul_rtx_costs): Rework cost calculations.
19370         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
19371         (arm_9e_rtx_costs): Likewise.
19372
19373 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
19374
19375         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
19376         relocations of local symbols wider than UNITS_PER_WORD are not valid.
19377         (alpha_legitimize_address): Do not split local symbols wider than
19378         UNITS_PER_WORD into HIGH/LO_SUM parts.
19379
19380 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
19381
19382         PR bootstrap/38580
19383         * gcc.c (process_command): Replace call to execvp with calls
19384         to pex_one and exit.
19385
19386 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
19387
19388         PR target/29141
19389         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
19390         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
19391         variant for devices with 3-byte PC.
19392         (__tablejump_elpm__): New.
19393
19394 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
19395
19396         PR c/32041
19397         * c-parser.c (c_parser_postfix_expression): Allow `->' in
19398         offsetof member-designator, handle it as `[0].'.
19399
19400 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19401
19402         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
19403         function when not using named sections on targets with named sections
19404         if branch distance is less than 262132.
19405
19406 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
19407
19408         * combine.c (combine_instructions):  Recompute
19409         optimize_this_for_speed_p  for each BB in the main combine loop.
19410
19411 2009-01-12  Tomas Bily  <tbily@suse.cz>
19412
19413         PR middlend/38385
19414         * tree-loop-distribution.c (prop_phis): New function.
19415         (generate_builtin): Call prop_phis.
19416         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
19417
19418 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
19419
19420         PR tree-optimization/38807
19421         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
19422         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
19423
19424 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
19425
19426         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
19427         subreg of op0 to the original op0.
19428
19429 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
19430
19431         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
19432
19433 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
19434
19435         PR debug/7055
19436         * mips-tfile.c (parse_def): Fix parsing of def strings
19437         starting with digits.
19438
19439 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
19440
19441         PR target/38695
19442         * config/arm/arm.c (arm_is_long_call_p): Don't call
19443         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
19444
19445 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
19446
19447         * regrename.c (regrename_optimize): Fix dumping.
19448         (find_oldest_value_reg): Preserve REG_POINTER.
19449         (copy_hardreg_forward_1): Likewise.
19450
19451 2009-01-09  Diego Novillo  <dnovillo@google.com>
19452
19453         * gimple.h (struct gimple_statement_base) <uid>: Document
19454         the restrictions on its use.
19455         (gimple_uid): Tidy.
19456         (gimple_set_uid): Tidy.
19457
19458 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
19459
19460         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
19461         zero guard even if align_bytes != 0 and count is smaller than
19462         size_needed.
19463
19464 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
19465
19466         PR rtl-optimization/38495
19467         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
19468         (add_range_and_copies_from_move_list): Print all added ranges.
19469         Add ranges to memory optimized destination.
19470
19471 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
19472
19473         PR target/38686
19474         PR target/38708
19475         * config/i386/i386.c (override_options): Reject
19476         -mstringop-strategy=rep_8byte with -m32.
19477         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
19478         to 1.  Do count comparison against epilogue_size_needed at compile
19479         time even when count_exp was constant forced into register.  For
19480         size_needed don't jump to epilogue, instead just avoid aligning
19481         and invoke the body algorithm.  If need_zero_guard, add zero guard
19482         even if count is non-zero, but smaller than size_needed + number of
19483         bytes that could be stored for alignment.
19484         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
19485         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
19486         but smaller than size_needed + number of bytes that could be stored
19487         for alignment.  Compare size_needed with epilogue_size_needed instead
19488         of desired_align - align, don't adjust size_needed, pass
19489         epilogue_size_needed to the epilogue expanders.
19490
19491         PR c/35742
19492         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
19493
19494 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19495
19496         * pa.c (last_address): Change to unsigned.
19497         (update_total_code_bytes): Change argument to unsigned.  Don't
19498         check if insn addresses are set.
19499         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
19500         addresses are not set.
19501         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
19502
19503 2009-01-09  Nick Clifton  <nickc@redhat.com>
19504
19505         * config/sh/symbian.c: Replace uses of DECL_INLINE with
19506         DECL_DECLARED_INLINE_P.
19507
19508 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
19509
19510         PR middle-end/38347
19511         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
19512         GET_MODE (op0) in operand_subword_force calls.
19513
19514         PR middle-end/38771
19515         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
19516         fold_convert arg0 operands to TREE_TYPE (op0) first.
19517
19518 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
19519
19520         * params.def (ira-max-conflict-table-size): Decrease default value
19521         to 1000.
19522
19523 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
19524
19525         PR tree-optimization/37031
19526         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
19527         on parameter_set.
19528         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
19529         allocate it using gc instead of heap, use VEC_quick_push instead of
19530         VEC_safe_push.
19531         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
19532         instead of heap, use VEC_quick_push instead of VEC_safe_push.
19533         * tree-data-ref.h (struct access_matrix): Change matrix to gc
19534         allocated vector from heap allocated.
19535         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
19536         * tree-loop-linear.c (linear_transform_loops): Allocate nest
19537         vector only after perfect_loop_nest_depth call.
19538
19539 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
19540             Jan Sjodin  <jan.sjodin@amd.com>
19541
19542         PR tree-optimization/38559
19543         * graphite.c (debug_value, copy_constraint,
19544         swap_constraint_variables, scale_constraint_variable, ): New.
19545         (get_lower_bound, get_upper_bound): Removed.
19546         (graphite_trans_bb_strip_mine): Clean up this code that works
19547         only for constant number of iterations.  Fully copy upper and
19548         lower bound constraints, not only the constant part of them.
19549         * graphite.h (debug_value): Declared.
19550
19551 2009-01-08  Ira Rosen  <irar@il.ibm.com>
19552
19553         PR tree-optimization/37194
19554         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
19555         Don't add the cost of cost model guard in prologue to scalar
19556         outside cost in case of known number of iterations.
19557
19558 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
19559             Alan Modra  <amodra@bigpond.net.au>
19560
19561         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
19562         non-word-aligned REG+CONST addressing.
19563
19564 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
19565
19566         PR target/38706
19567         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
19568         free_after_compilation when outputting a thunk.
19569         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
19570         Do not call free_after_compilation here.
19571
19572 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
19573
19574         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
19575         (ix86_valid_target_attribute_inner_p): Ditto.
19576
19577 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
19578
19579         PR tree-optimization/38492
19580         PR tree-optimization/38498
19581         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
19582         * tree-chrec.h (scev_is_linear_expression): Declared.
19583         * graphite.c (graphite_cannot_represent_loop_niter): New.
19584         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
19585         (graphite_loop_normal_form): Use gcc_assert.
19586         (scan_tree_for_params): Use CASE_CONVERT.
19587         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
19588         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
19589         Use gcc_assert.  Discard scops that contain unhandled cases.
19590         (build_scop_conditions): Return a boolean status for unhandled cases.
19591         (strip_mine_profitable_p): Print the loop number, not its depth.
19592         (is_interchange_valid): Pass the depth of the loop nest, don't
19593         recompute it wrongly.
19594         (graphite_trans_bb_block): Same.
19595         (graphite_trans_bb_block): Print tentative of loop blocking.
19596         (graphite_trans_scop_block): Do not print that the loop has been
19597         blocked.
19598         (graphite_transform_loops): Do not handle scops that contain condition
19599         scalar phi nodes.
19600
19601 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
19602
19603         AVX Programming Reference (December, 2008)
19604         * config/i386/avxintrin.h (_mm256_stream_si256): New.
19605         (_mm256_stream_pd): Likewise.
19606         (_mm256_stream_ps): Likewise.
19607
19608         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
19609         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
19610         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
19611         (bdesc_special_args): Add __builtin_ia32_movntdq256,
19612         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
19613         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
19614         (ix86_expand_special_args_builtin): Likewise.
19615
19616         * config/i386/sse.md (AVXMODEDI): New.
19617         (avx_movnt<mode>): Likewise.
19618         (avx_movnt<mode>): Likewise.
19619         (<sse>_movnt<mode>): Remove AVX support.
19620         (sse2_movntv2di): Likewise.
19621
19622 2009-01-07  Richard Guenther  <rguenther@suse.de>
19623
19624         PR middle-end/38751
19625         * fold-const.c (extract_muldiv): Remove obsolete comment.
19626         (fold_plusminus_mult_expr): Undo MINUS_EXPR
19627         to PLUS_EXPR canonicalization for the canonicalization.
19628
19629 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
19630
19631         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
19632         hosted cross-compilers generating less efficient code.
19633
19634 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
19635
19636         * function.h (rtl_data): Add a dbr_scheduled_p field.
19637         * reorg.c (dbr_schedule): Set it.
19638         (gate_handle_delay_slots): Check it.
19639         * config/mips/mips.c (mips_base_delayed_branch): Delete.
19640         (mips_reorg): Check flag_delayed_branch instead of
19641         mips_base_delayed_branch.
19642         (mips_override_options): Don't set mips_base_delayed_branch
19643         or flag_delayed_branch.
19644
19645 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
19646
19647         PR rtl-optimization/38426.
19648         * ira.c (ira): Set current_function_is_leaf earlier.
19649
19650 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
19651
19652         PR rtl-optimization/38722
19653         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
19654         too early, only set a flag and modify after last possible
19655         undo_all point.
19656
19657 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
19658
19659         PR c/34252
19660         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
19661         * real.c (decimal_single_format): Correct values of emin and emax.
19662         (decimal_double_format): Ditto.
19663         (decimal_quad_format): Ditto.
19664         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
19665         computation of DECnn_MIN and DECnn_MAX for corrected values of
19666         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
19667         __DECnn_MIN__, and adjust its computation for the corrected value
19668         of emin.
19669
19670 2009-01-06  Jan Hubicka  <jh@suse.cz>
19671
19672         PR target/38744
19673         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
19674
19675 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
19676
19677         * doc/contrib.texi (Contributors): Slightly adjust the end note.
19678         Add Robert Clark to the list of testers.
19679
19680 2009-01-06  Jan Hubicka  <jh@suse.cz>
19681             Kai Tietz  <kai.tietz@onevision.com>
19682
19683         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
19684         * config/i386/i386.c (ix86_expand_call): Add clobbers.
19685
19686 2009-01-06  Jan Hubicka  <jh@suse.cz>
19687             Kai Tietz  <kai.tietz@onevision.com>
19688
19689         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
19690         for w64 ABI.
19691         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
19692         (ix86_nsaved_regs): Count only general purpose regs.
19693         (ix86_nsaved_sseregs): New.
19694         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
19695         to 16 for w64; compute padding and size of sse reg save area.
19696         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
19697         general purpose regs.
19698         (ix86_emit_save_sse_regs_using_mov): New.
19699         (ix86_expand_prologue): Save SSE regs if needed.
19700         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
19701         (ix86_emit_restore_sse_regs_using_mov): New.
19702         (ix86_expand_epilogue): Save SSE regs if needed.
19703
19704 2009-01-06  Jan Hubicka  <jh@suse.cz>
19705             Kai Tietz  <kai.tietz@onevision.com>
19706
19707         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
19708         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
19709         functions when accumulate outgoing args is off.
19710
19711 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
19712
19713         PR bootstrap/38742
19714         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
19715         before using pseudos_have_intersected_live_ranges_p.
19716
19717         * ira-int.h (ira_assert): Always define.
19718
19719 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
19720
19721         AVX Programming Reference (December, 2008)
19722         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
19723         (_mm256_permute2_pd): Likewise.
19724         (_mm_permute2_ps): Likewise.
19725         (_mm256_permute2_ps): Likewise.
19726         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
19727         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
19728
19729         * config/i386/i386.c (ix86_builtins): Remove
19730         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
19731         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
19732         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
19733         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
19734         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
19735         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
19736         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
19737         __builtin_ia32_vpermil2ps256.
19738         (ix86_init_mmx_sse_builtins): Updated.
19739         (ix86_expand_args_builtin): Likewise.
19740
19741 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19742
19743         * pa.c (output_call): Relocate non-jump insns in the delay slot of
19744         long absolute calls when generating PA 2.0 code.
19745
19746 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
19747
19748         PR rtl-optimization/38583
19749         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
19750
19751         * params.def (ira-max-conflict-table-size): New.
19752
19753         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
19754
19755         * ira.h (ira_conflicts_p): New external definition.
19756
19757         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
19758         table.  Report this.  Return result of building.
19759         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
19760         building conflict table.
19761
19762         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
19763         (ira_color): Use ira_conflicts_p.
19764
19765         * global.c: Include ira.h.
19766         (pseudo_for_reload_consideration_p, build_insn_chain): Use
19767         ira_conflicts_p.
19768
19769         * Makefile.in (global.o): Add ira.h.
19770
19771         * ira-build.c (mark_all_loops_for_removal,
19772         propagate_some_info_from_allocno): New.
19773         (remove_unnecessary_allocnos): Call
19774         propagate_some_info_from_allocno.
19775         (remove_low_level_allocnos): New.
19776         (remove_unnecessary_regions): Add parameter.  Call
19777         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
19778         parameter to remove_unnecessary_regions.
19779         (ira_build): Remove all regions but root if the conflict table was
19780         not built.  Update conflict hard regs for allocnos crossing calls.
19781
19782         * ira.c (ira_conflicts_p): New global.
19783         (ira): Define and use ira_conflicts_p.
19784
19785         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
19786         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
19787         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
19788
19789 2009-01-06  Ben Elliston  <bje@au.ibm.com>
19790
19791         * gengtype-lex.l (YY_NO_INPUT): Define.
19792
19793 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19794
19795         PR c/34911
19796         * c-common.c (handle_vector_size_attribute): Also reject
19797         BOOLEAN_TYPE types.
19798
19799 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
19800
19801         PR tree-optimization/38492
19802         * graphite.c (rename_map_elt, debug_rename_elt,
19803         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
19804         rename_map_elt_info, eq_rename_map_elts,
19805         get_new_name_from_old_name, bb_in_sese_p): Moved around.
19806         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
19807         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
19808         (sese_build_livein_liveouts): New.
19809         (new_sese, free_sese): New.
19810         (new_scop): Call new_sese.
19811         (free_scop): Call free_sese.
19812         (rename_variables_from_edge, rename_phis_end_scop): Removed.
19813         (register_old_new_names): Renamed register_old_and_new_names.
19814         (register_scop_liveout_renames, add_loop_exit_phis,
19815         insert_loop_close_phis, struct igp,
19816         default_liveout_before_guard, add_guard_exit_phis,
19817         insert_guard_phis, copy_renames): New.
19818         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
19819         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
19820         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
19821         (scop_adjust_phis_for_liveouts): New.
19822         (gloog): Call scop_adjust_phis_for_liveouts.
19823
19824         * graphite.h (struct sese): Documented.  Added fields liveout,
19825         num_ver and livein.
19826         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
19827         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
19828         (struct scop): Added field liveout_renames.
19829         (SCOP_LIVEOUT_RENAMES): New.
19830
19831 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
19832
19833         PR tree-optimization/38510
19834         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
19835         (translate_clast): Call recompute_all_dominators before
19836         graphite_verify.
19837         (gloog): Call recompute_all_dominators before graphite_verify.
19838
19839 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
19840             Jan Sjodin  <jan.sjodin@amd.com>
19841
19842         PR tree-optimization/38500
19843         * graphite.c (create_sese_edges): Call fix_loop_structure after
19844         splitting blocks.
19845
19846 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
19847
19848         * config.gcc: Add m32r*-*-rtems*.
19849         * config/m32r/rtems.h: New file.
19850
19851 2009-01-05  Ben Elliston  <bje@au.ibm.com>
19852
19853         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
19854         (.po.pox): Likewise.
19855         (po/gcc.pot): Likewise.
19856
19857 2009-01-04  David S. Miller  <davem@davemloft.net>
19858
19859         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
19860         (STARTING_FRAME_OFFSET): Always set to zero.
19861
19862 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
19863
19864         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
19865         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
19866         fixed-point types, and vectors of the same.
19867
19868 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
19869
19870         * config/mips/sync.md (*mb_barrier): Rename to...
19871         (*memory_barrier): ...this.
19872
19873 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
19874
19875         * doc/extend.texi (Function Attributes): Move @cindex after @item
19876         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
19877         and put in alphabetical order. Fix 'target' name and put in order.
19878         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
19879         typos.
19880
19881 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
19882
19883         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
19884         (memory_barrier): Expand as unspec instead of unspec_volatile.
19885         Remove mem:BLK from insn operands.  Use Pmode scratch register.
19886         (*memory_barrier): Define as unspec instead of unspec_volatile.
19887         Use (match_dup 0) as input operand.
19888
19889         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
19890         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
19891         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
19892         scratch register.  Remove operand 1.
19893         (*stbar): Define as unspec instead of unspec_volatile.
19894         Use (match_dup 0) as input operand, remove (const_int 8).
19895         (*membar): Define as unspec instead of unspec_volatile.
19896         Use (match_dup 0) as input operand, remove input operand 2.
19897
19898         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
19899         (memory_barrier): Expand as unspec instead of unspec_volatile.
19900         Remove mem:BLK from insn operands.  Use Pmode scratch register.
19901         (*memory_barrier): Define as unspec instead of unspec_volatile.
19902         Use (match_dup 0) as input operand.
19903
19904         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
19905         Remove mem:BLK from insn operands.  Use Pmode scratch register.
19906         Set volatile flag on operand 0.
19907         (*memory_barrier): New insn pattern.
19908
19909         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
19910         insn operands.
19911         (*memory_barrier): Use (match_dup 0) as input operand.
19912
19913         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
19914         Remove mem:BLK from insn operands.  Use Pmode scratch register.
19915         Set volatile flag on operand 0.
19916         (*mb_internal): New insn pattern.
19917
19918         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
19919
19920 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
19921
19922         PR middle-end/38586
19923         * function.c (struct temp_slot): Move to the section of the file
19924         that deals with temp slots.  Remove field 'address'.
19925         (temp_slot_address_table): New hash table of address -> temp slot.
19926         (struct temp_slot_address_entry): New struct, items for the table.
19927         (temp_slot_address_compute_hash, temp_slot_address_hash,
19928         temp_slot_address_eq, insert_temp_slot_address): Support functions
19929         for the new table.
19930         (find_temp_slot_from_address): Rewrite to use the new hash table.
19931         (remove_unused_temp_slot_addresses): Remove addresses of temp
19932         slots that have been made available.
19933         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
19934         worker function for remove_unused_temp_slot_addresses.
19935         (assign_stack_temp_for_type): Don't clear the temp slot address list.
19936         Add the temp slot address to the address -> temp slot map.
19937         (update_temp_slot_address): Update via insert_temp_slot_address.
19938         (free_temp_slots): Call remove_unused_temp_slot_addresses.
19939         (pop_temp_slots): Likewise.
19940         (init_temp_slots): Allocate the address -> temp slot map, or empty
19941         the map if it is already allocated.
19942         (prepare_function_start): Initialize temp slot processing.
19943
19944 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
19945
19946         PR middle-end/38584
19947         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
19948         Calculate the size of all stack vars assuming no packing of stack
19949         vars will happen, replacing a quadratic algorithm with a linear one.
19950
19951 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
19952
19953         PR target/38707
19954         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
19955         can't be used.
19956
19957 2009-01-03  Diego Novillo  <dnovillo@google.com>
19958
19959         * doc/contrib.texi: Update contributions.
19960
19961 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
19962
19963         PR c++/38705
19964         * builtins.c (fold_builtin_memory_op): Give up if either operand
19965         is volatile.  Set srctype or desttype to non-qualified version
19966         of the other type.
19967
19968         PR c/38700
19969         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
19970         and FUNCTION_DECLs.
19971
19972 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
19973
19974         PR rtl-optimization/35805
19975         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
19976         problem if fast dce is able to remove any instructions.
19977         * dce.c (dce_process_block): Fix dump message.
19978
19979 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
19980
19981         PR 33649
19982         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
19983
19984 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
19985
19986         PR middle-end/38690
19987         * tree-flow.h (op_code_prio, op_prio): New prototypes.
19988         * tree-pretty-print.c (op_code_prio): New function.
19989         (op_prio): No longer static.  Use op_code_prio.
19990         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
19991         Use op_prio and op_code_prio to determine if () should be
19992         printed around operand(s) or not.
19993
19994         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
19995         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
19996         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
19997         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
19998         pp_character instead of pp_string for single letter printing.
19999
20000 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
20001
20002         * doc/extend.texi: Fix '#pragma GCC option' typo.
20003
20004 2009-01-02  Richard Guenther  <rguenther@suse.de>
20005
20006         * doc/install.texi (--enable-checking): Mention different
20007         default for stage1.
20008         (--enable-stage1-checking): Document.
20009
20010 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
20011
20012         PR middle-end/30142
20013         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
20014         case to be an error.
20015
20016 2009-01-02  Ben Elliston  <bje@au.ibm.com>
20017
20018         * config/fp-bit.h (pack_d): Constify argument.
20019         * config/fp-bit.c (makenan): Constify return type. Remove casts.
20020         (isnan): Constify argument.
20021         (isinf): Likewise.
20022         (iszero): Likewise.
20023         (pack_d): Likewise.
20024         (_fpadd_parts): Constify return type.
20025         (_fpmul_parts): Likewise.
20026         (_fpdiv_parts): Likewise.
20027
20028 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
20029
20030         PR c/36489
20031         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
20032         warn about overwriting initializer with side-effects or
20033         -Woverride-init if !IMPLICIT.
20034         (output_init_element): Likewise.  Pass IMPLICIT down to
20035         add_pending_init.
20036         (process_init_element): Add IMPLICIT argument.  Pass it down
20037         to output_init_element.
20038         (push_init_element, pop_init_level, set_designator): Adjust
20039         process_init_element callers.
20040         (set_nonincremental_init, set_nonincremental_init_from_string):
20041         Adjust add_pending_init callers.
20042         (output_pending_init_elements): Adjust output_init_element callers.
20043         * c-tree.h (process_init_element): Adjust prototype.
20044         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
20045         process_init_element callers.
20046
20047 \f
20048 Copyright (C) 2009 Free Software Foundation, Inc.
20049
20050 Copying and distribution of this file, with or without modification,
20051 are permitted in any medium without royalty provided the copyright
20052 notice and this notice are preserved.